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.

6.3. ALGORITMUL QZ 483<br />

Algoritmul 6.9 (QZ2 – Algoritmul QZ cu paşi dubli şi deplasări<br />

implicite) (Dateunfascicolmatricealdefinit deperechea(A,B)∈IR n×n ×<br />

×IR n×n , matricele ortogonale Q,Z ∈ IR n×n şi un nivel de toleranţă tol<br />

pentru anularea elementelor subdiagonale, algoritmul calculează forma<br />

Schur reală generalizată (A,B) ← (S,T) = (˜Q T A˜Z, ˜Q T B ˜Z) a perechii<br />

(A,B). Toate calculele se efectuează pe loc, în locaţiile de memorie<br />

ale tablourilor A şi B. Opţional, se acumuleză transformările prin actualizarea<br />

matricelor Q ← Q˜Q şi Z ← Z ˜Z. Opţiunea se exprimă cu<br />

ajutorul variabilei logice opt de tipul şir de caractere care poate lua<br />

valorile ′ da ′ sau ′ nu ′ . Dacă nu se doreşte acumularea transformărilor,<br />

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

1. % Reducerea la forma Hessenberg generalizată<br />

1. [A,B,Q,Z] =HTQZr(A,B,Q,Z,opt)<br />

2. % Deplasarea zerourilor diagonale ale matricei B şi evidenţierea<br />

<strong>valorilor</strong> <strong>proprii</strong> infinite.<br />

1. [A,B,Q,Z] =DZr(A,B,Q,Z,opt)<br />

3. % Faza iterativă<br />

1. p = 0, q = 0, cont it = 0.<br />

2. C^at timp q < n<br />

1. % Anularea elementelor subdiagonale neglijabile<br />

Pentru i = p+1 : n−q −1<br />

1. Dacă |a i+1,i | ≤ tol(|a ii |+|a i+1,i+1 |) atunci a i+1,i = 0<br />

2. % Determinarea lui q<br />

1. continuă = ′ da ′<br />

2. C^at timp continuă = ′ da ′<br />

1. Dacă q ≥ n−2 atunci break<br />

2. Dacă a n−q,n−q−1 = 0 atunci<br />

1. q ← q +1<br />

2. cont it = 0<br />

altfel<br />

1. Dacă a n−q−1,n−q−2 = 0<br />

atunci<br />

1. q ← q +2<br />

2. cont it = 0<br />

altfel continuă = ′ nu ′ .<br />

3. % Terminarea normală a fazei iterative<br />

Dacă q ≥ n−2 atunci break<br />

4. % Determinarea lui p<br />

1. p = n−q −1<br />

2. C^at timp a p+1,p ≠ 0<br />

1. p ← p−1<br />

2. Dacă p = 0 atunci break

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

Saved successfully!

Ooh no, something went wrong!