12.01.2015 Views

Calculul valorilor si vectorilor proprii

Calculul valorilor si vectorilor proprii

Calculul valorilor si vectorilor proprii

SHOW MORE
SHOW LESS

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))

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!