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

Comentarii. Semnalăm, în primul rând, faptul că vectorul ũ k ce defineşte reflectorul<br />

hermitic Ũk (din structurareflectorului U k ) este memorat înlocaţiile (k : m,k)<br />

ale matricei A. Pentru a fi po<strong>si</strong>bil acest lucru, în afara elementelor (k +1 : m,k),<br />

anulate la pasul curent k de către U k , este utilizată şi locaţia (k,k), ceea ce presupune<br />

salvarea prealabilă a elementului diagonal calculat a kk<br />

def<br />

= f k . Similar,<br />

vectorul ṽ k+1 definitoriu pentru reflectorul Ṽk+1 = I n−k − ṽk+1ṽk+1<br />

H , este memorat<br />

γ k+1<br />

def<br />

în locaţiile (k,k +1 : n) după ce, în prealabil, a fost salvat elementul a k,k+1 = g k .<br />

Pentru a face po<strong>si</strong>bil acest lucru fără modificarea procedurilor utilizate a fost introdus<br />

un vector de lucru c. De asemenea, pentru a nu introduce o nouă procedură<br />

de calcul a unui reflector care să anuleze componentele (2 : n) ale unui vector linie<br />

n-dimen<strong>si</strong>onal, s-a utilizat un vector de lucru v.<br />

Sintaxa de utilizare a algoritmului de mai sus este<br />

[f,g,U,V ] = JQc(A,opt 1 ,opt 2 ).<br />

În cazul datelor iniţiale reale, toate matricele de transformare sunt reale, i.e. ortogonale,<br />

iar algoritmul de mai sus se adapteazăprin <strong>si</strong>mpla substituire a procedurilor<br />

pentru date complexe cu cele pentru date reale (concret, se înlocuieşte <strong>si</strong>gla c din<br />

numele procedurilor cu <strong>si</strong>gla r). De aceeea ne mărginim să prezentăm pentru acest<br />

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

[f,g,U,V ] = JQr(A,opt 1 ,opt 2 ).<br />

Efortul de calcul a<strong>si</strong>mptotic implicat de execuţia variantei reale, fără acumularea<br />

transformărilor, este N op = 4mn 2 − 4 3 n3 flopi, iar în cazul complex, dacă avem<br />

în vedere echivalările operaţiilor cu numere complexe cu cele cu numere reale (v.<br />

cap. 4), de câteva ori mai mare. Tot în varianta reală, pentru calculul matricei de<br />

transformare U, sunt necesare N ′ op = 4m 2 n− 4 3 n3 flopi, respectiv, pentru calculul<br />

matricei de transformare V se execută N op ′′ = 4 3 n3 flopi suplimentari. De reţinut<br />

ordinea inversăde acumulareatransformărilorcare este mai economică, exploatând<br />

”umplerea” progre<strong>si</strong>vă a matricelor de transformare.<br />

✸<br />

Observaţia 5.4 În cazul în care m ≫ n este po<strong>si</strong>bilă o uşoară îmbunătăţire a<br />

eficienţei dacă înaintea aplicării algoritmului JQ are loc o prealabilă triangularizare<br />

unitară(ortogonală)amatriceiA. Concret, procedura,numită”R-bidiagonalizare”,<br />

este următoarea.<br />

[ ]<br />

RJQ 1. Se efectuează triangularizarea unitară Q H R1<br />

A = R = ,<br />

0<br />

cu R 1 o matrice n×n superior triunghiulară.<br />

2. [f,g,Ũ,V ] = JQ(R 1,opt 1 ,opt 2 )<br />

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

1. U = Qdiag(Ũ,I m−n).

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

Saved successfully!

Ooh no, something went wrong!