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.

5.3. ALGORITMUL DVS 407<br />

5. Dupăîncheiereaprocesuluidediagonalizare,elementelediagonalealematricei<br />

limită J ← J ∞ , i.e. componentele vectorului f, sunt, în general, complexe. Pentru<br />

a obţine o matrice diagonală reală cu elementele diagonale nenegative se aplică o<br />

transformare de echivalenţă unitară definită de<br />

J ← ˜DJ sau J ← JD, (5.100)<br />

unde ˜D = diag(D,I m−n ) cu 21<br />

⎧<br />

⎨<br />

D = diag(d 1 ,d 2 ,...,d n ), d i =<br />

⎩<br />

1, dacă f i = 0<br />

¯f i<br />

|f i | , dacă f i ≠ 0.<br />

(5.101)<br />

După această transformare elementele diagonale ale matricei J, i.e. elementele<br />

vectorului f sunt valorile <strong>si</strong>ngulare ale matricei iniţiale.<br />

6. Prin definiţie, în DVS, valorile <strong>si</strong>ngulare apar ordonate descrescător. De<br />

aceea, în finalul algoritmului DVS se realizează ordonarea elementelor diagonale<br />

utilizând o secvenţă de permutări elementare bilaterale (i.e. diagonale), definită de<br />

matricele de permutare U P = diag(P,I m−n ), V P = P şi un algoritm de ordonare<br />

a listelor. Având în vedere faptul că ordonarea are o pondere puţin semnificativă<br />

în economia algoritmului DVS, vom utiliza un algoritm popular de sortare, anume<br />

algoritmul bubblesort, şi, din aceleaşi motive de concizie a formulării algoritmului<br />

DVS, vom prezenta un algoritm separat de ordonare.<br />

Algoritmul 5.4 (DVS ORD – Ordonarea <strong>valorilor</strong> <strong>si</strong>ngulare)<br />

(Date matricea diagonală J, prin vectorul f ∈ IR n al elementelor diagonale,<br />

şi matricele unitare U ∈ IC m×m şi V ∈ IC n×n , algoritmul realizează<br />

ordonarea în sens descrescător a elementelor vectorului f, folo<strong>si</strong>nd algoritmul<br />

de sortare bubblesort. Opţional, se actualizează matricele<br />

unitare de transformare U şi/sau V, prin permutarea coprespunzătoare<br />

a coloanelor acestora. Opţiunea se exprimă cu ajutorul variabilelor logice<br />

opt 1 şi opt 2 care pot lua valorile ’da’ sau ’nu’. Dacă nu se doreşte<br />

actualizarea, matricele U şi/sau V se returnează nemodificate.)<br />

1. ord = ′ nu ′<br />

2. i = 1<br />

3. C^at timp ord = ′ nu ′ şi i < n<br />

1. ord = ′ da ′<br />

2. Pentru j = n−1 : −1 : i<br />

1. Dacă f j < f j+1 atunci<br />

1. f j+1 ↔ f j<br />

21 În cazul real, matricea diagonală J ∞ este reală, dar poate avea elemente diagonale negative.<br />

Evident, în această <strong>si</strong>tuaţie utilizăm transformarea de echivalenţă ortogonală definită de matricea<br />

D având<br />

{ 1, dacă fi ≥ 0,<br />

d i =<br />

−1, dacă f i < 0.

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

Saved successfully!

Ooh no, something went wrong!