12.01.2015 Views

Calculul valorilor si vectorilor proprii

Calculul valorilor si vectorilor proprii

Calculul valorilor si vectorilor proprii

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

480 CAPITOLUL 6. VALORI ŞI VECTORI PROPRII GENERALIZAŢI<br />

Suntem în măsură să prezentăm acum algoritmul formal de implementare a<br />

unui pas dublu QZ cu deplasare implicită. Sunt utilizate procedurile de calcul<br />

al reflectorilor cuprinse în tabelul 4.3, la care se adaugă procedurile introduse în<br />

această secţiune.<br />

Algoritmul 6.7 (IT QZ2 – Un pas dublu QZ cu deplasare implicită)<br />

(Date o pereche (H,T) ∈ IR n×n × IR n×n în formă Hessenberg<br />

generalizată ireductibilă, vectorul de deplasare implicită w ∈ IR 3<br />

şi matricele ortogonale Q,Z ∈ IR n×n , algoritmul suprascrie perechea<br />

(H,T) cu perechea succesor (H ′ ,T ′ ) = (Q T k HZ k,Q T k TZ k) din şirul QZ.<br />

Opţional, se actualizează matricele de transformare Q şi Z. Opţiunea<br />

se exprimă cu ajutorul variabilei logice opt de tipul şir de caractere care<br />

poate lua valorile ′ da ′ sau ′ nu ′ . Dacă opt = ′ nu ′ , algoritmul returnează<br />

matricele Q şi Z nemodificate.)<br />

1. [w,u,β] = Hr(w)<br />

2. H(1:3,:) = Hrs(u,β,H(1:3,:))<br />

3. T(1:3,:) = Hrs(u,β,T(1:3,:))<br />

4. Dacă opt = ′ da ′ atunci Q(:,1:3) = Hrd(Q(:,1:3),u,β)<br />

5. % Refacerea structurii superior Hessenberg generalizate<br />

Pentru k = 1 : n−3<br />

1. [T(k+2,k : k+2),u,β] = Hrm(T(k+2,k : k+2))<br />

2. H(1 : k+3,k : k+2) = Hrd(H(1 : k+3,k : k+2),u,β)<br />

3. T(1 : k+1,k : k+2) = Hrd(T(1 : k+1,k : k+2),u,β)<br />

4. Dacă opt = ′ da ′ atunci<br />

Z(:,k : k+2) = Hrd(Z(:,k : k+2),u,β)<br />

5. [T(k+1,k : k+1),u,β] = Hrm(T(k+1,k : k+1))<br />

6. H(1 : k+3,k : k+1) = Hrd(H(1 : k+3,k : k+1),u,β)<br />

7. T(1 : k,k : k+1) = Hrd(T(1 : k,k : k+1),u,β)<br />

8. Dacă opt = ′ da ′ atunci<br />

Z(:,k : k+1) = Hrd(Z(:,k : k+1),u,β)<br />

9. [H(k+1 : k+3,k),u,β] = Hr(H(k+1 : k+3,k))<br />

10. H(k+1 : k+3,k+1 : n) = Hrs(u,β,H(k+1 : k+3,k+1 : n))<br />

11. T(k+1 : k+3,k+1 : n) = Hrs(u,β,T(k+1 : k+3,k+1 : n))<br />

12. Dacă opt = ′ da ′ atunci<br />

Q(:,k+1 : k+3) = Hrd(Q(:,k+1 : k+3),u,β)<br />

6. % Ultimele transformări<br />

1. [T(n,n−2: n),u,β] = Hrm(T(n,n−2: n))<br />

2. H(:,n−2: n) = Hrd(H(:,n−2 : n),u,β)<br />

3. T(1 : n−1,n−2: n) = Hrd(T(1 : n−1,n−2: n),u,β)<br />

4. Dacă opt = ′ da ′ atunci<br />

Z(:,n−2: n) = Hrd(Z(:,n−2 : n),u,β)<br />

5. [T(n−1,n−2: n−1),u,β] = Hrm(T(n−1,n−2: n−1))

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

Saved successfully!

Ooh no, something went wrong!