Interpolazione polinomiale

Transcript

Interpolazione polinomiale
Interpolazione polinomiale
Supponiamo di avere una serie di n punti sperimentali e di voler calcolare un
polinomio che passa per questi punti. Questo polinomio detto polinomio di Lagrange
ha grado n 1 ed ha la forma seguente
x
P( x)
x1
x2 . x
x3 . ..... . x
x2 . x1
x3 . ..... . x1
xn
xn
.y
1
.....
x
x2 . x
x3 . ..... . x
xn
x2 . xn
x3 . ..... . xn
xn
xn
.y
n
Torna
all'indice
generale
(1)
Un modo pratico di implementare numericamente questa espressione è il seguente (Algoritmo di Neville).
Consideriamo i polinomi che passano per un sottoinsieme dei punti da interpolare, ordinati secondo la
seguente tabella:
P1
P12
P2
P123
P23
P1234
P3
P234
.
.
P3...
P234.....
.
.
.........
P1234..... ( n 1 ) n
.
Pn 1
P( n 1 ) n
Pn
Il pedice ij...k di Pij ..... .k indica che il dato polinomio passa per i punti i, j ... k. I polinomi nella tabella saranno
di grado crescente a mano a mano che ci si sposta verso destra e che aumenta il numero di punti
attraversati dal rispettivo polinomio. La prima colonna è costituita da polinomi di grado zero P1 , P2 , .... Pn
che passano ciascuno rispettivamente per i punti x1 , y1 , x2 , y2 , .... , xn , yn , ovvero per i dati da
interpolare. Per calcolare gli elementi delle altre colonne si utilizza la seguente regola di ricorrenza che lega
il polinomio di una colonna alla coppia di polinomi che passano per gli stessi punti della colonna precedente
x
Pi ( i 1 ) ....... ( i m ) ( x )
xi m . Pi ( i 1 ) ....... ( i m 1 )
xi x . P( i 1 ) ( i 2 ) ....... ( i m 1 )
(2)
xi xi m
Il termine a sinistra dell'uguale è il polinomio che passa per i punti da i ad i+m, il termine sulla destra è
invece costituito dai due polinomi che passano rispettivamente per i punti da i ad m-1 e da i+1 ad m. La
relazione (2) è costituita in modo da annullare il primo termine nel punto i+m ed il secondo nel punto i e
quindi di passare per tutti i punti da i ad i+m. Invece di implementare la (2), è più conveniente lavorare con
le differenze crescenti (C) e decrescenti (D) tra i polinomi di una colonna e quelli della colonna successiva di
grado superiore, ovvero
Pi( i 1 ) ..... .( i m ) Pi( i 1 ) ..... .( ( i m ) 1 )
Pi( i 1 ) ..... .( i m ) P( i 1 ) ..... .( i m )
Cm, i
Dm, i
Le funzioni C e D definite dalle seguenti regole di ricorrenza
Cm 1 , i
xi
x . Cm, i 1 Dm, i
xi xi m 1
Dm 1 , i
xi m 1
x . Cm, i 1
xi xi m 1
Dm, i
7
Vediamo come si implementa numericamente questa procedura, assumiamo che i dati siano contenuti in
due vettori, Dx e Dy corrispondenti rispettivamente alle ascisse ed alle ordinate.
polint ( Dx , Dy , x )
n
calcolo la lunghezza del
vettore dei dati da interpolare
last ( Dx )
DFmin
1
for i ∈ 0 .. n
DF
x
determino quale è il punto più
vicino al punto da interpolare
Dxi
if DF< DFmin
ns
i
DFmin
P
Dyns
ns
ns
C
Dy
D
Dy
DF
preparo le condizioni iniziali
1
for m ∈ 1 .. n
for i ∈ 0 .. n
dy
m
T
Ci 1 Di
Dxi Dxi m
Ci
T. Dxi
Di
T. Dxi m
x
x
Cns 1 if ( 2 . ns ) < ( n
m)
otherwise
dy Dns
P
ns
ns
P
dy
aggiorno il polinomio alla nuova colonna
utilizzando la differenza crescente o
decrescente cercando di mantenere
al centro della tabella il punto da interpolare
1
Restituisco il valore del polinomio e
deli'ultimo incremento, che costituisce
una stima dell'errore rispetto ad una
interpolazione con un polinomio di grado
superiore
P
dy
Proviamo questa routine con i seguenti dati e visualizziamo il grafico dei punti da
interpolare e della polinomiale interpolante nell'intervallo x 0 , 0.1 .. 14
Dx
1
6
2
4
3
Dy
3
7
9
12.5
8
8
20
10
0
10
0
5
10
15
Dati in ingresso
Polinomio interpolante
L'approssimazione di una serie di dati con una polinomiale non sempre fornisce il risultato desiderato.
Consideriamo ad esempio una serie di dati generati da una funzione gaussiana, scegliamo l'intervallo
x 0 , 0.05 .. 6 ed i seguenti punti per le ascisse
0
0.5
0.8
Dx
1.5 . Le ordinate le calcoliamo secondo l'espressione Dy
2
exp Dx
e corrispondono ai valori
2
2.3
5
T
3
11
Dy = 1 0.779 0.527 0.105 0.018 5.042 . 10
1.389 . 10
2
0
2
0
2
4
6
Dati in ingresso
Polinomio interpolante
Gaussiana
Un polinomio all'infinito diverge. Quando la variabile indipendente cresce la funzione interpolante tende ad
oscillare con ampiezza crescente con l'ordine del polinomio, e quindi con il numero di punti interpolati. In alcuni
casi è conveniente utilizzare funzioni diverse dai polinomi per interpolare una serie di dati. Un esempio è
costituito dalle funzioni razionali.
Torna
all'indice
generale
9