splines salvatore mazzola e andrea portale prof.ssa r. m. pidatella corso di metodi matematici ed...
TRANSCRIPT
1
Splines
Salvatore Mazzola e Andrea Portale
Prof.ssa R. M. Pidatella
Corso di Metodi Matematici ed Ottimizzazione
19/04/2011
2
Outline
•L’interpolazione (Richiamo del Metodo di Lagrange, Richiamo del Metodo delle differenze divise, Richiamo dell’ Interpolazione di Hermite)
•Le Splines
•Le Splines Lineari
•Le Splines Cubiche
•Esistenza ed Unicità delle Splines Cubiche
•Proprietà Estremali
•Cenni sull’Error Bound
3
L’Interpolazione
“E’ il problema di approssimare una funzione o un insieme di dati con una funzione più semplice e regolare.”
•Richiede che i dati siano noti prima.•La funzione da approssimare f(x) e la funzione approssimante devono coincidere nelle ordinate note a priori.
POSSIBILI PROBLEMI•Determinazione della classe di funzioni che approssimano la f(x) data.•Minimizzare l’errore tra la funzione da approssimare e la funzione approssimante.
4
Interpolazione Polinomiale
Si sceglie come classe di funzioni quella dei polinomi
Pn = { polinomi di grado ≤ n }
Dati x0,x1,...,xn xi≠xj, i≠j i,j=0,1,...,n ed y0,y1,...,yn corrispondenti, si ha allora che pЄPn : p(xi) = yi i = 0,1, ...,n
Per ciò stesso si sceglie il metodo di Lagrange:
1
5
Interpolazione Polinomiale cont.
Il polinomio interpolante è dato da:
che è la rappresentazione Lagrangiana del polinomio.
SVANTAGGI:•aggiungere o togliere punti comporta l’aggiornamento di tutti i polinomi di Lagrange e quindi una modifica del polinomio interpolatore.•Funzioni particolarmente smussate sono difficilmente interpolabili.•Il numero di operazioni non è trascurabile.
6
Metodo delle differenze divise
Per migliorare l’interpolazione, possiamo scegliere una base per lo spazio Pn che renda più facile l’introduzione di un nuovo nodo. Ciò è adoperato nell’interpolazione di Newton con le differenze divise.
P(x) = b0 + b1(x – x0) + b2(x – x0) (x – x1) + ... + bn(x – x0) (x – x1)...(x- xn-1)
b0 = f(x0)b1 = f(x0 , x1)...bn = f(x0 , ..., xn)
dove:
f[xi , xj] = è la prima differenza divisa
f[xi , xj, xk] = la seconda
7
Metodo delle differenze divise cont.
Si costruisce la seguente tabella:
x0 f(x0) f[x0 , x1]
x1 f(x1) f[x0 , x1, x2] f[x1 , x2] .
x2 f(x2) f[x1 , x2, x3] . f[x2 , x3] . x3 f(x3) f[x0 , x1, ..., xn]
. . .
. . f[xn-3 , xn-1, xn-1] . . . f[xn-2 , xn-1] . xn-1 f(xn-1) f[xn-2 , xn-1, xn]
f[xn-1 , xn]xn f(xn)
8
Interpolazione di Hermite
Se invece si hanno delle informazioni sulle derivate di f(x), si utilizza in genere l’interpolazione generale di Hermite. Infatti, con questo tipo di interpolazione si cerca un polinomio che interpoli una funzione f in alcuni nodi x0,…,xn, ma che abbia in comune un certo numero di derivate successive negli stessi nodi.
Sia p(j)(x) la derivata j-esima di p(x) e conoscendo tutte le derivate di ordine n in x0 il problema diventa quello di trovare: p(x) Є Pn : p(j)(x0) = f(j)(x0) per j = 0, 1, ..., n
Ed imponendo le condizioni di interpolazione si ha il sistema:
a0 + a1x0 + a2x01 + ... + anx0
n = f(x0) a1 + 2a2x0 + ... + nanx0
n-1 = f’(x0) ... n!an = fn(x0)
9
Svantaggi dei due metodi precedentiSia l’interpolazione di Newton con le differenze divise che l’interpolazione generale di Hermite presentano lo svantaggio che, al crescere del numero dei nodi, aumenta in generale il grado del polinomio interpolante che si discosta così di molto dalla funzione f(x), aumentando anche l’errore, soprattutto agli estremi. Si può ovviare a questo inconveniente
utilizzando un’interpolazione polinomiale a tratti, facendo uso cioè di polinomi di ugual grado su ciascun tratto, soddisfacenti certe condizioni.Su questo si basa l’interpolazione a tratti di Hermite che però presenta i seguenti Svantaggi:•non garantisce la continuità della derivata seconda.•potremmo avere a disposizione solo i valori della funzione da interpolare e non avere informazioni sulla sua derivata prima.
10
Le Splines (Schoenbergh - 1946)
Dato un insieme di punti, Xn = {xj }jn
= 0 a = x0 < x1 < ... < xn = b ed un insieme di valori funzionali {f(xj)}j
n=0 facciamo il plot dei punti Pj = (xj , f(xj)), 0 ≤ j ≤ n
Vogliamo un modello matematico che interpoli i punti nel modo migliore allora consideriamo una famiglia di funzioni Sp(Xn) di ordine k ≥ 1 , tali che se S(x) Є Sp(Xn) allora S(x) soddisfa le seguenti 3 proprietà:
•S(xi) = f(xi) i = 0,1,...n
•S(x) Є Ck-1[a,b] ed S(x), S’(x) ... e Sk-1(x) sono continui in [a, b];
•S(x) Є Pk in [xi, xi+1] per i = 0,1,...n-1
A
11
Definiamo gradi di libertà (d. o. f.) della splines, quelle condizioni che dobbiamo imporre ad S(x) affinché sia unica.Se abbiamo n + 1 nodi e la splines è di grado k, allora:
d. o. f. = n + k
cioè, affinché Sk(x) sia unica bisogna imporre n + k condizioni.Se k = 1 si parla di splines lineare; d. o. f. = n + 1 che non sono altro che le condizioni di interpolazione.
Particolarmente importante è il caso k = 3 (spline cubiche S3(x)) in cui d. o. f. = n + 3.
Le Splines cont.
12
Le Splines lineari
Per k = 1 d.o.f = n+1
Definiamo le funzioni cappello ψi i=1,2,...,n-1
Poichè ψi(xj) = δij le ψi sono linearmente indipendentiSegue che:
Per la prima proprietà delle splines si ha che:
13
Le Splines Cubiche
Le splines cubiche permettono di avere una soddisfacente qualità grafica e un altrettanto costo computazionale; inoltre è possibile ottenere funzioni interpolanti che minimizzano la curvatura del grafico risultante.
Esse sono definite formalmente come segue:
Dato un insieme di punti, Xn = { xj }jn
= 0 a = x0 < x1 < ... < xn = b ed un insieme di valori funzionali {f(xj)}j
n=0 facciamo il plot dei punti Pj = (xj , f(xj)), 0 ≤ j ≤ n
•S(xj) = f(xj) fj , 0 ≤ j ≤ n; che è, S(x) interpola f(x) in [a, b];
•S(x) Є C2 [a, b]; che è, S(x), S’(x) e S”(x) sono continui in [a, b];
•S(x) è una cubica su ogni sottointervallo [xᵢ, xᵢ ₁], 0 ≤ j ≤ n-1;₊
Nota: S(x) = Sj(x) per x in [xᵢ, xᵢ ₁], 0 ≤ j ≤ n-1;₊
14
Vi sono altre due condizioni che riguardano precisamente le derivate prime e seconde, e possono essere una delle seguenti: •se S3
’’(x0) = S3’’(xn) = 0, cioè se le splines cubiche hanno derivate seconde
nulle agli estremi, si parla di splines naturali;
•se S3’(x0) = S3
’(xn) e S3’’(x0) = S3
’’(xn), la splines si dicono periodiche;
•se S3’(x0) = y0
’ e S3’(xn) = yn
’ con y0’ e yn
’ assegnati, la splines si dice vincolata.
In generale, le splines cubiche assicurano la continuità della derivata seconda, ma non quella della derivata terza. Possiamo però richiedere la continuità di tale derivata in due punti della suddivisione, per esempio, nel primo e nell’ultimo nodo interno: x2, xn-1. Imponendo che la continuità della derivata terza in x2, xn-1 si deduce che i primi e gli ultimi due tratti cubici sono identici, e quindi queste due condizioni equivalgono ad eliminare i nodi x2, xn-1 dalla suddivisione. Per tale motivo tali condizioni sono note come not-a-knot condition.
Le Splines Cubiche cont.
15
Esistenza ed Unicità
E’ necessario definire un polinomio da approssimare relativamente semplice e pochi nodi sul quale interpoleremo la nostra splines ed estenderemo l’esempio al caso più generale.
Sia data S(x) e sia S(x) Є P3
Avremo allora S0(x) in [x0 , x1], S1(x) in [x1 , x2], S2(x) in [x2 , x3]
Abbiamo 4 incognite in ciascuno dei 3 polinomi, 12 in tuttoGarantiamo che i polinomi siano Splines Cubiche
S0 (x0) = f0; S1 (x1) = f1; S0 (x1) = S1(x1); S2 (x2) = f2; S1 (x2) = S2 (x2); S2 (x3) = f3;
Non dimentichiamo la condizione di continuità nei punti x1 e x2 per la la S’(x) e la S’’(x)
S’0 (x1) = S’1(x1) e S’’0 (x1) = S’’1(x1)S’1 (x2) = S’2 (x2) e S”1 (x2) = S”2 (x2);
16
Sia definito hj Δxj xj+1 – xj e Δfj f(xj+1) – f(xj) fj+1 – fj
Scegliamo adesso y”0, y”1, …, y”n
Scegliamo le splines di modo che S”(xj) = f”(xj) 0 ≤ j ≤ n-1
Integrando due volte:
cj e dj sono costanti di integrazione Affinchè Sj(xj) = fj e Sj(xj+1) = fj+1 0 ≤ j ≤ n-1 lavoriamo su cj e dj
Esistenza ed Unicità cont.
17
Differenziando:
Garantiamo così la continuità dei nodi interni ed otteniamo il seguente sistema lineare di n-1 equazioni in {xj}j
n = 0 incognite
Esistenza ed Unicità cont.
18
Otteniamo così il seguente sistema lineare in forma matriciale Ay = b
Dove i = 2 ( hi + h i-1) effettuate le opportune sostituzioni otteniamo il polinomio S(x) .
Esistenza ed Unicità cont.
19
Proprietà Estremali
Proprietà 1 (di minima curvatura)Sia g(x) una funzione in C2[a, b] che interpola f(x) in {xj}j
n = 0 se S(x) Є
Sp(Xn) allora S’’’(x) è una costante, ad esempio αj, su ogni sottointervallo (xj , xj+1)
Proprietà 2Dato un insieme di funzioni g(x) che rispettano la proprietà di minima curvatura, interpolano la f(x) purchè soddisfino le due condizioni seguenti: g’(a) = f’(a) e g’(b) = f’(b)
20
Error bound
Si dimostra che se si aumenta il numero di punti di interpolazione in modo tale che h→0 per n→∞ allora S(x) ed S’(x) convergono uniformemente a f(x) e a f’(x) rispettivamente.
L’Error function lo definiamo come E(x) = f(x) – S(x) per x Є [a, b]L’Errore dell’approssimazione della derivazione come E’(x) = f’(x) – S’(x) per x Є [a, b].
Mostriamo l’indipendenza dell’error bound dalla x e garantiamo l’uniforme convergenza del metodo. Inoltre non solo possiamo approssimare la f(x) ma anche la sua derivata prima. I polinomi interpolatori visti all’inizio non hanno questo comportamento e tendono ad esagerare la differenza tra la f’(x) e la p’(x).
Spline in Matlab
Funzioni utili ed esempi di interpolazione mediante spline
Panoramica
Si vedrà:Una breve spiegazione su come
Matlab rappresenta inernamente le Splines (ed altre funzioni simili).
Un elenco di alcune delle tante routines disponibili per trattare questi oggetti.
Esempi (semplici) di codice.
22
PanoramicaCome lecito aspettarsi, Matlab mette a
disposizione un gran numero di Programmi e Funzioni capaci di lavorare con le funzioni splines.
Così come le funzioni spline vengono utilizzate con profitto in svariati campi applicativi, Matlab le rende facilmente accessibili all’utente per approcciare problemi di vario tipo, come quelli dell’Interpolazione e dell’Approssimazione (ma non solo!).
23
Panoramica (Funzioni Polinomiali a Tratti)Matlab utilizza internamente (e rende
accessibili) diversi tipi di rappresentazione per ‘’costruire’’ e lavorare sulle spline.
In realtà le spline (ed altri tipi di funzioni) vengono a volte rappresentate nella forma più generale di ‘’Funzioni Polinomiali a Tratti’’ (famiglia più grande cui le spline appartengono).
I due tipi di rappresentazione usati più di frequente sono:
* B-Form (che non tratteremo)* ppform (su cui ci concentreremo)
24
Panoramica (ppform)
Utilizzata per rappresentare funzioni polinomiali a tratti generiche.
Sia una partizione di la generica polinomiale a tratti è definita come segue:
25
Panoramica (ppform cont.)Nella pratica Matlab utilizzata una variabile strutturata, nei cui campi vengono memorizzati i dati relativi la specifica funzione.
vedere ppform.m
Possiamo anche usare la funzionepp = mkpp(breaks, coefs)
per instanziare la ppform di una polinomiale a tratti arbitraria, oppure
[breaks, coefs, l, k, d] = unmkpp(pp)Per copiare nelle rispettive variabili di uscita i parametri della variabile (in modo da poterli usare a piacere).
26
Funzioni per le SplineSenza presunzione di completezza, elenchiamo alcune utili funzioni per lavorare con le Spline in Matlab
spline – Funzione generale per effettuare interpolazione con spline cubiche (usa di default la condizione ‘’Not a Knot’’)
interp1 – Interpolazione di dati monodimensionali, può usare diversi metodi (nearest, spline lineare o cubica, Hermitiana cubica a tratti).
27
Funzioni per le Spline (avanzate)Altre funzioni, più potenti, permettono di sfruttare al meglio le spline. Alcuni esempi:
csape - Interpolazione cubica condizionata (permette di specificare le condizioni sui nodi di estremo, es. Sp. Cubica ‘’naturale’’, ‘’periodica’’, ‘’vincolata’’ etc.)
spapi - Interpolazione con Spline generica (consente di specificarne il grado)
csaps – Smoothing (fitting) di dati con spline cubiche
spap2 – Approssimazione ai minimi quadrati mediante spline (!)
28
Esempi Pratici
Procediamo ora mostrare alcuni semplici esempi di codici che fanno uso di alcune delle funzioni citate.
Cominciamo con il caso (banale) in cui si vogliano interpolare quattro punti dati:
(-2, 1), (1, 2), (2, 4), (3, 3)
File: uso_spline.m29
Spline Cubiche
Mettiamo a confronto diversi tipi di Spline Cubiche.
Mostriamo anche il prolungamento delle spline oltre l’intervallo di interpolazione per rendere più visibile il diverso comportamento dei vari tipi agli estremi.
File: spline_diverse.m30
Interpolazione Lagrangiana vs SplineData una serie di punti da interpolare, mettiamo a confronto interpolazione Lagrangiana con l’interpolazione mediante Splines lineare e cubica naturale.
Si può notare l’effetto Runge che affligge l’interpolazione Lagrangiana (con polinomio di grado 9).
L’interpolazione con spline lineare è già più soddisfacente (anche se poco realistica)
Quella cubica ha (prevedibilmente) un andamento molto più morbido e naturale (merito della continuità delle derivate fino alla seconda)
File: interpolazioni_diverse.m31
Spline e derivateSi vuole interpolare la funzione
E le sue derivate fino alla seconda
Si noti che, posto il polinomio di terzo grado nel generico j-esimo intervallo
Calcolarne la derivata equivale a determinare:
File: spline_derivata.m
32
Convergenza dell’interpolazione SplineValutiamo l’errore commesso nell’interpolare la funzione per alcuni tipi di interpolazione spline (lineare, cubica naturale e cubica not-a-knot).
Mostriamo (solo a livello empirico) come al tendere ad infinito del numero dei punti di interpolazione l’errore tenda a zero. Equivalentemente, l’interpolazione tenderà a coincidere con la funzione interpolata.
File: errore_spline.m33
Convergenza cont.
Il codice dell’esempio esempio, di cui riportiamo i risultati, mostra l’errore massimo commesso in funzione del numero di nodi N e del tipo di interpolazione utilizzata.
E’ possibile vedere come, al contrario di quanto avviene nell’interpolazione polinomiale classica, l’errore massimo commesso diminuisca. In effetti, al tendere del numero di punti di interpolazione ad infinito, la funzione spline tende a coincidere perfettamente con la funzione interpolata.
34
Convergenza cont.
35
N Spline Lineare Cubica Naturale
Cubica Not-a-Knot
3 1.03 5.22 8.28
4 6.21 2.93 2.63
5 4.15 1.91 1.29
6 2.97 1.34 6.94
7 2.23 9.86 4.07
8 1.73 7.57 2.54
9 1.39 6.00 1.67
10 1.14 4.86 1.14
Spline e disegnoLe spline trovano largo utilizzo anche in applicazione grafiche. Infatti, è facile vedere come le spline ben si prestino ad approssimare figure geometriche.
In questo esempio, vediamo come sia possibile approssimare il cerchio ed una spirale mediante le funzioni spline.
File: disegno.m
36
ConclusioniAbbiamo illustrato pochi ma comprensibili (speriamo!) esempi di codice, al fine di illustrare l’utilità e facilità d’uso degli strumenti messi a disposizione da Matlab per lavorare con le funzioni Splines.
Cose (molto interessanti) che non abbiamo visto: Approssimazione di Funzioni e set di dati mediante Splines (sia nel senso dei minimi quadrati che dello smoothing/fitting)
37
GRAZIE
38