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