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.

4.4. ALGORITMUL QR 269<br />

5. S(k:k+1,k:n) = Grs(c,s,S(k: k+1,k:n))<br />

6. S(k+1,k) = 0 % Zeroul calculat devine un zero efectiv.<br />

Comentarii. Sintaxa de apel a acestui algoritm va fi<br />

iar complexitatea sa este O(n).<br />

[S,c,s] = TRID2(S,k),<br />

Cu precizările de mai sus, algoritmul QR standard cu paşi dubli cu deplasări<br />

implicite pentru calculul formei Schur reale se scrie astfel.<br />

Algoritmul 4.10 (QR2– Algoritmul QR cu paşi dubli, cu deplasări<br />

implicite) (Date o matrice A ∈ IR n×n , o matrice ortogonală Q ∈ IR n×n<br />

şi un nivel de toleranţă tol pentru anularea elementelor subdiagonale,<br />

algoritmul calculează forma Schur reală a matricei A ← S = ˜Q T A˜Q.<br />

Toate calculele se efectuează pe loc, în locaţiile de memorie ale tabloului<br />

A. Opţional, se acumulează transformările prin actualizarea matricei<br />

ortogonale Q, i.e. Q ← Q˜Q. Opţiunea se exprimă prin intermediul<br />

variabilei logice opt de tip şir de caractere care poate lua valorile ’da’<br />

sau ’nu’. Dacă opt = ′ nu ′ , matricea Q rămâne nemodificată.)<br />

1. Dacă n = 1 atunci return<br />

2. % Reducerea la forma Hessenberg<br />

1. [A,Q] =HQr(A,Q,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 />

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

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

1. 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<br />

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

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

Saved successfully!

Ooh no, something went wrong!