Fitting di dati La prima fase del processo di risoluzione di un problema mediante elaboratore consiste nella descrizione del problema mediante un modello matematico Spesso le uniche informazioni sul problema in esame consistono in un insieme finito di dati • misure sperimentali • valori assunti da una funzione in certi punti • dati provenienti da indagini statistiche Si vuole costruire una funzione che, che in qualche modo, modo possa rappresentare il fenomeno La costruzione di tale funzione può avvenire in diversi modi che dipendono: •dagli scopi per cui si vuole costruire il modello: •valutare il fenomeno in punti diversi da quelli noti (nodi) •semplice visualizzazione dei dati •previsioni •dalla qualità dei dati: •i valori sono solo sperimentali e: • giudicati esatti • sono affetti da errori di misura •i valori sono ottenibili per via analitica •ecc. •ecc La funzione lineare a tratti costruita unendo i p punti di coordinate (x,P) p può essere un modello utile per visualizzare i dati. E’ utile per estrapolare? Sapendo S d che h l’l’estensione t i d della ll molla, ll nell’intervallo ll’i t ll considerato, id t è direttamente proporzionale alla forza, un modello attendibile può essere la la retta in figura che non passa per i punti (x,F) ma solo “vicino”. Gli esempi precedenti costituiscono due semplici esempi di MODELLI basati sull’interpolazione dei dati Il problema generale dell’interpolazione dell interpolazione è il seguente: Assegnati n punti di coordinate (xi,yi), i=1,2,...,n, i 1,2,...,n, e una funzione F(x,a0,a1,...,am) che dipende dai parametri a0,a1,...,am, si vogliono determinare i valori da assegnare ai parametri affinché risulti: i 1,2,...,n • I caso F(x,a0,a1,...,am) = yi, i=1,2,...,n • II caso F(x,a0,a1,...,am) ≈ yi, i=1,2,...,n Qualità e quantità dei dati Caratteristiche del problema p INTERPOLAZIONE Matematica Costruire una f funzione i che h passii per i punti assegnati INTERPOLAZIONE Statistica Costruire una funzione che h sii scosti ti poco dai d i dati Modello che assume esatti tti i dati d ti d dell problema Modello che assume affetti ff tti d da errore i dati del problema Interpolazione Matematica Interpolazione matematica • Una possibile classe di funzioni parametriche è quella costituita dai p polinomi: F(x,a0,a1,...,am) = Pm(x) = a0 +ax 1 +... +amx m Problema dell’interpolazione di Lagrange Assegnati ssegnat n punti punt (x ( i , yi ) ssi vuole uo e costruire costru re un polinomio Pm(x) che nei nodi soddisfi le z condizioni Pm ( xi ) = yi , i = 11,K, n Di che h grado d m deve d essere ill polinomio l interpolante affinché esista e sia unico? Esempio p 3 Punti allineati 3 2.5 Esiste un sol polinomio di primo grado d passante per tre punti allineati 2 1.5 data 1 linear 1 0.5 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3 Esempio p 3 Punti non allineati 2 1.5 data 1 quadratic 1 0.5 0 -0.5 -1 -1.5 -2 -2.5 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3 Polinomio di secondo grado Esiste un sol polinomio di secondo grado passante per tre punti non allineati Non esiste un p polinomio di primo p grado (retta) passante per 3 punti non allineati Infiniti polinomi di grado d maggiore i di 2 Teorema di Lagrange Assegnati n punti del piano (xi , yi ), esiste un polinomio di grado g al p più n-1 tale che sol p Pn−1 ( xi ) = yi , i = 1,K, n Esercizio E Di che grado è il polinomio passante per i punti generati con queste istruzioni? x=1:15 y=x.^3-2*x-1 Esempio punti,, Dati 3 p si vuole costruire la p parabola passante per i punti assegnati 3 coefficienti ffi i ti d da calcolare l l (a, b, b c) 3 condizioni di interpolazione Sistema di equazioni lineari nelle incognite a, b, c Metodo dei coefficienti indeterminati Metodo dei coefficienti indeterminati In generale I l assegnati ss ti n punti ti si costruisce st is il sistema sist m imponendo le condizioni di interpolazione ⎧ a1 x1n−1 + a2 x1n−2 + L + an−1 x1 + an = y1 ⎪ a1 x2n−1 + a2 x2n−2 + L + an−1 x2 + an = y2 ⎨ L ⎪ n−1 n−2 a x + a x + L + an−1 xn + an = yn 2 n ⎩ 1 n Mc = y ⎛ x1n−1 ⎜ x n−1 M =⎜ 2 L ⎜ x n−1 ⎝ n x1n−2 L x10 ⎞ n−2 0⎟ x2 L x2 , c = a ,L a T , y = y ,L y T ( ( 1 n) 1 n) ⎟ L n−2 0⎟ xn L xn ⎠ Il metodo t d dei d i coefficienti ffi i ti iindeterminati d t i ti è equivalente alla risoluzione di un sistema i t li lineare ma M è una matrice di Vandermonde il sistema i t è malcondizionato l di i t Necessità di cambiare approccio al problema Secondo approccio Costruire il p polinomio interpolante p come combinazione di particolari polinomi di grado n-1 (p (polinomi fondamentali di Lagrange) g g ) con coefficienti uguali alle yi Pn−1 ( x ) = y1l1 ( x ) + y2l2 ( x ) + L + ynln ( x ) Formula di Lagrange Esempio Assegnati i punti: ( 0,1) (1, 2 ) ( 2, 9 ) vogliamo costruire il polinomio interpolante di Lagrange P2 ( x ) = y1l1 ( x ) + y2l2 ( x ) + y3l3 ( x ) Formula di Lagrange ⎛ x − xj ⎞ P( x) = ∑ ⎜ ∏ yk ⎟ ⎜ ⎟ k =1 ⎝ j ≠ k xk − x j ⎠ n x − x2 ) ( x − x3 )L( x − xn ) x − x1 ) ( x − x3 )L( x − xn ) ( ( P( x) = y1 + y2 + L + ( x1 − x2 ) ( x1 − x3 )L( x1 − xn ) ( x2 − x1 ) ( x2 − x3 )L( x2 − xn ) x − x1 )( x − x2 )L( x − xn−1 ) ( + yn ( xn − x1 )( xn − x2 )L( xn − xn−1 ) P ( x1 ) = y1 ; P (x2 ) = y 2 ;L P (xn ) = yn Esercizio Es rc z o Scrivere il polinomio di Lagrange interpolante i punti pun x=0:3 Y=[-5 –6 –1 16] x − 1)( x − 2 )( x − 3) x − 0 )( x − 2 )( x − 3) ( ( P( x) = (−5) + (−6) + ( 0 − 1)( 0 − 2 )( 0 − 3) (1 − 0 )(1 − 2 )(1 − 3) x − 0 )( x − 1)( x − 3) x − 0 )( x − 1)( x − 2 ) ( ( + (−1) + (16) ( 2 − 0 )( 2 − 1)( 2 − 3) ( 3 − 0 )( 3 − 1)( 3 − 2 ) Formula di Lagrange g g in Matlab function v = polinterp(x,y,u) % POLINTERP Interpolazione polinomiale di Lagrange % v = POLINTERP(x,y,u) calcola v(j) = P(u(j)) dove P è % ill polinomio pol nom o di d grado d = length(x)-1 length(x) con P(x( P(x(i)) )) = y(i). y( ). % Valuta tutti gli elementi di u contemporaneamente. n = length(x); v = zeros(size(u)); ( ( )) for k = 1:n w = ones(size(u)); % calcola la prodottoria per j~=k for j = [[1:k-1 k+1:n]] f w = (u-x(j))./(x(k)-x(j)).*w; end v = v + w*y(k); * (k) end Complessità della formula di Lagrange for k = 11:n f w = ones(size(u)); % calcola la prodottoria per jj~=k =k for j = [1:k-1 k+1:n] (2M+2A)(n-1) w = (u-x(j))./(x(k)-x(j)).*w; j j + end 1M+1A v = v + w*y(k); end d O(n2) O( = n(2n-1)(M+A) (2 1)(M A) n volte Complessità della formula di Lagrange La complessità non cambia se si vuole: •Aggiungere un punto di interpolazione •Calcolare il polinomio in un altro punto Esempio x=0:3 y=[ 5 -6 y=[-5 6 -11 16] u=-0.25:0.1:3.25; vv= polinterp(x,y,u); polinterp(x y u); plot(x,y,'or',u,v,'b') 25 20 15 10 5 0 -5 5 -10 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 Usare p polinterp p con variabili simboliche >> symx=sym('x') (' ') symx = x >> p p= polinterp(x,y,symx) p p( ,y, y ) p= -5*(-1/3*x+1)*(-1/2*x+1)*(-x+1)-6*(-1/2*x+3/2)*(-x+2)*x1/2*( 3)*( 1)* 16/3*( 2)*(1/2* 1/2)* 1/2*(-x+3)*(x-1)*x+16/3*(x-2)*(1/2*x-1/2)*x >> p=simplify(p) p= x^3-2*x-5 Cosa succede quando il numero di punti ti cresce? ? Interpolation 0.5 0.4 0.3 02 0.2 0.1 0 -0.1 -0.2 -0.3 -0.4 -0.5 0 1 2 3 4 5 6 7 8 Il polinomio interpolante oscilla, specialmente agli estremi dell’intervallo Fenomeno di Runge Consideriamo la funzione definita nell’intervallo [-1 1]: 1 g ( x) = 2 1 + 25 x e consideriamo come punti di interpolazione i valori di tale funzione nei p punti equispaziati q p xi = −1 + ih, i = 0,L , n, x0 = −1, xn = 1 Vogliamo costruire il polinomio interpolante al cr sc r d crescere dell num numero r n dei d i punti di int interpolazione rp l zi n Rungeinterp Polinomi m di grado g elevato oscillano fortemente tra i dati in genere non si usano polinomi di grado n > 6 Ma polinomi di grado basso pochi dati da interpolare Il modello risulta poco attendibile perché non si usano tutte le informazioni disponibile Interpolazione polinomiale a tratti Interpolazione p a tratti A differenza dell’interpolazione polinomiale ((unico p polinomio interpolante p l’insieme di dati)) l’interpolazione polinomiale a tratti utilizza polinomi interpolanti p p diversi su sottoinsiemi contigui di nodi di interpolazione Grado basso p per i vari polinomi p che costituiscono la funzione interpolante qualunque q q sia il numero di nodi. Interpolazione lineare a tratti Valutazione di L(x) ( ) Polinomi di primo grado ⎧ L1 ( x) per x ∈ [ x1 , x2 ] ⎪ ⎪ L2 ( x) per x ∈ [ x2 , x3 ] L( x) = ⎨ L ⎪ ⎪ Ln −1 ( x) per x ∈ [ xn −1 , xn ] ⎩ Polinomiale a tratti di I grado •Individuare l’intervallo [xk,xk+1] in cui cade la x •Costruire la retta passante per i due punti (xk,yk), (xk+1,yk+1) •Valutare la retta nel punto t x L( ) è c L(x) continua ntinu ma L’( ) non è continua L’(x) Polinomi cubici interpolanti a tratti Scopo: Scopo Costruire una polinomiale a tratti di terzo grado con derivate prime continue nei nodi Con tali p polinomi il problema non ha gradi di libertà g Polinomi interpolanti di terzo grado su 4 nodi Univocamente determinati In queste ipotesi non è possibile raggiungere lo scopo Se sono noti i valori della derivata prima nei punti di interpolazione, allora la polinomiale a tratti è univocamente determinata altrimenti Si devono fissare dei valori opportuni per la derivata prima Se vogliamo costruire ad esempio una polinomiale a tratti che preservi visivamente la forma dei dati le pendenze possono essere determinate in dati, modo tale che i valori della funzione non superino i valori dei dati almeno localmente. localmente Polinomi interpolanti p di terzo grado g su 2 nodi pchip di Matlab dk derivata nel punto dk (xk,yk) δk δk+1 δk+1 δk pendenza della retta per i punti (xk-1,yk-1) e (xk,yk) δ k e δ k +1 hanno segno opposto δ k e δ k +1 hanno lo stesso segno ⇓ ⇓ d k è la media armonica pesata dk = 0 con l'ampiezza dei due intervalli di δ k e δ k +1 w1 + w2 1 1 = + dk δ k −1 δ k Questa polinomiale cubica a tratti ha derivata prima p m continua ma m derivata seconda discontinua