Sunteți pe pagina 1din 19

METODE NUMERICE PENTRU

VALORI ŞI VECTORI PROPRII

Daca unui vector n – dimensional x i se aplica o transformare definita


de matricea A de dimensiune n  n , se obţine vectorul y  A  x . Nu
întotdeauna între vectorii x si y astfel definiţi exista o corelaţie bine
precizata, adică ei pot avea orientări oarecare. Exista însa anumiţi vectori
x pe care matricea A îi transforma în multipli ai lor însisi. Pentru o
matrice reala, pătrata A, de dimensiuni n  n , exista, în general, cel putin n
vectori x pe care transformarea liniara A îi lasă invarianţi ca direcţie, adică îi
transforma în vectori proporţionali cu ei înşişi:

A x   x

Factorul de proporţionalitate  se numeşte valoare proprie a matricei


A, iar vectorul x – vector propriu asociat valorii proprii .

Observaţie1: Vectorii proprii ai unei matrice sau ai unui operator diferenţial au


adesea semnificaţie fizică importantă în matematica aplicată şi în fizică. În
mecanica clasică, vectorii proprii ai ecuaţiilor de traiectorie corespund în mod
obişnuit modurilor naturale de vibraţie a unui corp, iar valorile proprii frecvenţelor
de vibraţie respective. În mecanica cuantică, operatorii corespund variabilelor
observabile; vectorii proprii mai sunt numiţi ţi stări proprii, iar valorile proprii ale
operatorului reprezintă acele valori ale respectivei variabile care au probabilitate
nenulă de apariţie.

1
http://ro.wikipedia.org/wiki/Vectori_%C8%99i_valori_proprii
În fotografia alăturată (O transformare liniară asupra lui , arătată prin efectul ei
asupra unei imagini (stânga - imaginea originală (Mona Lisa), dreapta - imaginea
transformată). Vectorul marcat cu săgeata roşie este un vector propriu al
transformării, deoarece direcţia lui este păstrată de transformare. Deoarece
lungimea lui nu se modifică, valoarea proprie asociată este 1. Orice vector având
aceeaşi direcţie este de asemenea nemodificat. Ceilalţi vectori, de exemplu cel
marcat cu albastru, sunt modificaţi de transformare, deci nu sunt vectori proprii.
Exemplu: (compresia unei imagini) daca se citeşte dintr-un fişier o imagine jpeg
, alb-negru, si se încărca intr-o matrice, A, de dimensiune 512x512 si consideram
20 de vectori proprii se obţine o imagine comprimata.

Pentru determinarea valorilor proprii ale matricei A, relaţia de


definiţie poate fi scrisa în forma echivalenta:

A    I   x  0
n

unde In este matricea unitate de rang n. S-a obţinut astfel un sistem


omogen de ecuaţii liniare care admite o soluţie diferita de soluţia banala –
deci vectori proprii nenuli – daca determinantul sau se anulează:
A    In  0

care reprezintă ecuaţia caracteristica a matricei A. Scalarii  care verifica


ultima relaţie sunt tocmai valorile proprii ale acestei matrice. Prin
dezvoltarea determinantului după regulile cunoscute se obţine un polinom
de grad n în , cu coeficienţi reali, numit polinom caracteristic:

P(  )  det  A    I n   n  C1  n 1  ...  C n 1    C n

ale cărui rădăcini sunt valorile proprii.

Metodele de determinare a valorilor proprii se categorisesc:

- după numărul valorilor proprii determinate:

- metode globale – determină toate cele “n” valori proprii şi toţi cei
“n” vectori proprii,
- metode parţiale – determină numai anumite valori proprii şi
vectorii proprii aferenţi;
- după natura algoritmului de calcul:
- metode directe – determină explicit polinomul caracteristic şi
calculează valorile proprii prin rezolvarea ecuaţiei
caracteristice,
- metode indirecte sau iterative – evită rezolvarea ecuaţiei
caracteristice determinând valorile proprii prin procedee de
aproximaţii succesive bazate pe transformări de similaritate.

Metodele numerice directe determina valorile proprii prin rezolvarea


ecuaţiei caracteristice. Se prezintă in continuare metoda puterii directe,
metoda puterii inverse si varianta acesteia cu deplasarea originii. Acestea
se mai numesc metode parţiale, deoarece determina numai anumite valori
si vectori proprii ale unei matrice.
Metoda puterii directe

Vom considera problema iniţiala Ax= x pentru care se admite ca


matricea A este nedefectiva, adica are exact n vectori proprii liniar
independenţi, care formează o baza în spaţiul real n-dimensional. De
asemenea, se admite ca sistemul celor n vectori proprii x1, x2,…, xn este un
sistem normalizat după norma infinita, deci componenta maxima a fiecărui
vector este egala cu unitatea. Metoda puterii directe, denumita uneori
prescurtat metoda puterii, determina valoarea proprie maxima în modul a
matricei A si vectorul propriu asociat acesteia.. În acest context, vom
adopta ipoteza suplimentara conform căreia matricea A are o valoare
proprie dominanta si aceasta este prima: În aceste condiţii, orice vector y
din spaţiul n-dimensional se poate exprima ca o combinaţie liniara a
vectorilor proprii:

După cum spune si numele ei, metoda puterii directe apelează la


construirea unui sir de vectori normalizaţi, pe baza unei relaţii de
recurenta după puterile matricei A. Astfel, pornind de la y(0) = y (cu y  1 ),
se construieşte şirul de vectori y(0), y(1),…, y(k) :

A  y ( k )  y' ( k 1 )   ( k 1 )  y ( k 1 ) , k  0,1,...

unde ρ(k+1) se obţine prin normalizarea lui y’(k+1), iar ( k 1 )  y' ( k 1 ) . Daca se

dau succesiv lui k valorile 0, 1, 2, …., se obţine:

A  y ( 0 )  (1 )  y (1 )
A 2  y ( 0 )  A  A  y ( 0 )    ( 1 )  A  y ( 1 )   ( 1 )   ( 2 )  y ( 2 )
etc

sau relatia de recurenta:

A k  y ( 0 )   ( 1 )   ( 2 )  ...   ( k ) y ( k ) , k  1,2 ,...


Deoarece (1), (2), ... , (k) sunt mărimi scalare de normalizare,
rezulta ca vectorul Aky(0) este coliniar cu y(k). Pe de alta parte, având în
vedere descompunerea vectorului y(0) după baza x1, x2,…., xn si
proprietatea Axi=i  xi, se poate scrie:

n n
A  y ( 0 )    i  A  xi    i   i  xi
i 1 i 1

A 2  y ( 0 )  A  A  y ( 0 )     i   i  xi
n
2

i 1

etc

sau, în general:

n
k
A k  y ( 0 )    i   i  x i , k  1,2,...
i 1

Daca se tine seama de caracterul dominant al valorii proprii 1 si se


izolează termenul de rang i=1 din ultima relaţie:

k
k
n 
A y
k (0)
 1  1  x1      i   i   xi , k  1,2 ,...
k
1
i 1
 1 

se verifica imediat ca, pentru k  , termenii sumei se pot considera oricât


de mici, iar prin neglijarea lor rezulta:

k
A k  y ( 0 )  1  1  x1 , k  1,2 ,...

Se poate afirma ca la limita vectorul y(k) tinde spre vectorul propriu x1.

Un raţionament simplu arata ca la limita (k  ) parametrul de


normalizare (k+1) tinde chiar către valoarea proprie 1 căutata. Într-adevăr,
pentru k suficient de mare, diferenţa y(k+1)-y(k) tinde spre 0 si se poate scrie:

( k 1 )   y ( K 1 )  y ( k )   0
Daca în aceasta relaţie se tine seama si de expresia
A  y ( k )  y' ( k 1 )  ( k 1 )  y ( k 1 ) , se obţine:

A  y ( k )  ( k 1 )  y ( k )

adică, la limita (k+1) este valoarea proprie asociata vectorului propriu y(k).
Deoarece însa, aşa cum am arătat mai sus, vectorul y(k) tinde către
vectorul propriu x1, înseamnă ca parametrul de normalizare (k+1) va
aproxima valoarea proprie dominanta 1.

Convergenta metodei puterii directe, depinde esenţial de viteza cu


care rapoartele (ii/1)k tind către 0. În practica, metoda puterii directe se
dovedeşte eficienta mai ales în cazul matricelor A caracterizate de o
valoare proprie net superioara în valoare absoluta celorlalte.

Algoritmul pentru Metoda puterii directe

1. Definirea matricei A=[aij], i,j=1,...,n si a preciziei eps.

2. Aproximaţia iniţiala a vectorului propriu y1  [1 0 ... 0]T si iniţializarea


parametrului de normalizare (1) 1.

3. Proces iterativ pentru determinarea perechii vector propriu-valoare


proprie dominanta (x1,1):

3.1. Iniţializarea contorului de iteraţii: k 0;


3.2. Trecerea la o noua iteraţie: k  k+1;
3.3. Calculul noii aproximaţii: y'(k+1)  Ay(k)
3.4. Calculul parametrului de normalizare: (k+1) y' ( k 1 )
y' ( k 1 )
3.5. Normalizarea noii aproximaţii: y  ( k 1 ) ( k 1 )


3.6. Condiţia de oprire: daca y ( k 1 )  y ( k )  eps procesul
iterativ se întrerupe si se trece la pasul 4. În caz contrar se revine la
pasul 3.2.
4. Valoarea proprie dominanta a matricei A este 1  (k+1), iar vectorul
propriu asociat este x1  y(k+1).

//Valori si vectori proprii: metoda puterii directe


//Se apfla valoarea proprie dominanta si vectorul propriu corespunzator

function [lambda, x, iter]=putere(A, tol, nmax, x0)


[n,m]=size(A);
if n~=m
error('introduceti o matrice patratica!')
end

x0=x0/norm(x0);
pro=A*x0;
lambda=x0'*pro;
err=tol*abs(lambda)+1;
iter=0;
while err>tol*abs(lambda)&abs(lambda)~=0&iter<=nmax
x=pro
x=x/norm(x)
pro=A*x
lambdanou=x'*pro
err=abs(lambdanou-lambda)
lambda=lambdanou
iter=iter+1
end
return

endfunction

A=[30 2 3 13;5 11 10 8;9 7 6 12;4 14 15 1];


[n,m]=size(A);
tol=1.e-06;x0=ones(n,1);nmax=100;
[l,x,nriter]=putere(A,tol,nmax,x0)
x_matrix('val si vect propriu dominant plus nr iteratii',[l;x;nriter])

Metoda puterii inverse

Una dintre proprietăţile valorilor si vectorilor proprii afirma ca daca  este o


valoare proprie a matricei A nesingulare, atunci 1/ este valoarea proprie a
inversei A-1, iar cele doua matrice au acelaşi sistem de vectori proprii. În
contextul acestei proprietăţi, daca  este valoarea proprie a lui A, minima în
modul, 1/ va reprezenta valoarea proprie dominanta a inversei A-1. Prin
urmare, daca se aplica metoda puterii directe matricei A-1, se determina de
fapt valoarea proprie minima în modul a matricei A. Acest procedeu poarta
numele de metoda puterii inverse.

Se admite ca vectorii proprii ai matricelor A si A-1 sunt liniar


independenţi si formează o baza în spaţiul real n-dimensional. Orice vector
y poate fi exprimat ca o combinaţie liniara a vectorilor proprii:

n
y  1  x1   2  x2  ...   n  xn    i  xi
i 1

De aceasta data, se face ipoteza conform căreia valoarea proprie minima


în modul a matricei A este ultima:

 n   i i  1,2 ,...,n  1

Metoda puterii inverse construieşte un sir de vectori y(0), y(1),...,y(k) pe


baza relaţiei de recurenta:

A 1  y ( k )  y' ( k 1 )  ( k 1 )  y ( k 1 ) , k  0 ,1,....

Printr-un raţionament analog celui prezentat în paragraful anterior, se


poate arata ca pentru valori suficient de mari ale lui k (k  ), vectorul y(k)
tinde câtre vectorul propriu xn, iar parametrul de normalizare (k+1) tinde
către inversa valorii proprii n.

Algoritmul asociat acestei metode este prezentat în continuare.. Mai


întâi , inversarea matricei A se face printr-o procedura de factorizare, iar in
continuare, cu inversa A-1 se calculează valoarea proprie si vectorul propriu
dorite.
Algoritmul pentru Metoda puterii inverse

1. Definirea matricei A =[ a ij ], i,j=1,...,n si a preciziei eps

2. Aproximaţia iniţiala a vectorului propriu y1  [1 0 ... 0]T si iniţializarea


parametrului de normalizare (1) 1.

3. Inversarea matricei A: A-1.

4. Proces iterativ pentru determinarea perechii vector propriu-valoare


proprie dominanta a inversei A-1:

4.1. Iniţializarea contorului de iteraţii: k 0;

4.2. Trecerea la o noua iteraţie: k  k+1;

4.3. Calculul noii aproximaţii: y'(k+1)  A-1y(k)

4.4. Calculul parametrului de normalizare: (k+1) y' ( k 1 )

y' ( k 1 )
4.5. Normalizarea noii aproximaţii: y ( k 1 )
 ( k 1 )

4.6. Condiţia de oprire: daca y ( k 1 )  y ( k )  eps procesul

iterativ se întrerupe si se trece la pasul 5. În caz contrar se revine la


pasul 4.2.

5. Valoarea proprie minima în modul a matricei A este n  1/(k+1), iar


vectorul propriu asociat este xn  y(k+1).
//Valori si vectori proprii: metoda puterii inverse
//Se apfla valoarea proprie minima, in modul, a matricei A

function [lambda, x, iter]=putere(A, mu, tol, nmax, x0)


[n,m]=size(A);
if n~=m
error('introduceti o matrice patratica!')
end
[L,U]=lu(A-mu*eye(n))
if norm(x0)==0
x0=rand(n,1)
end
x0=x0/norm(x0);
z0=L\x0
pro=U\z0;
lambda=x0'*pro;
err=tol*abs(lambda)+1;
iter=0;
while err>tol*abs(lambda)&abs(lambda)~=0&iter<=nmax
x=pro
x=x/norm(x)
z=L\x
pro=U\z
lambdanou=x'*pro
err=abs(lambdanou-lambda)
lambda=lambdanou
iter=iter+1
end
lambda=1/lambda+mu
return

endfunction

A=[30 2 3 13;5 11 10 8;9 7 6 12;4 14 15 1];


[n,m]=size(A);
tol=1.e-06;x0=ones(n,1);nmax=100;mu=0;
[l,x,nriter]=putere(A,tol,nmax,x0)
x_matrix('val si vect propriu min plus nr iteratii',[l;x;nriter])
Metoda puterii inverse cu decalaj spectral

Un procedeu mult mai eficient de calcul al tuturor valorilor proprii ale


unei matrice folosind metoda puterii inverse implementează Algoritmul de
mai sus nu matricei A, ci unei matrice decalate A-qIn unde q este un scalar
ce realizează translarea originii. Metoda care rezulta poarta numele de
metoda puterii inverse cu deplasarea originii sau metoda iterativa inversa
cu decalaj spectral. Algoritmul de aplicare este asemănător cu cel al
metodei puterii inverse, însa de aceasta data parametrul de normalizare
(k+1) tinde către mărimea 1/(q-q), unde q este valoarea proprie a matricei
A cea mai apropiata de scalarul q.

Prin urmare, localizarea cu suficienta precizie a valorilor proprii si


aplicarea metodei puterii inverse cu decalaj spectral permit calculul tuturor
valorilor proprii, fără a impune nici o restricţie asupra ordinii în care se
calculează acestea. De altfel, majoritatea lucrărilor de specialitate
recomanda aceasta metoda ca pe una dintre cele mai puternice tehnici de
calcul a valorilor si vectorilor proprii, în special în cazul unor matrice de
dimensiuni nu prea mari.

Singurul dezavantaj al metodei iterative inverse cu decalaj spectral


consta în necesitatea redefinirii matricei decalate A-qIn si recalculării
inversei sale pentru fiecare valoare proprie ce se determina. O alta
particularitate a acestei metode este aşa-numitul paradox al iteraţiei
inverse cu decalaj spectral, conform căruia convergenta metodei este cu
atât mai lenta cu cat decalajul spectral q este mai aproape de valoarea
proprie căutata . Într-adevăr, pornind de la formula problemei decalate:

(A - qIn)  x = ( - q)  x

se observa ca, la limita, când q  , relaţia conduce la un sistem omogen


de ecuaţii liniare, pentru care existenta unei soluţii diferita de soluţia banala
impune singularitatea matricei A-qIn. Prin urmare, neexistand inversa (A-
qIn)-1, nici metoda puterii inverse nu poate fi aplicata.

Metoda iterativa inversa cu coeficient Rayleigh

Aplicarea cu succes a metodei iterative cu decalaj spectral


presupune o iniţializare cat mai raţionala a decalajului q, adică a
aproximaţiei iniţiale pentru valoarea proprie căutata. O asemenea
iniţializare poate folosi catul Rayleigh definit pentru un vector x în raport cu
o matrice A:

x, A  x xT  A  x
R( x )   T
x,x x x

unde parantezele unghiulare denota produsul scalar a doi vectori. De ce o


asemenea iniţializare ? Pentru a răspunde la aceasta întrebare, se
considera formularea iniţiala a problemei (Ax=x), care se înmulţeşte la
stânga cu xT si se extrage apoi expresia valorii proprii:

xT  A  x
( x )  T
x x

Comparând relaţiile se observa imediat ca, atunci când x este un vector


propriu al matricei A, catul Rayleigh asociat coincide cu valoarea proprie
corespunzătoare. Prin urmare, utilizarea expresiilor anterioare înlocuieşte
stabilirea aproximaţiei iniţiale a valorii proprii  cu cea a vectorului propriu x
asociat acesteia. În loc sa se "ghiceasca" o singura valoare, adica , se
determina n valori, adică cele n componente ale vectorului propriu x, pe
baza stationaritatii catului Rayleigh în vecinătatea vectorului propriu căutat.
Aceasta proprietate se traduce prin variaţii "relativ slabe" ale catului
Rayleigh la variaţii "relativ însemnate" ale vectorului x. Prin urmare,
pornind de la o aproximaţie "grosiera" a vectorului propriu x, catul Rayleigh
reprezintă , în general, o aproximaţie "excelenta" pentru valoarea proprie
asociata. Acesta este de fapt răspunsul la paradoxul iteraţiei inverse cu
decalaj spectral.

Algoritmul pentru Metoda iterativa inversa cu coeficient Rayleigh

1. Definirea matricei A=[aij], i,j=1,...,n si a preciziei eps.

2. Aproximaţia iniţiala a vectorului propriu x1 si normalizarea acesteia.

T
x  A  x1
3. Calculul catului Rayleigh asociat aproximaţiei iniţiale: R1  1 T
x1  x1

4. Iniţializarea procesului iterativ: k  0.

5. Aplicarea metodei iterative inverse cu decalaj spectral:

5.1. Trecerea la o noua iteraţie: k  k+1;

5.2. Aplicarea decalajului spectral matricei A folosind catul


Rayleigh:

A  A - Rk  In.

5.3. Calculul inversei matricei decalate A-1.

5.4. Calculul noii aproximaţii a vectorului propriu:

xk+1  A-1  xk

5.5. Normalizarea noii aproximaţii:

xk 1
xk 1 
xk 1
5.6. Calculul catului Rayleigh pentru noua aproximaţie:

T
x  A  xk 1
Rk 1  k 1 T
xk 1  xk 1

5.7. Criteriul de oprire: daca Rk+1 - Rk  eps sau k=Nmax


procesul iterativ se întrerupe si se trece la pasul 6. În caz contrar se revine
la pasul 5.1.

6. Perechea valoare proprie-vector propriu căutata este (,x)  ( Rk+1,xk+1).

Se poate arata ca, daca aproximaţia iniţiala x1 nu este ortogonala pe


vectorul propriu căutat x, utilizarea catului Rayleigh ca aproximaţie a valorii
proprii  asigura o convergenta pătratica, adica xk+1 - x   xk+1 - x2 ,
unde  este un scalar strict pozitiv. Mai mult chiar, daca matricea A este
simetrica, procesul iterativ se caracterizează printr-o convergenta cubica.
Aceste proprietati excelente de convergenta sunt însa compensate în buna
măsura de efortul mărit de calcul determinat de necesitatea recalculării la
fiecare iteraţie a inversei matricei decalate A. Aceasta reprezintă o piedica
serioasa în calea utilizării pe scara larga a metodei iterative inverse cu
decalaj spectral.

Metoda rotaţiilor a lui Jacobi

In general nu se recomandă determinarea valorilor proprii ale unei matrice


pe calea rezolvării numerice a ecuaţiei caracteristice deoarece rădăcinile
unui polinom sunt foarte ”sensibile” la orice modificare a coeficienţilor
polinomului.
Metoda recomandată este să se aducă, printr-un procedeu oarecare,
matricea la forma diagonală şi atunci valorile proprii se determină global
(toate odată), ele fiind, de fapt, elementele de pe diagonala principală. Se
urmăreşte deci, ca prin transformări de similitudine, care nu modifică
valorile proprii, să micşorăm, eventual până la dispariţie, elementele
nediagonale ale matricei, astfel încât, în final, să obţinem practic matricea
diagonală.
Fie A o matrice simetrică. Metoda Jacobi constă în efectuarea unei suite de
transformări de similitudine ale matricei A utilizând cele mai simple matrice
ortogonale netriviale (matricele de rotaţie) de forma

Aşadar, elementele matricei U sunt:

O asemenea matrice este ortogonală ( U T U  I si deci U 1  U T ) şi


reprezintă din punct de vedere geometric o rotaţie de unghi φ în planul
determinat de direcţiile ep şi eq. Notăm cu A'  U T A şi cu A"  A' U  U T AU .
În cazul particular n = 5, p = 2 şi q = 4, matricea A" arată astfel:
În general, elementele matricei A’ sunt

iar cele ale matricei A” sunt:

Rezulta ca

Cum intenţia noastră este ca elementul nediagonal cel mai mare (în valoare
absolută) să se anuleze în urma rotaţiei, vom alege liniile p şi q astfel încât
apq să fie cel mai mare element (în valoare absolută) de deasupra
diagonalei principale şi vom pune condiţia ca a "pq  0 , de unde rezulta ca:

adica

Folosind notatiile
obtinem ca

adica

Conform unor formule elementare de trigonometrie avem

Dacă notăm cu S(B) suma pătratelor elementelor nediagonale ale unei


matrice B oarecare, atunci

Tinând cont de cele de mai sus avem

Rezulta ca
Exemplu: Pentru matricea
Rezolvarea folosind functia spec din Scilab: se afla si valorile si vectorii proprii ale
matricei A

-->A=[3 1 1;1 3 1;1 1 3]


-->[v,d]=spec(A)
d =
2. 0. 0.
0. 2. 0.
0. 0. 5.
v =
0.4082483 0.7071068 0.5773503
0.4082483 - 0.7071068 0.5773503
- 0.8164966 0. 0.5773503

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