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.

4.6. CALCULUL SUBSPAŢIILOR INVARIANTE 295<br />

6. Q(:,l−1:l) = Hrd(Q(:,l−1:l),V(1:2,i+j−1),b(i+j−1))<br />

12. s r+1,r = 0 % anularea efectivă a elementului neglijabil<br />

13. Return<br />

Comentarii. Sintaxa de apel naturală a algoritmului de mai sus este<br />

[S,Q] = Pr(S,Q,k,i,j,tol).<br />

Numărul de operaţii necesar depinde, evident, de tipul blocurilor permutate dar nu<br />

depinde de poziţia acestora. A<strong>si</strong>mptotic, în toate cazurile complexitatea algoritmului<br />

se încadrează totuşi în categoria O(n).<br />

✸<br />

Dispunând de procedura de mai sus, de permutare a două blocuri diagonale<br />

adiacente, algoritmul de ordonare a formei Schur reale este, în esenţă, identic cu cel<br />

de ordonare a formei Schur complexe. Pentru un plus de claritate, facem, şi aici,<br />

câteva precizări:<br />

–structura blocurilordiagonaleale matricei S în FSR va fi memorată învectorul<br />

strbl, i.e. strbl(k), k = 1:p, este ordinul blocului diagonal k al matricei S la momentul<br />

curent al procesării; structura iniţială este unul din parametrii de intrare;<br />

– pentru localizarea blocurilor diagonale ale matricei S vom utiliza vectorul lcbl<br />

care va conţine poziţiile elementelor 11 ale acestora, i.e. lcbl(k), k = 1 : p, este<br />

linia (şi coloana) elementului 11 al blocului diagonal k al matricei S de la momentul<br />

curent al procesării.<br />

Rezultă următorul algoritm.<br />

Algoritmul 4.18 (FSR ORD – Ordonarea formei Schur reale)<br />

(Date o matrice S ∈ IR n×n în formă Schur reală (4.199), matricea de<br />

transformare iniţială Q ∈ IR n×n , numărul p al blocurilor diagonale,<br />

vectorul strbl ∈ IN p al ordinelor blocurilor diagonale şi permutarea<br />

π = {i 1 ,i 2 ,...,i p }, algoritmul suprascrie matricea S cu matricea ortogonal<br />

asemenea S ′ = ˜Q T S ˜Q având s ′ i k i k<br />

= s kk şi actualizează, în mod<br />

corespunzător, matricea de transformare Q.)<br />

1. Pentru k = 1 : (p−1)<br />

1. mută =’nu’<br />

2. l = k<br />

3. Pentru j = (k +1) : n<br />

1. Dacă i j < i l atunci<br />

1. l = j<br />

2. mută =’da’<br />

4. Dacă mută =’da’ atunci<br />

1. Pentru j = (l−1) : −1 : k<br />

1. lcbl(1) = 1<br />

2. Pentru i = 2 : j<br />

1. lcbl(i) = lcbl(i−1)+strbl(i−1)

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

Saved successfully!

Ooh no, something went wrong!