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.

482 CAPITOLUL 6. VALORI ŞI VECTORI PROPRII GENERALIZAŢI<br />

transformarea ortogonală de echivalenţă ce aduce perechea ( ˜H, ˜T) la forma Schur<br />

generalizată se pot construi procedând ca în demonstraţia propoziţiei 6.2. Concret,<br />

(vezi exerciţiul 6.9), ˜Z este reflectorul care a<strong>si</strong>gură (˜Zv)(2) = 0, iar apoi ˜Q este<br />

reflectorul care a<strong>si</strong>gură (˜Q T (˜T ˜Z(:,1))(2) = 0.<br />

Dacă blocul diagonal ce trebuie triangularizat se află pe liniile şi coloanele k şi<br />

k+1, atunci rezultatul dorit se obţine aplicând perechii (H,T), de ordinul n, transformarea<br />

ortogonală de echivalenţă definită de matricele Q = diag(I k−1 , ˜Q,I n−k−1 )<br />

şi diag(I k−1 , ˜Z,I n−k−1 ).<br />

În vedereaunei scrierimai concise a algoritmuluiQZ prezentămaici un algoritm<br />

preliminar care procesează perechea bloc-diagonală 2×2 aflată în poziţia (k,k+1).<br />

Algoritmul 6.8 (TRID2g -Triangularizarea unei perechi de blocuri<br />

diagonale 2×2) (Date o pereche (S,T) ∈ IR n×n ×IR n×n , cu S în formă<br />

cva<strong>si</strong>-superior triunghiulară şi T superior triunghiulară ne<strong>si</strong>ngulară şi<br />

întregul k ∈ 1:n−1, algoritmul testează dacă perechea de blocuri diagonale<br />

(S(k: k+1,k: k+1),T(k: k+1,k: k+1)) are valorile <strong>proprii</strong> generalizate<br />

reale şi, în caz afirmativ, calculează triangularizarea ortogonală<br />

a perechii bloc-diagonale vizate, rezultatul suprascriind perechea (S,T).<br />

De asemenea, algoritmul returnează elementele definitorii (u Q ,β Q ) şi<br />

(u Z ,β Z ) ale celor doi reflectori calculaţi. În caz contrar perechea (S,T)<br />

rămâne nemodificată şi, pentru identificarea acestei <strong>si</strong>tuaţii, se returnează<br />

β Z = 0.)<br />

1. β Z = 0<br />

2. α = t k,k t k+1,k+1 , β = s k,k t k+1,k+1 + s k+1,k+1 t k,k − s k+1,k t k,k+1 ,<br />

γ = s k,k s k+1,k+1 −s k,k+1 s k+1,k , ∆ = β 2 −4αγ<br />

3. Dacă ∆ ≥ 0 atunci<br />

1. λ 1 = (β +sgn(β) √ ∆)/2α<br />

[ ]<br />

λ1 t k+1,k+1 −s k+1,k+1<br />

2. v =<br />

s k+1,k<br />

3. [v,u Z ,β Z ] = Hr(v)<br />

4. S(1 : k+1,k:k+1) = Hrd(S(1 : k+1,k:k+1),u Z ,β Z )<br />

5. T(1 : k+1,k:k+1) = Hrd(T(1 : k+1,k:k+1),u Z ,β Z )<br />

6. [T(k:k+1,k),u Q ,β Q ] = Hr(T(k:k+1,k))<br />

7. S(k:k+1,k:n) = Hrs(u Q ,β Q ,S(k: k+1,k:n))<br />

8. S(k+1,k) = 0 % zeroul calculat se setează la un zero efectiv<br />

9. T(k:k+1,k+1:n) = Hrs(u Q ,β Q ,T(k: k+1,k+1:n))<br />

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

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

[S,T,u Q ,β Q ,u Z ,β Z ] = TRID2g(S,T,k),<br />

Cu acesteprecizărişi ţinând seamade aspectelecomune cu cazulcomplexputem<br />

scrie algoritmul QZ standard cu pas dublu, cu deplasare implicită, pentru calculul<br />

formei Schur reale generalizate.<br />

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

Saved successfully!

Ooh no, something went wrong!