Sunteți pe pagina 1din 47

Calcul Numeric

Cursul 6

2011-2012



Anca Ignat
1

Algoritmul lui Givens
Fie A o matrice real ptratic de dimensiune n. Pp. c
avem:
A QR =
unde Q este o matrice ortogonal iar R este o matrice superior
triunghiular.

= = = =
T T T
Ax b QRx b Q QRx Q b Rx Q b


n cazul algoritmului Givens, pentru 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 :
2
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
| |
|
|
|
|
|
|
|
|
|
|
\ .







(



3
n rest
1 pentru = , ,
pentru = , = , =
= pentru = , =
pentru = , =
0
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:

( ) ( ) ( ) ( )
T T
pq pq pq pq n
R R R R I u u u u = =
4
Calculul matricii:
= ( )
pq
B R A u ,
B se obine din A modificnd doar liniile p i q.
Fie

T
i i
A e A = , - linia i a matricii A

T
i i
B e B = - linia i a matricii B.

Liniile matr B:
5

= =1, , , ,
=
=
, 1, ,
, 1, ,
n rest
i i
p p q
q p q
pj pj qj
qj pj qj
ij ij
B A i n i p i q
B cA sA
B sA cA
b c a s a j n
b s a c a j n
b a
= =
+
+
= + =
= + =
=


,






Calculul matricii :
= ( )
T
pq
D A R u ,
D se obine din A modificnd doar coloanele p i q.

j
Ae ,
j
De - coloana j a matricii A i respectiv D.
6
Coloanele matricii D:

= 1, , , ,
=
=
, 1, ,
, 1, ,
n rest
j j
p p q
q p q
ip ip iq
iq ip iq
ij ij
D A j n j p j q
De cAe sAe
De sAe cAe
d c a s a i n
d s a c a i n
d a
= = =
+
+
= + =
= + =
=


,






Algoritmul lui Givens 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.

7
Pasul 1

Intrare: matricea A, vectorul b
Ieire: matricea
(1)
A (cu prima col. n form superior
triunghiular), b
(1)


Se efectueaz urmatoarele operaii de nmulire cu matrici
de rotaie:
(1)
1 1 13 13 12 12
(1)
1 1 13 13 12 12
( ) ( ) ( )
( ) ( ) ( )
n n
n n
R R R A A
R R R b b
u u u
u u u
=
=





Unghiurile
1i
u (constantele
1 1
i
i i
c s ) se aleg astfel ca
8
elementul de pe pozitia (i,1) din matricea rezultat s devin 0.

Pasul r

Intrare: matricea A
(r-1)
(are primele (r-1) coloane n form
superior triunghiular), b
(r-1)

Ieire: matricea A
(r)
(cu primele r coloane n form superior
triunghiular), b
(r)


La acest pas matricea A
(r-1)
i vectorul b
(r-1)
se transform
astfel:
9
( 1) ( )
1 1
( 1) ( )
1 1
( ) ( ) ( )
( ) ( ) ( )
r r
r n r n r i r i r r r r
r r
r n r n r i r i r r r r
R R R A A
R R R b b
u u u
u u u

+ +

+ +
=
=








unde elementele =
r i
c c

i =
r i
s s

din matricile de rotaie se
aleg astfel ca dup nmulirea cu ( ) , = 1, ,
r i r i
R i r n u +


elementul (i,r) s devin 0.
Considerm operaia = ( )
r i r i
B R A u

, unde
r i
u

se alege astfel
ca 0
i r
b = :
10

,
, 1, ,
n rest)
( )
rj rj ij
ij rj ij
kl kl
ir rr ir
b c a s a
b s a c a j n
b a
j r b s a c a
= +
= + =
=
= = +




(



Cea mai simpl alegere pentru c i s astfel ca s obinem b
ir
=0
este:

2 2
2 2
= = ,
1
ales astfel ca 1
r r i r
r r i r
c a s a
c s
a a
o o
o o + = =
+


,


11
2 2 2 2
= =
i r r r
r r i r r r i r
a a
c s
a a a a + +

,

2 2
= 0 0 1 , 0
( ( ) )
rr ir rr ir
ir n
a a a a c s
R I u
+ = = = =
=

Deci elementul de pe poziia (i,r) este deja nul. Nu avem ce
schimba n matricea A.
Operaia = ( )
r i r i
B R A u

, nu afecteaz forma superior
triunghiular a primelor (r-1) coloane. n matricea B aceste
coloane vor continua s fie n form superior triunghiular.

12
, , 1, , 1
deoarece 0
rj rj ij ij rj ij
rj ij
b c a s a b s a c a j r
a a
= + = + =
= =
= 0 = 0



nmulirea = ( )
r i r i
B R A u

nu schimb dect liniile r i i ale
matr. B, n concluzie, operaia = ( )
r i r i
B R A u

nu schimb
elementele nule deja obinute, ci doar face ca elem. de pe poz.
(i,r) s devin 0.
Algoritmul lui Givens poate fi descris astfel:

1 1 1 1 1 1 12 12
_
1 1 1 1 1 1 12 12
( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( )
n n n n rn rn r r r r n n
T
n n n n rn rn r r r r n n
R R R R R A R
R R R R R b b Q b
u u u u u
u u u u u
+ +
+ +
=
= =







13
Notm cu

Q urmtoarea matrice:

1 1 1 1 1 1 12 12
( ) ( ) ( ) ( ) ( )
n n n n rn rn r r r r n n
Q R R R R R u u u u u
+ +
=




Matricea

Q este matrice ortogonal ca produs de matrici


ortogonale. Descompunearea QR a matricii A este
urmtoarea:

( )
1
1 1 1 1 1 1 12 12
12 12 1 1 1 1 1 1
( )
( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( )
T T
T
T
n n n n rn rn r r r r n n
T T T T T
n n r r r r rn rn n n n n
Q A R Q Q A Q R QR
Q Q R R R R R
R R R R R
u u u u u
u u u u u

+ +
+ +
= = = =
= =
=







14


Pe scurt, algoritmul lui Givens este urmtorul:


;
for 1, , 1
for 1, ,
( )* ;
( )* ;
( )* ;
n
ri ri
ri ri
ri ri
Q I
r n
i r n
A R A
b R b
Q R Q
u
u
u
=
=
= +








15


2 2
;
for 1, , 1
for 1, ,
construc ia matricii ( ) constantele i
;
if (
n
ri ri
rr ir
Q I
r n
i r n
R c s
a a
u
o
o
=
=
= +

- +
-




/ /
=
) { 1; 0;} / / ( )
else{ / ; / ; }
( )*
for 1, ,
;
ri ri
rr ir
ri ri
rj rj ij
c s R I
c a s a
A R A
j r n
a c a s a
a
c u
o o
u
s = = =
= =
=
- = +
= - + -



/ /



;
vechi
ij rj ij
s a c a

= - + -




16

0;
( ) *
;
;
( ) *
ir rr
ri ri
r r i
vechi
i r i
ri ri
a a
b R b
b c b s b
b s b c b
Q R Q
o
u
u
- = =
=
- = - + -
- = - + -
=
-
;
/ /


/ /



for 1, ,
;
;
rj rj ij
vechi
ij rj ij
j n
q c q s q
q s q c q
=

= - + -

= - + -








17
La sfritul acestui algoritm, n matricea A vom avea matricea
superior triunghiular R, n vectorul b vom avea

init
Qb (
init
b -
vectorul termenilor liberi iniial), iar matricea

Q va conine
matricea
T
Q din factorizerea QR a matricii A.
Numrnd operaiile efectuate (exceptnd calculul matricii

Q) obinem:


( 1)
2
n n
radicali,

3 2
( 1)(4 7) 2
( )
6 3
n n n
n O n
+
= + adunri/scderi

3 2
2 ( 1)(2 5) 4
( )
3 3
n n n
n O n
+
= + nmuliri/mpriri.
18
Algoritmul lui Householder

Matrice de reflexie -
n n
P

e de forma:

2
2
=1
= 2 , , || || = | | = 1
n
T n
n j
j
P I vv v v v e



2
1 1 2 1
1
2
2
2 1 2 2
1 2
2
1 2
= ( , , , ) =
n
T n
n
n
n n n
v v v v v
v
v
v v v v v
vv v v v
v
v v v v v
| |
| |
|
|
|
|
|
|
|
|
|
\ .
\ .




.

19
Matricile de reflexie sunt :
simetrice - =
T
P P i

ortogonale -
2 T T
n
PP P P P I = = = .


= ( 2 ) = 2( ) = 2( ) = 2 =
T T T T T T T T T
n n n n
P I vv I vv I v v I vv P


2
2
2
2
= ( 2 )( 2 ) = 2 2 4( )( ) =
4 4 ( ) = 4 4 || || =
4 4 = (|| || = 1)
T T T T T T
n n n
T T T T T
n n
T T
n n
P I vv I vv I vv vv vv vv
I vv v v v v I vv v v v
I vv vv I v
+
= + +
= +


20
Dac lum n consideraie cazul:

1 1 0 1 1 0
= 2, = , = 2 (1
0 0 1 0 0 1
n v P

| | | | | | | |

| | | |
\ . \ . \ . \ .
0) =

i
2
, x y Px e = :

1 1 1 1
2 2 2 2
1 0
= , = =
0 1
x y x x
x y
x y x x

| | | | | | | |
| |
=
| | | |
|
\ .
\ . \ . \ . \ .



Vectorul y=Px este reflectatul vectorului x n raport cu axa
Ox
2
.
21
Algoritmul ce folosete matricile de reflexie pentru a obine
o descompunere QR pentru o matrice
n n
A

e a fost descris
de Alston S. Householder n articolul "Unitary
triangularization of a nonsymmetric matrix" aprut n Journal
of the Assoc. of Computing Machinery 5 (1958), 339-342.
Transformarea matricii A ntr-una superior triunghiular se
face n (n-1) pai, la fiecare pas folosindu-se o matrice de
reflexie.
22
Pas 1:
(1)
1
= A P A (matricea P
1
se alege astfel nct col. 1
s fie transformat n form superior triunghiular)

Pas 2:
( 2) (1)
2 2 1
= ( ) A P A P P A = (P
2
transform col. 2 n
form sup. triunghiular, fr s schimbe col. 1)

Pas r:
( ) ( 1)
1 1
( )
r r
r r r
A P A P P P A

= = (se transform col r


n form sup. triunghiular fr s schimbe primele
(r-1) coloane)

Descompunerea QR construit cu algoritmul Householder
este urmtoarea:

23
1 2 1
= =
n r
P P P P A QA R




unde

1 2 1
=
n r
Q P P P P

este matrice ortogonal ca produs de matrici ortogonale.



= = = =
T T T
QA R Q QA Q R A Q R QR



1 2 1 1 2 1
= = ( ) =
T T
n r r n
Q Q P P P P P P P P




24
Pasul r
La intrarea n pasul r matricea A are forma:
11 12 1 1
22 2 2
1 1
0
0 0
= 0 0
0 0
0 0
r n
r n
rr rn
r r r n
ir in
nr nn
a a a a
a a a
a a
A a a
a a
a a
+ +
| |
|
|
|
|
|
|
|
|
|
|
|
|
\ .









25
Pasul r const n:

2
:=
= 2 ( ) , , || || = 1
r
r r T r n r
r n
A P A
P I v v v R v e


unde vectorul v
r
se alege astfel ca matricea A s aib i
coloana r n form superior triunghiular:
26
11 12 1 1
22 2 2
1
0
0 0
= 0 0 0
0 0 0
0 0 0
r n
r n
rr rn
r n
in
nn
a a a a
a a a
a a
A a
a
a
+
| |
|
|
|
|
|
|
|
|
|
|
|
|
\ .











27
Calculul matricii P
r

Pentru simplitate vom nota = , =
r
r
P P v v.
1
1 1
2
2 2
1
1 1
1
= ( ) =
0
0
0
r
r r
r
r r
r r
r r r r
rr
rr
r r r
r r
ir
nr
a
a a
a
a a
a
a a
a
a k
Ae PA e Ae
a
a
a


+
| | =
| |
|
|
=
|
|
|
|
|
|
=
|
|
|
|
=
| =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\ .
\ .





28
Aplicnd proprietatea matricilor ortogonale :

n n
Q

e ,
n
x e ,
2 2
|| || Qx x = ,, ,,

pentru matricea Q=P i vectorul x=Ae
r
avem:

2 2 2 2 2
2 1 2 1
2 2 2 2 2 2 2 2
1 2 1 1
|| || = =
|| || =
r r r r r
r r r r r rr r r ir nr
PAe a a a k
Ae a a a a a a a

+
+ + + +
+ + + + + + + + +




Din relaia de mai sus rezult:
2 2 2 2 2 2
1
=
= = = =
n
rr r r ir nr ir
i r
k a a a a a k o o
+
+ + + + +


29
Determinarea vectorului v ce definete matricea P

( ) = ( 2 )( ) = 2( )( ) =
2 ( ( )) = (2 ) =
T T
r n r r r
T
r r r r
PA e I vv Ae Ae vv Ae
Ae v v Ae Ae v Ae u o

=


unde cu o i u am notat:

30
( )
1 1
2 2
1 1 2 2
:= ( ) = ( ), = ( , )
n n
r
r
T
r r
ir i
nr n
r r ir i nr n
a v
a v
v Ae Ae v
a v
a v
a v a v a v a v
o
| | | |
| |
| |
| |
| |
| |
| |
| |
| |
\ . \ .
+ + + + +




=

=


31
1
1
2
2
1
1
1
1
0
0
0
:= (2 ) = ( ) = =
0
0
0
r
r
r
r
r r
r r
rr
rr
r r
r r
r r
ir
ir
nr
nr
a
a
a
a
a
a
a k
a
k
u v Ae PA e
a
a
a
a
a
a
o


+
+
| |
| | | |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |

|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| |
|
\ . \ .
\ .



32
Cu aceste notaii matricea P devine:

2
2
1 1 1 1
= 2( ) ( ) = ( )
2 2 2
: 2
T T T
n n n
P I u u I uu I uu
o o o |
| o

=
=


Pentru a cunoate matricea P trebuie s mai determinm
constanta |. Din condiia:

2 2 2 2
2 2 2 2
2
1 1
|| || = 1 || || = 1 || || 1 2 =|| ||
2 4
v u u u |
o o
=



avem:
33
2 2 2 2 2 2
2 2 1
1
2 2 2 2 2
1
0
0
0
|| || =|| || = ( ) =
2 =
2 = 2( )
rr
rr r r ir nr
r r
ir
nr
rr r r ir nr rr
rr rr
a k
u a k a a a
a
a
a
a a a a ka k
ka ka o o o
+
+
+
| |
|
|
|
|
|
|

+ + + + + |
|
|
|
|
|
|
|
\ .
= + + + + + +
= +


34
de unde obinem:
=
rr
ka | o

Vom alege semnul constantei k astfel nct s fie ct mai
mare posibil deoarce constanta apare n operaia de
mprire. Avem:

" " = ( 0)
semn = semn
rr
rr
mare ka
k a
| | o o o > >





Ce nseamn =0 ?
35
2 2
2 2
1
1
= || || = 0 || || = 0 = 0
2
= , 0, , = 0, , = 0
rr r r ir nr
u u u
a k a a a
|
+

=



Cum a
rr
=k i semn k = -semn a
rr
obinem:

= 0, = , ,
ir
a i r n
adic avem coloana r deja n form superior triunghiular, se
poate trece la pasul urmtor. n acest caz matricea A este
singular.

Ne intereseaz cum se efectueaz operaia A=P
r
A fr a face
nmulire matricial. Vom pune n eviden schimbrile n
raport cu coloanele.
36


1
( ) = noua col. a matr. = ( )( ) =
1 1
( )( ) ( ( )) =
T
j n j
T T
j j j j
j
j
PA e j A I uu Ae
Ae uu Ae Ae u u Ae
Ae u
|
| |

= =
=





unde
37
1
2
1
1
=1 =
0
0
:= ( ) = ( , ) =
( ) = =
( = 0, = 1, , 1 , = , = 1, ,
n
j
j
T
j j rj rr
r r
r j
nr
nj
n n
rj rr ij ir nj nr i ij i ij
i i r
i r rr i ir
a
a
u Ae a a k
a
a
a
a
a a k a a a a u a u a
u i r u a k u a i r

+
+
| |
| |
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
\ .
\ .
= + + + +
= +

) n
38
Noua coloan j se obine din vechea coloan j din care
scdem vectorul u nmulit cu constanta
j
. Ne intereseaz ca
primelor (r-1) coloane s nu li se schimbe forma superior
triunghiular deja obinut.

Pentru j=1,,(r-1) avem:
39
1
2
1
1
1
0
0
0
:= ( ) = ( = 0 , ) =
= 0
= 0
0 0 0( ) 0 0 = 0
n
j
j
jj
T
j j j j
rr
r r
rj
nr
nj
j jj rr ir nr
a
a
a
u Ae a
a k
a
a
a
a
a a a k a a

+
+
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
\ .
|
\ .
= + + + + + + + +

40
Din faptul c = 0 , = 1, , 1
j
j r rezult c primele (r-1)
coloane ale matricii A nu se schimb cnd facem operaia
A=P
r
A, rmn n form superior triunghiular.
Algoritmul de trecere de la matricea A la matricea P
r
A este
urmtorul:

1 2 1
pentru = 1, , 1
( ) = ( , , , , , 0, , 0) pentru =
pentru = 1, ,
j
T
r j r r r r
j
j
Ae j r
P A e a a a k j r
Ae u j r n





41
cu
=
= ( , ) =
n
n
j j i ij
i r
Ae u u a



= 0, = 1, , 1 , = , = , = 1, ,
i r rr i ir
u i r u a k u a i r n +


Operaia de transformare a vectorului termenilor liberi
b:=P
r
b:
1 1 1
= ( ( )) = ( ) = ( ) =
T T T
r n
P b I uu b b uu b b u u b b u

| | | |

=
= = ( , ) =
n
n
T
i i
i r
u b b u u b


42
Algoritmul lui Householder



;
for 1, , 1
calculeaz matricea (constanta i vectorul )
* ;
* ;
* ;
n
r
r
r
r
Q I
r n
P u
A P A
b P b
Q P Q
|
=
=









La sfritul acestui algoritm, n matricea A vom avea matricea
superior triunghiular R, n vectorul b vom avea
init T
Q b ,
init
b
este vectorul iniial iniial al termenilor liberi, iar matricea

Q
va conine matricea
T
Q din factorizarea QR a matricii A.
43
Algoritmul QR - Householder detaliat


2
=
;
for 1, , 1
construc ia matricii constanta i vectorul
= ;
if ( ) break ; / / 1 ( s
n
r
n
ir
i r
r n
Q I
r n
P u
a
r r P I A
|
o
o c
=
=

-
- s = + =



/ /

ingular )
= ;
if ( 0 ) ;
;
; , 1, , ;
rr
rr
r rr i ir
k
a k k
k a
u a k u a i r n
o
| o
-
- > =
- =
- = = = +




44

=
*
transformarea coloanelor 1, ,
for 1, ,
= ( / ) ( , ) / = ( ) / ;
for , ,
r
n
j j i ij
i r
A P A
j r n
j r n
Ae u u a
i r n
| | |
=
= +
- = +
- =
- =

/ /
/ /




=
;
transformarea coloanei a matricii
; 1, , ;
*
= ( / ) ( , ) / = (
ij ij i
rr ir
r
n
i
i r
a a u
r A
a k a i r n
b P b
b u u b

| |
= -
- = = = +
=
- =


/ /
0,
/ /
) / ;
for , , ;
i
i i i
i r n b b u
|
- = = -

45




=
*
for 1, ,
= ( , ) / = ( ) / ;
for , ,
;
r
n
j i ij
i r
i ij ij
Q P Q
j n
Qe u u q
i r n
q q u
| |

=
- =
-
- =
= -

/ /











46
Numrul de operaii efectuate:
A (adunri, scderi):

3 2
( 1)(2 1) ( 1)( 1)(2 3)
( 1) 2 ( 1) =
3 3
2
( )
3
n n n n n n
n n n
n O n
+ +
+ + =
+

=

M (nmuliri, mpriri ):

3 2
( 1)(2 1) 2
4( 1) 3 ( 1) = ( )
6 3
n n n
n n n n O n

+ + +
R (radicali ): (n-1)