Documente Academic
Documente Profesional
Documente Cultură
Fie n+1 puncte x0, x1, .., xn n care se cunosc valorile unei funcii f(x). Metoda
celor mai mici ptrate se folosete la prelucrarea matematic a datelor x0, x1, .., xn
n urmtoarele cazuri: cnd n este foarte mare, sau cnd valorile funciei n
punctele considerate nu sunt exacte, fiind obinute experimental.
Prin aceast metod funcia f(x) se aproximeaz cu
F m( x ) =
ci * i ( x ), cu m<n
i =0
[ f ( xi ) Fm ( xi )]2
i =0
sau
p( xi )[ f ( xi ) Fm ( xi )]2
i =0
s fie minim. nlocuim Fm(x) cu o funcie de constantele c0, .., cm. Se pune
problema determinrii acestor constante cj, j=0..m, astfel nct
(c0 ,.., cm ) =
[ fi
i =0
c j j ( xi )]2
j =0
= 0, i = 0..m
ci
adic a sistemului
[ fi
i =0
c j j ( xi )]0 ( xi ) = 0
j =0
i =0
j =0
[ f i c j j ( xi )]m ( xi ) = 0
c j j ( xi )0 ( xi ) =
i =0 j =0
f i 0 ( x i )
i =0
n m
i =0 j =0
i =0
c j j ( xi )m ( xi ) = f i m ( xi )
i =0
i =0
c0 ( n + 1) + c1 xi + .. + cm xim =
fi
i =0
..
n
i =0
i =0
i =0
f i xim
i =0
Exemplu:
S considerm tabelul:
X
2,5
3,5
6,5
Se vede c datele se aeaz aproximativ de-a lungul unei drepte y=ax+b. Dreapta,
dat de metoda celor mai mici ptrate, care ajusteaz mulimea dat de puncte are
coeficienii a i b dai de condiia ca expresia E ( a, b) = ( y i ax i b) s fie
2
minim.
Aceasta implic:
E (a, b)
=0
a
(1)
E (a, b)
=0
b
Se obine sistemul:
S 2 x a + S1x b = S xy
S1x a + pb = S1 y
(2)
unde :
S 2 x = x i2 S1x = x i S xy = x i y i S1 y = y i
i
(3)
iar p este numrul de date. Avem mai jos graficul acestei drepte.
y = 1.25x + 0.3571
10
9
8
7
6
5
4
3
2
1
0
1
Mai general putem considera ajustari ale lui f prin expresii de forma
f(x) a0+a1x+a2x2+....+ahxh. Coeficienii ai, conform metodei celor mai mici
ptrate sunt dai de condiia ca expresia E (a0 , a1 ,... ah ) =
(y
k = 0.. p
a0 ... ah x h ) 2 s fie
minim, deci:
E
= 0, i = 0, 1,... h
ai
(4)
Rezolvarea sistemului (4) este dificila n multe situatii, sistemul fiind n general
neliniar si uneori singular. In cazul cnd sistemul este liniar rezolvarea lui este
relativ simpla.
Algoritmul Levenberg-Marquardt
Chiar daca sistemul (4) este singular functia E (a0 , a1 ,... ah ) =
(y
k = 0.. p
a0 ... ah x h ) 2
Sunt situatii cand modelul ales este neadecvat; Un program care sa determine o
formula potrivita pentru ajustarea unor date experimentale ar trebui sa aiba
memorate un numar mare de modele de functii model depinznd de unul sau mai
multi
parametri
E (a0 , a1 ,... ah ) =
(y
k = 0.. p
si
k
metoda
de
determina
minimul
expresiei
1 n
Modelul pentru care R = ( f ( xi ,a1 ,...,an ) y i )2 are cea mai mica valoare este
n i =1
n principiu modelul cel mai bun. Divizarea cu n este facuta pentru a anula efectul
numarului de puncte asupra lui R.
r
Pentru functii f : Rm R depinznd de x = ( x1 , x2 ,..., xm ) tehnica ajustarii este
r
aceeasi, doar ca functiile model depind de x R m , deci sunt de forma
r
f ( x ,a1 ,...,a p ) . Avem
r
2
E( a1 ,...,a p ) = ( f ( xi a1 ,...,a p ) yi )
(5)
r
unde xi = ( xi ,1 ,..., ai ,m ) R m
Marquardt" care este implementat n mai multe programe ca, de exemplu, scilab
sau matlab.
fie minima.
Procedura scilab pentru determinarea parametrilor este lsqrsolve care are forma
[a,v,[info]]=lsqrsolve(a0,e,n,[stop],[diag])
unde:
f ( x2 ,a ) y 2
..................
r
f ( x ,a ) y
n
n
atol - eroarea relativa maxima admisa intre doua valori iterative consecutive ale lui
a (daca se obtine o eroare relativa mai mica, programul se opreste)
maxeval - numarul maxim de apeluri ale functiei e (daca se atinge acest maxim,
programul se opreste)
Pentru a apela procedura pentru un numar mai mare de modele putem aranja
calculele ca mai jos:
// multitest pentru functii de o variabila
//valoarea initiala a parametrilor a
a0=[1;1;1;1;1;1;1;1;1;1;1];
//numarul maxim admis de parametri necunoscuti este 10;
//functiiile model pentru ajustare
nrmodele=3;
function val=model(itip,a,x)
select itip
case 1 then val=a(1)+a(2)*x;
case 2 then val=a(1)+a(2)*x+a(3)*x.^2;
case 3 then val=a(1)+a(2)*x+a(3)*x.^2+a(3)*x.^3;
end
endfunction
//functia pentru procedura lsqrsolve
function dif=e(a,n);
dif=model(itip,a,x)-y;
endfunction
//datele de ajustat
x=[1;2;3;4;5;6;7;8;9;1.5;2.5;3.5];
y=[2;5;9;17;24;40;50;65;80;3;5;10];
n=length(x);
// testarea tuturor modelelor
r=zeros(nrmodele,1);
for itip=1:nrmodele
[a,v]=lsqrsolve(a0,e,n);
//discrepanta intre model si datele reale
r(itip)=norm(v,2)/n;
end
//discrepanta minima
[rmin,itip]=min(r);
//parametrii la discrepanta minima
[a,v]=lsqrsolve(a0,e,n);
//tiparim punctele si functia care ajusteaza
plot(x,y,ro);
xgrid;
stanga=min(x);dreapta=max(x);
t=(stanga:0.1:dreapta);
vt=model(itip,a,t);
plot(t,vt,b:);
Se obtine urmatorul grafic, pe care se vad punctele date si graficul functiei care le
ajusteaza. Dintre cele trei modele, n acest caz modelul 2 este cel mai bun (r este
minim)
Exemplu
S se ajusteze printr-un polinom de gradul m=3, urmtoarele date experimentale:
Rezolvare n Scilab
Program de ajustare printr-un polinom generalizat de grad m. Apelarea se face
pentru datele din exemplu.
function c=CeleMaiMiciPatrate(x,y,m)
n=length(x);
for k=1:2*m+1
s(k)=0;
for i=1:n
s(k)=s(k)+x(i)^(k-1);
end
end
for k=1:m+1
b(k)=0;
for i=1:n
b(k)=b(k)+y(i)*x(i)^(k-1);
end
end
for i=1:m+1
for j=1:m+1
a(i,j)=s(i+j-1);
end
end
c=a^(-1)*b;
endfunction
CeleMaiMiciPatrate([-2 -1 0 1 2],[12 6 2 0 0],3)
ans =
! 2. !
! - 3. !
! 1. !
! 0. !
Exerciii
1. S se scrie expresia polinomului din exemplul de mai sus i s se reprezinte pe
acelai grafic datele experimentale i polinomul.
2. Se consider urmtoarele date experimentale:
xi
0.5
1.5
yi
1.1276
1.5431
2.3534
Se cere:
a) s se calculeze valoarea lui y pentru x=0.25 folosind o parabol pentru ajustarea
datelor experimentale prin metoda celor mai mici ptrate;
b) s se ajusteze aceste date printr-o hiperbol folosind metoda celor mai mici
ptrate, apoi s se reprezinte grafic;
c) s se ajusteze prin y=a*sin(x)+b datele experimentale de mai sus.