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.

510 INDICAŢII, RĂSPUNSURI, SOLUŢII<br />

1. Pentru k = 1 : m<br />

1. s ← (k −1)r +1<br />

2. f ← kr<br />

3. A(s : f,s : f) ← A(s : f,s : f)−L(s : f,1 : s−1)·L T (1 : s−1,s : f)<br />

4. Utilizând CHOL, calculează factorizarea Cholesky<br />

A(s : f,s : f) = L(s : f,s : f)·L T (s : f,s : f)<br />

(blocul L(s : f,s : f) se memorează în triunghiul inferior al lui A(s : f,s : f))<br />

5. A(f+1 : n,s : f) ← A(f+1 : n,s : f)−L(f+1 : n,1 : s−1)·L T (1 : s−1,s : f)<br />

6. Rezolvă <strong>si</strong>stemul superior triunghiular ZL T (s : f,s : f) = L(f +1 : n,s : f)<br />

7. L(f +1 : n,s : f) ← Z<br />

În instrucţiunea 1.3 se utilizează SYRK, în 1.5 GEMM iar în 1.6 TRSM. Transpunerea nu se<br />

efectuează explicit, ci se pasează rutinelor BLAS.<br />

P2.35 T = AA T nu este deja factorizarea Cholesky deoarece elementele diagonale ale<br />

lui A nu sunt neapărat pozitive. Fie T = LL T factorizarea Cholesky. Este natural să<br />

încercăm să demonstrăm că L este inferior bidiagonală. Pentru orice k ∈ 1 : n−1:<br />

t kk = a 2 k,k−1 +a 2 kk = l 2 k,k−1 +l 2 kk<br />

t k+1,k = a k+1,k a kk = l k+1,k l kk .<br />

De asemenea, este natural să încercăm să demonstrăm că |l ij| = |a ij|; pentru prima relaţie<br />

de mai sus, semnele nu contează; pentru a doua, dacă a kk este negativ, luăm l kk = −a kk<br />

şi l k+1,k = −a k+1,k . Algoritmul va fi:<br />

1. Pentru k = 1 : n<br />

1. l kk ← |a kk |<br />

2. Dacă k < n atunci<br />

1. Dacă a kk < 0 atunci l k+1,k ← −a k+1,k<br />

altfel l k+1,k ← a k+1,k<br />

P2.36 Algoritmul CHOL pentru matrice bandă de lăţime r este<br />

1. Pentru k = 1 : n<br />

1. α ← a kk − ∑ k−1<br />

j=max(1,k−r) l2 kj<br />

2. Dacă α ≤ 0 atunci<br />

1. Afişează(’A nu este pozitiv definită’)<br />

2. Stop<br />

3. a kk ← l kk = √ α<br />

4. Pentru i = k +1 : min(k +r,n)<br />

1. a ik ← l ik =<br />

(<br />

a ik − ∑ k−1<br />

j=max(1,i−r) lijl kj<br />

)<br />

/l kk<br />

P2.37 Se procedează analog cu algoritmul CHOL. Calculele decurg în ordine inversă,<br />

i.e. cu k = n : −1 : 1.<br />

P2.38 Calculând pe loc în A, un algoritm direct inspirat de CHOL este<br />

1. Pentru k = 1 : n<br />

1. a kk ← d k = a kk − ∑ k−1<br />

j=1 l2 kjd j<br />

2. Pentru i = k +1 (: n<br />

1. a ik ← l ik = a ik − ∑ k−1<br />

lijl j=1 kjd j<br />

)/d k

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

Saved successfully!

Ooh no, something went wrong!