Calculul valorilor si vectorilor proprii
Calculul valorilor si vectorilor proprii
Calculul valorilor si vectorilor proprii
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
460 CAPITOLUL 6. VALORI ŞI VECTORI PROPRII GENERALIZAŢI<br />
suprascrierea(internăa) lui a realizându-secu apelul [a,c,s] = Gcm(a). Cu aceste<br />
precizări obţinem următorul algoritm.<br />
Algoritmul 6.1 (HTQZc – Reducerea la forma Hessenberg generalizată)<br />
(Dată o pereche (A,B) ∈ IC n×n × IC n×n , precum şi matricele<br />
unitare Q,Z ∈ IC n×n , algoritmul calculează perechea unitar echivalentă<br />
(A,B) ← (H,T) = (˜Q H A˜Z, ˜Q H B ˜Z) având forma superior Hessenberg<br />
generalizată. Opţional se acumulează matricele unitare de transformare<br />
Q ← Q˜Q,Z ← Z ˜Z. Opţiunea se exprimă prin intermediul unei variabile<br />
logiceoptdetipulşirdecaracterecepoateluavalorile ′ da ′ sau ′ nu ′ . Dacă<br />
opt = ′ nu ′ , algoritmul returnează matricele Q şi Z nemodificate.)<br />
1. [B,U,b] = TUN(B)<br />
2. Pentru k = 1 : n−1<br />
1. A(k : n,:) = Hcs(U(k : n,k),b(k),A(k : n,:))<br />
3. Dacă opt = ′ da ′ atunci<br />
1. Pentru k = n−1 : −1 : 1<br />
1. Q(:,k : n) = Hcd(Q(:,k : n),U(k : n,k),b(k))<br />
4. Pentru k = 1 : n−2<br />
1. Pentru i = n : −1 : k+2<br />
1. [A(i−1 : i,k),c,s] = Gc(A(i−1 : i,k))<br />
2. A(i−1 : i,k+1 : n) = Gcs(c,s,A(i−1 : i,k+1 : n))<br />
3. B(i−1 : i,i−1 : n) = Gcs(c,s,B(i−1 : i,i−1 : n))<br />
4. Dacă opt = ′ da ′ atunci<br />
Q(:,i−1: i) = Gcd(Q(:,i−1 : i),c,s)<br />
5. [B(i,i−1: i),c,s] = Gcm(B(i,i−1 : i))<br />
6. A(:,i−1 : i) = Gcd(A(:,i−1 : i),c,s)<br />
7. B(1 : i−1,i−1: i) = Gcd(B(1 : i−1,i−1: i),c,s)<br />
8. Dacă opt = ′ da ′ atunci<br />
Z(:,i−1: i) = Gcd(Z(:,i−1 : i),c,s)<br />
Comentarii. În acest capitol, pentru apelul algoritmului HTQZc va fi utilizată<br />
<strong>si</strong>ntaxa<br />
[H,T,Q,Z] = HTQZc(A,B,Q,Z,opt).<br />
Similar cu cele prezentate la calculul <strong>valorilor</strong> <strong>proprii</strong> ordinare din capitolul 4, acumularea<br />
transformărilor se face întotdeauna prin înmulţirea la dreapta cu matricea<br />
de transformare curentă, i.e. utilizând procedurile Hcd sau Gcd. Totuşi, dacă<br />
iniţial Q este matricea unitate (e.g. în <strong>si</strong>tuaţiile în care perechea (A,B) nu provine<br />
din prelucrări anterioare), atunci se obţine un spor important de eficienţă dacă<br />
instrucţiunea 3 se înlocuieşte cu instruţiunea<br />
3. Dacă opt = ′ da ′ atunci<br />
1. Pentru k = n−1 : −1 : 1<br />
1. Q(k : n,k : n) = Hcs(U(k : n,k),b(k),Q(k : n,k : n))