Sunteți pe pagina 1din 21

Metoda celor mai mici patrate

Regresia polinomială

Fie [a,b] un interval de pe axa reală a numerelor, cu n puncte x1,x2,...,xn


pentru care sunt obţinute valorile yi=f(xi),i=1,2,..,n din măsurători, deci sunt
afectate de erori.
Se pune problema determinării parametrilor j, j=1,2,...,m+1 ai unei funcţii
model F(x, j) aparţinând unei anumite clase de funcţii, astfel încât ea să
aproximeze cel mai bine funcţia f(x) în sensul celor mai mici pătrate, adică
să minimizeze distanţa:
1/ 2
 n

d ( f , F )   ( yi  F ( xi ,  j )) 2   min
 i 1 

Vom nota
n
S   ( yi  F ( xi ,  j )) 2
i 1

Funcţia model este cu atât mai bună cu cât sunt mai elaborate
considerentele teoretice pe baza cărora i s-a stabilit forma (cu cât este mai
puţin empirică).
S
Condiţia de minim pentru d(f, F):  0, j  1,2,..., m, m  1
 j

Dacă funcţia căutată este polinomul de grad m:

F ( x,  j )  1 x m   2 x m 1   3 x m  2  ...   m x   m 1
forma lui S şi a derivatelor ei devin:
n
S   ( yi  1 x m   2 x m 1   3 x m  2  ...   m x   m 1 ) 2
i 1

S n
 2 xi ( yi  1 xi   2 xi   3 xi  ...   m xi   m 1  0,
m j m m 1 m2
j  1,...., m, m  1
 j i 1
Sistemul poate fi scris în formă matriceală:
  xi m  xi
m 1
 x i n    yi 
 i i i   1   i 
 x m 1
  xi x i xi    2   i xi yi 
m 2
i  i
i i i
            
 m 1     x m 1 y 
 i  xi  xi i xi    m  i i i 
2 m 1 2 m2 m
x 
 i i i     
  xi 2 m  xi  xi i xi   m1   i xi yi 
2 m 1 m 1 m m

 i i i
Matricea sistemului este o matrice de formă particulară şi se numeşte
matricea Toplitz. Dacă se efectuează calculul primei linii şi a primei
coloane, se poate obţine întreaga matrice. Pe orice diagonală din matrice
se observă că suma şi diferenţa puterilor este constantă. Construirea
matricii coloană a termenilor liberi se poate realiza în paralel cu calculul
primei linii a matricii sistemului, dacă se ţine cont de faptul că puterea la
care apare xi în sume parcurge aceleaşi valori în ambele cazuri.
Rezolvarea sistemului poate fi făcută cu oricare din metodele studiate.
Soluţia furnizeză coeficienţii polinomiali j, care reprezintă parametrii model
ai funcţiei F(x,j).
Algoritmul regresiei polinomiale:

1. Date de intrare:
n =numărul punctelor tabelate
(xi,yi), i=1,2,…,n =punctele date
m =ordinul polinomului (funcţiei model) cu care se
aproximează funcţia tabelată
nr_puncte =numărul de abscise pentru care se doreşte evaluarea
funcţiei model
puncte =tabloul absciselor de evaluat cu funcţia model
Algoritmul regresiei polinomiale:

2. i)Se calculează prima linie a matricii Toplitz (a) şi vectorul termenilor


liberi.
Pentru i=1,n execută
a[1,i]=0; a[i,1]=0; b[i,1]=0;
el=1;
Pentru j=0,m execută
a[1,m-j+1]=a[1,m-j+1]+el;
b[j+1,1]=b[j+1,1]+el*y[i];
el=el*x[i];
sf
ii) se calculează prima coloană a matricii a.
pentru j=2,(m+1) execută
a[j,1]=a[j,1]+el;
el=el*x[i];
sf
sf
Algoritmul regresiei polinomiale:

3. Se completează diagonala şi codiagonalele matricii a.


4. Se rezolvă sistemul ax=b prin procedura Gauss de eliminare şi
substituţie inversă.
5. Se evaluează funcţia model pentru cele nr_puncte date.
6. Se reprezintă graficul polinomului model obţinut.
Regresia liniara

Dreapta de cea mai bunǎ aproximare prin regresie liniarǎ se bazeazǎ pe


principiul de aproximare conform cǎruia eroarea implicatǎ este suma
pǎtratelor diferenţelor dintre valorile pe dreapta de aproximare şi valorile
date. Problema revine aşadar la minimizarea funcţiei:
n
E (a, b)   ( yi  (axi  b)) 2  min
i 1

în raport cu parametrii a şi b. Pentru aceasta este necesar ca derivatele


parţiale ale funcţiei E, în raport cu necunoscutele a şi b, sǎ se anuleze:

 n
  y i  ( ax i  b )  2
0
a i 1
 n
  y i  ( ax i  b )  2
0
b i 1
Acest sistem este echivalent cu sistemul:

n n n
a  xi  b xi   xi y i
2

i 1 i 1 i 1
n n
a  xi  bn   y i
i 1 i 1

Rezolvarea sistemului rezultat mai sus nu ridicǎ probleme. Este un sistem


algebric liniar, cu douǎ ecuaţii şi douǎ necunoscute, a şi b, care se rezolvǎ
prin metodele cunoscute şi prezentate în aceastǎ carte.
Regresia liniară în Matlab.
 
Să se determine linia de regresie pentru datele tabelate mai jos prin:
i)rezolvarea sistemului coeficienţilor
ii)folosind comanda Matlab polyfit
iii)să se calculeze deviaţia dreptei de regresie faţă de datele tabelate
i xi yi xi2 xiyi
1 0.1 0.61 0.01 0.061
2 0.4 0.92 0.16 0.368
3 0.5 0.99 0.25 0.495
4 0.7 1.52 0.49 1.064
5 0.7 1.47 0.49 1.029
6 0.9 2.03 0.81 1.827
Total a21 z2 a11 z1
Suma 3.3 7.54 2.21 4.844
Soluţie:
i) Din tabelul dat avem că:
a11=2.21, a12=3.3, z1=4.884
a21=3.3, a22=6, z2=7.54
ceea ce înseamnă că sistemul regresiei liniare se scrie:

2.21 3.3  c1  4.844


 3.3 6  c    7.54 
  2   

Soluţia sistemului este: c1=1.7645, c2=0.2862.


Dreapta de regresie liniară este:
g(x)=1.7645x+0.2862
ii) Programul Matlab care determină funcţia model de gradul întâi este:
 
x=[0.1, 0.4, 0.5, 0.7, 0.7, 0.9];
y=[0.61, 0.92, 0.99, 1.52, 1.47, 2.03];
c=polyfit(x,y,1)
d=polyval(c,x);
plot(x,y,’*’);
hold on
plot(x,d)
 
c=
 
1.7646 0.2862
 
gtext(‘y=1.7646x+0.2862’)
iii) Deviaţia liniei de regresie faţă de punctele tabelate va fi (y-d), unde y şi d
sunt vectorii din programul Matlab.
i x(i) y(i) g(xi) =c1xi +c2 Deviaţia
1 0.1 0.61 0.4626 0.14738
2 0.4 0.92 0.9919 -0.07198
3 0.5 0.99 1.1684 -0.17844
4 0.7 1.52 1.5213 -0.00135
5 0.7 1.47 1.5213 -0.05135
6 0.9 2.03 1.8742 0.15574
Exemplul 1.

Vitezele măsurate pe diferite puncte de-a lungul suprafeţei de mărginire, în


convecţie liberă pentru o placă verticală, sunt date în tabelul de mai jos:

i 1 2 3 4 5 6
xi (grosimea) 0.0 0.2 0.4 0.6 0.8 1.0
yi (viteza) 0.0 1.05 0.85 0.35 0.1 1.0
Determinaţi polinomul de regresie de ordin doi pentru tabelul de date.
 
Soluţie:
Pentru cazul general cele n puncte obţinute prin măsurători sunt:
(xi,yi), i=1,2,…,n.
 
Suma erorilor pătratice S este:

 
n n
S   ei   yi  a0  a1 x1  a2 xi  ...  am xi
2 2 m 2

i 1 i 1
Aproximarea prin metoda celor mai mici pătrate presupune minimizarea
sumei S, în raport cu coeficienţii necunoscuţi a0,a1,…,am. Pentru aceasta
vom determina derivatele parţiale ale lui S în funcţie de coeficienţi, pentru a
le anula:
S
 
n
 2 yi  a0  a1 xi  a2 xi  ...  am xi  0
2 m

a0 i 1

S
 
n
 2 xi yi  a0  a1 xi  a2 xi  ...  am xi  0
2 m

a1 i 1


S
 
n
 2 xi yi  a0  a1 xi  a2 xi  ...  am xi  0
m 2 m

am i 1

Am obţinut deci un sistem algebric cu m+1 ecuaţii şi m+1 necunoscute,


care se rezolvă prin metode numerice.
Revenind la problema din exemplul dat mai sus, avem: m=2, n=6
n n

x
i 1
i  3.0 y
i 1
i  3.35

 xi  0  0.04  0.16  0.36  0.64  1  2.20


2

i 1
n

 xi  0  0.008  0.064  0.216  0.512  1  1.8


3

i 1

 xi  0  0.0016  0.0256  0.1296  0.4096  1  1.5664


4

i 1
n

x y
i 1
i i  0  0.21  0.34  0.21  0.08  1  1.84
n

 yi  0  0.042  0.136  0.126  0.064  1  1.368


2

i 1
Sistemul algebric devine:

6a0  3a1  2.2a2  3.35


3a0  2.2a1  1.8a2  1.84
2.2a0  1.8a1  1.5664a2  1.368

Soluţia sistemului algebric este:


a0= 0.383927 a1= 0.659830 a2= -0.424115

iar polinomul quadratic rezolvat prin metoda celor mai mici pătrate,
respectiv prin regresie polinomialǎ quadraticǎ, se va scrie :

y ( x)  0.383927  0.659830 x  0.424115 x 2


Regresia neliniară

Exemplul 1.
 
Vibraţia amplitudinii unei maşini (xi) este măsurată la diferite momente de
timp (ti), iar rezultatele sunt:
I 1 2 3 4
ti(sec) 0 2 4 6
xi(mm) 5 3.7 2.7 2

Determinaţi o curbă de forma:


x(t)=a·e-bt
care să aproximeze datele prin metoda celor mai mici pătrate.
Soluţie:
 
O astfel de problemǎ se rezolvǎ prin liniarizarea expresiei curbei pentru a
putea fi aplicatǎ metoda celor mai mici pǎtrate.
Aşadar logaritmăm ecuaţia şi obţinem:
lnx=lna-bt
Definim y=lnx, c=lna, d=-b deci:
y=c+dt.
Expresia sumei S, a pătratelor erorilor, poate fi exprimată:
n
S    yi  c  dt 
2

i 1

unde n este numărul de puncte date. Condiţia de minim a lui S produce


următoarele ecuaţii:

 n  n  n   n 2 n
nc  d   ti    yi c  ti   d   ti    ti yi
 i 1  i 1  i 1   i 1  i 1
Pentru cazul concret:
n  4, t1  0, t2  2, t3  4, t4  6
y1  ln x1  ln 5.0  1.6094
y2  ln x2  ln 3.7  1.3083
y3  ln x3  ln 2.7  0.9932
y4  ln x4  ln 2  0.6931
n

t
i 1
i  12
n

 ti  0  4  16  36  56
2

i 1
n

y
i 1
i  4.6040
n

t y
i 1
i i  0  2(1.3083)  4(0.9932)  6(0.6931)  10.7480
Sistemul devine, în urma calculelor:
 
4c+12d=4.6040
12c+56d=10.7480

Soluţia sistemului este: c=0.6914 d=-0.1532.


 
Înlocuind în expresia dată în problemă:
 
a=ec=1.9965
b=0.1532.
 
Curba căutată pentru problema noastrǎ, are forma:
 
x(t)=1.9965e-0.1532.

S-ar putea să vă placă și