Implementazione del problema della approssimazione ai minimi quadrati Camillo Bosco Corso di Analisi Numerica A.A
Definizione del problema (richiamo) CASO DISCRETO: siano dati m punti (x 1,y 1 ),…,(x m,y m ). Si vuole determinare un polinomio p*(x) appartenente a P n, con m>n ed m,n appartenenti a N, tale che: risulti minima rispetto ai coefficienti del polinomio. I valori w 1,..., w m sono delle costanti positive dette pesi. A scopo didattico tali costanti assumono tutte valore 1 (peso uniforme).
Fitting Lineare: una istanza del problema Nel caso in cui n=1 vogliamo determinare il polinomio di primo grado p(x)=ax+b (geometricamente una retta) che costituisce la migliore approssimazione ai minimi quadrati. Vogliamo cioè, noti m punti (x i,y i ) i=1…m trovare i valori di a e b che minimizzano: Come minimizzare tale funzione ? Calcolando le derivate prime di F rispetto ad a e rispetto a b e ponendole uguali a zero. Si ottiene così un sistema di due equazioni in due incognite che risolto consente di esprimere a e b (le incognite !) in funzione delle coordinate degli n punti.
Le soluzioni del sistema
Esempio 1 : fitting_lineare.m xixi yiyi
Ricordiamo la teoria ! Risolvere il problema discreto ai minimi quadrati equivale a determinare la soluzione di un sistema lineare sovradeterminato (m>n) ottenuto calcolando i valori p*(x i ). Qualora tale sistema Ax=b non abbia soluzione si determina il vettore soluzione : Tale vettore, che minimizza la somma dei quadrati delle componenti del vettore resto R = Ax-b, è soluzione del sistema: A T Ax = A T b Il problema viene quindi ricondotto alla risoluzione di un sistema lineare classico Risolvere il problema discreto ai minimi quadrati equivale a determinare la soluzione di un sistema lineare sovradeterminato (m>n) ottenuto calcolando i valori p*(x i ). Qualora tale sistema Ax=b non abbia soluzione si determina il vettore soluzione
Ripassiamo il metodo di Jacobi ! E un metodo iterativo per la risoluzione di un sistema lineare quadrato (m=n). Al passo k+1-esimo le componenti del vettore soluzione sono così definite: i=1…n MATLAB risolve un sistema lineare utilizzando loperatore \ nella forma x=A\b. Tale operatore corrisponde alla funzione mldivide. Matlab utilizza un metodo diretto: il metodo di eliminazione di Gauss
Esempio 2 : min_quad.m xixi yiyi
Definizione del problema (caso continuo) CASO CONTINUO: sia w(x) una funzione positiva, continua ed integrabile in [a,b]. Si vuole determinare p*(x) appartenente a P n in modo tale da minimizzare: La funzione w(x) è detta funzione peso. A scopo didattico si sceglie w(x)=1 cioè peso uniforme ed unitario.
Una istanza del problema Nel caso in cui w(x)=1 e consideriamo lo spazio V=C[a,b], ovvero lo spazio delle funzioni continue in [a,b], vogliamo trovare i coefficienti a 0,…,a n del polinomio p*(x) che approssima f appartenente a V. Dobbiamo minimizzare: Come minimizzare tale funzione ? Calcolando le derivate prime di F rispetto ai valori a 0,…,a n e ponendole uguali a zero. Otteniamo il sistema:
Esempio 3 : min_quad_continuo1.m In tal caso [a,b] = [0,1] il sistema diventa: PROBLEMA: La matrice dei coefficienti di tale sistema è: i,j= 0…n Si tratta della matrice di Hilbert. E una matrice malcondizionata !
Soluzione ! Per evitare di ottenere una matrice malcondizionata e difficilmente invertibile si sceglie una base differente da quella canonica in P n. Linsieme S={1,x,x 2,…,x n }, base canonica di P n, è costituito da polinomi non ortogonali rispetto a nessun prodotto interno. Vogliamo trasformare la base canonica in una famiglia di polinomi ortogonali. Il procedimento di ortogonalizzazione di Gram-Schmidt ci consente di generare due successioni di polinomi:
Ortogonalizzazione di Gram-Schmidt
Le due successioni La successioneè costituita da polinomi ortogonali. Pertanto a norma di definizione: La successioneè costituita da polinomi ortonormali. Quindi: Scegliendo tali successioni la matrice del sistema di equazioni è diagonale, quindi non più malcondizionata !
Esempio 4 : min_quad_continuo2.m Il polinomio di migliore approssimazione ai minimi quadrati nel caso continuo è calcolato come segue: 1) Si genera linsiemeutilizzando il procedimento di ortogonalizzazione di Gram-Schmidt 2) Si calcolano i coefficienti generalizzati di Fourier: j= 0…n 3) Si costruisce il polinomio di approssimazione:
Teoria dei polinomi ortogonali -Esistono delle famiglie di polinomi ortogonali utilizzate in diversi ambiti della analisi numerica. -Ciascuna famiglia è caratterizzata da una proprietà principale: ciascun polinomio p n della famiglia è ortogonale a tutti i polinomi di grado minore o uguale a n. -Nel caso della approssimazione si osserva che, scegliendo w(x)=1 in [-1,1], si ottiene la famiglia dei polinomi di Legendre: -Scegliendo invece w(x)=1/sqrt(1-x 2 ) in [-1,1], si ottiene la famiglia dei polinomi di Chebichev:
Esempio 5 : polinomiLegendre.m Genera i primi n polinomi di Legendre secondo la seguente ricorrenza: (Rif. Naldi-Pareschi-Russo pag. 262) L 0 (x)= 1 L 1 (x)= x (n+1) L n+1 (x)=(2(n+1)-1)xL n (x)-nL n-1 (x)
Esempio 6 : polinomiChebichev.m Genera i primi n polinomi di Chebichev secondo la seguente ricorrenza: T 0 (x)= 1 T 1 (x)= x T n+1 (x)=2xT n (x)-T n-1 (x)