Sunteți pe pagina 1din 36

Cursul 5

Metode de rezolvare a sistemelor liniare


bazate pe factorizarea ortogonal

Rezolvarea
R
l
sistemelor
i t
l de
d ecuaii
ii liniare
li i
n

sensul celor mai mici ptrate.


Sistemul de ecuaii liniare
Ax=b, ARmxn, b Rm, m>n
nu admite n general soluie.
Soluia n sensul celor mai mici ptrate (sau
pseudosoluia) se definete ca vectorul x*
din Rn care asigur
g
minimizarea normei
euclidiene a vectorului reziduu:
b A x*

= minn b A x
x R

Consideram
C
id
spatiul
ti l vectorial
t i l V = Kn(K=R
(K R sau
K=C), nN*. Pe acest spatiu orice doua
norme suntt echivalente.
hi l t
Vom nota cu ||||, ||||1, ||||2 urmatoarele
norme uzuale pe Kn:

Metode de rezolvare a sistemelor liniare bazate pe factorizare ortogonal.

Pseudosoluia este soluie exact pentru


sistemul normal ATAx=ATb
Sistemul normal este ru condiionat astfel
nct metodele obinuite de rezolvare
(Gauss, Cholesky, etc) nu dau rezultate
satisfctoare, fiind necesare metode mai
stabile
t bil di
din punctt d
de vedere
d
numeric,
i
bazate pe triunghiularizare ortogonal.
P
Pseudosoluia
d
l i este
t unic
i dac
d matricea
ti
A
are coloanele liniar independente, caz n
care se exprim ca
x*=(ATA)-1ATb=A#b

Metode de rezolvare a sistemelor liniare bazate pe factorizare ortogonal.

n care se definete
A#=(ATA)-1ATRnxm
ca invers generalizat sau pseudoinvers
P
Penrose
- Moore
M
a matricei
ti i d
dreptunghiulare
t
hi l
A Rmxn.
O metod
t d ortogonal
t
l transform
t
f
sistemul
i t
l Ax=b
ntr-un sistem echivalent cu matrice superior
triunghiular
HAx=Hb
n care matricea de transformare HRmxn este
ortogonal.

Metode de rezolvare a sistemelor liniare bazate pe factorizare ortogonal.

Matricea sistemului echivalent (n sensul


c are aceeai pseudosoluie cu
sistemul iniial, deci i acelai numr de
condiionare

n norm 2.
Transformrile ortogonale conserv norma
euclidian
Hx 22 = (Hx,Hx) = (Hx)T(Hx) == x T HT Hx = x T x = x

2 = sup
x0

H x
x

2
2

2
2

Metode de rezolvare a sistemelor liniare bazate pe factorizare ortogonal.

R = HA

A = HT R
HA

A
=

HA

= HT R

HT R

= R

Metoda Householder
Reflectorii Householder sunt matrice de forma:

H p = Im 2

v Tp v p
2

v p v Tp
v Tp v p

1
=
vp
2

2
2

Reflectori Householder
Matricea Householder se folosete sub forma echivalent:
H=I-2uuT, cu uTu=1
v
vT
vv T
H = I 2 T = I 2

= I 2uu T
v2
v2
v v
Teorem: x,yRn, xy, ||x||2=||y||2,

u =

x y
x y 2

atunci (I-2uuT)x=y.
||x-y||22=(x-y)T(x-y)=xTx-xTy-yTx+yTy=2(xTx-yTx)
(I-2uu
(I
2uuT)x= x 2

(x y)(x y)T
2

x y2

(I-2uuT)x=x-(x-y)=y

2(x y)(xTx yTx)


x = x
2(xTx yT y)

Reflectori Householder
Consecin: =||x||2, v=x+e1, u=v/||v||2
atunci (
(I-2uuT)
)x=-e1
Caz particular pentru x=-e1
uuT=vvT/||v||22
||v||22=(x+e1)(x+e1)=xTx+xTe1+e1Tx+2e1Te1
=||x||22+2+2x1=22+2x1=2(+x1)
ntruct apare la numitor evitm anularea:
=sign(x1)||x||2

Metoda Householder
Matricile reflectori elementari
H Tp

v p v Tp
= Im

= Im

sunt simetrice

1
v p v Tp

= Im

1
v p v Tp = H p

Matricile sunt ortogonale

H pH

T
p

= Im

v p v Tp

v p v Tp

v p v Tp v p v Tp
2

= Im

Un reflector Householder Hp se aplic unui vector


xRn pentru a-i
a i anula ultimele xi, i=p+1:m
componente

2 =

2
x
i =

i= p
i=

x( p + 1 : m )

0
2

Metoda Householder
Fixm componentele vectorul vp care intervine n
expresia
p
reflectorului Hp la valorile:

ip

0
i = 1 : p 1

i = p
x p +
x
i = p + 1 : m
i

Acest vector poart numele de vector


Householder.
Pentru a evita ca vpp s se anuleze sau s aib
valori mici vom alege ca , s aib acelai
semn cu xp

Metoda Householder

( )

= sign x p

i= p

( )

x i2 = sign x p

x(p : m )

Aplicm transformarea Hp vectorului x:

vp vTp
vTp x
x = x
Hp x = Im
vp = x vp

v Tp x
=

1
=
vp
2

2
2

1
=

i= p

2
ip

1 2
=
v pp +
2

i= p + 1

2
i

Metoda Householder

[(

1
= xp + 2 + 2 x2p = xp + = vpp
2
m
m
=

(H

v Tp x

(x

i= p

ip

xi

xp +

+ x p + 2 x 2p

xp +

x i = xi vip

v pp x p +

i= p+1

xp +

2
i

= 1

xi
i = 1: p 1

= xp v pp =
i = p
0
i = p + 1: m

Metoda Householder
n urma aplicrii transformrii Hp, vectorul x se
modific astfel:
primele p-1 componente rmn nemodificate
componenta
p
p devine mare n valoare absolut
restul componentelor (p+1:m) se anuleaz.
n locul vectorului Householder vp am p
putea folosi
vectorul normat
u

v
v

p
p

= 1.

H = I 2 u u T,

uT u = 1

Metoda Householder
Particularizm pentru p=1

(H 1

x )i

i = 1
,
=
i = 2 : m
0,

H1 x = e1 = x

vi1

x1 +
=
i = 2: m
xi,

v 1 = x + e1

sign(x 1 ) e 1

Metoda Householder
Transformarea H1 este determinat numai de
vectorul v i de .
Aadar x 1
x
2
L

x m

n care

H1 =

0
H

v1

v 2
,

L
v m

Cu excepia primei componente, vectorii v i x


coincid, ceea ce ne sugereaz s pstrm pe v
n x, n poziiile 2:m, unde apar zerouri.

Metoda Householder
Cum vectorul v este determinat esenial numai ca
v
, l vom norma cu : v =
direcie,

x
1
+ 1 = x1 + 1
v i1 =
xi

= x i,
i = 2: m

Prima component v1 va fi pstrat n .


ntr
ntradevr, nainte de scalarea cu , =.v1
x1

x
v
2
H1
2

,
= v1
L
L


x
m
v m

Metoda Householder
ntruct transformarea Hp modific numai
componentele din poziiile p:m, ea se poate realiza
aplicnd H1 unui vector x(p:m)
( m)
Aplicm reflectorul H1 unui vector oarecare y

v1 v1T
v1T y
y = y
H1 y = Im
v1 = y v1

v y
=
=

T
1

(H1

v i1

i=1

yi

y )i = y i v i1, i = 1 : m

Teorema lui Householder


n locul rezolvrii sistemului A.x=b, cu ARmxn, bRm se
rezolv sistemul echivalent H.A.x=H.b, cu HRmxm,
H ortogonal sistem care are aceeai condiionare
H-ortogonal,
cu sistemul iniial (cond(H.A)=cond(A))
Pentru orice matrice ARmxn exist o matrice
ortogonal HRmxm astfel nct H.A=R n care
R Rmxn este o matrice superior triunghiular
Matricea ortogonal se formeaz dintr-un produs
H = H n H n 1 L H 2 H1

H A = Hn Hn 1 K H2 H1 A

Teorema lui Householder

Ap+1 = Hp Ap cu p=1:n, pornind cu A1=A.


De exemplu reflectorul H1 care anuleaz prima
coloan a matricei ARmxn este:
[beta, A(:,1)]=HSH1x(A(:,1))
for j=2:n
A(:,j)=HSH1y(A(:,1), beta, A(:,j));
end
Matricea are structura

Hp

Ip 1
=
0

Vn p + 1
0

Teorema lui Householder


Spre deosebire de metodele gaussiene, metodele
ortogonale asigur elemente diagonale mari
n valoare absolut,, ceea ce confer o
stabilitate deosebit a metodei.
Vom determina matricea Hp, care transform
matricea Ap, utiliznd algoritmul HSHx(),
HSHx()
punnd ca vector x coloana p din HpAp
Hp Ap = Hp

[a

] [

L ap L an = Hp a1 L Hp ap L Hp an

Coloanele situate n dreapta coloanei p,


(j>p) se modific folosind algoritmul HSHy()
Transformarea Hp nu modific coloanele aj
pentru care =0 (coloanele din stnga coloanei
p, cu j<p).
)
Acestea au aij=0 pentru i<p<j.

Teorema lui Householder

Matricea H poate fi pstrat n triunghiul


inferior din A ((care se anuleaz),
) iar
elementele diagonale n vectorul beta. n
triunghiul superior din A vom avea matricea R

In rezumat, transformarea aplicat matricei :


i las neschimbate p
primele coloane
modific elementele din coloana astfel:

primele elemente rmn neschimbat


elementul diagonal devine mare
elementele subdiagonale
g
se anuleaz

Teorema lui Householder

modific elementele din coloanele j>p astfel:


primele p-1 elemente rmn neschimbate
elementele din poziiile p:m se calculeaz cu

relaia Householder.
Pornind de la sistemul iniial, prin aplicarea
transformrilor:

A p + 1 = H p A p,

A 1 = A,

b p + 1 = H p b p,

b1 = b

p = 1: n

se ajunge la sistemul echivalent superior triunghiular

A n + 1 x = bn + 1

Teorema lui Householder


Matricile factori i din factorizarea a matricei A:

R = A n+1
Q = HT = (Hn Hn 1 K H2H1 )T Im
adic transformrile se aplic matricei unitate i
se transpune rezultatul, sau se calculeaz
direct:

Q = HT = H1T HT2 K HTn = H1 H2 K H n

Rotatori Givens (matrice de rotaie elementare)

G kl

Ik 1

c
Il k 1
s

Im l

c2+s2=1, definete o rotaie de ordinul m n planul


(k l) cu unghiul
(k,l)
hi l ,
unde
d c=cos ii s=sin
i
Matricea Gkl este ortogonal: Gkl*GTkl=In
Transformarea Gkl aplicat unui vector xRm i
modific numai componentele xk i xl
Gklx=[x1cxk+sxl-sxk+cxlxm]

Rotatori Givens (matrice de rotaie elementare)

function x=rotvec(k, l, c, s, x)
%aplica transformarea Gkl vectorului x
t = zeros(2,1);
t = [c s;-s c]*[x(k); x(l)];
x(k)
(k) = t(l);
t(l)
x(l) = t(2);
Determinm transformarea (c,
(c s)
s), care anuleaz
componenta l :
-s xk+c.x
-s.x
+c xl=0
c =
s =

xk
x 2k + x l2
xl
x 2k + x l2

xk
=
r
=

xl
r

Rotatori Givens (matrice de rotaie elementare)


x k = c x k + s xl =

x 2k + x l2
x 2k + x l2

x 2k + x l2 = r

Rotaia Gkl, care modific componentele xk=r i


xl=0 este:
f nction [c,
function
[c s,
s x]=rot(k,
] rot(k l
l, x)
)
% determina rotatia (c,s) care
% anuleaza x(l)
r=sqrt(x(k)^2+x(l)^2);
c=x(k)/r;
s=x(l)/r;
n metoda Givens matricea ortogonal G se
formeaz ca un produs de matrice
elementare de "rotaie" de forma

Rotatori Givens (matrice de rotaie elementare)


G = G n 1,n G n 2,n G n 2,n 1 G 1n G 1,n 1 L G 12.
123 144
42444
3 144424443
G n1

Gn2

G1

Matricea Gkl afecteaz prin nmulire


numai liniile k i l:
A( p + 1) = G kl A( p)
A(0)= A

k = 1 : n 1,
l = k + 1 : n.

Plecnd cu matricea A i folosind


transformrile ortogonale Gkl se obine
o matrice superior triunghiular:

Factorizarea QR
Orice matrice ARmxn poate fi descompus sub
forma A=Q1R1, cunoscut sub numele de
factorizare QR n care Q1= este o matrice cu
coloane ortogonale i R1 este o matrice ptrat
superior triunghiular.
Q = [Q1

R 1
Q2 ] = Q1R 1,
0

Q 1 R m n, Q 2 R ( m n ) n, R 1 R n n.
Q = HT = (Hn Hn1 KH1)T = H1T HT2 KHTn = H1 H2 KHn

In
In
In
Q1 = [Q1 Q2 ] = Q = H1H2 K Hn
0
0
0

Factorizarea QR
for i = n:-1:1
s
= A(i,i+1:n) * x(i+1:n);
x(i) = (b(i) - s) / A(i,i);
end
R = A; Q = Q'
Q';

n MATLAB apelul [Q,R] = qr(A) produce


descompunerea matricei A ntr-o matrice superior
triunghiular RRmxn (de aceeai dimensiune cu
A)) i o matrice QRmxm unitar astfel nct A=Q*R.
[Q,R] = qr(A,0) produce o descompunere
"economic", n care se calculeaz numai primele
n coloane ale matricei Q.

Ortogonalizarea Gram-Schmidt

[a

] [

L aj L a n = q 1 L q j L q n

r11 L r1j L r1n


0 L L L L

0 0 rjj L rjn

L
L
L
L
L

0 0 0 L rnn

Coloanele matricei Q sunt ortogonale (formeaz o


baz ortonormat):
q qj
T
i

1,
=
0,

i = j
i j

a1 = q 1 r11
q1

= 1 de unde r11 =

a1

i q 1 = a1 / r11

Ortogonalizarea Gram-Schmidt
a2=q1r12+q
+ 2r22, q1Ta2=r12,
||q2||=1, r22=||a2-q1r12||,
q2=(a
( 2-q1r12)/r
)/ 22
a3=q1r13+q2r23+q3r33, q2Ta3=r23,
||q3||=1,
1 r33=||a3-q1r13-q2r23||,
q3=(a3-q1r13-q2r23)/r33
aj=q1r1j+q2r2j++qjrjj
qkTaj=rkj, k=1:j-1 j 1
rjj = aj q k rkj
||qj||=1,
k=1

qj

= aj

q k rkj / rjj

k=1

j 1

Algoritmul Gram-Schmidt clasic


pentru j=1:n
qj = aj
pentru k=1:j-1
rkjj = qk*qj
qj = qj

rjj=||qj||

j 1

k=1

k kj

qj = qj/
/rjj
Algoritmul Gram-Schmidt clasic este numeric
instabil. Rezultate mult mai bune ne furnizeaz o
variant modificat

Algoritmul Gram-Schmidt modificat

q1a
ak=r
r1k
q1q1ak=q1r1k
(I-q1q1)ak=q1r2k++qkrkk
q2(I-q1q1)ak=r2k
q2q2(I-q1q1)ak=q2r2k
(I 1q1)(I-q
(I-q
)(I 2q2)a
) k=q3r3k++qkrkk

Q = A
pentru k=1:n
rkk=||qk||
||q ||
qk=qk/rkk
pentru j=k+1:n
rkj=qkqj
qj=qj-qkrkj

Algoritmul Gram-Schmidt clasic


[Q, R] = Gram_Schmidt(m, n, A)
% Intrri:
A = matricea de factorizat
factori at (ba
(baza
a iniial)
% Ieiri:Q = factorul ortogonal(baza
% ortonormat)
% R = factorul superior triunghiular
[m,n]=size(A);
for i = 1 : n
R(1:i-1,i) = Q(1:m,1:i-1)'*A(1:m,i);
y = A(1:m,i)-Q(1:m,1:i-1)*R(1:i-1,i);
A(1
i) Q(1
1 i 1)*R(1 i 1 i)
R(i,i) = norm(y);
Q(1:m,i) = y ./ R(i,i);
end

Algoritmul Gram-Schmidt modificat


[Q R] = Gram_Schmidt_Modificat(m,
[Q,
G
S h idt M difi t(
n, A)
%Intrri: A = matricea de factorizat
% (baza iniial)
%Ieiri:Q = baza ortonormat
%
R = factorul superior triunghiular
[m,n]=size(A);
for i = 1 : n
R(i i) =norm(A(1:m
R(i,i)
norm(A(1:m,i));
i));
Q(1:m,i) = A(1:m,i) / R(i,i);
for j = i+1 : n
R(i,j) = Q(1:m,i)' *A(1:m,j);
A(1:m,j)= A(1:m,j)- Q(1:m,i)*R(i,j);
end
end