Corso di Analisi Numerica A.A. 2004-2005
Implementazione del problema della
approssimazione ai minimi quadrati
Camillo Bosco
Definizione del problema (richiamo)
CASO DISCRETO: siano dati m punti (x1,y1),…,(xm,ym). Si vuole
determinare un polinomio p*(x) appartenente a Pn, con m>n ed
m,n appartenenti a N, tale che:
m
w p *(x ) y
i 1
2
i
i
i
risulti minima rispetto ai coefficienti del polinomio. I valori w1,
. . . , wm 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 (xi,yi) i=1…m trovare i valori di a e b che
minimizzano:
m
F ( a, b) yi ( axi b)
2
i 1
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
a
n
n
n
i 1
i 1
i 1
n xi yi ( xi )( yi )
n
n
n xi ( xi )
2
i 1
b
2
i 1
n
n
n
n
i 1
i 1
n
i 1
i 1
( xi 2 )( yi ) ( xi )( xi yi )
n
n ( xi 2 ) ( xi ) 2
i 1
i 1
Esempio 1 : fitting_lineare.m
xi
yi
0
10
1
25
2
51
3
66
4
97
5
118
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*(xi).
Qualora tale sistema Ax=b non abbia soluzione si determina il
vettore soluzione x Rn :
Ax b Ax b 2 x Rn
2
Tale vettore, che minimizza la somma dei quadrati delle
componenti del vettore resto R = Ax-b, è soluzione del
sistema:
ATAx = ATb
Il problema viene quindi ricondotto alla risoluzione di un
sistema lineare “classico”
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:
( k 1)
xi
i 1
(bi aij x j
j 1
(k )
n
a x
j i 1
ij
(k )
j
) / aii
i=1…n
MATLAB risolve un sistema lineare utilizzando l’operatore \
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
xi
yi
1
2.1
2
2.9
3
3.2
0
1
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
Pn in modo tale da minimizzare:
b
a
w( x) p *( x) f ( x) dx
2
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 a0,…,an del polinomio p*(x) che approssima f
appartenente a V.
Dobbiamo minimizzare:
b
n
a
j 0
F (a0 ,..., an ) ( f ( x) a j x j )2dx
Come minimizzare tale funzione ? Calcolando le derivate prime
di F rispetto ai valori a0,…,an e ponendole uguali a zero.
Otteniamo il sistema:
n
b
j 0
a
i
a
x
dx
f
(
x
)
x
dx
j
i j
b
a
Esempio 3 : min_quad_continuo1.m
In tal caso [a,b] = [0,1] il sistema diventa:
n
aj
i j 1
j 0
1
f ( x ) x i dx
0
PROBLEMA:
La matrice dei coefficienti di tale sistema è:
1
H
i
j
1
Si tratta della
malcondizionata !
matrice
di
Hilbert.
i,j= 0…n
E’
una
matrice
Soluzione !
Per evitare di ottenere una matrice malcondizionata e
difficilmente invertibile si sceglie una base differente da
quella canonica in Pn.
L’insieme S={1,x,x2,…,xn}, base canonica di Pn, è 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:
qk ( x )k 0
n
pk ( x )k 0
n
Ortogonalizzazione di Gram-Schmidt
q0 ( x) 1
q0 ( x )
p0 ( x )
q0
q0
k 1
qk ( x ) x x , p j p j ( x )
k
k
j 0
b
a
q0 2 ( x )dx
qk ( x )
pk ( x )
qk
Le due successioni
La successione
qk ( x )k 0 è costituita da polinomi ortogonali.
n
Pertanto a norma di definizione:
q j , qk w( x)q j ( x)qk ( x)dx 00
b
a
per k j
per k=j
La successione pk ( x )k 0 è costituita da polinomi ortonormali.
Quindi:
n
p j , pk w( x) p j ( x) pk ( x)dx 10
b
a
per k j
per k=j
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 l’insieme
pk ( x )k 0
n
utilizzando il procedimento
di ortogonalizzazione di Gram-Schmidt
2) Si calcolano i coefficienti generalizzati di Fourier:
f , pj
j= 0…n
3) Si costruisce il polinomio di approssimazione:
n
pn* ( x ) f , p j p j ( x )
j 0
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 pn 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:
1
1
L j ( x) Lk ( x)dx 0 per j k
-Scegliendo invece w(x)=1/sqrt(1-x2) in [-1,1], si ottiene la
famiglia dei polinomi di Chebichev:
1
T j ( x )Tk ( x )
1
1 x
2
dx 0
per j k
Esempio 5 : polinomiLegendre.m
Genera i primi n polinomi di Legendre secondo la seguente
ricorrenza: (Rif. Naldi-Pareschi-Russo pag. 262)
L0 (x)= 1
L1 (x)= x
(n+1) Ln+1 (x)=(2(n+1)-1)xLn(x)-nLn-1(x)
Esempio 6 : polinomiChebichev.m
Genera i primi n polinomi di Chebichev secondo la seguente
ricorrenza:
T0 (x)= 1
T1 (x)= x
Tn+1 (x)=2xTn(x)-Tn-1(x)