58
CHƯƠNG 2: MA TRẬN
§1.MỘTSỐKHÁINIỆM
(Matrận[A]gọilà đối x ứngnếu[A]
T
=[A]
(Chomộtmatrậnvuông[A],cấpn.Tanóimatrận[A]khôngsuybiến
(nonsingular)nếumatrậncóthểnghịchđảođượchaynóicáchkhác,định
thứccủamatrậnkhác
không.
(Ma trận Hermitelàmột ma trận vuông cócácphần tử là s ố phức
bằngchuyểnvịliênhợpcủanó,nghĩalàphầntửởhàngicộtjbằngsốphức
liên
hợp của phân tử ở hàng j cột i
T
AA
∗
⎡
⎤
⎡⎤
=
⎣⎦
⎣
⎦
. Ví dụ ma trận
[]
32j
A
2j 1
+
⎡⎤
=
⎢⎥
−
⎣⎦
làmatrậnHermite.
(MatrậnHouseholderlàmộtmatrậnvuôngdạng:
[][]
[][]
[][]
=−
T
T
2
HE UU
UU
Trongđóvlàvectơcộtkháczero
(Matrận[A]gọilàtrựcgiaonếu[A]
T
[A]=[E]
(Matrậnphức[U]gọilàmatrậnunitanếu
T
UU E
∗
⎡
⎤⎡⎤
⎡⎤
=
⎣⎦
⎣
⎦⎣⎦
.Vídụma
trận
[]
1j 1j
22
U
1j 1j
22
+−+
⎡⎤
⎢⎥
=
⎢⎥
+−
⎢⎥
⎢⎥
⎣⎦
làmatrậnunita
(Mộtmatrậnchỉcómộtcộtgọilàmộtvectơ
(ChuẩncủamộtvectơX,kíhiệulà X ,làmộtsốthựcthoảmãn:
‐
X >0
‐
cX c X=
‐
XY X Y+≤ +
GiảthiếtX=[x
1,x2,…,xn]
T
,tathườngdùngmộttrong3chuẩnsauđây:
‐
j
1
j
Xmaxx=
‐
n
j
2
j1
Xx
=
=
∑
59
‐
n
2
j
3
j1
Xx
=
=
∑
(Chuẩncủamộtmatrận[A],kíhiệulà A,làmộtsốthựcthoảmãn:
‐
A >0
‐
cA c A=
‐
AB A B+≤ +
‐
AB A B
≤
Tathườngdùngmộttrong3chuẩnsauđây:
‐
n
i,j
1
i
j1
Amaxa
=
=
∑
‐
n
i,j
1
j
i1
Amaxa
=
=
∑
‐
n
2
i,j
3
i,j 1
Aa
=
=
∑
(Matrận[A]gọilàxácđịnhdươngnếuvớivectơ[x]bấtkìtacó:
[][ ][]
T
xAx 0>
(Matrận[A]gọilànửaxácđịnhdươngnếuvớivectơ[x]bấtkìtacó:
[][ ][]
T
xAx 0≥
Tađịnhnghĩamatrậnxácđịnhâmvànửaxácđịnhâmmộtcáchtương
tự.
(Hạngcủamatrậnlàcấpcủamatrậnconcủamatrậnấycóđịnhthức
khác không còn mọi ma trận con cấp cao hơnđều cóđịnh thưc bằng
không(matrậnconlàmatrậncóđược
bằngcáchxoámộtsốhàngvàcộtcủa
matrậnbanđầu).
§2.BIẾNĐỔIHOUSEHOLDER
1. Ma trận Householder
: Ta bi ếnđổi ma trận [A] về dạng có các phần tử
thuộcđường chéo chính, các phần tử phía trên và phía dướiđường chéo
chínhkháczero,còncácphầntửcònlạibằngzero(matrậnba
đườngchéo)
bằngcáchdùngphépbiếnđổiHouseholder.
PhépbiếnđổiHouseholderdùngmatrậnHouseholder.
[][]
[][]
=−
T
UU
HE
Q
(1)
60
Trongđó:
[][] []
==
2
T
11
QUU U
22
(2)
Do[H]đốixứngnên:
[][][][] []
[][]
[]
[][]
⎛⎞⎛⎞
==− −
⎜⎟⎜⎟
⎝⎠⎝⎠
TT
T
UU UU
HH HH E E
QQ
[]
[][]
[][][]
(
)
[]
=− +
TT
T
2
UUU U
UU
E2
QQ
[]
[][]
[
]
()
[
]
[]
=− + =
T
T
2
U2QU
UU
E2 E
QQ
Từđâytathấy[H]cũnglàmatrậntrựcgiao.
Cho[X]làvectơbấtkỳvàkhảosátphépbiếnđổi[H][X].Chọn:
[U]=[X]+k[I
1](3)
Trongđó:
[]
=±kX
[]
=
⎡
⎤
⎣
⎦
L
T
1
I10 0
Tacó:
[][] []
[][]
[] []
[][]
[]
(
)
[]
⎧⎫
+
⎛⎞
⎪⎪
=− =−
⎨⎬
⎜⎟
⎝⎠
⎪⎪
⎩⎭
T
T
1
UX kI
UU
HX E X E X
QQ
[]
[][][]
[]
[]
(
)
[]
[]
[]
()
+
+
=− =−
T
T
2
1
1
UXX kI X
Uk kX
XX
QQ
Nhưng:
[]
[]
(
)
[]
[]
(
)
[] []
[][]
[]
(
)
[][]
=+ + = + + +
T
2
TT
T
2
11 1111
2Q X k I X k I X k X I I X k I I
=+ += +
222
11
k 2 kx k 2( k kx )
Nhưvậy:
[][][][]
[]
=−=− =−
⎡
⎤
⎣
⎦
L
T
1
HX X U kI k 0 0 0
(4)
nghĩalàphépbiếnđổiloạitrừtấtcảcácphầntửcủa[X]trừphầntửđầutiên.
2.BiếnđổiHouseholdermộtmatrậnđốixứng: Bây giờ ta ápdụng phép
biếnđổichomatrận[A]đốixứng:
[]
[]
[] [ ]
[]
[]
[]
[]
[][][]
[]
⎡⎤⎡ ⎤
⎡⎤
==
⎡⎤
⎢⎥⎢ ⎥
⎢⎥
⎣⎦
′
′
⎣⎦
⎣⎦⎣ ⎦
TT
T
11 11
1
aX a X
10
PA
X A HX HA
0H
(5)
61
Trongđó[X]làcộtđầutiêncủa[A]vớiphầntửđầutiênbịbỏđi.[A’]cóđược
từ[A]bằngcáchbỏđicộtvàhàngđầutiên.Matrận[H]cấp(n‐1)đượcxây
dựngtheocác
côngthức(1)÷(3).Do(4)tathấyphépbiếnđổinàylàmcột
đầutiêncủa[A]trởthành:
[][]
⎡⎤
⎢⎥
−
⎢⎥
⎡⎤
⎢⎥
=
⎢⎥
⎢⎥
⎣⎦
⎢⎥
⎢⎥
⎣⎦
M
11
11
a
k
a
0
HH
0
Phépbiếnđổi:
[]
[][]
()
[][][]
[]
[]
[]
⎡⎤
=→
⎡⎤ ⎡⎤
⎢⎥
⎣⎦ ⎣⎦
′
⎢⎥
⎣⎦
T
11
11
aHX
PAP A
HX HA H
(6)
sẽđườngchéohoáhàngđầutiênvàcộtđầutiêncủamatrận[A].Sơđồbiến
đổicủamatrận4
×4là:
Hàngvà cộtthứ2củamatrận[A]đượcbiếnđổitiếpbằngcáchdùngphép
biếnđổiđốivớiphầnbênphải,phíadướicủamatrận.Phépbiếnđổinàycó
thểbiểudiễnbằng
[]
[]
[]
[
]
→
22
PAP A,trongđó:
[]
[]
[]
[] [ ]
⎡⎤
=
⎢⎥
⎣⎦
T
2
2
E0
P
0H
(7)
với[E
2]làmatrậnđơnvị2×2và[H]làmatrận(n‐2)×(n‐2)cóđượcbằng
cáchchọn[X]từ(n‐2)phầntửphíadướicủacộtthứ2củamatrận[A].Thực
hiện(n‐2)phépbiếnđổi:
[]
[]
[]
[] [ ]
⎡⎤
=
⎢⎥
⎣⎦
T
i
i
E0
P
0H
i=1,2, ,n‐2
đểcóđượcmatrậnbađườngchéo(tridiagonal).Tacó:
×
1 0 0 0
0
0
0
[Q]
a11 a12 a13 a14
a21
a31
a41
[A’]
1 0 0 0
0
0
0
[Q]
×
=
a11 ‐k 0 0
‐k
0
0
[Q][A’]
[Q]
62
[]
[]
[]
[]
[][]
[]
[
]
[]
[]
[]
[][]
⎛⎞
′
′′ ′ ′
= − =− =−
⎜⎟
⎝⎠
T
TT
AU
UU
AH A E A U A VU
QQ
Trongđó:
[]
[]
[]
′
=
AU
V
Q
(8)
Dovậ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)
Tathấyngayphépbiếnđổicódạng:
[]
[]
[]
[]
[]
[
]
[
]
[
]
′′
=− −
TT
HA H A WU UW(11)
Thuậttoáncóthểtómlạinhưsau:
‐Cho[A’]làmatrậnvuôngcấp(n‐i)cóđượctừphầndướibênphải
củamatrận[A]
‐Đặt
++
=
⎡⎤
⎡⎤
⎣⎦
⎣⎦
L
T
i 1,i i 2,i n,i
Xa a a
‐Tính
[]
X.Chok=
[]
X nếux1>0vàk=‐
[
]
X nếux1<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
Taxâydựnghàm
housetrans()đểthựchiệnthuậttoántrên:
functionA=housetrans(A)
%BiendoiHouseholdermatranAthanhmatran
%bađườngchéodang[c\d\c].
%Decocvaddungd=diag(A),c=diag(A,1).
n=size(A,1);
fork=1:n‐2
u=A(k+1:n,k);
uMag=sqrt(dot(u,u));
ifu(1)<0;
uMag=‐uMag;
end
u(1)=u(1)+uMag;
A(k+1:n,k)=u;%LuuuvaophanduoicuaA.
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);
fori=1:n
k(i,i)=A(i,i);
end
fori=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ươngtrình
cthousetrans.m:
clearall,clc
a=[1234;2935;3337;4576];
b=householder(a)
d=diag(b)
c=diag(b,1)
§3.BIẾNĐỔITHÀNHMATRẬNHESSENBERG
Nếumatrận[A]làmatrậnđốixứng,phươngphápHouseholdercóthể
đượcsửdụngđểbiếnđổinóthànhmatrậnđồngdạngđốixứngbađường
chéo.Nếumatrận[A]khôngđốixứ
ng,phươngphápHouseholderbiếnđổi
matrận[A]thànhmatrậnđồngdạngHessenberg.
MatrậnHessenberglàmatrậncó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
TathựchiệnphépbiếnđổiHouseholdertrênmatrận[A]vàcóđược:
[Q][H][Q’]=[A]
trongđó[Q]làmatrậntrựcgiao(tagọiđâylàphântíchHessenbergmatrận
[A]).
Thuậttoáncóthểtóm
lạinhưsau:
‐Cho[Q]làmatrậnđơnvịcấpn
‐Đặt
+
=
⎡⎤
⎡⎤
⎣⎦
⎣⎦
L
T
i2,i n,i
X0a a
‐Tính
[]
X.Choα=
[]
X nếuai+2,i>0vàα=‐
[
]
X nếuai+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
Taxâydựnghàm
hessenberg()đểthựchiệnphépphântíchtrên:
function[H,Q]=hessenberg(a)
[n,n]=size(a);
q=eye(n);
fork=1:n‐2
alfa=0;
forj=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);
fori=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ântíchmatrậntadùngchươngtrìnhcthessenberg.m:
clearall,clc
a=[1234;5674;648 9;3579];
[H,Q]=hessenberg(a)
§4.PHÂNTÍCHMATRẬNTHEOPHƯƠNGPHÁPDOOLITTLE
66
Mộtmatrậnkhôngsuybiến[A]gọilàphântíchđượcthànhtíchhaima
trận[L]và[R]nếu:
[A]=[L][R]
Việcphântíchnày,nếutồntại,làkhôngduynhất.
Nếuma
trận[L]cócácphầntửnằmtrênđườngchéochínhbằng1,tacó
phépphântíchDoolittle.
Nếumatrận[R]cócácphầntửnằmtrênđườngchéochínhb ằng1,ta
cóphépphântíchCrout.
Nếu
[R]=[L]
T
(hay[L]=[R]
T
)tacóphépphântíchCholeski.
Vớimatrậnbậc3,[L]và[R]códạng:
[] []
11 12 13
21 22 23
31 32 33
100 rrr
Ll 10 R0rr
ll1 00r
⎡⎤ ⎡ ⎤
⎢⎥ ⎢ ⎥
==
⎢⎥ ⎢ ⎥
⎢⎥ ⎢ ⎥
⎣⎦ ⎣ ⎦
Đểtìml
ijvàrijtathựchiệnphépnhân.Saukhinhântacó:
[]
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âygiờtathựchiệnphépkhửGaussđốivớiphươngtrìnhtrên.Đầutiênta
chọnhàngthứnhấtlàmtrụvàthựchiênphépbiếnđổi:
hàng2‐l
21×hàng1(khửa21)→hàng2
hàng3‐l
31×hàng1(khửa31)→hàng3
kếtquảtacó:
[]
11 12 13
12223
22 32 23 32 33
rr r
A0r r
0rl rl r
⎡⎤
⎢⎥
=
⎢⎥
⎢⎥
+
⎣⎦
Sauđótalấyhàngthứhailàmtrụvàthựchiệnbiếnđổi:
hàng3‐l32
×hàng2(khửa32)→hàng3
vàcó:
[]
11 12 13
22223
33
rrr
A0rr
00r
⎡⎤
⎢⎥
=
⎢⎥
⎢⎥
⎣⎦
Nhưvậytathấyngayrằngmatrận[R]làmatrậncóđượckhithựchiện
loạitrừGausstiếnma trận[A]vàcácphầntửcủa[L]làcácnhânt
ửdùngkhi
67
loạitrừa ij.Điềuđócónghĩalàđểtìmmatrận[L]và[R]tadùngphépkhử
Gausstiến.Taxâydựnghàm
doolittle()đểthựchiệnloạiphântíchDoolittle.
function[l,r]=doolittle(A)
%PhantichmatranAthanhA=L*U
n=size(A,1);
u=zeros(n);
fork=1:n‐1
fori=k+1:n
ifA(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);
fori=1:n
l(i,i)=1;
end
l=triu(A);
fori=1:n
l(i,i)=A(i,i);
end
§5.PHÂNTÍCHMATRẬNTHEOPHƯƠNGPHÁPCROUT
TươngtựnhưthuậttoánDoolittle,tacóthểphântíchmatrận[A]theo
thuậttoánCroutthànhtíchcủamatrận[L]và[R].Cácmatrậnbậc3theo
Croutcódạng:
[] []
11 12 13
21 22 23
31 32 33
l00 1rr
Lll 0 R01r
lll 001
⎡⎤ ⎡⎤
⎢⎥ ⎢⎥
==
⎢⎥ ⎢⎥
⎢⎥ ⎢⎥
⎣⎦ ⎣⎦
Đểtìml
ijvàrijtathựchiệnphépnhân.Saukhinhântacó:
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ộtcáchtổngquáttacó:
vớij>i: l
ij=rji=0
vớii=1: r
1j=a1j(j=1tớin)
l
j1=aj1/r11(j=1tớin)
vớii=2tớin
∑
−
=
−=
1i
1k
kjik
ijij
rlar (j=itớin)
ii
1i
1k
kijk
ji
ji
r
rla
l
∑
−
=
−
= (j=itớin)
Taxâydựnghàm
crout()đểphântíchmatrậntheothuậttoánCrout:
function[l,r]=crout(a)
n=size(a,1);
l=zeros(n);
r=zeros(n);
fori=1:n
r(1,i)=a(1,i);
l(i,i)=1.;
l(i,1)=a(i,1)/a(1,1);
end
fork=2:n
r(k,k:n)=a(k,k:n)‐l(k,1:k)*r(1:k,k:n);
if
k~=n
69
fori=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ÂNTÍCHMATRẬNTHEOPHƯƠNGPHÁPCHOLESKI
ThuậttoánCholeskichophépphântíchmatrận[A]thànhtíchhaima
trận:
[A]=[L][L]
T
.
Thuậttoánnàyđòihỏi:
‐[A]làmatrậnthực,đốixứng
‐[A]làmatrậnxácđịnhdương
Tavuông[A]cấp3theothuậttoánCholeski:
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
⎡⎤⎡⎤⎡⎤
⎢⎥⎢⎥⎢⎥
=
⎢⎥⎢⎥⎢⎥
⎢⎥⎢⎥⎢⎥
⎣⎦⎣⎦⎣⎦
Saukhithựchiệnphépnhântacó:
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ảilàmatrậnđốixứng.Cânbằngcácphầntửcủahaimatrậntacó:
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ổngquát,vớimatrậncấpn,tacó:
[][]
()
j
T
i1 j1 i 2 j2 ik jk
ij
k1
LL ll ll ll i j
=
=++⋅⋅⋅+= ≥
∑
Cânbằngvớiphầntửcủamatrận[A]tacó:
j
ij ik jk
k1
a l l i j,j 1, ,n j 1,2, ,n
=
==+=
∑
Domatrận[L]làmatrậntamgiáctráinênđốivớicộtthứnhấttacó:
11 11 i1 i1 11
la la/l==
Đốivớicộtkhác,rútl
ijrakhỏitổngtacó:
70
j
1
ij ik jk ij jj
k1
allll
−
=
=+
∑
Nếui=j(phầntửtrênđườngchéo)thì:
j1
2
jj jj jk
k1
l a l j 2,3, ,n
−
=
=− =
∑
vàphầntửnằmngoàiđườngché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ựavàothuậttoántrêntaxâydựnghàm
choleski()
functionL=choleski(A)
%PhantichmatranathanhA=LL’.
%Cuphap:L=choleski(A)
f=posdef(A);
iff==0
error(ʹMatrankhongxacdinhduong!ʹ);
return
end
n=size(A,1);
forj=1:n
temp=A(j,j)‐
dot(A(j,1:j‐1),A(j,1:j‐1));
iftemp<0.0
error(ʹMatrankhongxacdinhduongʹ)
end
A(j,j)=sqrt(temp);
fori=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);
functionf=posdef(M)
%Kiemtralieu
matranMcoxacdinhduonghaykong
isposdef=true;
71
fori=1:length(M)
if(det(M(1:i,1:i))<=0)
isposdef=false;
break;
end
end
f=isposdef;%0neusai,1neudung
§7.PHÂNTÍCHQRBẰNGTHUẬTTOÁNHOUSEHOLDER
Chomatrận[A],phântíchQRcủanóchota:
[A]=[Q]*[R]
Trongđó[Q]làmatrậntrựcgiaovà[R]làmatrậntamgiácphải.
TadùngbiếnđổiHouseholderđểtìmcácmatrậ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íchcủatấtcảcácmatrậnHouseholder:
[]
[][ ][ ]
−−
= L
1n2n1
QH H H(3)
khôngnhữngđốixứngmàcòntrựcgiaonhưmỗimatrận[H
k]:
[][]
[][ ][ ]
(
)
[][ ][ ]
[ ][ ] [][][ ][ ]
[]
−− −−
−− −−
=⋅⋅⋅ ⋅⋅⋅
= ⋅⋅⋅ ⋅⋅⋅ =
T
T
1n2n11n2n1
TT T
n1 n2 1 1 n2 n1
QQ H H H H H H
HH HHHH E
Taxâydựnghàm
qrdecom()đểphântíchmatrận:
function[Q,R]=qrdecom(A)
%PhantichQR
n=size(A,1);
R=A;
Q=eye(n);
fork=1:n‐1
H=householder(R(:,k),k);
R=H*R;%Pt.(1)
Q=Q*H;%Pt.(3)
72
end
Hàm
householder()dùngđểtạoramatrậnHouseholder:
functionH=householder(x,k)
%TaomatranHouseholder
n=length(x);
tmp=sum(x(k+1:n).^2);
g=sqrt(x(k)^2+tmp);
c=sqrt((x(k)+g)^2+tmp);
u=zeros(n,1);
u(k)=(x(k)+g)/c;
u(k+1:n)=x(k+1:n)/c;
H=eye(n)‐2*u*uʹ;%matran
Householder
Đểphântíchmatrậntadùngchươngtrình
ctqrdecom.m:
clearall,clc
a=[413‐2;1‐241;3412;‐2123];
[q,r]=qrdecom(a)
§8.PHÂNTÍCHQRBẰNGTHUẬTTOÁNQUAYGIVENS
KỹthuậtquayGivenslàmộtphươngphápđểphântích ma trận [A]
thànhtíchcủamatrận[Q]vàmatrận[R]bằngcáchlàmchocácphầntửlần
lượtbằngzerochođếnkhicó được
ma trậntamgiácphải.Ýtưởnglàdùng
mộtmatrậnquayđơngiản2×2đặtdọctheođườngchéochínhcủamộtma
trậnđơnvịvàlàmchomộtphầntửcủa
matrậnbằngzero.Cácphầntửcủa
matrậnquayđểquaymộtvectơngượcchiềukimđồnghồmộtgócθlà:
[]
θ
θ− θ
⎡⎤
=
⎢⎥
θθ
⎣⎦
cos sin
Q
sin cos
Nếutamuốnquayvectơ[x
1x2]
T
vàmuốnlàmchox2bằngzerorồiquaytheo
chiềukimđồnghồmộtgócθ(hayngượcchiềukimđồnghồmộtgóc‐θ)trong
đó:
73
θ=
2
1
x
arctg
x
thìmatrậnquayđểthựchiệnphépquaynàytheochiềukimđồnghồmộtgóc
θlà:
[]
θ
θθ
⎡⎤
=
⎢⎥
−θ θ
⎣⎦
cos sin
Q
sin cos
Trongđó:
θ= =
+
1
22
12
x
cos c
xx
θ= =
+
2
22
12
x
sin s
xx
Dođó:
[]
θ
⎡⎤⎡⎤
==
⎢⎥⎢⎥
−−
+
⎣⎦⎣⎦
12
22
21
12
xx cs
1
Q
xx sc
xx
Chúýlànhưmongmuốn:
[]
θ
⎡⎤
+
⎡
⎤
+
⎡⎤⎡ ⎤
+
⎢⎥
===
+
⎢
⎥
⎢⎥⎢ ⎥
⎢⎥
−+
⎣⎦⎣ ⎦
⎢
⎥
⎣
⎦
⎢⎥
⎣⎦
22
12
22
112
22
12
12
212
xx
xcxsx
xx
Q
xx
xsxcx
0
0
NếuAlàmatrậnm×n,tasẽxemđiềugìxảyrakhitathaycácphầntửcủa
[Q]vàomatrậnconxácđịnhbằngcáccộtvàhàngthứi,các
cộtvàhàngthứj.
Nóicáchkháctathaymatrận2×2nàydọctheođườngchéochínhtạimộtsố
điểm:
[]
kl
kl
1 000
ki,lj
0cs0
c
k, l i; k,l j
G
s
ki;lj
0sc0
s
kj;li
0
0001
⎡
⎤
⎢
⎥
⎢
⎥
δ
≠≠
⎧
⎢
⎥
⎪
==
⎪
⎢
⎥
==
⎨
⎢
⎥
==
⎪
⎢
⎥
−
⎪
−
==
⎢
⎥
⎩
⎢
⎥
⎢
⎥
⎣
⎦
LLL
MO M M MO M
LLL
MM MOMMM
LLL
MM MMOM
LLL
Nhưvậy[G]làmatrậnđơnvịm×mngoạitrừcácgiátrịđãbịthaythế:
g
ii=gjj=c
g
ij=‐gij=s
Điềunàysẽtạoramatrậnunita:
[G]
T
[G]=[E]
nghĩalà:
74
=δ
∑
lk lp kp
l
gg
vàđòihỏi:
c
2
+s
2
=1
Điềunàyđúngvìcos
2
θ+sin
2
θ=1∀θ.Khimatrậnnàyđượcápdụngchoma
trậnm×ntacó:
⎧
δ= ≠
⎪
⎪
⎪
== =+=
⎨
⎪
⎪
=
−+ =
⎪
⎩
∑
∑∑
∑
kl lp kp
l
kp kl lp il lp ip jp
ll
jl lp ip jp
l
aaki,j
b
ga ga ca sa k i
ga sa ca k j
Nhưvậymatrậnmớichỉbịthayđổiởhàngivàcộtj.Tachọnsvàcsaocho
cácphầntửởcộtrvàhàngjbằngzero:
=
+
jr
22
j
rir
a
s
aa
=
+
ir
22
j
rir
a
c
aa
Nhưvậytasẽcó:
−+
==
+
jr ir ir jr
jr
22
jr ir
aa ab
b
0
aa
Taxâydựnghàm
givens()đểthựchiệnthuậttoántrên:
function[Q,R]=givens(A);
%PhantichQRbangthuattoanquayGivens
n=size(A,1);
Q=eye(n);
forj=1:n‐1
fori=n:‐1:j+1
z=1/sqrt(A(i‐1,j)^2+A(i,j)^2);
c=A(i‐1,j)*z;
s=A(i,j)*z;
A(i‐1:i,:)=[cs;‐sc]*A(i‐1:i,:);
Q(i‐1:i,:)=[cs;‐sc]*Q(i‐1:i,:);
end
end
R=A;
75
Q=Qʹ;
Đểphântíchmộtmatrậntadùngchươngtrình
ctgivens.m:
clearall,clc
A=[17243017;813207;21086;‐23‐43‐54‐26];
[Q,R]=givens(A)
§9.PHÂNTÍCHQRBẰNGTHUẬTTOÁNGRAM‐SCH MIDT
Tacóthểthựchiệnviệcphântíchmatrận[A]thànhtíchcácmatrận[Q]
và[R]bằngcáchtrựcgiaohoácáccộtcủamatrận[A].Tagọicáccộtcủama
trậ
n[A]làa1, ,an.Từcácvectơnàytamuốncón vectơtrựcgiaov1, ,vn.Vec
tơtrựcgiaođầutiênđượcchọnlà:
11
va=
Đểcóvectơthứhai,tadùngy
2nhưngtrừbớtđiphầny2cùngchiềuvớiv2.
Nhưvậytacó:
21 1
vyba=−
vớibđượcchọnsaochov
1trựcgiaovớiv2:
12 1 2 1 12 11
vv v(a bv) va bvv 0=−=− =
hay:
12
11
va
b
vv
=
Tiếptụcquátrìnhđếnbướcthứktacó:
k1
ik
kk i
ii
i1
va
va v
vv
−
=
=−
∑
Nhưvậythuậttoángồmcácbước:
‐
==
1
11 1 1
11
a
ra,q
r
- lặptừk=2đếnn
k1
kk ikikk
i1
qa rqr
−
=
⎛⎞
=−
⎜⎟
⎝⎠
∑
với
T
ik i k
rqa=
vàr
kkđượcchọnsaocho
k
q1
=
,nghĩalà:
76
kkik
za qr=−
kk
rz=
Taxâydựnghàm
qrgramschmidt()đểthựchiệnthuậttoántrên:
function[Q,R]=qrgramschmidt(A);
%PhantichmtbangthuattoanGram‐Schmidt
[m,n]=size(A);
R(1,1)=norm(A(:,1));
Q(:,1)=A(:,1)/R(1,1);
fork=2:n
R(1:k‐1,k)=Q(1:m,1:k‐1)ʹ*A(1:m,k);
z=A(1:m,k)‐Q(1:m,1:k‐1)*R(1:k‐1,k);
R(k,k)=
norm(z);
Q(1:m,k)=z/R(k,k);
end
Để phân tích một ma trận ta dùng chương trình chương trình
ctqrgamschmidt.m:
clearall,clc
a=[12345;67890;34567;89012;24681];
[q,r]=qrgramschmidt(a)
§10.PHÂNTÍCHMATRẬNTHEOGIÁTRỊRIÊNG
Chomatrận[A],tacó:
[A][X]=λ[X]
Nếutađặt[U]làmộtmatrậnmàcáccộtcủanólàcácvectơriêngcủama
trận[A]vàmatrận[Λ]làmatrậnđườ
ngchéocócácphầntửtrênđườngchéo
chínhlàλ
ithì:
[A][U]=[Λ][U]
hay:
[A]=[U][Λ][U]
‐1
Dạngnàycủamatrậnđượcgọilàdạngphântíchtheogiátrịriêngvàvectơ
riêng.Tadùngchươngtrình
cteigdecom.mđểphântíchmatrận:
clearall,clc
77
a=[135;349;596];
[L,U]=eigjacobi(a)
§11.PHÂNTÍCHLQ
Chomatrận[A]
T
,tacóthểphântíchQRmatrậnnàythành:
[A]
T
=[Q1][R1]
Do([Q][R])
T
=[R1]
T
[Q1]
T
nên:
([A]
T
)
T
=[A]=[L][Q]
vàtanhậnđượcphântíchLQcủama trận[A].Taxâydựnghàm
lqdecom()
đểthựchiệnthuậttoánnày:
function[Q,L]=lqdecom(A)
A=Aʹ;
[Q,L]=qrdecom(A);
L=Lʹ;
Q=Qʹ;
Đểphântíchmộtmatrậntadùngchươngtrình
ctlqdecom.m:
clearall,clc
a=[135;246;789];
[Q,L]=lqdecom(a)
§12.PHÂNTÍCHJORDAN
1.Matrậncóthểđườngchéohoá
:Matrận[A]gọilàcóthểđườngchéohoá
nếuvàchỉnếutồntạiphépbiếnđổiđồngdạng[V]saocho[A]= [V][Λ][V]
‐1
trongđó[Λ]làmatrậnđườngchéo[Λ]=diag(λ
1,λ2, ,λn).Điềukiệncầnđể
[A]cóthểđườngchéohoálà[A]cónvectơriêngđộclậptuyếntính.Điều
kiệnđủđể[A]cóthểđườngchéohoálà[A]cóngiátrịriêngphânbiệtvìkhi
[A]cón
giátrịriêngphânbiệtthìcácvectơriêngtươngứnglàđộclậptuyến
tính. Số lần lặp lại m
i của giá trị riêng λi gọi là vô số đại số (algebraic
multiplicity) của λ
i, kí hiệu là AM(λi ). Số vec tơ riêngđộc lập tuyến tính
tươngứngvớigiátrịriêngλigọilàvôsốhìnhhọc(geometricmultiplicity)
củaλ
i,kíhiệulàGM(λi).
78
2.DạngJordan:Khikhôngthểtìmđượcngiátrịriêngphânbiệt,nghĩalàma
trận[A]khôngcónvectơriêngđộclậptuyếntínhthìmatrận[A]khôngthể
đườngchéohoá.Tuynhiên,nếucóphépbiếnđổ
iđồngdạng[M]biếnđổi[A]
thành[J]:
[A]=[M][J][M]
‐1
Trongđó[J]làmatrậngầnđườngchéo:
[J]=diag(J
1, ,Jn)
[]
i
i
i
i
i
i
10 0
01
J
1
0
λ
⎡⎤
⎢⎥
λ
⎢⎥
λ
⎢⎥
=
⎢⎥
λ
⎢⎥
⎢⎥
λ
⎣⎦
L
OM
MO OM
MOO
MLL
làkhốiJordanvàmatrận[J]đượcgọilàdạngJordankinhđiểncủa matrận
[A].SốkhốiJordanbằngsốvectơriêngđộclậptuyếntínhcủamatrận[A],
nghĩalà
bằngGM(λi).Cụthể,mỗivectơriêngđộclậptuyếntínhtươngứng
vớimỗikhối.Dov ậynếumatrận[A]cócácvectơriêngđộclậptuyếntính
thìdạngJordantrùngvới
dạngđườngchéocủamatrận[S]
‐1
[A][S]=[ Λ] trong
đó[Λ]=diag(λ
1, ,λn)và[S]cócáccộtlàcácvectơriêngcủa[A]
3.XâydựngdạngJordancủamatrận[A]:Khi[A]khôngcónvectơriên g
độclậptuyếntínhđểtạoracáccộtcủamatrận[M]thìtacóthểthêmcácvec
tơđộclậptuyếntínhvàocácvectơriêngđểtạorama
trậnnày.
Trước hết ta khảo sát một giá trị riêng λ
i có GM(λi) < AM(λi). Nếu
GM(λ
i)=pi,AM(λi)=mithìtacầntìmmi‐pivectơđộclậptuyếntínhđểkết
hợpvớigiátrịriêngnày.Cácvectơnàyđượctạotừcácvectơriêngvàđược
gọilàvectơriêngtổngquáthoácủa[A].Gọiλlàgiá
trịriêng và[x]làvectơ
riêngtươngứng.k‐1vectơriêngtổngquáthoá{[x
1], ,[xk]}đượctạoranhư
sau:
[]
[] []
11
Ax x=λ
[]
[] [][]
221
Ax x x=λ +
M
[]
[] [][ ]
kkk1
Ax x x
−
=λ +
{[x
1], ,[xk]} tạo thànhchuỗi các vec tơ cóvec tơ [x1]đứngđầu.Chuỗinày
tươngứngvớikhốiJordanđơn.
79
[]
[][]
1n1n
10 0
010
0
Ax,,x x,,x
01
00
λ
⎡
⎤
⎢
⎥
λ
⎢
⎥
⎢
⎥
=
⎢
⎥
λ
⎢
⎥
⎢
⎥
λ
⎣
⎦
L
M
MOOO
KK
LL
LL
Xuấtpháttừvectơtổngquáthoábậckcủa[A]ứngvớiλ,kíhiệulà[x
k]tacó:
[x
k]
[x
k‐1]=([A]‐λ[E])[xk]
M
[xi]=([A]‐λ[E])
k‐i
[xk]
M
[x1]=([A]‐λ[E])
k‐1
[xk]
Chúýlà[x1]làmộtvectơriêngcủa[A]vì:
([A]‐λ[x1])=([A]‐λ[E])([A]‐λ[E])
k‐1
[xk]
Đểphântíchmatrận[A]tadùngthuậttoánFilipovgồmcácbướcsau:
‐Giảsửrằngkíchthướckhônggiancộtcủamatrận[A]làr<n.Phảicó
rvectơđộclậptuyến
tính[xi]trongkhônggiancộtmànólàcácvectơriêng
hayvectơriêngtổngquáthoá,nghĩalà[A][x
i]=λ[xi]hay[A][xi]=λ[xi]+[xi‐1]
‐Giảsửrằngkhônggiankhôngvàkhônggiancộtcủamatrận[A]có
phầnchungvớikíchthướcp.Mỗivectơ[x
i]trongjgguankhôngcủa[A]là
mộtvectơriêngtươngứngvớiλ=0,nhưvậy[A][x
i]=0.Bâygiờnếu[xi]cũng
làkhônggiancộtcủa[A]thì[x
i]=[A][yi]vớimọi[yi]
‐Cuốicùngdokíchthướccủakhônggiankhôngcủa[A]làn ‐rvàp
củacácvectơlàtrongcảkhônggiankhônglẫnkhônggiancộtnêncón‐r‐p
vectơ[z
i]ởtrongkhônggiankhôngmàkhôngởtrongkhônggiancột.
Cácvectơ[xi],[yi]và[zi]tìmđượclàđộclậptuyếntính.Chúng tạonên
cáccộtcủa[M]và[J]=[M][A][M]
‐1
làdạngJordan.
Taxâydựnghàm
jordandecom()thựchiệnthuậttoántrên:
function[M,J]=jordandecom(a)
%TinhphantichJordancuamatranA
%saochoA*M=M*J
small=2*sqrt(eps);
[r,c]=size(a);
80
ifr~=c
error(ʹMatranAphailamatranvuong!ʹ)
end
n=r;
ifn==1
J=a;
M=1;
return
end
ifn<1
J=[];
M=[];
return
end
[m,d]=eig(hess(a));
d=sort(diag(d));
tiny=norm(a)*eps;
%lamcacgiatribangzero
p=find(abs(d)<=tiny);
if~isempty(p)
d(p)=0;
end
%A*M=M*J
[M,J]=jord(a,d,small);
function[M,D]=jord(a,d,small)
%TinhphantichJordancuamatranA
norma=sqrt(mean(mean(abs(a))));
tiny=norma*eps;
ifnargin<3
small=(1+norma)*sqrt(eps);
end
[r,c]=size(a);
ifr~=c
error(ʹAphailamatranvuong!ʹ)
81
end
n=r;
I=eye(n);
ifr==1
D=a;
M=1;
return
end
ifr<1
D=[];
M=[];
return
end
condofa=cond(a);
ifcondofa>1e6
Condition_number_of_A=condofa
warning(ʹSodieukiencuaAqualon!ʹ);
end
d=d(:);
ifsize(d,1)~=n
d=d
error(ʹGiatririengkhongdung!ʹ)
end
da=det(a);
dp=prod(d);
e=abs(abs(da)‐abs(dp));
ife>sqrt(eps)
disp(ʹʹ)
warning(ʹCacgiatririengcothekhongchinhxac!ʹ)
end
ds=flipud(sort(d));
sds
=size(ds,1);
du=flipud(unique(ds));
sdu=size(du,1);
ifsdu==sds
82
[M,D]=eig(a);
return
end
M=[];
forkk=1:sdu
e=du(kk);
ameig=sum(ismember(ds,e));
a1=a‐e*I;
ifameig==1
[u,s,v]=svd(a1);
M=[Mv(:,end)];
else
pp=0;
ns=[];
pp
=pp+1;
aa=I;
fork=1:ameig
aa=a1*aa;
nn=size(nulld(aa,small),2);
ns(k)=nn;
end
nsaa=[0;ns(:)]ʹ;
dns=diff(nsaa);
ifmax(dns)~=dns(1)
Cond_of_A=cond(a)
savejord
M=I;
D
=I;
error(ʹKichthuockhonggiankhongsaiʹ)
end
clearec;
ec(1:dns(1))=1;
fork=2:length(dns)
ec(1:dns(k))=ec(1:dns(k))+1;
end