Sunteți pe pagina 1din 21

Seminar 4

Calculul valorilor si vectorilor


proprii
Valorile proprii ale unei matrice joaca un rol important n multe domenii cum ar teoria
stabilitat ii. De asemenea, ele sunt legate ndeaproape de problema rezolvarii ecuat iilor alge-
brice. Prin urmare, un calcul corect al valorilor si vectorilor proprii este de mare important a.
Din cauza faptului ca valorile proprii sunt radacinile ecuat iei polinomiale caracteristice, cal-
culul lor pentru o matrice de ordin mai mare decat patru nu poate facut exact printr-o
secvent a nita de operat ii aritmetice si este nevoie de un proces innit care trebuie sa e
trunchiat astfel ncat sa se obt ina o aproximare acceptabila. Cel mai bun proces de acest
tip este algoritmul QR care calculeaza o forma Schur aproximativa a matricei date. Acest
seminar este dedicat diferitelor aspecte numerice ale calculului valorilor proprii si ale imple-
mentarilor algoritmului QR.
4.1 Preliminarii
Fie A IR
nn
. Un vector x I C
n
este un vector propriu al lui A si I C este valoarea
proprie asociata daca sunt satisfacute urmatoarele condit ii
a) x = 0
b) Ax = x.
Astfel, numarul C este o valoare proprie a lui A daca si numai daca matricea I A
este singulara, i.e. valorile proprii sunt zerourile polinomului caracteristic
p() = det(I
n
A),
si matricea A are exact n valori proprii, incluzand multiplicitat ile.

In mod evident, valorile
proprii complexe ale unei matrice reale apar sub forma unor perechi conjugate. Mult imea
valorilor proprii ale unei matrice A se noteaza cu (A) si se numeste spectrul (valorilor
proprii) ale lui A.
Daca x este un vector propriu al lui A, vectorul y = x este de asemenea un vector
propriu al lui A, asociat aceleiasi valori proprii pentru orice scalar diferit de zero. Deci
vectorii proprii sunt determinat i doar prin direct ia lor.
1
2 SEMINAR 4. DESCOMPUNEREA VALORILOR PROPRII
Valorile proprii sunt conservate de asa numitele transformari de asemanare denite prin
B = TAT
1
,
unde T este o matrice nesingulara. Daca T este o matrice ortogonala atunci Asi B se numesc
ortogonal asemenea. Daca A, B sunt asemenea atunci ele au acelasi spectru de valori proprii
(A) = (B) iar vectorii proprii corespunzatori sunt legat i prin relat ia x
B
= Tx
A
.
Cea mai simpla forma care poate obt inuta printr-o transformare de asemanare este
asa numita forma canonica Jordan. Daca o matrice n n are n vectori proprii liniari
independent i, atunci forma sa canonica Jordan este diagonala si matricea se numeste simpla
sau diagonalizabila. Din pacate, forma canonica Jordan este foarte sensibila la perturbari
numerice. De aceea, n calculul numeric este preferata o forma mai robusta si anume forma
Schur (reala) (FSR) care poate obt inuta printr-o transformarea ortogonala de asemanare:
S = Q
T
AQ =
_

_
S
11
S
12
S
1q
0 S
22
S
2q

0 0 . . . S
qq
_

_
,
unde S
ii
R
11
or S
ii
R
22
si toate blocurile diagonale 2 2 au valori proprii complexe.
Valorile reale ale unei matrice FSR pot determinate printr-o simpla inspect ie a diagonalei
principale iar cele complexe pot calculate prin rezolvarea ecuat iilor algebrice de gradul doi
corespunz atoare det(I S
ii
) = 0.
Fie o pereche (valoare proprie, vector propriu)=(, x), (un sistem propriu) al unei matrice
A. Daca unul dintre cele doua elemente este cunoscut celalalt poate calculat cu usurint a
(vezi problema rezolvata 4.1). Daca nici valoarea proprie nici vectorul propriu nu sunt
cunoscute, problema calculului lor devine una foarte dicila. Motivul sta n imposibilitatea
rezolvarii ecuat iilor algebrice de grad mai mare decat patru prin secvent e nite de operat ii
elementare.
Cele mai folosite metode pentru calculul iterativ al vectorilor proprii (fara a se cunoaste
valoarea proprie asociata) sunt metoda puterii si metoda puterii inverse. Aceste metode sunt
implementate n mod profesional ntr-o faimoasa procedura iterativa numita algoritmul QR.
Algoritmul QR construieste iterativ o secvent a de matrice ortogonal asemenea, convergenta
catre o forma Schur a matricei originale. Proprietat ile excelente de convergent a se datoreza
folosirii unor deplasari optimale si unei serii de subtilitat i tehnice cum ar utilizarea ex-
clusiva a formei Hessenberg si monitorizarea structurala. Toate variantele algoritmului QR
sunt organizate n doua etape:
1. Reducerea la forma superior Hessenberg printr-o transformare ortogonala de asemanare
H = U
T
AU calculata ntr-un numar nit de opi (O(
5
3
n
3
)) (algoritmul HQ).
2. Reducerea iterativa la forma Schur, i.e. construirea iterativa a unui sir de matrice
H
1
= H, H
2
, . . . , H
k
, . . ., convergent catre o forma Schur a lui A. Pentru o matrice cu
un spectru real, ecare iterat ie QR este denita prin:
1. [ Q
k
, R
k
] = qr(H
k

k
I
n
) % Factorizarea QR a lui H
k

k
I
n
2. H
k+1
R
k
Q
k
+
k
I
n
,
unde
k
= H
k
(n, n) este deplasarea Rayleigh. Daca matricea A are valori proprii
complexe, atunci se foloseste o varianta mai complicata cu pasi dubli si deplasari
implicite (vezi cursul).
4.2. PROBLEME REZOLVATE 3
4.2 Probleme rezolvate
4.2.1 Aspecte teoretice
Problema 4.1 Fie A, B IR
nn
doua matrice asemenea, i.e. exista o matrice nesingulara
T IR
nn
astfel ncat B = T
1
AT. Demonstrat i ca
a. det A = det B, b. trA = trB,
unde trA =

n
i=1
a
ii
este, prin denit ie, urma lui A. Ca aplicat ie, demonstrat i ca daca
(A) = {
i
,
i
, . . . ,
i
} este spectrul valorilor proprii ale lui A, atunci
c. detA =
n

i=1

i
, d. trA =
n

i=1

i
.
Rezolvare. Este bine-cunoscut ca det(GH) = det Gdet H pentru toate matricele
patrate G si H. Evident, acest lucru implica faptul ca pentru toate matricele nesingulare G
avem det G
1
=
1
det G
. a. Din B = T
1
AT rezulta ca det B =
1
det T
det Adet T = det A.
b. Sa notam X = T
1
. Atunci XT = TX = I
n
, i.e. X(i, :)T(:, j) = T(i, :)X(:, j) =
ij
,
unde scalarul
ij
= 0 pentru tot i i = j si
ij
= 1 daca i = j. Prin urmare
trB =
n

k=1
B(k, k) =
n

k=1
X(k, :)AT(:, k) =
n

k=1
n

i=1
n

j=1
X(k, i)A(i, j)T(j, k) =
=
n

i=1
n

j=1
A(i, j)
n

k=1
T(j, k)X(k, i) =
n

i=1
n

i=1
A(i, j)T(j, :)X(:, i) =
=
n

i=1
n

j=1
A(i, j)
ij
=
n

i=1
A(i, i) = trA.
c. Fie S = Q
T
AQ forma Schur reala pentru A. Atunci det A = det S =

p
i=1
det S
ii
.
Daca S
ii
este un bloc scalar det S
ii
= S
ii
; daca S
ii
este un bloc 2 2, atunci det S
ii
=
S
ii
(1, 1)S
ii
(2, 2) S
ii
(1, 2)S
ii
(2, 1) =
1
(S
ii
)
2
(S
ii
). Astfel, det A =

p
i=1

n
i
j=1

j
(S
ii
) =

n
i=1

i
(A).
d. Fie din nou S = Q
T
AQ forma Schur reala pentru A. Atunci trA = trS =

p
i=1
trS
ii
.
Daca S
ii
este un bloc scalar trS
ii
= S
ii
; daca S
ii
este un bloc 22, atunci trS
ii
= S
ii
(1, 1)+
S
ii
(2, 2) =
1
(S
ii
) +
2
(S
ii
). Astfel, trA =

p
i=1

n
i
j=1

j
(S
ii
) =

n
i=1

i
(A).
Problema 4.2 Fie A IR
nn
si (A) = {
1
,
2
, . . . ,
n
} spectrul valorilor sale proprii. a.
Demonstrat i ca valorile proprii sunt situate n urmatorul domeniu al planului complex
D =
n
_
i=1
D
i
,
4 SEMINAR 4. DESCOMPUNEREA VALORILOR PROPRII
unde D
i
sunt discurile
D
i
= {z I C | |z a
ii
|
n

j=1
j=i
|a
ij
|}, i = 1 : n,
numite discurile lui Gershgorin.
b. Numarul (A)
def
= max
i=1:n
(|
i
|) se numeste raza spectrala a lui A. Demonstrat i
inegalitatea
(A) A,
unde este o familie oarecare de norme matriceale consistente.
c. Demonstrat i urmatoarele inegalitat i
c
1
. |detA|
n

i=1
_
_
n

j=1
|a
ij
|
_
_
, c
2
. |detA|
n

j=1
_
n

i=1
|a
ij
|
_
.
Rezolvare. a. Fie x un vector propriu asociat valorii proprii (A). Atunci linia i
a egalitat ii vectoriale Ax = x poate scrisa sub forma
( a
ii
)x
i
=
n

j=1
j=i
a
ij
x
j
.
Prin urmare, este evident ca | a
ii
||x
i
|

n
j=1
j=i
|a
ij
||x
j
|. Alegand acum linia i astfel ncat
|x
i
| = max
k=1:n
(|x
k
|) = 0, i.e.
|x
j
|
|x
i
|
1 pentru tot i j, avem
| a
ii
|
n

j=1
j=i
|a
ij
|
|x
j
|
|x
i
|

n

j=1
j=i
|a
ij
|,
i.e. D
i
.
b. Datorita consistent ei familiei de norme matriceale, pentru toate (A) si tot i
vectorii proprii asociat i x cu x = 1, avem || = x = Ax Ax = A. Prin
urmare inegalitatea este adevarata.
c. S a demonstram mai ntai inegalitatea c
1
. Daca A are (cel put in) o linie zero, atunci
inegalitatea devine egalitate. Daca nu este cazul, sa denim
i
=

n
j=1
|a
ij
| > 0, i = 1 : n,
si D = diag(
1
,
2
, . . . ,
n
). Matricea B = D
1
A are (B) B

1. Prin urmare,
|detB| =

n
i=1
|
i
(B)| 1. Inegalitatea dorita se obt ine din |detA| = |detD| |detB|
|detD|. Pentru a demonstra c
2
aplicam inegalitatea din cazul c
1
matricei A
T
.
Problema 4.3 Fie A IR
mn
, B IR
nm
cu m > n. Demonstrat i ca (AB) = (BA)
{0, 0, . . . , 0}, i.e. ca, n particular, matricele AB si BA au aceleasi valori proprii nenule.
Rezolvare. Matricele (m + n) (m + n) C =
_
AB 0
B 0
_
si D =
_
0 0
B BA
_
sunt
asemenea deoarece D = TCT
1
cu T =
_
I
m
A
0 I
n
_
avand ca inversa T
1
=
_
I
m
A
0 I
n
_
4.2. PROBLEME REZOLVATE 5
(vericat i!). Prin urmare (C) = (D). Dar C si D sunt matrice bloc inferior triunghiulare.
Astfel, (C) = (AB) {0, 0, . . . , 0} si (D) = {0, 0, . . . , 0} (BA). Atunci, deoarece
m > n, (AB) = (BA) {0, 0, . . . , 0}. Evident, daca m = n atunci (AB) = (BA).
Problema 4.4 a. Fie
1
,
2
doua valori proprii diferite ale matricei A IR
nn
si x
1
un vector propriu al lui A asociat lui
1
si y
2
un vector propriu al lui A
T
asociat lui
2
.
Demonstrat i ca cei doi vectori sunt ortogonali i.e. y
T
2
x
1
= 0.
b. Daca (A) este o valoare proprie distincta a lui A si x, respectiv y, sunt vectori
proprii la dreapta, respectiv la stanga, asociat i lui , atunci y
T
x = 0. Dat i un exemplu n
care aceasta proprietate nu este satisfacuta daca nu este o valoare proprie distincta.
Rezolvare. a. Avem Ax
1
=
1
x
1
si A
T
y
2
=
2
y
2
sau y
T
2
A =
2
y
T
2
. Prin urmare

1
y
T
2
x
1
=
2
y
T
2
x
1
sau (
1

2
)y
T
2
x
1
= 0 care implica y
T
2
x
1
= 0 din cauza ca (
1

2
) = 0.
b. Fara sa pierdem caracterul general, putem presupune ca x
2
= 1. Conform cu
lema de deat ie ortogonala, daca matricea [ x

X ] este ortogonala, atunci B = X
T
AX =
_
b
T
0 C
_
. Acum, daca vectorul y este un vector propriu la stanga al lui A (i.e. y
T
A = y
T
,
sau y
T
A = y
T
; astfel, un vector propriu la stanga al lui A este un vector propriu al lui
A
T
), atunci y
T
XB = y
T
XX
T
AX = y
T
AX = y
T
X, deci z
T
B = z
T
unde z = X
T
y. Prin
urmare z este un vector propriu la stanga al lui B. Dar este o valoare proprie distincta,
deci matricea I
n1
C este nesingulara. Rezulta ca z(2 : n) = (

I
n1
C
T
)
1
bz
1
, cu
z
1
= x
T
y. Daca z
1
= 0, atunci z(2 : n) = 0 si, prin urmare, z = 0. Dar un vector propriu nu
poate sa e zero. Astfel z
1
= x
T
y = 0. Drept exemplu pentru situat ia cand valoarea proprie
nu este distincta si condit ia nu este satisfacuta, e matricea A =
_
0 1
0 0
_
ai carei vectori
proprii (la dreapta) au forma x =
_

0
_
si cei la stanga au forma y =
_
0

_
, , IR,
= 0, = 0; astfel y
T
x = 0.
4.2.2 Aspecte calculatorii
Problema 4.5 Fie A IR
mn
o matrice data.
a. Presupunand ca vectorul propriu x IR
n
al lui A este cunoscut, scriet i un algoritm
pentru calculul valorii proprii asociate .
b. Presupunand ca valoarea proprie (A) este cunoscuta, scriet i un algoritm pentru
calculul unui vector propriu asociat.
Rezolvare. a. Avem x = Ax, deci x
T
x = x
T
Ax si, din cauza ca x = 0, x
T
x =
x
2
= 0. Prin urmare
=
x
T
Ax
x
T
x
=

n
i=1

n
j=1
a
ij
x
i
x
j

n
i=1
x
2
i
si algoritmul este
1. = 0
2. = 0
6 SEMINAR 4. DESCOMPUNEREA VALORILOR PROPRII
3. pentru i = 1 : n
1. y
i
= 0
2. pentru j = 1 : n
1. y
i
= y
i
+a
ij
x
j
3. = +x
i
y
i
4. = +x
2
i
2. = /
b. Daca o valoare proprie (A) este cunoscuta, atunci un vector propriu asociat
poate calculat prin calculul unei solut ii nenule a sistemului liniar omogen (I A)x =
0. Pentru aceasta vom aplica eliminarea gaussiana cu pivotare part iala (algoritmul GPP)
matricei I A
M
n1
P
n1
M
2
P
2
M
1
P
1
(I A) = U
unde U este superior triunghiulara. Evident, solut iile sistemului Ux = 0 sunt solut ii ale
sistemului (IA)x = 0. Matricea superior triunghiulara U este singulara deoarece matricea
I A este singulara. Astfel, matricea U are cel put in un element diagonal nul. Fie u
kk
= 0
primul element diagonal nul a lui U. Sistemul Ux = 0 poate scris sub forma
_
_
U
11
U
12
U
13
0 0 U
23
0 0 U
33
_
_
_
_
x

x
k
x

_
_
=
_
_
0
0
0
_
_
,
unde U
11
= U(1 : k 1, 1 : k 1) este un bloc superior triunghiular nesingular, U
12
= U(1 :
k 1, k), U
23
= U(k, k + 1 : n), U
33
= U(k + 1 : n, k + 1 : n). O solut ie nenula poate
obt inuta alegand
x

= 0, x
k
= = 0, x

= U
1
11
U
12

unde este un scalar arbitrar nenul.


Prin urmare, un algoritm pentru calculul unui vector propriu, atunci cand valoarea
proprie asociata este cunoscuta, este
1. [

M, p, U] =GPP(I A)
2. k = 1
3. cat timp u
kk
= 0
1. k k + 1
4. pentru i = k + 1 : n
1. x
i
= 0
5. x
k
= 1
6. daca k > 1
1. x(1 : k 1) =UTRIS(U(1 : k 1, 1 : k 1), U(1 : k 1, k))

In algoritmul de mai sus scalarul a fost considerat egal cu 1.


Problema 4.6 a. Calculat i forma Schur reala a matricei A =
_
1 2
2 3
_
.
b. Calculat i forma Schur reala a matricei A =
_
1 1
1 1
_
.
4.2. PROBLEME REZOLVATE 7
c. Presupunand ca o matrice data A are un spectru real (i.e. (A) IR) si ca dispunem
de o procedura cu sintaxa
x = eigenvector(A)
pentru calculul unui vector propriu al matricei A (fara a se cunoasste valoarea proprie
asociata), scriet i un algoritm pentru calculul unei forme Schur a lui A.
Rezolvare. a. Polinomul caracteristic al lui A este p() = det(I
2
A) = ( 1)( +
3) +4 = (1)
2
, deci valorile proprii ale lui A sunt ambele egale cu 1. Sistemul Ax = x
conduce la x
1
= x
2
, astfel ca tot i vectorii proprii ai lui A sunt de forma x =
_
1
1
_
,
= 0. Pentru a aplica lema de deat ie ortogonala, e vectorul propriu de norma euclidiana
unitate x = (1/

2)
_
1
1
_
. Considerand matricea ortogonala Q = [x y], unde e.g. y =
(1/

2)
_
1
1
_
(avand, evident, y = 1), rezulta S = Q
T
AQ =
_
1 4
0 1
_
, care este o
forma Schur a lui A. Observat i ca forma Schur poate obt inuta pe cale indicata chiar daca
A este defectiva (i.e. nu este simpla).
b. Polinomul caracteristic al lui A este p() = det(I
2
A) = (1)
2
+1, deci valorile
proprii ale lui A nu sunt reale. Astfel o forma Schur reala (FSR) a lui A este chiar A.
c. Vom aplican mod sistematic lema de deat ie ortogonala. Dupa cum se demonstreaza
la curs, daca x este un vector propriu de norma euclidiana unitate al lui A si Q = [ x Y ]
este o matrice ortogonala atunci matricea
B = Q
T
AQ =
_
b
T
0 C
_
este n forma Schur n prima coloana. Pentru a continua, putem aplica aceeasi procedura
blocului C, etc. Algoritmul dorit se poate baza pe urmatoarea schema de calcul:
1. pentru k = 1 : n 1
1. x
k
= eigenvector(A(k : n, k : n))
2. x
k
=
x
k
x
k

3. Se calculeaza o matrice ortogonala



Q
k
astfel ncat

Q
k
e
1
= x
k
4. A(k : n, k : n) =

Q
T
k
A(k : n, k : n)
5. A( : , k : n) = A( : , k : n)

Q
k
.

In nal, matricea A va suprascrisa cu forma sa Schur.


Pentru a detalia schema de mai sus, remarcat i faptul ca matricea

Q
k
din instruct iunea
1.3 poate un reector U = I uu
T
/ astfel ncat (U x
k
)(2 : n k + 1) = 0. Folosind
procedurile cunoscute pentru calculul vectorului u si al scalarului ce deneste reectorul si
pentru nmult irea la stanga si la dreapta a unei matrice cu un reector si folosind un vector
generic x pentru x
k
, algoritmul detaliat devine:
1. pentru k = 1 : n 1
1. x = eigenvector(A(k : n, k : n))
2. =
_

nk+1
i=1
x
2
i
8 SEMINAR 4. DESCOMPUNEREA VALORILOR PROPRII
3. pentru i = 1 : n k + 1
1. x
i
x
i
/
4. u
1
= x
1
1, % = 1
5. pentru i = 2 : n k + 1
1. u
i
= x
i
6. = u
1
, % = 1
7. pentru j = k : n
1. = (

n
i=k
u
ik+1
a
ij
) /
2. pentru i = k : n
1. a
ij
a
ij
u
ik+1
8. pentru i = 1 : n
1. =
_

n
j=k
a
ij
u
jk+1
_
/
2. pentru j = k : n
1. a
ij
a
ij
u
jk+1
.
Problema 4.7 a. Fie A =
_


_
R
22
o matrice simetrica. Dat i un algoritmu
pentru calculul valorilor si vectorilor proprii ai lui A. Ret inet i faptul ca valorile proprii sunt
reale si vectorii proprii sunt ortogonali.
b. Aratat i ca o matrice simetrica reala are spectrul real si vectori proprii ortogonali
doi cate doi. Ce simplicari ale calculului apar n algoritmul QR simetric fat a de cazul
nesimetric?
Rezolvare. a. Polinomul caracteristic al lui A este det(I
2
A) = ()()
2
=

2
( +) +
2
si discriminantul sau este = ( +)
2
4(
2
) = ( )
2
+
4
2
0. Prin urmare valorile proprii sunt ambele reale si egale cu
1
=
+ +

2
si

2
=
+

2
. Vectorii proprii pot calculat i prin rezolvarea sistemelor liniare singulare
omogene Ax
1
=
1
x
1
and Ax
2
=
1
x
2
. Sistemul Ax
1
=
1
x
1
poate scris
_
(
1
)x
11
x
21
= 0
x
11
+ (
1
)x
21
= 0
Daca = 0, atunci
1
= si o solut ie nenula a sistemului de mai sus este x
1
=
_

0
_
cu
= 0 arbitrar. Daca = 0, atunci considerand x
11
= = 0, o solut ie nenula a sistemului
de mai sus este x
1
=
_
_

(
1
)

_
_
. Sistemul Ax
2
=
1
x
2
poate scris similar
_
(
2
)x
21
x
22
= 0
x
21
+ (
2
)x
22
= 0
Daca = 0, atunci
2
= si o solut ie nenula a sistemului de mai sus este x
2
=
_
0

_
cu
= 0 arbitrar. Daca = 0, atunci considerand x
22
= = 0, o solut ie nenula a sistemului
4.2. PROBLEME REZOLVATE 9
de mai sus este x
2
=
_
_
(
2
)

_
_
. Daca = 0, cei doi vectori proprii sunt evident
ortogonali. Daca = 0, atunci
x
T
2
x
1
=
_
(
2
)


_
_
_

(
1
)

_
_
=
(
2
)

+
(
1
)

=
=

(
1
+
2
) = 0.
Deci, cei doi vectori proprii sunt ortogonali.
b. Daca A IR
nn
este simetrica, i.e. A
T
= A, e S = Q
T
AQ forma sa Schur reala,
care este o structura cvasi-triunghiulara. Avem S
T
= Q
T
A
T
Q = Q
T
AQ = S, deci matricea
S este simetrica si, prin urmare, are o structura cvasi-diagonala S = diag(S
11
, S
22
, . . . , S
pp
)
cu blocurile diagonale 22 avand valori proprii complex conjugate. Dar blocurile diagonale
sunt de asemenea simetrice si am vazut mai sus ca o matrice 2 2 simetrica are valori
proprii reale. Astfel ca toate blocurile diagonale ale unei forme Schur reale a unei matrice
simetrice sunt 1 1, i.e. forma Schur reala a unei matrice simetrice este diagonala (n acest
caz forma canonica Jordan si forma Schur sunt identice), toate valorile proprii sunt reale
si din S = Q
T
AQ = = diag(
1
,
2
, . . . ,
n
) avem AQ = Q, i.e. AQ(:, j) = Q(:, j) =

j
Qe
j
=
j
Q(:, j), j = 1 : n. Prin urmare, x
j
= Q(:, j) sunt vectori proprii ai matricei
simetrice A, asociat i valorilor proprii
j
si, ind coloane ale unei matrice ortogonale, sunt
tot i ortogonali doi cate doi. Aceste proprietat i utile aduc simplicari importante algoritmului
QR simetric. Astfel matricea superior Hessenberg obt inuta n prima etapa a algoritmului
QR este simetrica si prin urmare tridiagonala. De asemenea, toate matricele din secvent a
QR sunt tridiagonale si convergent a la forma diagonala este foarte rapida. Pentru mai multe
detalii consultat i cursul si bibliograa.
Problema 4.8 Elaborat i un algoritm pentru reducerea unei matrice A R
nn
la forma su-
perior Hessenberg H = TAT
1
, unde T este un produs de transformari gaussiene elementare
stabilizate M
k
P
k
(de tipul celor ntalnite n algoritmul GPP).
Rezolvare. Ideea este aceeasi ca si n cazul algoritmului de reducere ortogonala HQ si
se bazeaza pe faptul ca matricele de permutare P
k
= P
ki
k
, i
k
k si matricele elementare
inferior triunghiulare M
k
= I
n
m
k
e
T
k
au structura
_
I
k1
0
0 X
_
la fel cu a matricelor
M
k
P
k
, P
1
k
= P
T
k
, M
1
k
= I
n
+m
k
e
T
k
si P
1
k
M
1
k
. Prin urmare, forma Hessenberg poate
obt inuta prin urmatoarele transformari de asemanare
A H = TAT
1
= M
n1
P
n1
M
3
P
3
M
2
P
2
A(M
2
P
2
)
1
(M
3
P
3
)
1
(M
n1
P
n1
)
1
=
= M
n1
P
n1
M
3
P
3
M
2
P
2
AP
2
M
1
2
P
3
M
1
3
P
n1
M
1
n1
.
Luandn calcul faptul ca o matrice de permutare P
ki
k
este denita complet de cei doi ntregi
(k, i
k
) putem scrie urmatoarea schema de calcul
1. pentru k = 1 : n 2
10 SEMINAR 4. DESCOMPUNEREA VALORILOR PROPRII
1. Se determina i
k+1
astfel ncat |a
i
k+1
k
| = max
i=k+1:n
(|a
ik
|)
2. A(i
k+1
, k : n) A(k + 1, k : n)
3. Se determina matricea elementara inferior triunghiulara
M
k+1
astfel ncat (M
k+1
A)(k + 2 : n, k) = 0
4. A = M
k+1
A
5. A( : , k + 1) A( : , i
k+1
)
6. A = AM
1
k+1
.
Folosind cunostint ele de utilizare a transformarilor gaussiene, schema de calcul de mai
sus este detaliata n urmatorul algoritm.
1. pentru k = 1 : n 2
1. i
k+1
= k + 1
2. = |a
k+1,k
|
3. pentru i = k + 2 : n
1. daca |a
ik
| >
1. i
k+1
= i
2. = |a
ik
|
4. pentru j = k : n
1. a
i
k+1
,j
a
k+1,j
5. pentru i = k + 2 : n
1.
i,k+1
= a
ik
/a
k+1,k
2. a
ik
= 0
6. pentru j = k + 1 : n
1. pentru i = k + 2 : n
1. a
ij
a
ij

i,k+1
a
k+1,j
7. pentru i = 1 : n
1. a
i
k+1
,k+1
a
i,k+1
8. pentru j = k + 1 : n
1. pentru i = k + 2 : n
1. a
ij
a
ij

i,k+1
a
k+1,j
Solut ia este de doua ori mai ecienta decat algoritmul HQ, dar acesta din urma este preferat
datorita avantajelor transformarilor ortogonale.
Problema 4.9 Fie H R
nn
o matrice superior Hessenberg. Descriet i detaliile unui pas
QR simplu cu deplasare explicita folosind valoarea optima = h
nn
a deplasarii.
Rezolvare. Fiind data matricea H curenta din sirul QR, calculul H H

al succesoarei
ei reprezinta un pas simplu QR. Versiunea cu deplasare explicita este denitaa prin
_
[ Q, R] = qr(H I
n
) %factorizareaQR
H H

= RQ+I
n
Matricea H I este superior Hessenberg; factorizarea sa QR poate calculata folosind
o secvent a de rotat ii Givens pentru triangularizarea ortogonala a matricei H I, i.e.
P
n1,n
P
23
P
12
(H I) = R; atunci Q = P
T
12
P
T
23
P
T
n1,n
.

Inmult irea matricelor RQ se
poate face fara calculul explicit al lui Q, folosind expresia RQ = RP
T
12
P
T
23
. . . P
T
n1,n
. Toate
calculele pot facute prin suprascrierea matricei H. Schema de calcul pentru pasul QR
simplu cu deplasare explicita este:
4.2. PROBLEME REZOLVATE 11
1. h
nn
2. H H I
3. pentru k = 1 : n 1
1. Se calculeaza rotat ia Givens P
k,k+1
astfel ncat (P
k,k+1
H)(k + 1, k) = 0
2. H P
k,k+1
H
3. pentru k = 1 : n 1
2. H HP
T
k,k+1
5. H H +I
Notand cu (c
k
, s
k
) scalarii denitorii pentru rotat ia P
k,k+1
, schema de mai sus poate
detaliata n urmatorul algoritm.
1. h
nn
2. pentru i = 1 : n
1. h
ii
h
ii

3. pentru k = 1 : n 1
1. =
_
h
2
kk
+h
2
k+1,k
2. c
k
= h
k,k
/
3. s
k
= h
k+1,k
/
4. h
k,k
=
5. h
k+1,k
= 0
6. pentru j = k + 1 : n
1. = h
kj
2. h
kj
c
k
+s
k
h
k+1,j
3. h
k+1,j
s
k
+c
k
h
k+1,j
4. pentru k = 1 : n 1
1. pentru i = 1 : k + 1
1. = h
ik
2. h
ik
c
k
+h
i,k+1
s
k
3. h
i,k+1
s
k
+h
i,k+1
c
k
5. pentru i = 1 : n
1. h
ii
h
ii
+
Problema 4.10 Elaborat i un algoritm pentru calculul valorilor proprii ale matricei A =
I
n
+uv
T
, unde u, v R
n
.
Rezolvare. Dac a Q = Q
T
este reectorul Householder pentru care Qu = ue
1
, atunci
matricea
A

= Q
T
AQ = I +ue
1
v
T
Q
T
= I +e
1
w
T
,
unde w = uQv, este ortogonal asemenea cu A si superior triunghiulara. Prin urmare
valorile proprii ale lui A sunt elementele diagonale ale lui A

. Avem a

11
= 1 + w
1
=
1 + uv
T
q
1
, unde q
1
= Qe
1
este prima coloana a lui Q si a

ii
= 1 pentru i 2. Dar
q
1
= u/u, prin urmare a

11
= 1 + v
T
u. Astfel,
1
= 1 + v
T
u si
i
= 1, i = 2 : n este o
valoare proprie cu ordinul de multiplicitate n 1.
12 SEMINAR 4. DESCOMPUNEREA VALORILOR PROPRII
Problema 4.11 a. Fiind dat un vector x IR
n
nenul, scriet i un algoritm pentru calculul
unui vector v IR
n
astfel ncat v
T
x = 1.
b. Presupunem ca matricea A I C
nn
are valorile proprii reale
i
, i = 1 : n, si ca
x
i
, i = 1 : n, sunt vectori proprii asociat i. Fie v IR
n
un vector astfel ncat v
T
x
1
= 1 si
consideram matricea B = (I
n
x
1
v
T
)A. Aratat i ca (B) = { 0,
2
, . . . ,
n
}, si ca vectorii
x
B
1
= x
1
, x
B
i
= x
i
(v
T
1
x
i
)x
1
sunt vectori proprii ai matricei B.
Rezolvare. a. Fie U
1
= I
n
uu
T
/ un reector Householder astfel ncat U
1
x = e
1
,
= 0. Atunci
v =
1

U
1
e
1
=
1

(e
1
u)
unde = u
1
/, este vectorul pe care l cautam.

Intr-adevar, v
T
x =
1

e
T
1
U
1
x = 1. Vectorul
v poate calculat dupa cum urmeaza:
1. =
_

n
i=1
x
2
i
2. u
1
= +x
1
3. pentru i = 2 : n
1. u
i
= x
i
4. = u
1

5. = u
1

6. v
1
= (1 u
1
)/
6. pentru i = 2 : n
1. v
i
= u
i
/
b. Avem Bx
1
= (I
n
x
1
v
T
)Ax
1
=
1
(I
n
x
1
v
T
)x
1
= 0; deci x
1
este un vector propriu al lui
B asociat unei valori proprii nule a lui B. De asemenea Bx
B
i
= (I
n
x
1
v
T
)A(x
i
(v
T
1
x
i
)x
1
) =
(I
n
x
1
v
T
)(
i
x
i

1
x
1
(v
T
1
x
i
)) =
i
x
B
i
, i = 2 : n.
Problema 4.12 Scriet i un algoritm pentru calculul polinomului caracteristic al unei ma-
trice patrate A IR
nn
date.
Rezolvare. Cea mai buna metoda numerica actuala constan calculul init ial al valorilor
proprii
i
, folosind algoritmul QR, iar apoi n calculul p() =

n
i=1
(
i
). Pentru a
determina coecient ii lui p(), folosim schema de calcul
1. p() = 1
2. for i = 1 : n
1. p() = p()(
i
)
Daca, la nceputul pasului i avem
p() = p
(i1)
() =
i1
+p
(i1)
2

i2
+. . . +p
(i1)
i1
+p
(i1)
i
procesarea la pasul i duce la
p() = p
(i)
() =
i
+ (p
(i1)
2
1
i
)
i1
+. . . + (p
(i)
i1
p
(i1)
i

i
) + (0 p
(i1)
i

i
) =
4.3. PROBLEME PROPUSE 13
=
i1
+p
(i)
2

i2
+. . . +p
(i)
i
+p
(i)
i+1
.
Prin urmare, p
(i)
1
= p
(i1)
1
= 1 si p
(i)
j
= p
(i1)
j
p
(i1)
j+1

i
pentru j 2. Calculand coecient ii
n ordinea inversa putem suprascrie coecient ii de la pasul anterior precum n urmatorul
algoritm. Astfel, cel mai bun algoritm pentru calculul coecient ilor polinomului caracteristic
este:
1. Folosind algoritmul QR, calculat i
i
, i = 1 : n
2. p
1
= 1
3. pentru i = 2 : n + 1
1. p
i
= 0
4. pentru i = 1 : n
1. pentru j = i + 1 : 1 : 2
1. p
j
p
j

i
p
j1
.
Evident, efortul principal de calcul consta n determinarea valorilor proprii.
4.3 Probleme propuse
Problema 4.13 Fie date matricele
A =
_
_
3 3 2
1 5 2
1 3 0
_
_
, B =
_
_
4 0 8
8 3 9
4 1 9
_
_
.
Folosind denit iile valorilor si vectorilor proprii calculat i valorile si vectorii proprii pentru
A si B. Dupa aceea calculat i-le si formele Schur.
Problema 4.14 a. O matrice patrata se numeste nilpotenta daca exista un numar ntreg
k 0 astfel ncat A
k
= 0. Demonstrat i ca toate valorile proprii ale unei matrice nilpotente
sunt nule. Dat i un exemplu de matrice 2 2 nilpotenta.
b. O matrice patrata se numeste idempotenta daca A
2
= A. Demonstrat i ca toate
valorile proprii ale unei matrice idempotente sunt 0 sau 1. Dat i un exemplu de matrice 22
idempotenta care sa nu e I
2
.
Problema 4.15 a. Calculat i valorile proprii si un set de vectori proprii pentru un reector
Householder U
k
. b. Calculat i valorile proprii si un set de vectori proprii pentru o rotat ie
plana P
ij
.
Problema 4.16 Care va rezultatul aplicarii metodei puterii matricelor:
A =
_
_
5 8 1
0 1 2
0 0 2
_
_
, B =
_
1 1
1 3
_
,
cu aproximarile init iale de rigoare? Ce nseamna de rigoare n aceste cazuri?
14 SEMINAR 4. DESCOMPUNEREA VALORILOR PROPRII
Problema 4.17 Presupunem ca avem date matricea A IR
nn
si vectorul z IR
n
. Scriet i
un algoritm pentru calculul unei matrice ortogonale Q astfel ncat Q
T
AQ sa e superior
Hessenberg si Q
T
z coliniara cu vectorul e
1
.
Problema 4.18 Fie data o pereche (valoare proprie, vector propriu)= (, x) a unei matrice
superior Hessenberg H IR
nn
. Scriet i un algoritm pentru calculul unei matrice ortogonale
Q astfel ncat matricea Q
T
HQ sa aiba structura Q
T
HQ =
_
f
T
0 G
_
, unde matricea
G IR
(n1)(n1)
este superior Hessenberg.
Problema 4.19 Fie H IR
nn
o matrice superior Hessenberg data si urmatoarea proce-
dura pentru calculul matricei succesoare H H

ntr-un algoritm iterativ:


1. Se aplica algoritmul GPP M
n1
P
n1
. . . M
1
P
1
H = R pentru a obt ine matricea supe-
rior triunghiulara R.
2. H H

= RP
1
M
1
1
. . . P
n1
1M
1
n1
,
Demonstrat i ca:
a. matricea succesoare H

este superior Hessenberg si ca,


b. matricea succesoare H

este asemenea cu H.
Problema 4.20 a. Consideram matricea H IR
22
cu spectru real si e H
k
not
=
_


_
matricea curenta din sirul QR pentru matricea H. Folosind deplasarea
k
= calculat i
matricea succesoare H
k+1
. Examinat i elementul H
k+1
(2, 1) si deducet i unele proprietat i de
convergent a ale sirului QR.
b. Consideram matricea simetrica T IR
22
si e T
k
not
=
_


_
matricea curenta
a sirului QR pentru matricea T. Folosind deplasarea
k
= calculat i matricea succe-
soare T
k+1
. Examinat i elementele extradiagonale T
k+1
(1, 2) = T
k+1
(2, 1) si deducet i unele
proprietat i de convergent a ale sirului QR simetric .
4.4 Bibliograe
1. B. Jora, B. Dumitrescu, C. Oara, Numerical Methods, UPB, Bucharest, 1995.
2. G.W. Stewart, Introduction to Matrix Computations, Academic Press, 1973.
3. G. Golub, Ch. Van Loan, Matrix Computations, 3-rd edition, John Hopkins Uni-
versity Press, 1998.
4. G.W. Stewart, Matrix Algorithms, vol.1: Basic Decompositions, SIAM, 1999.
5. G.W. Stewart, Matrix Algorithms, vol.2: Eigensystems, SIAM, 2001.
6. B. Dumitrescu, C. Popeea, B. Jora, Metode de calcul numeric matriceal. Al-
goritmi fundamentali, ALL, Bucuresti, 1998.
4.5. PROGRAME MATLAB 15
4.5 Programe MATLAB
Problema 4.5 a
1: function [ lambda]= p45a(A,x)
2: %
3: % Rezolvarea problemei 4.5 subpunctul a).
4: % Algoritmul calculeaza catul Rayleigh denit de perechea (A,x).
5: % Daca x este un vector propriu al matricei patratice A, atunci
6: % lambda este valoarea proprie asociata vectorului propriu x.
7: % Apel:
8: % lambda=p45a(A,x);
9: % Stamatescu Grigore, mai 2006.
10: %
11: [ m,n]=size(A);
12: % vericam daca matricea A este patratica
13: if m=n,
14: error(Matricea A nu este patratica);
15: end
16: sigma=0;
17: tau=0;
18: for i=1:n
19: y(i)=0;
20: for j=1:n
21: y(i)=y(i)+A(i,j)*x(j);
22: end
23: sigma=sigma+x(i)*y(i);
24: tau=tau+x(i)*x(i);
25: end
26: lambda=sigma/tau;
1: function [ x]= eigenvector(A)
2: %
3: % Rezolvarea problemei 4.5 subpunctul a).
4: % Algoritmul calculeaza un vector propriu al matricei patratice A, folosind
5: % functia MATLAB eig, necesar pentru testarea programului precedent.
6: % Stamatescu Grigore, mai 2006.
7: %
8: [ m,n]=size(A);
9: % vericam daca A este patratica
10: if m=n,
11: error(Matricea A nu este patratica);
12: end
13: [ V,D]=eig(A);
14: x=V(1:n);
16 SEMINAR 4. DESCOMPUNEREA VALORILOR PROPRII
Problema 4.5 b
1: function [ x]= p45b(A,lambda)
2: %-
3: % Algoritmul calculeaza vectorul propriu x al unei matrice A atunci
4: % cand valoarea proprie lambda corespunzatoare este cunoscuta.
5: % Apelul:
6: % x=p45b(A,lambda)
7: % Stamatescu Grigore, mai 2006.
8: %-
9: [ m,n]=size(A);
10: % vericam daca matricea A este patratica
11: if m=n,
12: error(Matricea A nu este patratica);
13: end
14: T=lambda*eye(size(A))-A;
15: [ T,M,p]=GPP(T);
16: k=1;
17: for i=1:n-1
18: if A(i,i)=0,
19: k=k+1;
20: end
21: end
22:
23: for i=k+1:n
24: x(i)=0;
25: end
26: x(k)=1;
27:
28: if k>1,
29: for i=1:k-1
30: x(i)=UTRIS(T(i,i),-T(i,k));
31: end
32: end
Problema 4.6
1: function [ A]= Schr(A)
2: %-
3: % Algoritmul calculeaza o forma Schur a matricei patratice A cu spectru real
4: % folosind o procedura de calcul a unui vector propriu.
5: % Apel:
6: % A=Schr(A);
7: % Stamatescu Grigore, mai 2006.
8: %-
9: [ m,n]=size(A);
10: if m=n,
4.5. PROGRAME MATLAB 17
11: error(Matricea A nu este patratica);
12: end
13: [ V,D]=eig(A); % inecient!
14: for t=1:n
15: if isreal(D(t,t))=1,
16: error(Matricea A nu are spectrul valorilor proprii real!);
17: end
18: end
19:
20: for k=1:n-1
21: x=eigenvector(A(k:n,k:n));
22: suma=0;
23: for i=1:n-k+1
24: suma=suma+x(i)*x(i);
25: end
26: alfa=sqrt(suma);
27: for i=1:n-k+1
28: x(i)=x(i)/alfa;
29: end
30: u(1)=x(1)-1;
31: for i=2:n-k+1
32: u(i)=x(i);
33: end
34: beta=-u(1);
35: for j=k:n
36: suma1=0;
37: for i=k:n
38: suma1=suma1+u(i-k+1)*A(i,j);
39: end
40: tau=suma1/beta;
41: for i=k:n
42: A(i,j)=A(i,j)-tau*u(i-k+1);
43: end
44: end
45: for i=1:n
46: suma2=0;
47: for j=k:n
48: suma2=suma2+A(i,j)*u(j-k+1);
49: end
50: tau=suma2/beta;
51: for j=k:n
52: A(i,j)=A(i,j)-tau*u(j-k+1);
53: end
54: end
55: end
18 SEMINAR 4. DESCOMPUNEREA VALORILOR PROPRII
Problema 4.8
1: function [ A]= Hessenberg(A)
2: %
3: % Algoritmul reduce matricea A patratica la forma Hessenberg.
4: % Apel:
5: % A=Hessenberg(A)
6: % Stamatescu Grigore mai 2006
7: %
8: [ m,n]=size(A);
9: % vericam daca A este patratica
10: if m=n,
11: error(Matricea A nu este patratica);
12: end
13:
14: for k=1:n-2
15: z(k+1)=k+1;
16: niu=abs(A(k+1,k));
17: for i=k+2:n
18: if abs(A(i,k))>niu,
19: z(k+1)=i;
20: niu=abs(A(i,k));
21: end
22: end
23: for j=k:n
24: A(z(k+1),j)=A(k+1,j);
25: end
26: for i=k+2:n
27: miu(i,k+1)=A(i,k)/A(k+1,k);
28: A(i,k)=0;
29: end
30: for j=k+1:n
31: for i=k+2:n
32: A(i,j)=A(i,j)-miu(i,k+1)*A(k+1,j);
33: end
34: end
35: for i=1:n
36: A(z(k+1),k+1)=A(i,k+1);
37: end
38: for j=k+1:n
39: for i=k+2:n
40: A(i,j)=A(i,j)-miu(i,k+1)*A(k+1,j);
41: end
42: end
43: end
Problema 4.9
4.5. PROGRAME MATLAB 19
1: function [ H]= pasQR(H)
2: %
3: % Fiind data o matrice H superior Hessenberg algoritmul implementeaza
4: % un pas QR cu deplasare explicita folosind deplasarea miu=H(n,n)
5: % Apel:
6: % H=pasQR(H)
7: % Stamatescu Grigore, mai 2006.
8: %
9: [ m,n]=size(H);
10: % vericam daca H este patratica
11: if m=n,
12: error(Matricea H nu este patratica);
13: end
14: % analizam daca matricea este superior Hessenberg
15: for i=3:n
16: for j=1:i-2
17: if H(i,j)=0
18: error(Matricea H nu e superior Hessenberg)
19: end
20: end
21: end
22: miu=H(n,n);
23: for i=1:n
24: H(i,i)=H(i,i)-miu;
25: end
26: for k=1:n-1
27: ro=sqrt(H(k,k)*H(k,k)+H(k+1,k)*H(k+1,k));
28: c(k)=H(k,k)/ro;
29: s(k)=H(k+1,k)/ro;
30: H(k,k)=ro;
31: H(k+1,k)=0;
32: for j=k+1:n
33: tau=H(k,j);
34: H(k,j)=c(k)*tau+s(k)*H(k+1,j);
35: H(k+1,j)=-s(k)*tau + c(k)*H(k+1,j);
36: end
37: end
38: for k=1:n-1
39: for i=1:k+1
40: tau=H(i,k);
41: H(i,k)=tau*c(k)+H(i,k+1)*s(k);
42: H(i,k+1)=-tau*s(k)+H(i,k+1)*c(k);
43: end
44: end
45: for i=1:n
46: H(i,i)=H(i,i)+miu;
47: end
20 SEMINAR 4. DESCOMPUNEREA VALORILOR PROPRII
Problema 4.11
1: function [ v]= vtx1(x)
2: %
3: % Fiind dat un vector x nenul de dimensiune n, algoritmul calculeaza
4: % un vector v (dimensiune n) astfel incat vT*x=1
5: % Apel:
6: % v=vtx1(x)
7: % Stamatescu Grigore, mai 2006.
8: %
9: n=length(x);f=0;
10: % vericam daca x este nenul
11: for i=1:n
12: if x(i)==0,
13: f=f+1;
14: end
15: end
16: if f==n,
17: error(Vectorul x este nul!);
18: end
19: s=0;
20: for i=1:n
21: s=s+x(i)*x(i);
22: end
23: ro=-sqrt(s);
24: u(1)=ro+x(1);
25: for i=2:n
26: u(i)=x(i);
27: end
28: beta=u(1)*ro;
29: tau=u(1)*beta;
30: v(1)=(1-u(1)*tau)/ro;
31: for i=2:n
32: v(i)=-u(i)*tau/ro;
33: end
Problema 4.12
1: function [ p]= polinom(A)
2: %
3: % Algoritmul calculeaza polinomul caracteristic p al matricei patratice
4: % date A (nxn).
5: % Apel:
6: % p=polinom(A)
7: % Stamatescu Grigore, mai 2006.
4.5. PROGRAME MATLAB 21
8: %
9: [ n,m]=size(A);
10: % analizam daca matricea e patratica
11: if n=m
12: error(Matricea nu e patratica);
13: end
14:
15: [ V,D]=eig(A);
16: for i=1:n
17: lambda(i)=D(i,i);
18: end
19: p(1)=1;
20: for i=2:n+1
21: p(i)=0;
22: end
23: for i=1:n
24: for j=i+1:-1:2
25: p(j)=p(j)-lambda(i)*p(j-1);
26: end
27: end