Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
n
, ( )
n
T H
y y y y y ,..., ,
2 1
= = i, pentru e =
=
=
m j
n i
j i
b B
,. , .,
,...,
,
1
1
nxm
, B B
H
= , adic ( )
i j j i
H
b B
, ,
= , pentru m i ,..., 1 = i n j ,..., 1 = .
Fie e valoare proprie a matricei e A
nxn
. Atunci este soluie a ecuaiei
caracteristice
(3) ( ) ( ) 0 det = =
n A
I A p
unde ( )
A
p este polinom de grad n n i se numete polinom caracteristic. Pe baza relaiei
(3) rezult n particular c A are n valori proprii, nu neaprat distincte.
Proprieti
1. Fie e valoare proprie a matricei e A
nxn
i x un vector propriu asociat lui . Atunci
x x
Ax x
H
H
=
2. ( ) ( ) { }
n
n
i
i
A A o ,..., , , det
2 1
1
= =
[
=
3. ( ) ( ) { }
n
n
i
i
A A tr o ,..., , ,
2 1
1
= =
=
4. ( ) ( )
T
A A o o = , ( ) ( )
H
A A o o =
Pe baza proprietii (2) rezult c A este singular dac i numai dac cel puin o
valoare proprie este nul.
Definiia 3. Fie e A
nxn
o matrice ptratic. Raza spectrului matricei A este definit
prin,
(4) ( )
( )
o A
A
e
= max
Definiia 4. O matrice
, adic
, respectiv
normal dac
.
Observaie. n situaia n care
,
adic
, nesingular. Matricele i
sunt similare i
transformarea
unde este o matrice superior triunghiular astfel nct
() {
}
Observaii.
1) Dac matricea
}
deci A este unitar similar cu o matrice diagonal cu elemente reale (n acest caz, A se
numete matrice normal).
ntr-adevr, deoarece
Dar T este matrice superior triunghiular i, fiind hermitian, rezult
{
}
n plus, deoarece T este matrice hermitian i diagonal,
, deci
valorile proprii ale matricei hermitiene A sunt numere reale. n particular, dac matricea A
este cu numere reale i este simetric, rezult c valorile proprii ale lui A sunt numere reale.
n particular obinem c o matrice normal este diagonalizabil.
Pe baza relaiei (5) rezult n continuare c i, dac [
] este
reprezentarea matricei unitare U prin intermediul vectorilor coloan, este obinut relaia,
(6)
deci U este matrice cu coloane un set de vectori proprii ai matricei A. n plus, deoarece U
este matrice unitar, coloanele lui U sunt un set de n vectori ortogonali, deci o baz
ortogonal a spaiului
.
2) Dac matricea
unde [
i V
astfel nct
()
unde ( )
.
Relaia (8) este referit drept descompunerea SVD a matricei (Singular Value
Decomposition), iar valorile
(notate i
()
)
ntr-adevr, deoarece
rezult
deoarece
.
n continuare,
Dar (
) (
), adic
,
adic
, atunci
(
deci ( ) este o pereche (valoare proprie, vector propriu) a matricei
.
Obinem deci
) (
())
2) Dac
, atunci
valorile singulare ale lui coincid cu modulul valorilor proprii ale lui . ntr-adevr, deoarece
()
)
Dac ( ) este o pereche (valoare proprie, vector propriu) a matricei , atunci
(
. ntr-adevr, deoarece
Obinem
()
|, pentru .
n plus, dac
, atunci () ,
nucleul lui - () este generat de vectorii coloan ai matricei {
}, unde
[
] i () {
min
x
r
i
A
i
s
e
o
Cu alte cuvinte, pe baza relaiei (11) rezult c, pentru reziduuri mici, erorile
absolute sunt, de asemenea, mici.
3. METODA PUTERII
Metoda puterii mpreun cu metoda iteraiei inverse sunt utilizate pentru calculul
valorilor proprii extreme ale unei matrice (valoarea proprie cea mai mare n modul, respectiv
valoarea proprie cea mai mic n modul) i a cte unui vector propriu asociat.
Fie
o matrice diagonalizabil i | |
n
x x x X ,..., ,
2 1
= matrice avnd coloanele
un set de vectori proprii asociai valorilor proprii ale matricei A, ( ) { }
n
A o ,..., ,
2 1
= ,
n i s s 1 ,
i i i
x Ax = i astfel nct are loc relaia
(12)
n
> > > > ...
3 2 1
unde
1
are ordinul de multiplicitate 1;
1
cu aceast proprietate se numete valoare proprie
dominant a matricei A.
Fie
( )
e
0
q
n
vector iniial unitar (cu norma euclidian egal cu valoarea 1). Metoda
puterii presupune efectuarea setului de iteraii,
,... 2 , 1 = k
( )
( ) ( )
( )
( )
( )
( ) ( )
( )
( )
= 0
=
=
k
H
k k
k
k
k
k k
Aq q
z
z
q
Aq z
2
1
13
Pe baza relaiei (13), rezult,
( )
( )
( )
( )
( )
( )
( )
2
0
0
2
2 2
2 2
2
1
1
...
q A
q A
q A
q A
Aq
Aq
q
k
k
k
k
k
k
k
= = = =
, deci
,... 2 , 1 = k
(14)
( )
( )
( )
2
0
0
q A
q A
q
k
k
k
=
Deoarece A este matrice diagonalizabil, rezult c { }
n
x x x ,..., ,
2 1
este baz a spaiului
n
, deci
( )
e
0
q
n
este exprimat n termenii vectorilor baz prin,
( )
=
=
n
i
i i
x q
1
0
o
unde e
i
o , pentru n i s s 1 . Deoarece pentru n i s s 1 ,
i i i
x Ax = , obinem,
( )
i i i i i i
x Ax Ax A x A
2 2
= = = .
Similar, pentru ,... 2 , 1 = k , obinem (prin inducie dup k),
i
k
i i
k
x x A = .
Rezult,
( )
= = =
= = =
n
i
i
k
i i
n
i
i
k
i
n
i
i i
k k
x x A x A q A
1 1 1
0
o o o
Prin evidenierea valorii proprii dominante, obinem,
,... 2 , 1 = k
(15)
( )
|
|
.
|
\
|
|
|
.
|
\
|
+ =
=
n
i
i
k
i i k k
x x q A
2
1 1
1 1 1
0
o
o
o
Deoarece 1
1
<
i
pentru 2 > i , rezult c, pe msur ce numrul de iteraii, k, crete,
vectorul
( ) 0
q A
k
, deci
( ) k
q , are vectorul
1
x drept component principal n exprimarea n
baza { }
n
x x x ,..., ,
2 1
.
Fie
( )
=
|
|
.
|
\
|
=
n
i
i
k
i i k
x y
2
1 1
o
o
. Rezult,
( )
( )
( )
( )
( )
( )
( )
( )
2
1
1
1 1
2
1 1 1
1 1 1
sgn
k
k
k
k k
k k
k
y x
y x
y x
y x
q
+
+
=
+
+
= o
o
o
Observaii
1. Dac
1
x este un vector propriu corespunztor valorii proprii
1
, atunci i -
1
x este
un vector propriu corespunztor valorii proprii
1
. Evident, dac
1 1 1
x Ax = , atunci
( ) ( )
1 1 1
x x A = .
2. Dac
1
x este un vector propriu corespunztor valorii proprii
1
, atunci i
2
1
1
x
x
este un vector propriu corespunztor valorii proprii
1
. Evident, dac
1 1 1
x Ax = , atunci
2
1
1
1
2
1
1
x
x
x
x
A = .
Rezult c, atunci cnd k , vectorul
( )
=
|
|
.
|
\
|
=
n
i
i
k
i i k
x y
2
1 1
o
o
converge la vectorul
nul i
( ) k
q converge la un vector propriu unitar corespunztor valorii proprii
1
.
Teorema 3.
Fie e A
nxn
o matrice diagonalizabil i | |
n
x x x X ,..., ,
2 1
= matrice avnd coloanele
un set de vectori proprii unitari asociai valorilor proprii ale matricei A, ( ) { }
n
A o ,..., ,
2 1
=
, n i s s 1 ,
i i i
x Ax = i astfel nct are loc relaia (12). Dac 0
1
= o exist 0 > C astfel
nct,
(16)
( )
1 ,
~
1
2
2
1
> s k C x q
k
k
unde
( )
( ) ( )
( )
( ) k
k
k
k
k k
k
y x
q A
q A q
q + =
o
=
o
=
1
1 1
0
1 1
2
0
~
(Quarteroni, Sacco, Saleri, 2000)
Deoarece cnd k , vectorul
( ) k
q converge la ( )
2
1
1
1 1 1
sgn
~
x
x
x
k
o = , vector propriu
unitar, ( ) 1
~ ~ ~
2
2
1 1 1
= = x x x
H
, asociat valorii proprii
1
, rezult, pe baza proprietii 1 (vezi
seciunea 1) c
( ) ( )
( )
( )
1
0 =
k
H
k k
Aq q .
Observaie.
Dac e A
nxn
este simetric i 0
1
= o se poate demonstra c
( )
( )
k
n
k
2
1
2
0
2
1 1
tan
u 0 s
unde ( )
( )
0 cos
0
1 0
= = q x
T
u .
Pentru dezvoltarea unui algoritm, iteraiile (13) sunt efectuate pn la ndeplinirea
unui criteriu de oprire, determinat pe baza valorii reziduale definite de
(17)
( ) ( ) ( ) ( ) k k k k
q Aq r 0 = , 1 > k
i, pentru 0 > c , pe baza matricei
(18)
( ) ( ) ( )
( )
H
k k k
q r E = c , cu
( )
1
2
=
k
E .
Deoarece
( ) ( ) ( ) ( )
( )
( ) ( ) k k
H
k k k k
r q q r q E = = c , 1 > k , obinem,
(19)
( )
( )
( ) ( ) ( ) ( ) ( ) ( ) ( ) k k k k k k k k
q r q r q E A 0 0 c = + = + .
Pe baza relaiei (19) obinem c
( ) k
0 este o valoare proprie a matricei perturbaie
( ) k
E A c + . Din (18) rezult
( )
2
k
r = c . Se poate arta c
(20)
( )
( )
( )
u
0
cos
2
1
k
k
r
~
unde
u este unghiul dintre vectorul propriu la stnga i vectorul propriu la dreapta asociai
valorii proprii
1
, respectiv ( )
H H H
y A y y x
1 1 1 1 1
, cos u
= = .
n practic, estimarea relaiei (20) revine la nlocuirea factorului ( )
u cos cu
( )
( )
( ) k
H
k
q w , unde
( ) k
q este o aproximare a unui vector propriu unitar asociat valorii proprii
1
, calculat prin setul de iteraii (13) i
( ) k
w este o aproximare a unui vector propriu la
stnga, unitar, asociat valorii proprii
1
, (Quarteroni, Sacco, Saleri, 2000)
(21)
( )
( )
( )
( )
( ) k
H
k
k
k
q w
r
2
1
~ 0
Observaii
1. Aproximarea
( ) k
w , 1 > k , este calculat prin metoda puterii aplicat astfel. Fie
( )
e
0
w
n
vector iniial unitar. Setului de iteraii, similar (13), este definit prin,
,... 2 , 1 = k
( )
( ) ( )
( )
( )
( )
( )
|
|
|
.
|
\
|
=
=
H
k
k
k
H
k k
t
t
w
A w t
2
1
22
2. Dac ( )
( )
( )
( )
1
cos c u
< ~
k
H
k
q w , algoritmul pentru calculul valorii proprii
dominante i a unui vector propriu unitar asociat nu converge (valoarea proprie nu este
dominant, n sensul c nu are ordinul de multiplicitate 1)
3. Criteriul de oprire utilizat n algoritm este
( )
( )
( )
( )
( )
c 0 < ~
k
H
k
k
k
q w
r
2
1
i nu a fost depit un numr maxim de iteraii
3. n situaia n care A este matrice cu elemente numere reale i are o singur valoare
proprie dominant, rezult c aceasta este numr real. ntr-adevr, dac este valoare
proprie a lui A, atunci este valoare proprie a lui
i || || Dac este
valoare proprie dominant al lui A rezult c i este valoare proprie dominant a lui A, deci
valoarea proprie dominant a matricei A nu este unic. Cu alte cuvinte, n cazul matricelor cu
numere reale, metoda puterii calculeaz o unic valoare proprie dominant, numr real.
Pe baza observaiilor de mai sus rezult urmtorul algoritm pentru calculul valorii
proprii dominante i a unui vector propriu unitar asociat
Date de intrare A, 0 z vector iniial nenul
( )
|
|
.
|
\
|
=
2
0
0
0
z
z
q , eps, eps1, maxit (numrul
maxim de iteraii)
Date de ieire
valp1 aproximarea calculat a lui
1
(dac poate fi determinat)
x1 aproximarea calculat a unui vector propriu unitar asociat lui
1
(dac
poate fi determinat)
err eroarea de aproximare dat prin relaia (20)
potcalcula 1, dac poate fi calculat o aproximare a valorii proprii
dominante, 0 altfel
k numrul de iteraii necesare calculului cu eroarea err<eps.
) 0 (
0
z norm
z
q = ; q w = ; z=A*q;
k=0; err=eps+1;potcalcula=1;
while ((err>eps) && (k<=maxit))
=
=
break;
0; = potcalcula
else
; stheta norm(r)/co = err
1; + k = k
eps1) > (costheta if
q; * valp1 - z = r ); abs(y1'*x1 = costheta
w; = y1 ; w' = w ; t/norm(t) w w'*A; = t
q'*z; = valp1 q; = x1 q; * A = z ; z/norm(z) q
endif
endwhile
if (err>eps) potcalcula=0
endif
Observaie
Pentru masivele cu numere complexe, n MATLAB operatorul este operatorul
H
, n
timp ce . este operatorul transpus. n cazul masivelor cu numere reale se poate folosi pentru
operatorul transpus, deoarece operatorul transpus conjugat coincide cu operatorul transpus.
n continuare este prezentat sursa MATLAB pentru implementarea algoritmului de
mai sus, mpreun cu exemple de execuie att pentru matrice cu elemente numere reale, ct
i pentru matrice cu numere complexe.
function
[valp1,x1,err,k,potcalcula]=metoda_puterii_22(A,z0,eps1,eps,maxit)
q=z0/norm(z0);w=q;z=A*q;
k=0;err=eps+1;potcalcula=1;
while((err>eps)&&(k<maxit))
q=z/norm(z);z=A*q;
x1=q;valp1=q'*z;
t=w'*A;w=t/norm(t);w=w';
y1=w;
costheta=abs(y1'*x1);r=z-valp1*q;
if(costheta>eps1)
err=norm(r)/costheta;
k=k+1;
else
potcalcula=0;
break;
end;
end;
if(err>eps)potcalcula=0;
end;
if(potcalcula==1)
disp('Valoarea proprie dominanta:');disp(valp1);
disp('Un vector propriu asociat');disp(x1);
disp('Eroarea:');disp(err);
disp('Numarul de iteratii efectuate:');disp(k);
%disp('Verificare:');disp(A*x1);disp(valp1*x1);
else
disp('Nu se poate calcula!');
end;
end
%Exemple de calcul
% 1. A=[[1 3 4]
% [3 1 2]
% [4 2 1]
% ];
%z0=[1 1 1]';
%metoda_puterii_22(A,z0,0.0001,0.0000000001,500)
%Valoarea proprie dominanta: 7.0747
%Un vector propriu asociat
% 0.6346
% 0.5058
% 0.5844
%Eroarea:5.3935e-011
%Numarul de iteratii efectuate:29
% 2. A=[[15 -2 2]
% [1 10 -3]
% [-2 1 0]
% ];
%z0=[1 1 1]';
%metoda_puterii_22(A,z0,0.0001,0.0000000001,300)
%Valoarea proprie dominanta:14.1026
%Un vector propriu asociat
% 0.9436
% 0.3117
% -0.1117
%Eroarea:7.9153e-011
%Numarul de iteratii efectuate:77
%3.A=[[10 2 3]
% [-1 2 -15]
% [10 1 3]
% ];
%z0=[1 1 1]';
%metoda_puterii_22(A,z0,0.0001,0.000000000001,8000)
%Nu se poate calcula!
%(matricea are doua valori proprii dominante, numere complexe conjugate)
%4.A=[[10 2 3 8]
% [-1 2 -5 -2]
% [10 1 3 10]
% [0 2 4 1]
% ];
%z0=[1 1 1 1]';
%metoda_puterii_22(A,z0,0.0001,0.000000000001,800)
%Valoarea proprie dominanta:14.0254
%Un vector propriu asociat
% 0.6274
% -0.3580
% 0.6746
% 0.1522
%Eroarea:8.0362e-013
%Numarul de iteratii efectuate:25
%5. A=[[1 3 4-i]
% [3 1 2]
% [4 2 1]
% ];
%z0=[1 1 1]';
%metoda_puterii_22(A,z0,0.0001,0.0000000001,500)
%Valoarea proprie dominanta: 7.0871 - 0.3700i
%Un vector propriu asociat
% -0.0298 - 0.6366i
% 0.0237 - 0.5036i
% 0.0236 - 0.5823i
%Eroarea:4.6030e-011
%Numarul de iteratii efectuate:30
%6. A=[[10+i 2 3 8]
% [-1 2 -5 -2]
% [1 i+1 3 10]
% [0 2 4-2*i 1]
%];
%z0=[1 1 1 1]';
%metoda_puterii_22(A,z0,0.0001,0.000000000001,800)
%Valoarea proprie dominanta:9.7106 + 0.6768i
%Un vector propriu asociat
% -0.8681 - 0.4523i
% 0.1745 + 0.0165i
% -0.0953 + 0.0264i
% 0.0053 + 0.0374i
%Eroarea:8.2712e-013
%Numarul de iteratii efectuate:149
4. METODA ITERAIEI INVERSE
Fie e A
nxn
. Metoda iteraiei inverse (sau metoda invers a puterii) rezolv problema
calculului unei valori proprii
m
i a unui vector propriu unitar asociat lui
m
, cu proprietatea
c
m
este valoarea proprie a lui A cea mai apropiat de o valoare dat e , ( ) A o e .
Algoritmul revine la aplicarea metodei puterii matricei
( )
1 1
=
n
I A M
n ipoteza n care
1
M este diagonalizabil.
Evident, dac ( ) { }
n
A o ,..., ,
2 1
= , atunci, dac A este inversabil,
( )
)
`
n
A
o
1
,...,
1
,
1
2 1
1
i ( ) { }
n
M o
,..., ,
2 1
1
=
=
i
i
1
.
Vom presupune n continuare c exist m, n ms s 1 astfel nct
(23) <
i m
, m i n i = s s , 1
Semnificaia relaiei (23) este aceea c valoarea proprie
m
, cea mai apropiat de
are ordinul de multiplicitatea 1. De asemenea, pe baza relaiei (23), rezult c
i
n i
m
,..., 1
max
=
= i
m
are ordinul de multiplicitate 1.
Evident, deoarece pentru orice m i n i = s s , 1 , are loc <
i m
, rezult
>
i m
1 1
i
i m
> , deci
m
este valoarea proprie dominant a matricei
1
M .
Observaie Dac 0 = , atunci
m
este valoarea proprie a lui A cu modulul cel mai
mic.
Fie
( )
e
0
q
n
vector iniial unitar (cu norma euclidian egal cu valoarea 1). Setul de
iteraii (13) aplicate matricei
1
= o
=
= =
k
H
k k
k
k
k
k k k k
n
q M q
z
z
q
q M z q z I A
1
2
1 1 1
24
Observaie Fie | |
n
x x x X ,..., ,
2 1
= matricea cu coloane un set de vectori proprii
corespunztori valorilor proprii ale matricei
M . n ipoteza n care
M este diagonalizabil,
rezult,
(25)
)
`
= A =
n
diag X M X
1
,...,
1
,
1
2 1
1
Prin aplicarea inversei n (25) obinem,
{ }
n
diag X M X
,..., ,
2 1
1 1 1
= A =
,
deci X este matricea cu coloane un set de vectori proprii ai lui
1
M , deoarece
( ) { }
n
M o
,..., ,
2 1
1
=
= A =
n
n
diag X I A X
1
,...,
1
,
1
2 1
1
i
)
`
=
n
n
diag X I X AX X
1
,...,
1
,
1
2 1
1 1
Obinem,
)
`
+ + + =
)
`
+ =
n n
n
diag diag I AX X
1
,...,
1
,
1 1
,...,
1
,
1
2 1 2 1
1
Deoarece pentru n i ,... 2 , 1 = ,
=
i
i
1
, rezult n final
{ }
n
diag AX X ,..., ,
2 1
1
=
,
deci X este matricea cu coloane un set de vectori proprii ai lui A, corespunztori valorilor
proprii
n
,..., ,
2 1
i iteraiile (24) sunt echivalente cu (Quarteroni, Sacco, Saleri, 2000),
( )
e
0
q
n
vector iniial unitar
,... 2 , 1 = k
( )
( )
( ) ( )
( )
( )
( )
( ) ( )
( )
( )
= o
=
=
k
H
k k
k
k
k
k k
n
Aq q
z
z
q
q z I A
2
1
26
Iteraiile (26) se numesc iteraii inverse i definesc metoda invers a puterii.
Observaie Principala diferen fa de metoda direct a puterii este c, la fiecare pas
k, trebuie rezolvat sistemul liniar
(27) ( )
( ) ( ) 1
=
k k
n
q z I A .
Pentru rezolvarea sistemului (27), este iniiat urmtoarea procedur,
- la momentul k=0 este realizat factorizarea LU cu pivotare a matricei
( )
n
I A M
= , U L PM * =
- la fiecare iteraie k=1,2,... sunt rezolvate cte un sistem triunghiular inferior, prin
metoda substituiei nainte, respectiv cte un sistem triunghiular superiror, prin
metoda substituiei napoi:
o U L PM * =
, deci
( ) ( ) 1
* * *
=
k k
q P z U L
o Rezolv
( ) ( ) 1
* *
=
k k
q P u L cu metoda substituiei nainte i obine
( ) k
u
o Rezolv
( ) ( ) k k
u z U = * prin metoda substituiei napoi i obine
( ) k
z
Dei metoda iteraiei inverse are complexitate mai mare comparativ cu metoda
puterii, prin aplicarea ei pot fi calculate aproximri ale oricrei valori proprii i a cte unui
vector propriu unitar asociat acesteia.
Similar metodei puterii, dac
( )
( )
( )
( )
k
m m
k
k
k
q M q
q
o
2
0 1
~
= , unde | |
n
x x x X ,..., ,
2 1
=
matricea cu coloane un set de vectori proprii corespunztori valorilor proprii ale matricei
1
=
=
n
i
i i
x q
1
0
o e
i
o
C, pentru n i s s 1 , atunci
( )
( )
( )
( )
2
1
sgn
k
m
k
m k
m m
k
y x
y x
q
+
+
= o ,
( )
=
=
|
|
.
|
\
|
=
n
m i
i
i
k
m
i
m
i k
x y
1
o
o
.
Cnd k , vectorul
( )
=
=
|
|
.
|
\
|
=
n
m i
i
i
k
m
i
m
i k
x y
1
o
o
converge la vectorul nul i
( ) k
q
converge la un vector propriu unitar corespunztor valorii proprii
m
a lui
1
M , respectiv
valorii proprii
m
a lui A,
( )
( )
m
k
m m
k
k
x q o sgn lim =
, un vector propriu unitar al lui A, corespunztor lui
m
( )
m
k
k
x q =
~
lim
( )
m
k
k
o =
lim .
De asemenea, similar relaiei (26), obinem,
(28)
( )
( )
( )
( )
( )
1 ,
2
> ~ k
q w
r
k
H
k
k
k
m
o , unde
( ) ( ) ( ) ( ) k k k k
q Aq r o = , 1 > k
( ) k
w este vectorul calculat la cea de-a k-a iteraie ca aproximare a unui vector propriu
la stnga asociat lui
m
(Quarteroni, Sacco, Saleri, 2000)
Algoritmul
Date de intrare A, 0 z vector iniial nenul
( )
|
|
.
|
\
|
=
2
0
0
0
z
z
q , miu, eps, eps1, maxit
(numrul maxim de iteraii)
Date de ieire
valpm aproximarea calculat a lui
m
(dac poate fi determinat)
xm aproximarea calculat a unui vector propriu unitar asociat lui
m
(dac
poate fi determinat)
err eroarea de aproximare dat prin relaia (28)
potcalcula 1, dac poate fi calculat o aproximare a valorii proprii
dominante, 0 altfel
k numrul de iteraii necesare calculului cu eroarea err<eps.
[n,n]=size(A); M=A-miu*In (in MATLAB In=eye(n))
[L,U,P,Ok]=GaussLU_pivotare_6(M,0.00001);
if(Ok= = 0) potcalcula=0 (nu se poate calcula inverse lui M)
else
potcalcula=1;
) 0 (
0
z norm
z
q = ; q w = ;
k=0; err=eps+1;
while ((err>eps) && (k<=maxit))
= =
= =
= =
=
= = =
= = + =
break;
0; = potcalcula
else
; stheta norm(r)/co = err
eps1) > (costheta if
q; * valpm - z = r ); abs(ym'*xm = costheta
q; xm w; = ym ; t/norm(t) w P'*t; = t
; t t u,0.0001); , _2(L' s_backward ok2] [t,
b,0.0001); , 1(U' s_forward_ ok1] [u, w; b
q'*z; = valpm q; * A = z ; z/norm(z) q
) .' ( ; z z u,0.0001); _2(U, s_backward ok2] [z,
b,0.0001); 1(L, s_forward_ ok1] [u, q; * P b 1; k k
T
T
neconjugat transpusa z z
endif
endwhile
if (err>eps) potcalcula=0
endif
Observaie
Calculul lui
( ) k
w din (28) este similar relaiei (22), astfel. Fie
( )
e
0
w C
n
vector iniial
unitar. Setului de iteraii este definit prin,
,... 2 , 1 = k
( )
( ) ( )
( )
( )
( )
( )
|
|
|
.
|
\
|
=
=
H
k
k
k
H
k k
t
t
w
M w t
2
1 1
29
Rezult,
( )
( ) ( )
( )
( )
( )
( )
|
|
|
.
|
\
|
=
=
H
k
k
k
H
k k
t
t
w
w M t
2
1
30
Prima relaie a setului (30) poate fi transformat ntr-un sistem liniar prin aplicarea
operatorului transpus conjugat,
( )
( )
( ) 1
=
k
H
k
w M t
, deci
(31) ( )
( )
( )
( ) 1
=
k
H
k H
w t M
Deoarece U L PM * =
, obinem,
( )
H H H H
L U P M * =
i, deoarece
n
T H
I P P P P = = , rezult,
( ) P L U M
H H H
* * =
Pe baza relaiei (31) obinem,
(32)
( )
( )
( ) 1
* * *
=
k
H
k H H
w t P L U
Sistemul (32) este rezolvat astfel,
- Rezolv
( ) ( ) 1
*
=
k k H
w u U cu metoda substituiei nainte (daca U este superior
triunghiular, atunci
H
U este inferior triunghiular) i obine
( ) k
u
- Rezolv
( ) ( ) k k H
u p L = * prin metoda substituiei napoi i obine
( ) ( )
( )
H
k k
t P p * = , deci
( ) ( )
( )
H
k k T
t p P =
n continuare este prezentat sursa MATLAB pentru implementarea algoritmului de
mai sus, mpreun cu exemple de execuie i n cazul matricelor cu elemente reale, dar i
pentru matrice cu elemente complexe.
function[valpm,xm,err,k,potcalcula]=metoda_puterii_inversa_23(A,z0,m
iu,eps1,eps,maxit)
[n,n]=size(A);M=A-miu*eye(n);
[L,U,P,OK]=GaussLU_pivotare_6(M,0.00001);
if(OK==0)potcalcula=0;
else
q=z0/norm(z0);w=q';k=0;
err=eps+1;potcalcula=1;
while((err>eps)&&(k<maxit))
k=k+1;b=P*q;
[u,OK1]=s_forward_1(L,b,0.00001);
[zl,OK2]=s_backward_2(U,u,0.00001);
%calculul transpusei neconjugate a lui z- trecerea de la
%vector linie la vector coloana- datorita implementarii metodelor de
%substitutie, rezultatele sunt vectori linie
z=zl.';
q=z/norm(z);z=A*q;valpm=q'*z;
b=w';
[u,OK1]=s_forward_1(U',b,0.00001);
[t,OK2]=s_backward_2(L',u,0.00001);
%calculul transpusei neconjugate a lui z- trecerea de la
%vector linie la vector coloana- datorita implementarii metodelor de
%substitutie, rezultatele sunt vectori linie
t=t.';
w=(P'*t)';
w=w/norm(w);
costheta=abs(w*q);r=z-valpm*q;
if(costheta>eps1)
err=norm(r)/costheta;
else
potcalcula=0;
break;
end;
xm=q;
end;
end;
if(err>eps)potcalcula=0;
end;
if(potcalcula==1)
disp('Valoarea proprie cea mai apropiata de miu:');disp(valpm);
disp('Un vector propriu asociat');disp(xm);
disp('Eroarea:');disp(err);
disp('Numarul de iteratii efectuate:');disp(k);
%disp('Verificare:');disp(A*xm);disp(valpm*xm);
else
disp('Nu se poate calcula!');disp(k);disp(err);
end;
end
%Exemple de calcul
% 1. A=[[1 3 4]
% [3 1 2]
% [4 2 1]
% ];
%z0=[1 1 1]';
%metoda_puterii_inversa_23(A,z0,8,0.0001,0.0000000001,500)
%Valoarea proprie cea mai apropiata de miu=8:
% 7.0747
%Un vector propriu asociat
% 0.6346
% 0.5058
% 0.5844
%Eroarea: 8.6290e-011
%Numarul de iteratii efectuate: 10
%2. A=[[1 3 4]
% [3 1 2]
% [4 2 1]
% ];
%z0=[1 1 1]';
%metoda_puterii_inversa_23(A,z0,-2,0.0001,0.0000000001,500)
%Valoarea proprie cea mai apropiata de miu=-2:
% -0.8868
%Un vector propriu asociat
% -0.1550
% 0.8240
% -0.5449
%Eroarea: 9.4075e-011
%Numarul de iteratii efectuate:365
%3. A=[[1 3 4]
% [3 1 2]
% [4 2 1]
% ];
%z0=[1 1 1]';
%metoda_puterii_inversa_23(A,z0,-5,0.0001,0.0000000001,500)
%Valoarea proprie cea mai apropiata de miu=-5
% -3.1879
%Un vector propriu asociat
% -0.7572
% 0.2552
% 0.6013
%Eroarea:6.0080e-011
%Numarul de iteratii efectuate:30
%4. A=[[1 3 4-i]
% [3 1 2]
% [4 2 1]
%];
%z0=[1 1 1]';
%metoda_puterii_inversa_23(A,z0,7-i,0.000001,0.0000000001,500)
%Valoarea proprie cea mai apropiata de miu=7-i
% 7.0871 - 0.3700i
%Un vector propriu asociat
% 0.5902 - 0.2404i
% 0.4827 - 0.1457i
%0.5569 - 0.1720i
%Eroarea:8.4021e-011
%Numarul de iteratii efectuate: 9
%5. A=[[1 3 4-i]
%[3 1 2]
%[4 2 1]
%];
%z0=[1 1 1]';
%metoda_puterii_inversa_23(A,z0,0,0.000001,0.0000000001,500)
%Valoarea proprie cea mai apropiata de miu=0
% -0.8677 - 0.0793i
%Un vector propriu asociat
% -0.1440 - 0.1469i
% 0.2884 + 0.7783i
%-0.0225 - 0.5179i
%Eroarea:2.9047e-011
%Numarul de iteratii efectuate: 19
%6.A=[[1 3 4-i]
% [3 1 2]
% [4 2 1]
%];
%z0=[1 1 1]';
%metoda_puterii_inversa_23(A,z0,-4,0.000001,0.0000000001,500)
%Valoarea proprie cea mai apropiata de miu=-4
%-3.2195 + 0.4493i
%Un vector propriu asociat
% 0.0269 - 0.7603i
% -0.0067 + 0.2612i
% -0.0849 + 0.5879i
%Eroarea: 4.0555e-011
%Numarul de iteratii efectuate: 20
%7. A=[[1 2 3 8]
% [-1 2 -5 -2]
% [10 1 3 -10]
% [0 2 4 1]
%];
%z0=[1 1 1 1]';
%metoda_puterii_inversa_23(A,z0,-2+i,0.0001,0.000000000001,8000)
%Valoarea proprie cea mai apropiata de miu=-2+i
% -1.9036 + 6.5258i
%Un vector propriu asociat
% -0.4622 + 0.1138i
% 0.3320 + 0.1403i
% 0.6330 - 0.1943i
%-0.2454 - 0.3805i
%Eroarea: 9.2276e-013
%Numarul de iteratii efectuate: 106
%8.A=[[10 2 3 8]
% [-1 2 -5 -2]
% [10 1 3 10]
% [0 2 4 1]
% ];
%z0=[1 1 1 1]';
%metoda_puterii_inversa_23(A,z0,18,0.0001,0.000000000001,800)
%Valoarea proprie cea mai apropiata de miu=18:
% 14.0254
%Un vector propriu asociat
% 0.6274
% -0.3580
% 0.6746
% 0.1522
%Eroarea: 9.0240e-013
%Numarul de iteratii efectuate: 24
%9.A=[[10 2 3 8]
% [-1 2 -5 -2]
% [10 1 3 10]
% [0 2 4 1]
% ];
%z0=[1 1 1 1]';
%metoda_puterii_inversa_23(A,z0,0,0.0001,0.000000000001,800)
%Valoarea proprie cea mai apropiata de miu=0:
%1.5869
%Un vector propriu asociat
% -0.6648
% 0.3729
% -0.0925
% 0.6406
%Eroarea: 9.7102e-013
%Numarul de iteratii efectuate: 32
5. Iteraia QR
Metoda iteraiei QR permite calculul simultan al tuturor valorilor proprii ale unei
matrice date (dac aceasta sunt mutual distincte) prin transformarea lui ntr-o matrice
pentru care valorile proprii sunt relativ uor de calculat.
Fie
unde este o matrice superior triunghiular astfel nct
()
Relaia (33) corespunde descompunerii Schur a matricei cu numere reale .
Deoarece pentru nu poate fi calculat elementar (Quarteroni, Sacco, Saleri,
2000), este utilizat o tehnic de tip iterativ.
Fie
,
()
o matrice ortogonal i
()
(
()
)
()
. Iteraia
QR este definit prin
() calculeaz
()
()
astfel nct
()
()
()
(factorizarea QR a lui
()
)
()
()
()
, , unde
()
este o matrice ortogonal,
()
matrice superior
triunghiular.
Observaie. Pentru are loc relaia
()
()
()
(
()
)
()
()
()
(
()
)
()
()
deoarece
()
este ortogonal: (
()
)
()
.
Prin inducie dup rezult:
()
()
(
()
()
()
)
(
()
()
()
)
ntr-adevr, pentru avem
()
(
()
)
(
()
) conform iniializrii
iteraiei Q(R).
Presupunem
()
(
()
()
()
)
(
()
()
()
) pentru
. Obinem
()
()
()
(
()
)
()
()
()
(
()
)
()
()
.
Pe baza ipotezei inductive, obinem
()
(
()
)
(
()
()
()
)
(
()
()
()
)
()
(
()
()
()
()
)
(
()
()
()
()
)
(se aplic proprietatea ( )
).
Relaia (35) indic faptul c
()
este ortogonal similar cu pentru orice .
ntr-adevr, deoarece
()
este ortogonal pentru orice , rezult
()
()
()
matrice ortogonal.
n varianta de baz a metodei iteraiei QR
()
, deci
()
. La fiecare pas
factorizarea QR a matricei
()
poate fi realizat pe baza procedurii Gram-Schmidt
modificate.
Teorema 4. Convergena metodei iteraiei QR (Quarteroni, Sacco, Saleri, 2000).
Fie
| |
| |
|, unde ()
{
()
n plus, dac este simetric, irul {
()
} converge la matricea {
}
(
).
Observaie Dac matricea A nu are toate valorile proprii elemente numere reale,
limita irului {
()
} nu este matrice superior triunghiular i metoda QR de baz nu poate fi
aplicat.
Codul surs urmtor constituie sursa MATLAB pentru implementarea metodei QR n
forma de baz.
function [lambda,T,QR]=iteratia_QR(A,nit);
[n,n]=size(A);
T=A;
QR=eye(n);
for k=1:nit
[Q,R]=ModifGramSchmidt(T);
T=R*Q;
X=QR*Q;
QR=X;
end;
lambda=diag(T);
end;
%Exemple de apel
%1.A=[[10 2 3 8]
% [-1 2 -5 -2]
% [10 1 3 10]
% [0 2 4 1]
%];
%nit=100;
%[lambda,T,QR]=iteratia_QR(A,nit);disp('Valorile proprii:');disp(lambda);
%Valorile proprii:
% 14.0254
% 4.2368
%-3.8492
%1.5869
%2. A=[[15 -2 2]
% [1 10 -3]
% [-2 1 0]
% ];nit=50;
%[lambda,T,QR]=iteratia_QR(A,nit);disp('Valorile proprii:');disp(lambda);
%Valorile proprii:
%14.1026
%10.3854
%0.5121
Observaie. Metoda poate fi aplicat n cazul n care valorile proprii ale lui sunt
numere reale.
6. Calculul vectorilor proprii ai unei matrice pe baza descompunerii Schur
Vom presupune n continuare c valorile proprii ale lui sunt numere reale i
distincte.
Fie
. Fie
| |
| |
|. Dac ,
atunci
Fie
).
Fie
), unde
()()
,
()()
ambele matrice superior triunghiulare,
( )
()()
), (
.
Dac este un vector propriu corespunztor valorii proprii , atunci
(
( )
, deci
[(
] (
() {
(
( )
Deoarece valorile proprii ale lui sunt mutual distincte, matricele
, deci (
, rezult
(
(
) i .
Observaie. n ipoteza n care valorile proprii ale lui A sunt numere complexe, atunci
metoda QR este extins la o metod cu dubl deplasare, procedura de calcul al lui , un
vector propriu corespunztor unei valori proprii , fiind extins prin considerarea
n
loc de
Pentru un vector dat
()
i matricea Hauseholder este
()
()
()
ntr-adevr,
) (
()
)
(
) (
()
Dar
)
i
()
()
()
)
Obinem
) (
)
(
)
Fie
cu valorile proprii
astfel nct |
| |
| |
|.
Aplicnd metoda puterii, este calculat perechea (
), unde
.
Fie
()
,
.
Evident,
()
(
.
Obinem
( )
()()
,
.
ntr-adevr, deoarece
.
Cum
, rezult
()
. n acelai timp,
()
n consecin,
()
(
()
, deci
()
()
.
Obinem c
i, deoarece
] adic [
]
(
, rezult
()
deci
, este
(
.
Rezult c
).
Rmne s artm c
. Fie (
) perechi
(valoare proprie, vector propriu) corespunztoare matricei .
Pentru ,
, deci
.
Rezult (
) (
), adic
).
Obinem c
.
Pentru , |
| , deci
|(
) (
)|
adic
|
|
de unde rezult (
) |
| .
Deoarece
, rezult |
| , deci
, pentru
orice .
Procedura de deflatare (Quarteroni, Sacco, Saleri, 2000) presupune calculul lui
,
valoare proprie dominant a lui
. n continuare, aplicnd
metoda iteraiei inverse matricei pentru
), se
obine un vector propriu corespunztor valorii proprii
.
()
)
Similar transformrii (37), fie
()()
matricea Hauseholder obinut pe
baza vectorului
()
()
()
( )
()
)
Similar, valorile proprii ale lui
sunt
. Pentru
se aplic acelai
procedeu:
.
Evident, procedura continu prin aplicarea succesiv a transformrilor Hauseholder
similare cu (37) dar pentru matrice cu dimensiuni reduse cu cte o unitate, n aceeai
manier, pn la calculul ultimei perechi (
)
unde
()
este matricea cu toate elementele
nule i
.
Matricele
s fie cu proprietatea c
()
, pentru . La pasul urmtor
matricea
este cu proprietatea
()
, pentru
(nu modific elementele nule din prima coloan, rezultate n urma primei transformri)
i
()
, pentru . Paii prezentai mai sus sunt reluai pentru procesarea celei de-a
doua coloane, respectiv a celei de-a doua linii n aceeai manier:
()
este cu proprietatea c
()
, pentru ,
este cu proprietatea c
()
, pentru i prima linie, respectiv
prima coloan a matricei
()
au n continuare elementele nule obinute dup primii doi pai.
n mod similar, dup m-1+n-2 pai sunt obinute matricele,
i
cu proprietatea (39)
Etapa a doua. Matricea B este redus la o matrice diagonal prin utilizarea metodei
iteraiei QR astfel. Este generat {
()
}
, irul de matrice superior bidiagonale care
converge ctre o matrice diagonal cu elemente valorile singulare ale matricei A. La limit,
procesul calculeaz matricele
astfel nct
}
Descompunerea SVD a matricei A este,
Analiza convergenei i stabilitii algoritmului Golub-Kahan-Reinsch sunt prezentate
n (Golub, Loan, 1989).