Approssimazione ed interpolazione numerica di dati e funzioni

Transcript

Approssimazione ed interpolazione numerica di dati e funzioni
Approssimazione ed
interpolazione numerica
di dati e funzioni
Prof. M. Lucia Sampoli
a.a. 2012/2013
Approssimazione


In molti problemi matematici nasce l’esigenza di dover
approssimare una funzione f(x), nota analiticamente oppure nota
solo in un insieme discreto di punti, con una funzione più semplice,
scelta in un insieme opportuno.
La costruzione di tale funzione può avvenire secondo due approcci:
1.
2.

DATI AFFETTI DA ERRORE : i dati vengono approssimati “nel loro
insieme”
migliore approssimazione
DATI ESATTI: si cerca una funzione che passi per i valori assegnati
interpolazione
Classi di funzioni più usate per approssimare ed interpolare




Polinomi
Funzioni razionali
Funzioni trigonometriche
Funzioni polinomiali a tratti (funzioni splines)
Criteri possibili per misurare l’errore
E 
n
 10 CRITERIO (errore in norma 1)
min
a0 , a1 ,, am
E
i
i 1
i 1
max Ei
 20 CRITERIO (errore in norma infinito) a min
, a ,, a
0
1
m
n


30
CRITERIO (errore in norma 2)
min
a0 , a1 ,, am
E
i 1
i
2
E 
i 
E 
2
i 2
Il polinomio di migliore approssimazione (m.a.) ai minimi quadrati è quel
polinomio che minimizza l’errore in norma 2.
15
10
5
Interpolazione
fi
0
−5
−10
−1.5

−1
−0.5
xi
0
0.5
1
1.5
Dati (xi,fi), i=0,…,n con xi є[a,b], (xi sono chiamati punti fondamentali e
sono assunti distinti xi≠xj per i ≠j) ed un insieme φj(x), j=0,…,n, definite
in [a,b] e linearmente indipendenti, si tratta di determinare
n
tali che
g ( x )    j j ( x )
n
j 0
g ( xi )    j j ( xi )  fi ,
i  0,  , n
j 0
condizioni di interpolazione
 La scelta della classe delle funzioni φj(x) dipende dalle applicazioni ed è
molto importante
 Se si sceglie di utilizzare polinomi allora φj(x) =xj j=0,…,n,
n
g ( x )    j x j  Pn ( x )
j 0
Interpolazione polinomiale

Le condizioni di interpolazione conducono alla risoluzione di un sistema
lineare nelle incognite α0, α1, …, αn,
 0  1 x0   2 x02     n x0n  f 0

2
n
  0  1 x1   2 x1     n x1  f1



 0  1 xn   2 xn2     n xnn  f n

 M = f
1 x0

1 x1
M 
 

1 xn
x02  x0n 

x12  x1n 



x12  xnn 
matrice di Vandermonde
La matrice M risulta essere non singolare se e solo se xi ≠xj per i ≠j,
essendo

TEOREMA: Esiste un unico polinomio di grado massimo n che assume
valori fi, i=0,…,n in corrispondenza di (n+1) punti distinti xi, i=0,…,n .

Problemi di M:
 Malcondizionamento
 Punti “quasi coincidenti” (aritmetica finita)
Polinomio interpolante nella forma di
Lagrange


Assegnati (xi,fi), i=0,…,n, si definiscono le basi di Lagrange  0 ( x ), 1 ( x ), ,  ,n ( x )
tali che ℓj(x) è un polinomio di grado n e
1 i  j
 j ( xi )  
0 i  j
Il polinomio di grado n definito dalle basi di Lagrange coincide con il
polinomio interpolante
n
Pn ( xi )    j ( xi ) f j   0 ( xi ) f 0   1 ( xi ) f1     i ( xi ) f i     n ( xi ) f n  f i
j 0

Basi di Lagrange:  j ( x ) 
( x  x0 )( x  x1 ) ( x  x j 1 )( x  x j 1 )( x  xn )
( x j  x0 )( x j  x1 )( x j  x j 1 )( x j  x j 1 )( x j  xn )
n
cioe'
 j ( x) 
 (x  x )
i
i  0 ,i  j
n
 (x
i  0 ,i  j
j
 xi )
Esempio

Assegnati i punti (-1,2), (1,1), (2,1), cerchiamo un polinomio del tipo
2
P2 ( x )    j ( x ) f j



j 0
Calcoliamo le funzioni fondamentali di Lagrange:
 0 ( x) 
( x  x1 )( x  x2 )
1
( x  1)( x  2)

 ( x  1)( x  2)
( x0  x1 )( x0  x2 ) ( 1  1)( 1  2) 6
1 ( x ) 
( x  x0 )( x  x2 ) ( x  1)( x  1)
1

  ( x  1)( x  2)
2
( x1  x0 )( x1  x2 ) (1  1)(1  2)
 2 ( x) 
( x  x0 )( x  x1 ) ( x  1)( x  1) 1

 ( x  1)( x  1)
( x2  x0 )( x2  x1 ) ( 2  1)( 2  1) 3
In conclusione:
1
1
1
1
1
4
P2 ( x )  ( x  1)( x  2)  2  ( x  1)( x  2) 1  ( x  1)( x  2) 1  x 2  x 
6
2
3
6
2
3
Unicità polinomio interpolante
Errore

Si tratta di stimare l’errore commesso nell’approssimazione con il
polinomio interpolante fuori dai punti fondamentali
( xi , fi )  ( xi , f ( xi )), i  1,, n
En ( x )  f ( x )  Pn ( x ), x  xi  i
Se
f  C n 1[a, b]
a  x0  x1    xn  b

En ( x ) 
n1 ( x ) f ( n1) ( )
 ]a, b[
( n  1)!
n 1 ( x )  ( x  x0 )( x  x1 )( x  xn )
(b  a )n1 M
 En ( x ) 
( n  1)!
M  max f ( n1) ( x )
x[ a ,b ]
1
f ( x) 
1  25 x 2
Esempio di Runge

Costruiamo il polinomio interpolante su 6 10 e 15 punti equidistanti in [-1,1]
1.2
1.2
1
1
0.8
0.8
0.6
0.6
1.2
1
0.8
0.6
0.4
0.4
0.4
0.2
0.2
0.2
0
0
0
−0.2
−0.2
−0.2
−0.4
−1


−0.4
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
−0.4
−1
1
1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Il comportamento del polinomio interpolante peggiora al crescere del grado infatti le
derivate di f crescono rapidamente all’aumentare di n
Se i nodi vengono scelti opportunamente il risultato migliora
1.2
1.2
1.2
1
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0.8
0.6
0.4
0.2
0
0
0
−0.2
−0.2
−0.2
−0.4
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
−0.4
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
−0.4
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Approssimazione

Dati (xi,fi), i=0,…,n con xi є[a,b], si cerca una funzione g(x) che passi
vicino ad essi

Si tratta di misurare
g( xk )  fk ,
k  0,...n
Migliore approssimazione

Si può pensare come differenza tra componenti di due vettori di Rk
 g( x1 )  f1 





 g( x )  f 
k
k 


Teoricamente qualunque norma va bene, la più semplice è quella euclidea
 g( x1 )  f1 




 
 g( x )  f 
k
k  2

k
 ( g( x
q 1
q
)  fq )2
problema della migliore approssimazione nel senso dei minimi quadrati
Polinomio di m.a. ai minimi quadrati

Si tratta di minimizzare
n
min
a0 , a1 ,, am

( f
i 1
2
m 2

a

a
x

a
x



a
x
0
1 i
2 i
i
m i )  min F ( a0 , a1 ,  , am )
a0 , a1 ,, am
Derivando rispetto ad a0, a1, …, am ed uguagliando a zero (sistema di
equazioni normali)
n
F
 0  2  ( f i  a0  a1 xi  a2 xi2    am xim )  0
a0
i 1
n
F
 0  2  ( f i  a0  a1 xi  a2 xi2    am xim )  xi  0
a1
i 1

n
F
 0  2  ( f i  a0  a1 xi  a2 xi2    am xim )  xim  0
a m
i 1

Si ottiene un sistema lineare
Polinomio di m.a. ai minimi quadrati (2)

na0  a1  xi  a2  xi2    am  xim   fi

2
3
m
 a0  xi  a1  xi  a2  xi    am  xi   fi xi



m
m 1
m 2
2m
m
a
x
a
x
a
x

a
x
f
x










0
1
i
2
i
m
i
i
i
i



In forma matriciale Ma=f
La matrice M risulta



Simmetrica per costruzione
Invertibile e definita positiva
Può essere malcondizionata (si considerano basi ortogonali/ortonormali rispetto
al prodotto scalare)
Osservazione

L’interpolazione e’ un caso particolare di approssimazione, quando il
grado del polinimio e’ uguale al numero dei punti -1.
Osservazione
Aumentando il grado del polinomio possono sorgere problemi dovuti
all’oscillazione dei polinomi

1.2
1.2
1
data 1
5th degree
6th degree
8th degree
10th degree
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
−10

data 1
spline
−0.2
−10
−5
0
5
−5
10
Si ricorre alle funzioni polinomiali a tratti (spline)
0
5
10
Polinomiali a tratti



IDEA: usare interpolanti polinomiali di grado basso, spezzando l’intervallo
in considerazione in tanti sottointervalli ed interpolando in ciascun
sottointervallo solo pochi punti.
Non è necessario che gli estremi dei sottointervalli coincidano con punti di
interpolazione. Se è cosi’
splines interpolanti nei nodi
Caso più semplice lineare a tratti (polinomio di grado 1 in ciascun
sottointervallo). A volte funziona meglio del polinomio interpolante!
Funzioni splines

Assegnati l’intervallo [a,b] ed i nodi a=y0,…yn=b una funzione spline di
grado m e nodi y è una funzione polinomiale a tratti tale che
 S m , y ( x )  Pm x  [ yi , yi 1 ]

m 1
(
)
[ a , b]
S
x
C


m, y


I parametri da determinare sono (m+1) n
I vincoli da imporre per la regolarità (nei nodi interni)
( j)
( j)
S
(
x
)

S
lim m,y
lim m,y ( x)
x  yi

j  0, , m  1, i  1, , n  1
x  yi
In totale abbiamo (m+1) n-m(n-1)=n+m (dimensione dello spazio delle
splines di grado m, con continuità m-1 definite su n+1 nodi)
B-splines


Base stabile per lo spazio delle splines (base usata in tutte le
applicazioni industriali)
Le funzioni di base possono essere definite per ricorrenza a partire
dalla funzione
se x  [ yi , yi 1 )
1
Bi ,0  
0 se x  yi , x  yi 1

 yi  m 1  x 
x  yi
Bi ,m ( x) 
Bi ,m 1 ( x)  
 Bi 1,m 1 ( x)
yi  m  yi
y
y

 i  m 1 i 1 



Le B-spline sono funzioni tutte positive: Bi ,m ( x)  0, x  ( yi , yi  m 1 )
Sono funzioni a supporto compatto: supp Bi ,m ( x)  [ yi , yi  m ]
Formano una partizione dell’unità
 Bi,m ( x)  1
i 
Splines interpolanti nei nodi



In generale i nodi della spline possono non coincidere con i punti di
interpolazione, se invece coincidono
sottoinsieme delle splines
interpolanti nei nodi
In questo caso le n+1 condizioni di interpolazione riducono il numero
dei parametri liberi : n+m-(n+1)=m-1
Tra le splines interpolanti nei nodi le più usate sono quelle cubiche per
le quali restano da determinare due condizioni ulteriori. Le scelte più
comuni:
1.
2.
3.
Spline naturali :s”(a)=s”(b)=0.
Spline periodiche: s’(a)=s’(b), s(a)=s(b).
Spline “not a knot” (default Matlab): s(t1),s(tn-1) є C3.