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.4. ALGORITMUL QR 275<br />

rotunjire şi, în consecinţă, se obţine o matrice cu un spectru mai robust dar, po<strong>si</strong>bil,<br />

deja afectat de erori de nivel inadmi<strong>si</strong>bil.<br />

Ţinând seama de aceste observaţii, algoritmii de precondiţionare utilizaţi în<br />

practică au drept obiectiv concret o echilibrare cât mai bună a normelor euclidiene<br />

ale liniilor şi coloanelor cu acelaşi indice prin utilizarea unor matrice de transformarediagonalecarepermitefectuareaunorcalculeexacteînformatulvirgulămobilă<br />

(FVM) al maşinii ţintă. Pentru aceastafie β baza de numeraţie a FVM utilizat 31 şi<br />

D β ⊂ D mulţimea matricelor diagonale de forma D = diag(β σ1 ,β σ2 ,...,β σn ), σ i ∈<br />

∈ Z, i = 1 : n. Întrucât calculul matricei D −1 AD implică numai operaţii de<br />

înmulţire şi împărţire, aceste calcule se efectuează exact 32 şi precondiţionarea matricei<br />

este efectiv utilă pentru îmbunătăţirea preciziei <strong>valorilor</strong> şi <strong>vectorilor</strong> <strong>proprii</strong><br />

calculaţi.<br />

Pentru prezentarea algoritmului de echilibrare con<strong>si</strong>derăm matricea A ∈ IR n×n<br />

şi scriem<br />

A = A D +A 0 , unde A D = diag(A), (4.163)<br />

i.e. A 0 este matricea elementelor extradiagonale ale lui A. Se constată imediat că<br />

pentru orice matrice D ∈ D avem<br />

D −1 AD = A D +D −1 A 0 D, (4.164)<br />

i.e. elementele diagonalenu sunt afectate de transformărilediagonalede asemănare.<br />

Prin urmare, pentru reducerea normei lui D −1 AD este suficient să acţionăm numai<br />

asupra matricei A 0 . Vom presupune în continuare că matricea A 0 nu are nici o linie<br />

şi nici o coloană nule 33 .<br />

Reducerea ‖D −1 A 0 D‖ F<br />

se face iterativ construind şirul A k , k = 0,1,2,...,<br />

printr-o relaţie recurentă de forma<br />

A k+1 = D −1<br />

k A kD k , (4.165)<br />

cu D k ∈ D β astfel calculat încât ‖A k+1 ‖ F să fie cât mai mică. Vom efectua această<br />

minimizare descompunând matricea D k într-un produs de matrice diagonale elementare<br />

D k = D k1 D k2···D kn , (4.166)<br />

cu D ki = diag(1,1,...,d ki ,...,1) cu d ki = β σ ki<br />

(pe poziţia diagonală (i,i)) şi<br />

maximizând scăderea de normă<br />

δ ki<br />

def<br />

= ‖A ki ‖ F 2 −‖A k,i+1 ‖ F 2 , (4.167)<br />

unde A ki = D k,i−1···D−1 −1<br />

k2 D−1 k1 A kD k1 D k2···D k,i−1 , i = 0 : n − 1, A k0 = A k ,<br />

A kn = A k+1 . Pentru aceasta fie, pentru început, d ki = ν o variabilă reală şi<br />

31 Uzual β = 2, dar se întâlnesc şi <strong>si</strong>tuaţii cu β = 10 sau β = 16.<br />

32 Dacă α = (m,e) este reprezentarea în FVM a numărului real α, unde m este mantisa iar e<br />

exponentul, atunci α ∗ β σ = (m,e + σ) şi α/β σ = (m,e − σ) deci este afectat numai exponentul<br />

care, fiind întreg, se calculează exact. Dacă se utilizează un limbaj de programare de nivel înalt<br />

este po<strong>si</strong>bil să fie necesar ca porţiunile de cod pentru efectuarea acestor operaţii să fie scrise în<br />

limbaj de asamblare.<br />

33 În caz contrar se foloseşte algoritmul de permutare Π şi precondiţionarea se aplică unei<br />

matrice de ordin redus.

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

Saved successfully!

Ooh no, something went wrong!