Sunteți pe pagina 1din 5

1

Tema nr. 3
Se dau n dimensiunea sistemului, c - precizia calculelor, matricea ptratic
n n
A

e .
1. S se calculeze vectorul
n
be astfel:
1
, 1, ...,
n
i ij
j
b j a i n
=
= =


2. S se implementeze descompunerea QR a matricii A folosind varianta
matricial a algoritmului Givens.
3. S se rezolve sistemul liniar:
, Ax b =
folosind descompunerea QR din una din bibliotecile menionate n pagina
laboratorului (se obine soluia x
QR
) i descompunerea QR calculat la punctul 2.
(se obine soluia x
Givens
). Pentru n> 50, s se compare cele dou rezolvri din
punct de vedere al timpului de execuie (n acest caz matricile se vor genera
aleator).
4. S se calculeze i s se afieze urmtoarele erori (|| ||
2
este norma euclidian):
2
|| || ,
init init
Givens
A x b
2
|| || ,
init init
QR
A x b
2
2
|| ||
, unde , 1, ...,
|| ||
n Givens
i
x s
s s i i n
s

e = =
2
2
|| ||
.
|| ||
QR
x s
s


2
5. Folosind algoritmul QR Givens, varianta matricial, s se calculeze inversa
matrcii A (cnd este posibil),
1
Givens
A

. S se calculeze inversa folosind funcia


corespunztoare din biblioteca utilizat. S se calculeze i s se afieze :
1 1
1
|| ||
Givens bibl
A A


1
1
, max | | ; 1, 2, ...,
n
n n
ij
i
C C a j n

=

e = =
`
)



Rezolvarea sistemelor liniare folosind descompunerea QR
Fie A o matrice real ptratic de dimensiune n. Presupunem c pentru matricea A
avem o descompunere de forma:
A=Q*R
unde Q este matrice ortogonal (Q
T
Q = QQ
T
= I
n
) iar R este matrice superior
triunghiular. Avnd o asemenea descompunere pentru matricea A, rezolvarea
sistemului Ax=b se reduce la rezolvarea sistemului superior triunghiular Rx=Q
T
b.
Ax=b QRx = b Q
T
QRx =Q
T
b Rx=Q
T
b
Ax=b Rx=Q
T
b

Algoritmul lui Givens
Petru a aduce sistemul Ax=b la forma Rx = Q
T
b se folosesc matricile de rotaie. O
matrice de rotaie
, =1,
( ) = ( )
pq ij i j n
R r u are urmtoarea form:
3
1 0 0 0 0
0 1 0 0 0
0 0 0
( ) =
1
0 0 ) 0
0 0 0 0 1
pq
p q
c s p
R
s c q
u
| |
|
|
|
|
|
|
|
|
|
|
|
\ .







(



1 pentru = , si
pentru = , = sau =
= pentru = , =
pentru = , =
0 n rest
ij
i j i p i q
c i j i p i q
r s i p j q
s i q j p
= =








unde , {1, , } p q n e iar c i s sunt dou numere reale care satisfac relaia c
2
+s
2
=1.
Constantele c i s pot fi alese astfel nct = cos , = sin c s u u . Se arat uor,
folosind relaia c
2
+s
2
=1, c matricea ( )
pq
R u este ortogonal.
Algoritmul Givens de calcul al descompunerii QR se desfoar n (n-1) pai.
La pasul r se transform coloana r a matricii A n form superior triunghiular
fr a modifica primele ( 1) r coloane. La acest pas se obine coloana r a matricii
R. Calculul matricii R se poate face direct n matricea A (de fapt se transform
matricea A ntr-o matrice superior triunghiular). n acelai timp, se fac
transformrile necesare asupra vectorului termenilor liberi i se pot efectua
transformri pentru a calcula matricea Q
T
.

Pasul r (r=1,2,,n-1)

La acest pas, matricea A are primele (r-1) coloane n form superior triunghiular
i se folosesc matricile de rotaie pentru a transformarea coloanei r n form
superior triunghiular (fr a le modifica pe primele (r-1)). Pentru fiecare element
ce trebuie fcut 0 se folosete o matrice de rotaie convenabil aleas.
Pasul p const n urmtoarele calcule :

4
( , ) ( , 2) ( , 1)
( , ) ( , 2) ( , 1)
A R r n R r r R r r A
b R r n R r r R r r b
= + +
= + +



unde elementele c = c
i
i s = s
i
din R(r,i), i=r+1,,n se aleg astfel ca dup
nmulirea matricii A cu R(r,i), elementul a
ir
s devin 0. Acestea sunt :

2 2 2 2
,
ir rr
rr ir rr ir
a a
c s
a a a a
= =
+ +


Dac
2 2
0
rr ir
a a + = , atunci avem a
rr
= a
ir
= 0, deci elemetul pe care vrem s-l facem
0 (a
ir
) este deja nul. n acest caz putem lua c = 1 , s = 0 (matricea de rotaie la acest
pas este chiar matricea unitate I
n
) cu aceast alegere matricea A nu se schimb.


Algoritmul Givens matricial pentru factorizarea A=QR



n
q I = ;( matricea q va conine la final Q
T
)
for r = 1,, n-1
for i=r+1,,n
begin
*
2 2
rr ir
ro a a = + ;

* if ro < c then c = 1, s = 0 (sau next i)
else c = a
rr
/ ro , s = a
ir
/ ro;

* cu c i s se construiete matricea de rotaie R(r,i);

* A = R(r,i) A ;

* b = R(r,i) b ;

* ( , ) q R r i q = ;
end


5
La sfritul algoritmului de mai sus, matricea superior triunghiular R se gsete n
matricea A, iar transpusa matricii Q n matricea q .n vectorul b vom avea Q
T
b
init
.
Verificarea faptului c matricea iniial nu este singular, se face testnd dac toate
elementele de pe diagonala matricii R ( sau A) sunt nenule.
Calculul inversei unei matrici
Dac se cunoate o metod de rezolvare a sistemelor liniare (n cazul de fa se va
folosi varianta matricial a algoritmului Givens), coloanele matricii inverse se pot
calcula rezolvnd, pe rnd, n sisteme liniare.
Coloana j a matricii A
-1
se aproximeaz rezolvnd sistemul liniar:
, 1, 2, ..., , (0, ...,1, 0, ..., 0) (1 este pe pozitia in )
T
j j j
Ax e j n e j e = = =
n cazul cnd avem descompunerea QR a matricii A sistemele de mai sus devin:
, coloana a matricii linia a matricii
T T T
j j j
Ax e Rx Q e Q e j Q j Q = = = = .
Procedura de calcul a inversei este urmtoarea :
- se calculeaz descompunerea QR a matricii A , A=QR ;
- for j=1,,n
1. b= coloana j a matricii Q
T
(sau linia j a matricii Q) ;
2. se rezolv sistemul superior triunghiular Rx=b (cu metoda substituiei
inverse)
3. soluia obinut la 2. se memoreaz n coloana j a matricii
1
Givens
A


Procedura de mai sus, detaliaz n fapt rezolvarea ecuaiei matriciale :
, , matricea unitate.
n n
n n
AX I X I

= e =

S-ar putea să vă placă și