Thứ Năm, 20 tháng 2, 2014

Tài liệu CHƯƠNG 2: MA TRẬN ppt


62

[]
[]
[]
[]
[][]
[]
[
]
[]
[]
[]
[][]
⎛⎞

′′ ′ ′
= − =− =−
⎜⎟
⎝⎠
T
TT
AU
UU
AH A E A U A VU
QQ

Trongđó:

[]
[]
[]

=
AU
V
Q
(8)
Dovậy:

[]
[]
[] []
[][]
[]
[][]
()
⎛⎞
′′
=− −
⎜⎟
⎝⎠
T
T
UU
HA H E A VU
Q

 
[]
[][]
[
]
[
]
[]
[][]
()
′′
=− − −
T
TT
UU
AVU AVU
Q

  
[]
[][]
[][]
[
]
(
)
[][][]
(
)
[]


=− − +
TTT
T
UUA UUVU
AVU
QQ


[]
[]
[
]
[
]
[
]
[
]
[
]

=−−+
TT T
AVU UV2gUU

Trongđó:

[][]
=
T
UV
g
2Q
(9)
Đặt:[W]=[V]‐g[U](10)
Tathấyngayphépbiếnđổicódạng:

[]
[]
[]
[]
[]
[
]
[
]
[
]
′′
=− −
TT
HA H A WU UW(11)
Thuậttoáncóthểtómlạinhưsau:
‐Cho[A’]làmatrậnvuôngcấp(n‐i)cóđượctừphầndướibênphải
củamatrận[A]
‐Đặt
++
=
⎡⎤
⎡⎤
⎣⎦
⎣⎦
L
T
i 1,i i 2,i n,i
Xa a a
‐Tính
[]
X.Chok=
[]
X nếux1>0vàk=‐
[
]
X nếux1<0
‐Cho

=+
⎡⎤
⎡⎤
⎣⎦
⎣⎦
L
T
12 ni
Ukxx x
‐Tính
[]
=
2
U
Q
2

‐Tính
[]
[]
[]

=
AU
V
Q

‐Tính
[][]
=
T
UV
g
2Q


63
‐Tính[W]=[V]‐g[U]
‐Tính
[]
[]
[][]
[
]
[
]

=− −
TT
AAWU UW
‐Đặt
++
==−
i,i 1 i 1,i
aa k
Taxâydựnghàm
housetrans()đểthựchiệnthuậttoántrên:

functionA=housetrans(A)
%BiendoiHouseholdermatranAthanhmatran
%bađườngchéodang[c\d\c].
%Decocvaddungd=diag(A),c=diag(A,1).
n=size(A,1);
fork=1:n‐2
u=A(k+1:n,k);
uMag=sqrt(dot(u,u));

ifu(1)<0;
uMag=‐uMag;
end
u(1)=u(1)+uMag;
A(k+1:n,k)=u;%LuuuvaophanduoicuaA.
H=dot(u,u)/2;
v=A(k+1:n,k+1:n)*u/H;
g=dot(u,v)/(2*H);
v=v‐g*u;
A(k+1:n,k+1:n)=A(k+1:n,k+1:n)‐v*uʹ‐
u*vʹ;
A(k,k+1)=‐uMag;
end
k=zeros(n);
fori=1:n
k(i,i)=A(i,i);
end
fori=1:n‐1
k(i,i+1)=A(i,i+1);
k(i+1,i)=A(i,i+1);
end
A=k;


64
Để tính ma trận bađường chéo theo phép biếnđổi Householder ta dùng
chươngtrình
cthousetrans.m:

clearall,clc
a=[1234;2935;3337;4576];
b=householder(a)
d=diag(b)
c=diag(b,1)

§3.BIẾNĐỔITHÀNHMATRẬNHESSENBERG
 Nếumatrận[A]làmatrậnđốixứng,phươngphápHouseholdercóthể
đượcsửdụngđểbiếnđổinóthànhmatrậnđồngdạngđốixứngbađường
chéo.Nếumatrận[A]khôngđốixứ
ng,phươngphápHouseholderbiếnđổi
matrận[A]thànhmatrậnđồngdạngHessenberg.
 MatrậnHessenberglàmatrậncódạng:

[]
11 12 13 1,n
21 22 23 2n
32 33 2n
nn
aaa a
aaa a
0a a a
H
000 a
⎡⎤
⎢⎥
⎢⎥
⎢⎥
=
⎢⎥
⎢⎥
⎢⎥
⎣⎦
L
L
L
MMML M
L

TathựchiệnphépbiếnđổiHouseholdertrênmatrận[A]vàcóđược:
 [Q][H][Q’]=[A]
trongđó[Q]làmatrậntrựcgiao(tagọiđâylàphântíchHessenbergmatrận
[A]).
Thuậttoáncóthểtóm
lạinhưsau:
‐Cho[Q]làmatrậnđơnvịcấpn
‐Đặt
+
=
⎡⎤
⎡⎤
⎣⎦
⎣⎦
L
T
i2,i n,i
X0a a
‐Tính
[]
X.Choα=
[]
X nếuai+2,i>0vàα=‐
[
]
X nếuai+2,i<0
‐Cho

=α+
⎡⎤
⎡⎤
⎣⎦
⎣⎦
L
T
2ni
U0 x x
‐Tính
[]
β=
2
U
2

‐Tính
[] []
[]
[]

=−
β
UU
PE 

65
‐Tính
[]
[][]
=QQP
‐Tính
[
]
[][ ][]
=APAP
Taxâydựnghàm
hessenberg()đểthựchiệnphépphântíchtrên:

function[H,Q]=hessenberg(a)
[n,n]=size(a);
q=eye(n);
fork=1:n‐2
alfa=0;
forj=k+1:n
alfa=alfa+a(j,k)^2;
end
alfa=sign(a(k+1,k))*sqrt(alfa);
u=zeros(1,n);
u(k+1:n)=a(k+1:n,k);
u(k+1)=u(k+1)+
alfa;
beta=.5*u*uʹ;
p=eye(n);
fori=1:n
p(i,1:n)=p(i,1:n)‐(u(i)*u(1:n))/beta;
end
q=q*p;
a=p*a*p;
end
H=a;
Q=q;

Đểphântíchmatrậntadùngchươngtrìnhcthessenberg.m:

clearall,clc
a=[1234;5674;648 9;3579];
[H,Q]=hessenberg(a)

§4.PHÂNTÍCHMATRẬNTHEOPHƯƠNGPHÁPDOOLITTLE

66
Mộtmatrậnkhôngsuybiến[A]gọilàphântíchđượcthànhtíchhaima
trận[L]và[R]nếu:
 [A]=[L][R]
Việcphântíchnày,nếutồntại,làkhôngduynhất.
Nếuma
trận[L]cócácphầntửnằmtrênđườngchéochínhbằng1,tacó
phépphântíchDoolittle.
Nếumatrận[R]cócácphầntửnằmtrênđườngchéochínhb ằng1,ta
cóphépphântíchCrout.
Nếu
[R]=[L]
T
(hay[L]=[R]
T
)tacóphépphântíchCholeski.

Vớimatrậnbậc3,[L]và[R]códạng:
[] []
11 12 13
21 22 23
31 32 33
100 rrr
Ll 10 R0rr
ll1 00r
⎡⎤ ⎡ ⎤
⎢⎥ ⎢ ⎥
==
⎢⎥ ⎢ ⎥
⎢⎥ ⎢ ⎥
⎣⎦ ⎣ ⎦

Đểtìml
ijvàrijtathựchiệnphépnhân.Saukhinhântacó:
[]
11 12 13
11 21 12 21 22 13 21 23
11 31 12 31 22 32 13 31 23 32 33
rr r
Arlrlr rlr
rl rl rl rl rl r
⎡⎤
⎢⎥
=++
⎢⎥
⎢⎥
+++
⎣⎦

BâygiờtathựchiệnphépkhửGaussđốivớiphươngtrìnhtrên.Đầutiênta
chọnhàngthứnhấtlàmtrụvàthựchiênphépbiếnđổi:
 hàng2‐l
21×hàng1(khửa21)→hàng2
 hàng3‐l
31×hàng1(khửa31)→hàng3
kếtquảtacó:

[]
11 12 13
12223
22 32 23 32 33
rr r
A0r r
0rl rl r
⎡⎤
⎢⎥
=
⎢⎥
⎢⎥
+
⎣⎦

Sauđótalấyhàngthứhailàmtrụvàthựchiệnbiếnđổi:
 hàng3‐l32
×hàng2(khửa32)→hàng3
vàcó:

[]
11 12 13
22223
33
rrr
A0rr
00r
⎡⎤
⎢⎥
=
⎢⎥
⎢⎥
⎣⎦

Nhưvậytathấyngayrằngmatrận[R]làmatrậncóđượckhithựchiện
loạitrừGausstiếnma trận[A]vàcácphầntửcủa[L]làcácnhânt
ửdùngkhi

67
loạitrừa ij.Điềuđócónghĩalàđểtìmmatrận[L]và[R]tadùngphépkhử
Gausstiến.Taxâydựnghàm
doolittle()đểthựchiệnloạiphântíchDoolittle.

function[l,r]=doolittle(A)
%PhantichmatranAthanhA=L*U
n=size(A,1);
u=zeros(n);
fork=1:n‐1
fori=k+1:n
ifA(i,k)~=0.0
lambda=A(i,k)/A(k,k);
A(i,k+1:n)=A(i,k+1:n)‐lambda*A(k,k+1:n);
A(i,k)=
lambda;
end
end
end
l=tril(A);
fori=1:n
l(i,i)=1;
end
l=triu(A);
fori=1:n
l(i,i)=A(i,i);
end

§5.PHÂNTÍCHMATRẬNTHEOPHƯƠNGPHÁPCROUT
TươngtựnhưthuậttoánDoolittle,tacóthểphântíchmatrận[A]theo
thuậttoánCroutthànhtíchcủamatrận[L]và[R].Cácmatrậnbậc3theo
Croutcódạng:
 
[] []
11 12 13
21 22 23
31 32 33
l00 1rr
Lll 0 R01r
lll 001
⎡⎤ ⎡⎤
⎢⎥ ⎢⎥
==
⎢⎥ ⎢⎥
⎢⎥ ⎢⎥
⎣⎦ ⎣⎦

Đểtìml
ijvàrijtathựchiệnphépnhân.Saukhinhântacó:

68
[]
11 11 12 11 13
21 21 12 22 21 13 22 23
31 31 12 32 31 13 32 23 33
llr lr
Allrllrlr
llrllrlrl
⎡⎤
⎢⎥
=++
⎢⎥
⎢⎥
+++
⎣⎦

Nhưvậy:
a
11=1.r11+0.0+0.0=r11;
a
12=r12;a13=r13
 a
21=l21r11;
a
22=l21r12+r22;a23=l31r11
 a
31=l31r11;a32=l31r12;
a
33=l31r13+l32r23+r33
Mộtcáchtổngquáttacó:
 vớij>i: l
ij=rji=0
 vớii=1: r
1j=a1j(j=1tớin)
  l
j1=aj1/r11(j=1tớin)
 vớii=2tớin


=
−=
1i
1k
kjik
ijij
rlar (j=itớin)

ii
1i
1k
kijk
ji
ji
r
rla
l


=

= (j=itớin)
Taxâydựnghàm
crout()đểphântíchmatrậntheothuậttoánCrout:

function[l,r]=crout(a)
n=size(a,1);
l=zeros(n);
r=zeros(n);
fori=1:n
r(1,i)=a(1,i);
l(i,i)=1.;
l(i,1)=a(i,1)/a(1,1);
end
fork=2:n
r(k,k:n)=a(k,k:n)‐l(k,1:k)*r(1:k,k:n);
if
k~=n

69
fori=1:n
l(i,k)=(a(i,k)‐l(i,1:k‐1)*r(1:k‐1,k))/r(k,k);
end
end
end

§6.PHÂNTÍCHMATRẬNTHEOPHƯƠNGPHÁPCHOLESKI
ThuậttoánCholeskichophépphântíchmatrận[A]thànhtíchhaima
trận:
 [A]=[L][L]
T
.
Thuậttoánnàyđòihỏi:
‐[A]làmatrậnthực,đốixứng
‐[A]làmatrậnxácđịnhdương
Tavuông[A]cấp3theothuậttoánCholeski:
11 12 13 11 11 21 31
21 22 23 21 22 22 32
31 32 33 31 32 33 33
aaa l 00lll
aaa ll 00ll
aaa lll 00l
⎡⎤⎡⎤⎡⎤
⎢⎥⎢⎥⎢⎥
=
⎢⎥⎢⎥⎢⎥
⎢⎥⎢⎥⎢⎥
⎣⎦⎣⎦⎣⎦

Saukhithựchiệnphépnhântacó:

2
11 12 13 11 11 21 11 31
22
21 22 23 11 21 21 22 21 31 22 32
222
31 32 33 11 31 21 31 22 32 31 32 33
a a a l ll ll
aaa llll llll
aaa lllllllll
⎡⎤
⎡⎤
⎢⎥
⎢⎥
=+ +
⎢⎥
⎢⎥
⎢⎥
⎢⎥
+++
⎣⎦
⎣⎦

Vếphảilàmatrậnđốixứng.Cânbằngcácphầntửcủahaimatrậntacó:
11 11 21 21 11 31 31 11
222
22 22 21 32 32 21 31 22 33 33 31 32
l a la/l la/l
lall(all)/llall
== =
=− =− =−−

Tổngquát,vớimatrậncấpn,tacó:
[][]
()
j
T
i1 j1 i 2 j2 ik jk
ij
k1
LL ll ll ll i j
=
=++⋅⋅⋅+= ≥


Cânbằngvớiphầntửcủamatrận[A]tacó:

j
ij ik jk
k1
a l l i j,j 1, ,n j 1,2, ,n
=
==+=


Domatrận[L]làmatrậntamgiáctráinênđốivớicộtthứnhấttacó:

11 11 i1 i1 11
la la/l==
Đốivớicộtkhác,rútl
ijrakhỏitổngtacó:

70

j
1
ij ik jk ij jj
k1
allll

=
=+


Nếui=j(phầntửtrênđườngchéo)thì:

j1
2
jj jj jk
k1
l a l j 2,3, ,n

=
=− =


vàphầntửnằmngoàiđườngchéo:

j1
ij ij ik jk
k1
jj
1
l a l l j 2, 3, , n i j 2, j 3, ,n
l

=
⎛⎞
=− = =++
⎜⎟
⎝⎠


Dựavàothuậttoántrêntaxâydựnghàm
choleski()

functionL=choleski(A)
%PhantichmatranathanhA=LL’.
%Cuphap:L=choleski(A)
f=posdef(A);
iff==0
error(ʹMatrankhongxacdinhduong!ʹ);
return
end
n=size(A,1);
forj=1:n
temp=A(j,j)‐
dot(A(j,1:j‐1),A(j,1:j‐1));
iftemp<0.0
error(ʹMatrankhongxacdinhduongʹ)
end
A(j,j)=sqrt(temp);
fori=j+1:n
A(i,j)=(A(i,j)‐dot(A(i,1:j‐1),A(j,1:j‐1)))/A(j,j);
end
end
L=tril(A);

functionf=posdef(M)
%Kiemtralieu
matranMcoxacdinhduonghaykong
isposdef=true;

71
fori=1:length(M)
if(det(M(1:i,1:i))<=0)
isposdef=false;
break;
end
end
f=isposdef;%0neusai,1neudung

§7.PHÂNTÍCHQRBẰNGTHUẬTTOÁNHOUSEHOLDER
Chomatrận[A],phântíchQRcủanóchota:
 [A]=[Q]*[R]
Trongđó[Q]làmatrậntrựcgiaovà[R]làmatrậntamgiácphải.
TadùngbiếnđổiHouseholderđểtìmcácmatrận[Q]và[R].

[][][]
[]
[
]
−−

⋅⋅ =
n1 n2 1
HH HAR(1)
Nhưvậy:

[]
[][][]
(
)
[]
[] [ ][ ]
[]
[][ ][ ]
[][][]

−−
−− − −
−−
= ⋅⋅⋅ = ⋅⋅⋅
= ⋅⋅⋅ =
1
11
n1 n2 1 1 n2 n1
1n2n1
AHH H RH H HR
HHHRQR
 (2)
TíchcủatấtcảcácmatrậnHouseholder:

[]
[][ ][ ]
−−
= L
1n2n1
QH H H(3)
khôngnhữngđốixứngmàcòntrựcgiaonhưmỗimatrận[H
k]:

[][]
[][ ][ ]
(
)
[][ ][ ]
[ ][ ] [][][ ][ ]
[]
−− −−
−− −−
=⋅⋅⋅ ⋅⋅⋅
= ⋅⋅⋅ ⋅⋅⋅ =
T
T
1n2n11n2n1
TT T
n1 n2 1 1 n2 n1
QQ H H H H H H
HH HHHH E

Taxâydựnghàm
qrdecom()đểphântíchmatrận:

function[Q,R]=qrdecom(A)
%PhantichQR
n=size(A,1);
R=A;
Q=eye(n);
fork=1:n‐1
H=householder(R(:,k),k);
R=H*R;%Pt.(1) 
Q=Q*H;%Pt.(3)

Không có nhận xét nào:

Đăng nhận xét