Interpolazione polinomiale. Alvise Sommariva Università degli Studi di Padova Dipartimento di Matematica Pura e Applicata 21 novembre 2011 Alvise Sommariva Interpolazione polinomiale. 1/ 27
Interpolazione polinomiale Sia P n lo sp. vett. dei polinomi di grado n in R. Date n + 1 coppie (x 0,y 0 ),..., (x n,y n ) con x j x k se j k, si calcoli p n P n t.c. p n (x k ) = y k, k = 0,...,n Tali polinomi p n si dicono interpolare {(x k,y k )} k=0,...,n oppure interpolare i valori y k nei nodi x k. 1 0.5 0 0.5 1 cos(x) interpolante(x) Coppie da interpolare 1.5 5 0 5 Figura: Grafico che illustra l interpolazione di cos(x) in [ 5, 5] su nodi equispaziati x k = 5 + 2 k (k = 0,..., 5). Alvise Sommariva Interpolazione polinomiale. 2/ 27
Questioni legate all interpolazione polinomiale Alcune questioni risultano di importanza fondamentale: Esiste tale polinomio? Se esiste è unico? Se esiste ed è unico, è possibile calcolarlo? Se f C([a,b]), esistono {x k } k=0,...,n [a,b] che rappresentano una scelta migliore di altre, nel senso che il polinomio interpolante (x k,f (x k )) (k = 0,...,n) approssima meglio la funzione? Alvise Sommariva Interpolazione polinomiale. 3/ 27
Qualche esempio n=1: dati due punti (x 0,y 0 ), (x 1,y 1 ) trovare un polinomio di grado 1 che passi per i due punti. Equivale a dire: calcolare retta che passa per due punti assegnati. n=2: dati tre punti (x 0,y 0 ), (x 1,y 1 ), (x 2,y 2 ) trovare un polinomio di grado 2 che passi per i tre punti. Equivale a dire: calcolare parabola y = a 1 x 2 + a 2 x + a 3 che passa per tre punti assegnati. Alvise Sommariva Interpolazione polinomiale. 4/ 27
Polinomi di Lagrange ed esistenza polinomio interpolatore Consideriamo i polinomi di Lagrange L k P n (rel. {x k } k=0,...,n ) L k (x) = (x x 0)... (x x k 1 ) (x x k+1 )... (x x n ) (x k x 0 )... (x k x k 1 ) (x k x k+1 )... (x k x n ) Detto δ k,j l operatore di Kronecker, L k (x s ) = δ k,s cioè L k (x k ) = 1 L k (x j ) = 0, se k j. Allora ha le proprietà desiderate il polinomio p n di grado n p n (x) = n y k L k (x) k=0 poichè p n (x s ) = n k=0 y kl k (x s ) = n k=0 y kδ k,s = y s per s = 0,...,n. Si noti che {L k } k=0,...,n è base di P n. Alvise Sommariva Interpolazione polinomiale. 5/ 27
Unicità polinomio interpolatore Supponiamo p n,q n P n siano tali che Allora s n = p n q n P n ed è per cui p n (x k ) = q n (x k ) = y k, k = 0,...,n. s n (x k ) = p n (x k ) q n (x k ) = 0, k = 0,...,n s n (x) = α(x x 0 )... (x x n ). Se α 0 allora s n P n+1, cosa assurda. Quindi α = 0, il che implica p n q n = s n = 0 cioè p n = q n. Deduciamo così che il polinomio p n P n interpolante {(x k,y k )} k=0,...,n (con x k x s se k s) non solo esiste ma è pure unico ed è p n (x) = n y k L k (x). k=0 Alvise Sommariva Interpolazione polinomiale. 6/ 27
Esempio Calcoliamo il polinomio di grado 2 che assume nei nodi x 0 = 2, x 1 = 1, x 2 = 3 rispettivamente i valori f 0 = 2, f 1 = 11, f 2 = 17. L 0 (x) = (x x 1)(x x 2 ) (x 1)(x 3) (x 1)(x 3) = = (x 0 x 1 )(x 0 x 2 ) ( 2 1)( 2 3) 15 L 1 (x) = (x x 0)(x x 2 ) (x ( 2))(x 3) (x + 2)(x 3) = = (x 1 x 0 )(x 1 x 2 ) (1 ( 2))(1 3) 6 L 2 (x) = (x x 0)(x x 1 ) (x ( 2))(x 1) (x + 2)(x 1) = = (x 2 x 0 )(x 2 x 1 ) (3 ( 2))(3 1) 10 Si vede subito che L 0, L 1, L 2 P 2 che L 0 (x 0 ) = L 0 ( 2) = 1,L 0 (x 1 ) = L 0 (1) = 0,L 0 (x 2 ) = L 0 (3) = 0 L 1 (x 1 ) = L 1 (1) = 1,L 1 (x 0 ) = L 1 ( 2) = 0,L 1 (x 2 ) = L 1 (3) = 0 L 2 (x 2 ) = L 2 (3) = 1,L 2 (x 0 ) = L 2 ( 2) = 0,L 2 (x 1 ) = L 2 (1) = 0 Alvise Sommariva Interpolazione polinomiale. 7/ 27
Esempio Posto p 2 (x) = 2L 0 (x) + 11L 1 (x) + 17L 2 (x) abbiamo p(x 0 ) = 2L 0 (x 0 )+11L 1 (x 0 )+17L 2 (x 0 ) = 2 1+11 0+17 0 = 2 = y 0, p(x 1 ) = 2L 0 (x 1 )+11L 1 (x 1 )+17L 2 (x 1 ) = 2 0+11 1+17 0 = 11 = y 1, p(x 2 ) = 2L 0 (x 2 )+11L 1 (x 2 )+17L 2 (x 2 ) = 2 0+11 0+17 1 = 17 = y 2. cioè p 2 interpola le coppie {(x k,y k )} k=0,1,2. Alvise Sommariva Interpolazione polinomiale. 8/ 27
Teorema del resto Usualmente i dati y k corrispondono alla valutazione di una funzione f C([a,b]) in nodi x k [a,b]. Si desidera che il polinomio interpolatore p n approssimi la funzione f. Risulta quindi importante stimare l errore compiuto. A tal proposito vale il seguente teorema detto del resto. Teorema. Sia f C (n+1) (a,b) e sia p n il polinomio che interpola le coppie {(x k,y k )} k=0,...,n con x k x s se k s. Allora n f (x) p n (x) = f (n+1) i=0 (ξ) (x x i) (n + 1)! (1) dove ξ I con I il più piccolo intervallo aperto contenente x 0,...,x n. Alvise Sommariva Interpolazione polinomiale. 9/ 27
Teorema del resto: esempio Supponiamo f (x) = log(x) in [1,2]. Si vede subito che f (n+1) (x) = 1/x n+1 e quindi f (n+1) = 1. Alvise Sommariva Interpolazione polinomiale. 10/ 27
Alcune scelte dei nodi Consideriamo l intervallo chiuso e limitato [a,b]. Vediamo alcuni sets di nodi. Equispaziati: x k = a + k (b a) n, k = 0,...,n. Gauss-Chebyshev (scalati): fissato n, i punti sono con x k = (a + b) 2 + (b a) 2 t k, k = 0,...,n (2) ( ) 2k + 1 t k = cos 2n + 2 π, k = 0,...,n; (3) Gauss-Chebyshev-Lobatto (scalati): fissato n, i punti sono con x k = (a + b) 2 t k = cos (b a) + t k, k = 0,...,n 2 (4) ( ) kπ, k = 0,...,n. n (5) Alvise Sommariva Interpolazione polinomiale. 11/ 27
Interpretazione geometrica Gauss-Legendre-Lobatto I punti di Gauss-Chebyshev-Lobatto si possono interpretare geometricamente. Si considerano gli n + 1 punti della circonferenza {(cos(θ k ),sin(θ k ))} k=0,...,n con θ k = (k π)/n Si proiettano {(cos(θ k ),sin(θ k ))} k=0,...,n sull asse delle ascisse. Le coordinate x di tali punti corrispondono ai punti di Gauss-Chebyshev-Lobatto. Alvise Sommariva Interpolazione polinomiale. 12/ 27
Interpretazione geometrica Gauss-Chebyshev-Lobatto 1.2 1 0.8 0.6 0.4 0.2 0 0.2 1 0.5 0 0.5 1 Figura: Interpretazione geometrica dei punti di Gauss-Chebyshev-Lobatto. Alvise Sommariva Interpolazione polinomiale. 13/ 27
Convergenza ed esempio di Runge L interpolante polinomiale in un set di nodi prefissati non converge sempre puntualmente alla funzione da approssimare. Infatti, per la funzione di Runge f (x) = 1 1 + x2, x [ 5,5] (6) si ha che il polinomio interpolatore p n in nodi equispaziati non converge (puntualmente) a f. Fortunatamente ciò non succede per i nodi di Gauss-Chebyshev(-Lobatto). Purtroppo, per un teorema dovuto a Faber, esistono comunque funzioni continue f (ma non C 1!!) tali che l interpolante p n nei nodi di Gauss-Chebyshev(-Lobatto) non converge puntualmente a f. Questo teorema è generalizzabile ad una famiglia arbitraria di nodi. Alvise Sommariva Interpolazione polinomiale. 14/ 27
Esempio di Runge 1 0.5 0 0.5 1 1.5 2 2.5 3 3.5 Runge Equisp. Gauss Cheb Lob. 4 5 0 5 Figura: Grafico della funzione di Runge 1/(1 + x 2 ) nell intervallo [ 5, 5] e delle sue interpolanti di grado 12 nei nodi equispaziati e di Gauss-Chebyshev-Lobatto. Alvise Sommariva Interpolazione polinomiale. 15/ 27
Esempio di Runge 4 3.5 Equisp. Gauss Cheb Lob. 3 2.5 2 1.5 1 0.5 0 5 0 5 Figura: Grafico errore della funzione di Runge 1/(1 + x 2 ) nell intervallo [ 5, 5] con le sue interpolanti di grado 12 nei nodi equispaziati e di Gauss-Chebyshev-Lobatto. Alvise Sommariva Interpolazione polinomiale. 16/ 27
Esempio di Runge Se p n P n è polinomio intp. nei nodi eqsp. o di G.-C.-L., vediamo al variare del grado quali sono gli errori 1/(1 + x 2 ) p n (x) : Deg Err. Eqs. Err. GCL 2 6.46e 001 9.62e 001 3 7.07e 001 6.46e 001 4 4.38e 001 8.29e 001 5 4.33e 001 4.58e 001 6 6.09e 001 6.39e 001 7 2.47e 001 3.11e 001 8 1.04e + 000 4.60e 001 9 2.99e 001 2.04e 001 10 1.92e + 000 3.19e 001 11 5.57e 001 1.32e 001 12 3.66e + 000 2.18e 001 13 1.07e + 000 8.41e 002 14 7.15e + 000 1.47e 001 Alvise Sommariva Interpolazione polinomiale. 17/ 27
Esempio di Runge Importante: l esempio di Runge mostra che esiste una funzione C ([ 5,5]) tale che al crescere del numero di nodi equispaziati n non sia garantita nemmeno la convergenza puntuale! D altra parte sussiste il seguente teorema dovuto a Bernstein: Teorema. Se f C 1 ([a,b]) con [a,b] intervallo limitato e chiuso della retta reale, il polinomio p n di grado n di interpolazione della funzione f nei nodi di Gauss-Chebyshev di grado n + 1 converge uniformemente a f su [a,b], per n. Se inoltre f C 2 ([a,b]) si ha la seguente stima dell errore f p n = O(n 1/2 ). Alvise Sommariva Interpolazione polinomiale. 18/ 27
Interpolazione di Newton Supponiamo note le coppie (x 0,f (x 0 )),..., (x n,f (x n )) con x k x j se k j. Allora posto w k (x) = (x x 0 )... (x x k 1 ), f [x j,x j+1,...,x s ] = f [x j+1,...,x s ] f [x j,...,x s 1 ] x s x j, f [x j ] = f (x j ) si dimostra che il polinomio p n P n interpolante le coppie citate è p n (x) = n w k (x)f [x 0,...,x k ]. k=0 Il vantaggio di questa scrittura è che se aggiungiamo un nuovo punto da interpolare, diciamo (x n+1,f (x n+1 )): p n+1 (x) = n+1 w k (x)f [x 0,...,x k ] = k=0 n w k (x)f [x 0,...,x k ] + k=0 + w n+1 f [x 0,...,x n+1 ] = p n (x) + w n+1 f [x 0,...,x n+1 ] Alvise Sommariva Interpolazione polinomiale. 19/ 27
Differenze divise Le quantità f [x j,...,x s ] si chiamano differenze divise. Di solito le quantità utili f [x 0,...,x k ] per il calcolo del polinomio interpolatore, si scrivono per via tabulare. Esempio: x 0 f [x 0 ] x 1 f [x 1 ] f [x 0,x 1 ] x 2 f [x 2 ] f [x 1,x 2 ] f [x 0,x 1,x 2 ]...... x n f [x n ] f [x n 1,x n ] f [x n 2,x n 1,x n ]... f [x 0,...,x n ] Alvise Sommariva Interpolazione polinomiale. 20/ 27
Differenze divise Se vogliamo intp. le coppie dell esempio precedente, cioè (x,y) ove x = [ 2;1;3],y = [ 2;11;17] otteniamo la tabella 2 2 1 11 4.3 3 17 3.0 0.26 e il polinomio intp. p 2 risulta p(x) = 2 + 4.3 (x + 2) 0.26 (x + 2)(x 1) In effetti p 2 ( 2) = 2, p 2 (1) = 2 + 4.3 3 0.26 0 = 11 e p 2 (3) = 2 + 4.3 5 0.26 10 = 2 + 21.6 2.6 = 17. Alvise Sommariva Interpolazione polinomiale. 21/ 27
Interpolazione in Matlab/Octave Supponiamo di dover interpolare le coppie {(x k,y k )} k=0,...,n e supponiamo sia x = [x 0,...,x n ], y = [y 0,...,y n ]. I coefficienti del polinomio interpolatore sono ottenibili dal comando polyfit. A tal proposito l help di Matlab suggerisce: >> help p o l y f i t POLYFIT Fit polynomial to data. POLYFIT (X,Y,N) finds the coefficients of a polynomial P(X) of degree N that fits the data, P(X(I) ) =Y(I), in a least squares sense.... See also POLY, POLYVAL, ROOTS. >> Alvise Sommariva Interpolazione polinomiale. 22/ 27
Interpolazione in Matlab/Octave Per capire qualcosa in più eseguiamo il seguente codice >> x=[ 2 1 3 ] ; >> y=[ 2 11 17]; >> a=p o l y f i t (x,y,2) a = 0.2667 4.0667 7.2000 >> In effetti, calcolando manualmente il polinomio interpolatore si ha, semplificando quando ottenuto coi polinomi di Lagrange che è p 2 (x) = ( 4/15) x 2 +(61/15) x +(36/5) 0.26x 2 +4.06x +7.2. Quindi, se a = (a k ) k=1,...,3, abbiamo p 2 (x) = a 1 x 2 + a 2 x + a 3 e più in generale, se p n è il polinomio interpolatore di grado n, e a = (a k ) è il vettore ottenuto utilizzando polyfit, allora p n (x) = a 1 x n + a 2 x n 1 +... + a n+1. Alvise Sommariva Interpolazione polinomiale. 23/ 27
Interpolazione in Matlab/Octave Per valutare in un vettore di ascisse X = [X k ] k=1,...,m un polinomio p n (x) = a 1 x n + a 2 x n 1 +... + a n+1 i cui coefficienti sono i coeff. di in un vettore P = [a k ] k=1,...,n+1 usiamo il comando polyval. Dall help: >> help p olyval To get started, select MATLAB Help from the Help menu. POLYVAL Evaluate polynomial. Y = POLYVAL (P,X), when P is a vector of length N+1 whose elements are the coefficients of a polynomial, is the value of the polynomial evaluated at X.... Y=P(1) XˆN+P (2) Xˆ(N 1)+...+P(N) X+P(N+1) >> Alvise Sommariva Interpolazione polinomiale. 24/ 27
Interpolazione in Matlab/Octave Dati i vettori x = [x k ] k=1,...,n, y = [y k ] k=1,...,n sia p n 1 (x k ) = y k, per k = 1,...,n. Sia s = [s k ] k=1,...,m e desideriamo calcolare t = [t k ] k=1,...,m per cui t k = p n 1 (s k ), per ogni k. A tal proposito introduciamo la funzione: function t=interpol (x,y,s) m=length (x) 1; coeff=p o l y f i t (x,y,m) ; t=polyval (coeff,s) ; Alvise Sommariva Interpolazione polinomiale. 25/ 27
Esempio di Runge Interpoliamo la funzione di Runge 1/(1 + x 2 ) in [ 5,5] sia su nodi equispaziati che di tipo Gauss-Chebyshev-Lobatto. A tal proposito definiamo la funzione di Runge function [fx]=runge (x) fx=1./(x.ˆ2+1) ; e una funzione che genera n nodi di Gauss-Chebyshev-Lobatto nell intervallo [a,b]: function xc=cheb (a,b,n) for m=1:1:n xc(m)=(a+b) /2 ((b a) /2) cos ( pi (m 1)/(n 1)) ; end Alvise Sommariva Interpolazione polinomiale. 26/ 27
Esempio di Runge Quindi scriviamo il file esperimento.m n=11; % GRADO. % NODI TEST. s= 5:10/(10 n) : 5 ; % NODI EQSP. : ASCISSE/ORDINATE + INTP.TEST. x= 5:10/n : 5 ; y=runge (x) ; t=interpol (x,y,s) ; % NODI GCL. : ASCISSE/ORDINATE+INTP.TEST. xgcl=cheb ( 5,5,n+1) ; ygcl=runge (xgcl ) ; tt =interpol (xgcl, ygcl,s) ; % PLOT INTP. VS RUNGE. plot (s,runge (s),s,t,s,tt) ; % ERRORI ASSOLUTI. ee=norm(runge(s) t,inf ) ;ec=norm(runge (s) tt,inf ) ; f p r i n t f ( \n\t [ERR. ] [ EQS]:%2.2 e [GCL]:%2.2 e,ee,ec) ; Alvise Sommariva Interpolazione polinomiale. 27/ 27
Esempio di Runge: risultati Al variare di n: Otteniamo la tabella degli errori vista in precedenza. Notiamo che la scelta di n non può essere eccessiva. Provare n = 30!! Risulta evidente che non sussiste la convergenza puntuale al crescere di n, di p n a 1/(1 + x 2 ), qualora si utilizzino nodi equispaziati. Risulta evidente che sussiste la convergenza puntuale al crescere di n, di p n a 1/(1 + x 2 ), qualora si utilizzino nodi di Gauss-Chebyshev-Lobatto. Alvise Sommariva Interpolazione polinomiale. 28/ 27