Sunteți pe pagina 1din 30

Calcul Numeric

Cursul 6
2015
Anca Ignat

Algoritmul lui Householder


Matrice de reflexie - P nn de forma:

P = I n 2vv T , v n , || v ||2 =

2
|
v
|
j =1
j =1

v12 v1v2 v1vn


v1


2
v2
v2v1 v2 v2vn

(v1 , v2 , , vn ) =
vv =


2
v v v v v
vn
n .
n 1 n 2

Matricile de reflexie sunt :


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

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


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

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

, y Px

0
0 1
0
0 1

x1
x= ,
x2

y1 1 0 x1 x1
y= =

y
x

x
0
1
2 2
2

Vectorul y=Px este reflectatul vectorului x n raport cu axa Ox2.


Algoritmul ce folosete matricile de reflexie pentru a obine o
n n
A

descompunere QR pentru o matrice


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.


Pas 1: A(1) = P1 A (matricea P1 se alege astfel nct col. 1
s fie transformat n form superior triunghiular)
Pas 2: A(2) = P2 A(1) P2 ( P1 A) (P2 transform col. 2 n
form sup. triunghiular, fr s schimbe col. 1)
Pas r: A( r ) Pr A( r 1) Pr ( Pr 1 P1 A) (se transform col r
n form sup. triunghiular fr s schimbe primele
(r-1) coloane)

Descompunerea QR construit cu algoritmul Householder este


urmtoarea:
=R
Pn1 Pr P2 P1 A = QA
unde
Q = Pn1 Pr P2 P1

este matrice ortogonal ca produs de matrici ortogonale.


Q
=R
QA

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

Q = Q T = ( Pn1 Pr P2 P1 )T = P1 P2 Pr Pn1
5

Pasul r
La intrarea n pasul r matricea A are forma:
a11 a12 a1r a1n

a
0
22
2r
2n

a
0
0
rr
rn

A = 00ar 1r ar 1n

00a a
ir
in

00a a
nr
nn

Pasul r const n:

A := Pr A
Pr = I n 2v r (v r )T , v r R n , || v r ||2 = 1
unde vectorul v r se alege astfel ca matricea A s aib i coloana r
n form superior triunghiular:

a11 a12 a1r a1n

a
0

22
2r
2n

00arr arn
A = 000ar 1n

000a
in

000a
nn

Calculul matricii Pr
Pentru simplitate vom nota Pr=P , vr=v.
a1r
a1r a1r

a
a
2r
2r
2r

a
a
r 1 r
r 1 r
r 1 r
a
a k

rr
rr
( PA)er Aer =
Aer =

a
r 1 r
0

air
0

nr

Aplicnd proprietatea matricilor ortogonale :

Q nn , x n , Qx ||2 x ||2
pentru matricea Q=P i vectorul x=Aer avem:
|| PAer ||22 = a12r a22r ar21r k 2 =
|| Aer ||2 = a12r a22r ar21r arr2 ar21r air2 anr2

Din relaia de mai sus rezult:

k = = a a
2

2
rr

2
r 1 r

a a = air2 k =
2
ir

2
nr

i =r

Determinarea vectorului v ce definete matricea P:


10

( PA)er = ( I n 2vv T )( Aer ) = Aer 2(vv T )( Aer ) =


Aer 2v (v T ( Aer )) = Aer (2 )v = Aer u
unde cu i u am notat:

11

:= v T ( Aer ) = ( Aer ), v

a1r v1

a2 r v 2

= ( , )n
air vi


anr vn

a1r v1 a2 r v2 air vi anr vn

12

a1r

a1r 0

0
a
2r

a2 r


a r 1 r

a r 1 r 0
arr
k arr k

u := (2 )v = Aer ( PA)er =

=
ar 1 r
0 ar 1 r


air

0 air

a
a
0

nr

nr

13

Cu aceste notaii matricea P devine:

1
1
1
1 T
T
T
P = I n 2( )u( )u = I n ( 2 )uu I n uu
2
2
2

: 2 2
Pentru a cunoate matricea P trebuie s mai determinm
constanta . Din condiia:
1
1
2
|| v || = 1||
u ||2 = 1 2 || u ||22 12 =|| u ||22
2
4
2
2

14

arr k 2
2
|| u ||2 =||
||2 = (arr k )2 ar21r air2 anr2 =
ar 1 r

air

nr

arr2 ar21r air2 anr2 2karr k 2 =


2karr = 2( karr )
15

de unde obinem:

= karr

Vom alege semnul constantei k astfel nct s fie ct mai mare


posibil deoarce constanta apare n operaia de mprire. Avem:

"mare" = karr ( 0)
semnk = semnarr

16

Ce nseamn =0 ?
1
= || u ||22 = 0|| u ||22 = 0 u= 0
2
arr = k , ar 1r 0,,air = 0,,anr = 0
Cum arr=k i semn k = -semn arr obinem:
air = 0,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=PrA fr a face
nmulire matricial. Vom pune n eviden schimbrile n raport
cu coloanele.
17

( PA)e j = nouacol. jamatr. A = ( I n


Ae j

( uu )( Ae j ) Ae j
T

j
Ae j u

18

uuT )( Ae j ) =

u( uT ( Ae j )) =

a1 j 0

a
2j 0

T
j := u ( Ae j ) = ( arj , arr k )n =

a
a

r
1
r
r 1 j

a anr

nj
n

i =1

i =r

arj (arr k ) aij air anj anr =ui aij = ui aij


( ui = 0, i = 1, , r 1ur arr k ,ui = air , i = r 1, , n)
19

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:

20

a1 j

a
2j

a jj

) =
j := uT ( Ae j ) = ( a j 1 j = 0 ,
arr k n

ar 1 r
arj = 0

anr

anj = 0

a1 j 0 a jj 0 0(arr k ) 0air 0anr = 0


21

Din faptul c j 0, j 1,..., r 1 rezult c primele (r-1) coloane


ale matricii A nu se schimb cnd facem operaia A=PrA, rmn
n form superior triunghiular.
Algoritmul de trecere de la matricea A la matricea PrA
urmtorul:

22

este


Ae j pentru j = 1, , r 1

( Pr A)e j = (a1r , a2 r , , ar 1r , k ,0, ,0)T pentru j = r

Ae j j upentru j = r 1, , n

j = ( Ae j , u) = ui aij
n

i =r

ui = 0, i = 1, , r 1 , ur = arr k , ui = air , i = r 1, , n

23

Operaia de transformare a vectorului termenilor liberi

b:=Prb:

Pr b = ( I n ( uu ))b = b ( uu )b = b u( u b ) = b u

= uT b = (b, u) = ui bi
n

i =r

24

Algoritmul lui Householder


I ;
Q
n

forr 1, , n 1
calculeazmatriceaPr (constanta ivectorulu)

A Pr * A;

*
;

b
P
b
r

Q
Pr *Q;

La sfritul acestui algoritm, n matricea A vom avea matricea


superior triunghiular R, n vectorul b vom avea QT binit , binit este
va conine
vectorul iniial iniial al termenilor liberi, iar matricea Q
matricea Q T din factorizarea QR a matricii A.
25

Algoritmul Householder detaliat


I ;
Q
n

forr 1, , n 1
construciamatriciiPr constanta ivectorulu
n

= air2 ;
i =r

if ( )break;/ /r r 1 Pr I n ( Asingular )
k = ;
if (arr 0)k k ;
k arr ;
ur arr k ; ui air ,i r 1, , n;

26

A Pr * A
transformareacoloanelor j r 1,, n
for j r 1,, n
n

= ( j / )( Ae j , u) / = ( ui aij ) / ;
i =r

fori r ,, n
aij aij ui ;
transformareacoloaneir amatricii A
arr k ;air i r 1, , n;
b Pr * b
n

= ( / )(b, u) / = ( ui bi ) / ;
i =r

fori r ,, n

bi bi ui ;
27

P * Q

Q
r
for j 1,, n
n

, u) / = ( u q ) / ;
=(Qe
i ij
j
i =r

fori r ,, n
q q u ;
ij

ij

28

Numrul de operaii efectuate:

A (adunri, scderi):
n( n 1)(2n 1) ( n 1)( n 1)(2n 3)
( n 1) 2n( n 1)
=

3
3
2 3
n O( n2 )
3
M (nmuliri, mpriri ):
n( n 1)(2n 1) 2 3
4( n 1) 3n( n 1)
= n O( n2 )
6
3
R (radicali ): (n-1)

29

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