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 405<br />

suprascrierea(internăa)lui z realizându-secuapelul[z,c,s] = Gcm(z). Particularizarea<br />

pentru date reale este propusă cititorului, aici mărginindu-ne să introducem<br />

numai <strong>si</strong>ntaxa de utilizare<br />

[y,c,s] = Grm(z).<br />

Rezultă următorul algoritm.<br />

Algoritmul 5.3 (TZDc – Tratarea zerourilor diagonale) (Date<br />

matricea superior bidiagonală J ∈ IC m×n cu m ≥ n, prin vectorii f şi g<br />

al elementelor diagonale, respectiv supradiagonale, şi matricea unitară<br />

U ∈ IC m×m , precum şi întregul i ∈ 1 : n − 1 ce indică poziţia ultimului<br />

element diagonal nul, algoritmul calculează rotaţiile (complexe) P i,j ,<br />

j = i+1 : n, astfel încât matricea J ← Pi,n H ...PH i,i+1J rămâne bidiagonală,<br />

iar elementul g i devine nul. Calculele principale se efectuează<br />

în locaţiile de memorie ale elementelor <strong>vectorilor</strong> f şi g. Opţional, se<br />

actualizează matricea unitară de transformare U. Opţiunea se exprimă<br />

cu ajutorul variabilei logice opt, care poate lua valorile ’da’ sau ’nu’.<br />

Dacănusedoreşteactualizarea,matriceaU sereturneazănemodificată.)<br />

1. τ = g i<br />

2. g i = 0<br />

3. Pentru j = i+1 : n<br />

1. z = [τ f j ] T<br />

2. [z,c,s] = Gcm(z)<br />

3. f j = z 2<br />

4. Dacă j < n atunci<br />

1. τ = −sg j<br />

2. g j ← cg j<br />

5. Dacă opt = ′ da ′ atunci<br />

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

1. α = u li c−u lj¯s<br />

2. u lj ← u li s+u lj c<br />

3. u li = α.<br />

Comentarii. În algoritmul de mai sus variabila scalară τ a fost utilizată pentru<br />

memorarea elementului alterant temporar al structurii bidiagonale, iar variabila<br />

auxiliară scalară α pentru calculul produsului U ← UP ij . Algoritmul nu verifică<br />

faptul că f i = 0 sau că nu există j > i astfel ca f j = 0. Este clar faptul că dacă nu<br />

sunt îndeplinite condiţiile din preambulul algoritmului, acesta nu realizează scopul<br />

pentru care a fost elaborat.<br />

Sintaxa de apel a algoritmului este, evident,<br />

[f,g,U ] = TZDc(f,g,i,U,opt).<br />

Complexitatea algoritmului este O(n−i) fără acumularea transformărilor şi O(mn)<br />

cu acumulareaacestora. Se poate apreciacăalgoritmulare, îngeneral, o contribuţie<br />

modestă la complexitatea algoritmului DVS.

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

Saved successfully!

Ooh no, something went wrong!