Sunteți pe pagina 1din 14

Calculul numeric al valorilor si a vectorilor proprii

Proiect la disciplina Matematici asistate de calculatoa

Mirel Cosmin Ioan An I, Ingineria Sistemelor Gr. 3.1

An universitar 2002-2003

Consideratii teoretice

Exista o gama larga de aplicatii din domeniul tehnicii, in general, si din cel al energeticii, in particular care, conduc la modele matematice formate din sisteme de ecuatii liniare omogene,de cele mai multe ori de mari dimensiuni. Analiza comportarii dinamice a unui system liniar sau liniarizat, indifferent de natura lui,constituie exemplul classic din acest punct de vedere.Daca sistemul in cauza este cel electroenergetic, atunci este vorba de stabilitatea la mici perturbatii (stabilitatea statica) a generatoarelor sincrone din cadrul lui.La fel se poate se poate vorbi si de stabilitatea la mici peturbatii a unui generator, functionanad izolat sau legat,printr-o retea simpla,la un system energetic puternic. La modelele matematice similare se ajunge si in situatiile cand analiza se refera doar la unul dintre sistemele de reglare automata cu cae sunt echipate generatoarele sincrone sau alte elemente ale sistemui electroenergetic. Sistemele de ecuatii liniare omogene care apar in asemenea aplicatii sunt de forma: (a11- )x1 + a12x2++ a1nxn=0 a21x1+(a22- )x2++ a2nxn=0 .. an1x1+ an2x2++(ann- )xn=0 Acest sistem se mai poate scrie si sub una din formele urmatoare: (A - I)*X=0 A*X= *X Sistemele de ecuatii liniare omogene adit solutia banala X=0, cae , de regula , nu prezinta interes (nu are semnificatie fizica). Ele admit si alte solutii, nebanale, daca si numai daca matricea coeficientilor (A - I) este singulara , adica: Det(A - I) = 0; unde det(A - I) se numeste determinantul caracteristic al matricei A. Dezvoltand expresia determinantui e ajunge la un polinom de gradul n in ,

avand coeficientii Ci rezultand astel asa numitul polinom caracteristic al matricei A

Pn( ) = C1 n + C2

n-1

+ + Cn + Cn+1

Radacinile ecuatiei caracteristice ,reale sau comlexe conjugate, simple sau multiple , se numesc valorile proprii ale matricei A. Ele conduc la anularea determinanului principalal matricei coeficientiilor sistemului, ceea ce determina existenta unor solutii nebanale, aceste solutii purtand denumirea de vectori proprii ai matricei A. Ansamblul valorilor proprii formeaza spectrul matriei a, notat cu (A) . Spectrul radial (A) este definit de odulul valorii proprii de modul maxim. Metodele alese spre implementare sunt:Leverrier-Fadeev,Krilov,Jacobi si factorizarea LR.

Prezentarea metodelor implementate Metoda Leverrier-Fadev: Aplicarea acestei metode consta in parcurgerea urmatoarelor etape: -determinarea coeficientiilor polinomului caracteristic -calculul valorilor proprii prin rezolvarea ecuatiei caracteristice -determinarea vectorilor proprii Pentru calculul coeficientilor polinomului caracteristic se procedeaza in felul urmator: a) se adopta pentru primul coeficient C1 = 1; b) se initializeaza matricea ajutatoare B1=A si se calculeaza C2 = - bii c) la un pas oarecare k se determina valoarea curenta a matricei ajutatoare Bk=A(Bk-1 + CkI) iar coeficientul Ck+ 1 = -1/k bii Pe un exemple concret : Fie matricea A= 8231 2813 3182 1328

C1 = 1 ;

C2 =-(8+8+8+8)=-32 ; -178 26 44 4 -26 -178 4 -44 B2= -44 -4 -178 26 -4 -44 -26 178 C3=356 C5=2688

Metoda Kralov Aceasta metoda utilizeaza identitatea Hamilton-Cayley, care evidentiaza faptul ca matricea A anuleaza polinomul sau caracteristic. C1An+ +CnAn + Cn+1I = 0 Se vor parcurge urmatorii pasi: a) determinarea coeficientilor polinomului caracteristic b) calculul valorilor proprii c) calculul vectorilor proprii Pentru determinarea coeficientiilor polinomului caracteristic se procedeaza astfel : a) b) c) d) se adopta primul coeficient C1 se initializeaza vectorul coloana y cu y0 la un pas oarecare k se determina valoarea lui y : yk=Ayk-1 in final coeficientii se determina rezolvand sistemul : yin-j+1*cj = -yin

Pe un exemplu concret: Fie matricea 8231 A= 2813 3182 1328

y0=[1 0 0 0]t

y1=[8 2 3 1]t y4=[11016 8840 10240 8230]t Metoda Jacobi Algoritmul acestei metode este a) b) se initializeaza forma curenta similara a matricei a A0=A la un pas oarecare k se calculeaza matricea Ak Ak=(Sk)-1*Ak-1*Sk Unde matricea S se alege astfel incat sa determine anularea elementului nediagonal maxim al matricei A numit pivot

c) in final matricea A va avea valorile proprii pe diagonala d) vectorii propii rezulta din maticea S=S1*S2**Sk Exemplificam pentru aceeasi matrice Fie matricea A= 8231 2813 3182 1328

A3 = 14 0 0 0 0800 0051 0015

14 0 0 0 A = 0800 0060 0004


4

Metoda bazata pe factorizarea LR(Rutishauer) Rutishauer a demonstrat ca daca se initializeaza tabloul de lucru A0 cu matricea A Si se efectuaza urmatoarea succesiune de cate doua operatii matriceale :

A0=L1*R 1 A1=R1*L1 Ak-1=Lk*Rk Ak=Rk*Lk Atunci pentru k -> infinit matricea Ak are pe diagonala principala valorile proprii. Folosind aceeasi matrice Fie matricea A= 8231 2813 3182 1328 0 0 1 0.18 0 0 0 0 * 9.7 2.4 3.3 1 0 7.9 0.09 2.5 0 0 6.2 1.2 0 0 0 5.5

1 0 0.23 1 A1 = 0.28 0.01 0.03 0.27

dupa 7 pasi se vor obtine valorile proprii pe diagonala principala a matricei A.

Prezentarea implementarilor Metoda Leverrier-Fadeev a fost implementata in MathCad ,fisierul realizat fiind metfl.mcd continutul acestui fisier fiind urmatorul:

Determinarea valorilor si a vectorilor proprii cu metoda Leverrier-Fadev a :=


8 2 3 1 2 8 1 3 3 1 8 2 1 3 2 8

matricea careia i se calculeaza valorile proprii

n := rows ( a )

cn := 0 coef := c0 1 c1 s0

val n := 0

for k 0.. n 1 s s ak , k s ba for i 2 .. n d a ( b + ci 1 identity ( n ) ) ci s0 for k 0 .. n 1 s s + dk , k bd s i c calculul coeficientilor polinomului caracteristic

c := coef

1 32 356 c= 3 1.648 10 2.688 103

coeficientii polinomului caracterictic

coefp :=

for k 0.. n valp k cn k valp

inversarea ordinii coeficientilor pentru utilizarea functiei polyroots

valprop := polyroots ( coefp ) Valorile proprii

valprop =
calcinterm ( x) :=

8 14
4 6 b a x identity ( n) b

vectori :=

for k 0 .. n 1 0

v calcinterm ( valprop k ) rv z1 submatrix ( v , 0 , n 1, 1 , n 1) z2 submatrix ( v , 1 , n 1, 1 , n 1) if k z2 submatrix ( v , 0 , n 2, 1 , n 1) if k 0 n1

z2 submatrix ( v , 0 , k 1, 1 , n 1) if ( k 0) ( k n 1) z3 submatrix ( v , k + 1 , n 1 , 1 , n 1) if ( k 0) ( k n 1) z z2 if ( k 0) ( k n 1) 0 n1 z stack ( z2 , z3 ) if ( k 0) ( k n 1) r1 submatrix ( r , 1 , n 1, 0 , 0) if k r1 submatrix ( r , 0 , n 2, 0 , 0) if k

r1 submatrix ( r , 0 , k 1, 0 , 0) if ( k 0) ( k n 1) r2 submatrix ( r , k + 1 , n 1, 0 , 0) if ( k 0) ( k n 1)

Dintre functiile folosite amintim functia rows pentru determinarea marimii matricei si submatrix folosita in scoopul spargerii matricei A in vederea obtinerii vectorilor proprii , functiile implementate respectand cu rigurozitate pasii prezentati anterior. Metoda Krilov a fost de asemenea impementata in MathCad creindu-se fisierul Kralov.mcd.Aceasta metoda este foarte asemanatoare cu precedenta in ceea ce priveste determinarea vectorilor proprii ,de altfel spre deosebire de metoda Jacobi care determina prin propriul sau algoritm vectorii prorpii toate celelalte metode au acelasi algoritm clasic de determinare a vectorilor proprii. Celelalte doua metoda au fost implementate fisierele : metjac.m si metlr.m . Continutul fisierelo este urmatorul : Metjac.m : function f=metjac(a) vect=eye(size(a)); eps=0.01; sum=eps+1; while sum > eps, sum=0; max=0; for i=1:size(a)-1, for j=i+1:size(a), if i~=j if abs(a(i,j))>max p=i; q=j; max=abs(a(i,j)); end end end end b=a; if (b(p,p)-b(q,q))==0 alfa=pi/4; else alfa=0.5*atan(2*b(p,q)/(b(p,p)-b(q,q))); in Matlab creindu-se

end for i=1:size(a), for j=1:size(a), if i~=p if j~=q a(i,j)=b(i,j); end end end end a(p,q)=0; a(q,p)=0; a(p,p)=b(p,p)*cos(alfa)*cos(alfa)+2*b(p,q)*sin(alfa)*cos(alfa) +b(p,p)*sin(alfa)*sin(alfa); a(q,q)=b(p,p)*sin(alfa)*sin(alfa)-2*b(p,q)*sin(alfa)*cos(alfa) +b(q,q)*cos(alfa)*cos(alfa); for i=1:size(a), if i~=p if i~=q a(p,i)=b(p,i)*cos(alfa)+a(q,i)*sin(alfa); a(i,p)=a(p,i); a(q,i)=-b(p,i)*sin(alfa)+a(q,i)*cos(alfa); a(i,q)=a(q,i); end end end for i=2:size(a), for j=1:i-1, sum=sum+a(i,j)*a(i,j); end end for i=1:size(a), if i~=p if i~=q s(i,i)=1; end end end s(p,p)=cos(alfa); s(q,q)=cos(alfa);

s(p,q)=-sin(alfa); s(q,p)=sin(alfa); vect=vect*s; end disp(' ') disp('Valorile proprii sunt:') disp(' ') for i=1:size(a), disp(a(i,i)) end

disp(' ') disp('Vectorii proprii sunt:') disp(' ') for i=1:size(a), disp('vectorul corespunzator valorii proprii') disp(a(i,i)) for j=1:size(vect), disp(vect(j,i)) end disp(' ') pause end metlr.m : function metlr(a) eps=0.001; sum=eps+1; b=a; while sum > eps, sum=0; for j=1:size(a), r(1,j)=a(1,j); end for i=2:size(a),

10

l(i,1)=a(i,1)/r(1,1); for j=2:i-1, s=0; for k=1:j-1, s=s+l(i,k)*r(k,j); end l(i,j)=(a(i,j)-s)/r(j,j); end for j=i:size(a), s=0; for k=1:i-1, s=s+l(i,k)*r(k,j); end r(i,j)=a(i,j)-s; end end for i=1:size(a), l(i,i)=1; end a=r*l; for i=2:size(a), for j=1:i-1, sum=sum+l(i,j)*l(i,j); end end end disp(' ') disp('Valorile proprii sunt:') disp(' ') for i=1:size(a), disp(a(i,i)) end

11

for k=1:size(a), b=b-a(k,k)*eye(size(b)); m=1; n=1; l=k; i=1; if l~=size(a) stop=size(a); else stop=size(a)-1; end while i<=stop, if i==l if l~=size(b) i=i+1; end end for j=2:size(a), d(m,n)=a(i,j); n=n+1; end n=1; i=i+1; m=m+1; end o=1; for i=1:size(a), if i~=l f(o,1)=-a(i,1); o=o+1; end end vect=inv(d)*f; for i=1:size(a)-1, vect(size(a)+1-i)=vect(size(a)-i); end vect(1)=1; vect pause end Cele doua implementari sunt practic ca niste functii ce primesc ca parametii matricea careia se doreste a I se determina valorile si vectorii proprii.

12

Dintre funtiile folosite amintim size (A) determinarea marimii matricii - disp afisare - eye o matrice unitate Dintre functiile implementate in software pentru calculul valorilor si a vectorilor proprii amintim: Eig(A) pentru matlab ce are ca parametru matricea A a=[-2 1 0;1 -2 1;0 1 -2] [ve va]=eig(a); ve va unde coloanele maticei ve sunt vectorii proprii iar pe diagonala matricei va se vor gasi valorile proprii. In MathCad eigenvals(A pentru valori proprii Eigenvecs(A)pentru vectori

Bibliografie : Precup R Matematici asistate de calculator Precup R., Dragomir L.,Bulavitchi I. Matematici asistate de calculator.Aplicatii Kilyeni St. Metode numerice

13

Cuprins: Pag. Consideratii teoretice ..2 Prezentarea metodelor implementate.3 Prezentarea implementarilor..7 Bibliografie..13

14