c05-rezolvarea sistemelor de ecuatii_3.pdf
TRANSCRIPT
-
Cursul 5Cursul 5Metode de rezolvare a sistemelor liniare
bazate pe factorizarea ortogonal
-
R l i t l d ii li i Rezolvarea sistemelor de ecuaii liniare n sensul celor mai mici ptrate.
Sistemul de ecuaii liniareAx=b, ARmxn, b Rm, m>nnu admite n general soluie.Soluia n sensul celor mai mici ptrate (sauSoluia n sensul celor mai mici ptrate (sau pseudosoluia) se definete ca vectorul x*din Rn care asigur minimizarea normei geuclidiene a vectorului reziduu:
* xAbminxAb2Rx2
xAbminxAbn
=
-
C id ti l t i l V K (K RConsideram spatiul vectorial V = Kn(K=R sau K=C), nN*. Pe acest spatiu orice doua
t hi l tnorme sunt echivalente. 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 t bil di t d d istabile din punct de vedere numeric,
bazate pe triunghiularizare ortogonal. P d l i t i d t i APseudosoluia este unic dac matricea A
are coloanele liniar independente, caz n care se exprim cacare se exprim ca
x*=(ATA)-1ATb=A#b
-
Metode de rezolvare a sistemelor liniare bazate pe factorizare ortogonal.
n care se defineteA#=(ATA)-1ATRnxm
ca invers generalizat sau pseudoinvers P M t i i d t hi lPenrose - Moore a matricei dreptunghiulare
A Rmxn.O t d t l t f i t lO metod ortogonal transform sistemul Ax=b
ntr-un sistem echivalent cu matrice superior triunghiulartriunghiular
HAx=Hbn care matricea de transformare HRmxn esten 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 cuc are aceeai pseudosoluie cu sistemul iniial, deci i acelai numr de condiionare n norm 2.
Transformrile ortogonale conserv norma euclidian
22
TTTT22 xxxHxHx)Hx()Hx()Hx,Hx(Hx ====== 22 )()(),(
1xH
supH 2 =
= 1x
supH2
0x2 ==
-
Metode de rezolvare a sistemelor liniare bazate pe factorizare ortogonal.
22222AAHHARHAR ===
22
T
2
T
2
T RRHRHARHA ===
Metoda Householder22
AHA =
Metoda Householder
Reflectorii Householder sunt matrice de forma:
pTp
Tpp
mp vv
vv2IH
=
pp
2
2pp
Tp v
21
2
vv =
=
222
-
Reflectori Householder
Matricea Householder se folosete sub forma echivalent:H=I-2uuT, cu uTu=1
T
2
T
2T
T
uu2Ivv
vv
2Ivv
vv2IH ===
yx Teorem: x,yRn, xy, ||x||2=||y||2, 2yx
yxu
=
atunci (I-2uuT)x=y.
||x-y||22=(x-y)T(x-y)=xTx-xTy-yTx+yTy=2(xTx-yTx)
(I-2uuT)x=( )( ) ( )( )
( )xyxxyx2
xxyxyx
2x TTTT
2
T =
(I 2uu )x=
(I-2uuT)x=x-(x-y)=y
( )yyxx2xxyx2x TT22
-
Reflectori Householder
Consecin: =||x||2, v=x+e1, u=v/||v||2atunci (I-2uuT)x=-e1( ) 1Caz particular pentru x=-e1
uuT=vvT/||v||22
||v||22=(x+e1)(x+e1)=xTx+xTe1+e1Tx+2e1Te1 2 2 2=||x||22+2+2x1=22+2x1=2(+x1)
ntruct apare la numitor evitm anularea:=sign(x1)||x||2
-
Metoda Householder
Matricile reflectori elementari sunt simetrice
( ) TTTTT
ppT Hvv1
Ivv1
Ivv
IH
Matricile sunt ortogonale
( ) pppmppmmp HvvIvvIIH ===
=
( )m2
Tpp
Tpp
Tpp
Tpp
mTpp I
vvvv
vv
vvIHH =+=
Un reflector Householder Hp se aplic unui vector xRn pentru a i anula ultimele x i=p+1:m
xRn pentru a-i anula ultimele xi, i=p+1:mcomponente
( ) 0m:1pxx2
2
m
pi
2i
2 +== = 2pi=
-
Metoda HouseholderMetoda HouseholderFixm componentele vectorul vp care intervine n
expresia reflectorului Hp la valorile:p p
=i
1p:1i0
+==+=
m:1pix
pixv
i
pip
Acest vector poart numele de vector HouseholderHouseholder.
Pentru a evita ca vpp s se anuleze sau s aib valori mici vom alege ca , s aib acelaivalori mici vom alege ca , s aib acelai semn cu xp
-
Metoda Householder
( ) ( ) ( )2p
m
pi
2ip m:pxxsignxxsign ==
=
Aplicm transformarea Hp vectorului x:
pi=
pp
Tp
Tpp
mp vxv
xvxx
vvIxH =
=
=
xv
Tp =
+=== m
22m
22 xv1
v1
v1
+=== +== 1pi
ipppi
ip2pxv
2v
2v
2
-
Metoda Householder
( )[ ] ( ) ppp2p22p vxxx21
=+=++=2
( ) ( )xxvxv
xv
m
1pi
2ippp
m
piiipT
p
+=
=
=
+==
( ) ( )xx pp ++
( ) xxx 22++( )( ) 1x
xxx
p
ppp =+
++=
( )
===
== pivx1p:1ix
vxxH ppp
i
ipiip( )
+= m:1pi0
ppppipiip
-
Metoda Householder
n urma aplicrii transformrii Hp, vectorul x se modific astfel:primele p-1 componente rmn nemodificatecomponenta p devine mare n valoare absolutp prestul componentelor (p+1:m) se anuleaz.
n locul vectorului Householder vp am putea folosi p pvectorul normat
pv
2p
p
vu = .1u =
1uu,uu2IH TT ==
-
Metoda Householder
Particularizm pentru p=1
( ) 1i, =( )i1 m:2i,0
,xH
==
11211e)x(signxexH ==
=+
=m:2ix
xv 11i
= m:2i,xi
exv += 11 exv +=
-
Metoda Householder
Transformarea H1 este determinat numai de vectorul v i de .
Aadar
0
x
x
1H2
1
0x m
LL
vn care
= ,v
v
H 2
1
1 L
Cu excepia primei componente, vectorii v i x
vm
L
Cu excepia primei componente, vectorii v i xcoincid, ceea ce ne sugereaz s pstrm pe vn x, n poziiile 2:m, unde apar zerouri.
-
Metoda Householder
Cum vectorul v este determinat esenial numai ca direcie, l vom norma cu : vv = ,
+=+=
1x1x
v1
1
Prima component v1 va fi pstrat n ntr-
==
=m:2i,x
xv
ii
1i
Prima component v1 va fi pstrat n . ntradevr, nainte de scalarea cu , =.v1
x
12H2
1
v,v
x
x
1 =
1
mm vx
LL
-
Metoda Householder
ntruct transformarea Hp modific numai componentele din poziiile p:m, ea se poate realiza aplicnd H unui vector ( m)aplicnd H1 unui vector x(p:m)
Aplicm reflectorul H1 unui vector oarecare y
11
T1
T11
m1 vyvyv
yyvv
IyH =
=
=
yvm
i1iT
y
yv
1ii1iT
1==
=
( ) m:1i,vyyH 1iii1 ==
-
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 condiionareH-ortogonal, sistem care are aceeai condiionare cu sistemul iniial (cond(H.A)=cond(A))
Pentru orice matrice ARmxn exist o matricePentru orice matrice AR exist o matriceortogonal HRmxm astfel nct H.A=R n care R Rmxn este o matrice superior triunghiularR R este o matrice superior triunghiular
Matricea ortogonal se formeaz dintr-un produs
121nn HHHHH = L
AHHHHAH 121nn = K
-
Teorema lui Householder
cu p=1:n, pornind cu A1=A. De exemplu reflectorul H1 care anuleaz prima
pp1p AHA =+
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
= 1pp V0
0IH
+ 1pnp V0
-
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 A utiliznd algoritmul HSHx()matricea Ap, utiliznd algoritmul HSHx(),punnd ca vector x coloana p din HpAp
[ ] [ ]aHaHaHaaaHAHColoanele situate n dreapta coloanei p, (j>p) se modific folosind algoritmul HSHy()
[ ] [ ]nppp1pnp1ppp aHaHaHaaaHAH == LLLL
(j>p) se modific folosind algoritmul HSHy()Transformarea Hp nu modific coloanele aj
pentru care =0 (coloanele din stnga coloanei )p, cu 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 primele coloane pmodific elementele din coloana astfel:
primele elemente rmn neschimbatprimele elemente rmn neschimbatelementul diagonal devine mareelementele subdiagonale se anuleazg
-
Teorema lui Householder
modific elementele din coloanele j>p astfel:primele p-1 elemente rmn neschimbateelementele din poziiile p:m se calculeaz cu
relaia Householder. Pornind de la sistemul iniial, prin aplicarea
transformrilor:
n:1p,AA,AHA 1pp1p ===+
bb,bHb 1pp1p ==+
se ajunge la sistemul echivalent superior triunghiular
1n1n bxA ++ =
-
Teorema lui Householder
Matricile factori i din factorizarea a matricei A:
AR 1nAR +=
( ) mT121nnT IHHHHHQ K==
adic transformrile se aplic matricei unitate i
( ) m121nnQ K
adic transformrile se aplic matricei unitate i se transpune rezultatul, sau se calculeaz direct:
n21Tn
T2
T1
T HHHHHHHQ KK ===
-
Rotatori Givens (matrice de rotaie elementare)
1k
I
sc
I
G
=
lm
1klkl
I
cs
IG
c2+s2=1, definete o rotaie de ordinul m n planul(k l) hi l d i i
lm
(k,l) cu unghiul , unde c=cos i s=sin
Matricea Gkl este ortogonal: Gkl*GTkl=InTransformarea Gkl aplicat unui vector xRm i
modific numai componentele xk i xlGklx=[x1cxk+sxl-sxk+cxlxm]
-
Rotatori Givens (matrice de rotaie elementare)
function x=rotvec(k, l, c, s, x)%aplica transformarea Gkl vectorului xt = zeros(2,1);t = [c s;-s c]*[x(k); x(l)];(k) t(l)x(k) = t(l);x(l) = t(2);
Determinm transformarea (c s) care anuleazDeterminm transformarea (c, s), care anuleaz componenta l :
-s x +c x =0-s.xk+c.xl=0
rx
xx
xc k
22
k =+
=rxx lk +
rx
xx
xs l
22
l =+
=rxx lk +
-
Rotatori Givens (matrice de rotaie elementare)22
rxxxx
xxxsxcx 2l
2k2
l2k
2l
2k
lkk =+=+
+=+=
Rotaia Gkl, care modific componentele xk=r i xl=0 este:
f nction [c s ] rot(k l )function [c, s, x]=rot(k, l, x)% determina rotatia (c,s) care% anuleaza x(l)% 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 matriceformeaz ca un produs de matrice elementare de "rotaie" de forma
-
Rotatori Givens (matrice de rotaie elementare).GGGGGGG
12n1n G
121n,1n1
G
1n,2nn,2n
G
n,1n 444 3444 21L
444 3444 21321 =
Matricea Gkl afecteaz prin nmulire numai liniile k i l:
,1n:1kAGA )p(kl)1p( ==+
.n:1klAA
,1n:1kAGA)0(
kl
+==
Plecnd cu matricea A i folosind transformrile ortogonale G se obinetransformrile ortogonale Gkl se obine o matrice superior triunghiular:
-
Factorizarea QROrice matrice ARmxn poate fi descompus sub
forma A=Q1R1, cunoscut sub numele de factorizare QR n care Q = este o matrice cufactorizare QR n care Q1= este o matrice cu coloane ortogonale i R1 este o matrice ptrat superior triunghiular.
[ ] ,RQ0
RQQQ 11
121 =
=
( ) .RR,RQ,RQ nn1nnm
2nm
1 ,, 121
( ) n21TnT2T1T11nnT HHHHHHHHHHQ KKK ==== [ ]
=
=
=
0
IHHH
0
IQ
0
IQQQ nn21
nn211 K
000
-
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);
endQ Q'R = A; Q = Q';
n MATLAB apelul [Q,R] = qr(A) produce descompunerea matricei A ntr-o matrice superiordescompunerea 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
[ ] [ ]
n1j111
rr00
0
rrr
qqqaaa
LLLL
LL
[ ] [ ]
=
nn
jnjjnj1nj1
r000
rr00qqqaaa
L
LLLLL
LLLLL
Coloanele matricei Q sunt ortogonale (formeaz o baz ortonormat):
=
=ji0
ji,1qq j
Ti
ji,0j
1111 rqa =de unde i 1q1 = 111 ar = 1111 r/aq =
-
Ortogonalizarea Gram-Schmidt+ Ta2=q1r12+q2r22, q1Ta2=r12,
||q2||=1, r22=||a2-q1r12||, ( )/q2=(a2-q1r12)/r22
a3=q1r13+q2r23+q3r33, q2Ta3=r23,|| || 1 || ||||q3||=1, r33=||a3-q1r13-q2r23||, q3=(a3-q1r13-q2r23)/r33aj=q1r1j+q2r2j++qjrjjqkTaj=rkj, k=1:j-1
1j
||qj||=1, =
=1k
kjkjjj rqar
1j
jj1k
kjkjj r/rqaq
=
=
-
Algoritmul Gram-Schmidt clasicpentru j=1:n
qj = ajj jpentru k=1:j-1
rkj = qk*qjj j
=1j
kjkjj rqqq
rjj=||qj||
qj = qj/rjj
=1k
qj qj/ jjAlgoritmul Gram-Schmidt clasic este numeric
instabil. Rezultate mult mai bune ne furnizeaz o variant modificat
-
Algoritmul Gram-Schmidt modificatq1ak=r1kq1 ak r1kq1q1ak=q1r1k(I-q1q1)ak=q1r2k++qkrkkq2(I-q1q1)ak=r2kq2q2(I-q1q1)ak=q2r2k(I )(I )(I-q1q1)(I-q2q2)ak=q3r3k++qkrkk
Q = AQ = Apentru k=1:nrkk=||qk||kk ||q ||qk=qk/rkkpentru j=k+1:n
r =q qrkj=qkqjqj=qj-qkrkj
-
Algoritmul Gram-Schmidt clasic
[Q, R] = Gram_Schmidt(m, n, A)% Intrri: A matricea de factori at (ba a iniial)A = matricea de factorizat (baza iniial)% Ieiri:Q = factorul ortogonal(baza% ortonormat)% 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);A(1 i) Q(1 1 i 1)*R(1 i 1 i)y = A(1:m,i)-Q(1:m,1:i-1)*R(1:i-1,i);
R(i,i) = norm(y);Q(1:m,i) = y ./ R(i,i);Q(1:m,i) y ./ R(i,i);
end
-
Algoritmul Gram-Schmidt modificat[Q R] G S h idt M difi t( A)[Q, R] = Gram_Schmidt_Modificat(m, n, A) %Intrri: A = matricea de factorizat% (baza iniial)% (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 i));R(i,i) norm(A(1:m,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);
endendend