Professional Documents
Culture Documents
1.MTSKHINIM
(Matrn[A]gilixngnu[A]T=[A]
(Chomtmatrnvung[A],cpn.Tanimatrn[A]khngsuybin
(non singular) nu ma trn c th nghch o c hay ni cch khc, nh
thccamatrnkhckhng.
(MatrnHouseholderlmtmatrnvungdng:
2
[ H] = [E ] T [ U ][ U ]T
[U] [U]
Trongvlvectctkhczero
(Matrn[A]giltrcgiaonu[A]T[A]=[E]
T
(Matrnphc[U]gilmatrnunitanu U U = E .Vdma
1 + j 1 + j
2
2
trn [ U ] =
lmatrnunita
+
1
j
1
j
2
2
(Mtmatrnchcmtctgilmtvect
(ChuncamtvectX,khiul X ,lmtsthcthomn:
X >0
cX = c X
X + Y X + Y
GithitX=[x1,x2,,xn]T,tathngdngmttrong3chunsauy:
X 1 = max x j
j
X 2 = x j
j=1
58
X 3 =
xj
2
j=1
(Chuncamtmatrn[A],khiul A ,lmtsthcthomn:
A >0
cA = c A
A + B A + B
AB A B
Tathngdngmttrong3chunsauy:
A 1 = max a i ,j
i
j=1
n
A 1 = max a i ,j
j
A 3 =
i =1
a i ,j
2
i ,j=1
(Matrn[A]gilxcnhdngnuvivect[x]btktac:
(Matrn[A]gilnaxcnhdngnuvivect[x]btktac:
[ x ]T[ A ][ x] 0
Tanhnghamatrnxcnhmvnaxcnhmmtcchtng
t.
(Hngcamatrnlcpcamatrnconcamatrnycnhthc
khc khng cn mi ma trn con cp cao hn u c nh thc bng
khng(matrnconlmatrnccbngcchxomtshngvctca
matrnbanu).
2.BINIHOUSEHOLDER
1. Ma trn Householder: Ta bin i ma trn [A] v dng c cc phn t
thuc ng cho chnh, cc phn t pha trn v pha di ng cho
chnh khc zero, cn cc phn t cn li bng zero(ma trn ba ng cho)
bngcchdngphpbiniHouseholder.
PhpbiniHouseholderdngmatrnHouseholder.
T
U ][ U ]
[
(1)
[ H] = [ E]
Q
59
Trong:
1
1
2
T
Q = [ U ] [ U ] = [ U ]
2
2
Do[H]ixngnn:
T
T
U ][ U ]
U ][ U ]
[
[
T
[ H] [ H] = [ H][ H] = [ E]
[ E ]
Q
Q
T
T
T
U ][ U ] [ U ] [ U ][ U ] [ U ]
[
= [ E ] 2
+
Q
Q2
(2)
T
T
U ][ U ] [ U ] ( 2Q ) [ U ]
[
= [ E ] 2
+
= [E]
2
Q
Q
Tytathy[H]cnglmatrntrcgiao.
Cho[X]lvectbtkvkhostphpbini[H][X].Chn:
[U]=[X]+k[I1]
(3)
Trong:
k = [X]
[I1 ] = 1
0 L 0
Tac:
T
T
[ U] ([ X ] + k [ I1 ])
U ][ U ]
[
[ H][ X ] = [E]
[ X ]
[ X ] = [ E ]
Q
Q
[ U ] ([ X ]T[ X ] + k [ I1 ] [ X ])
T
= [X]
Nhng:
= [X]
[ U ] ( k 2 + k[ X1 ])
Q
2Q = ([ X ] + k [ I1 ]) ([ X ] + k [ I1 ]) = [ X ] + k [ X ] [ I1 ] + [ I1 ] [ X ] + k 2 [ I1 ] [ I1 ]
T
[ H][ X ] = [ X ] [ U ] = k [ I1 ] = k 0 0 L 0
T
(4)
nghalphpbiniloitrttcccphntca[X]trphntutin.
2. Bin i Householder mt ma trn i xng: By gi ta p dng php
binichomatrn[A]ixng:
1 [ 0 ]T a11 [ X ]T a11
[ X ]T
(5)
P1 [ A ] =
=
X
A
H
X
H
A
0
H
[
]
[
][
]
[
]
[
]
[
]
[
]
[
]
60
Trong[X]lctutinca[A]viphntutinbbi.[A]cc
t[A]bngcchbictvhngutin.Matrn[H]cp(n1)cxy
dng theo cc cng thc (1) (3). Do (4) ta thy php bin i ny lm ct
utinca[A]trthnh:
a11
k
a11
H H = 0
[ ][ ] M
0
Phpbini:
a
P1 [ A ]P1 = 11
[ H ][ X ]
([H][ X ]) [ A]
[ H ][ A][ H ]
T
(6)
sngchohohngutinvctutincamatrn[A].Sbin
icamatrn44l:
1 0 0 0
a11 a12 a13 a14
1 0 0 0
a11 k 0 0
0
0
k
a21
[Q][A]
[Q]
[Q]
0
0
0
a31 [A]
[Q]
0
0
0
a41
Hngvctth2camatrn[A]cbinitipbngcchdngphp
biniiviphnbnphi,phadicamatrn.Phpbininyc
thbiudinbng [ P2 ][ A ][ P2 ] [ A ] ,trong:
[ E 2 ] [ 0 ]T
(7)
[P2 ] =
0
H
[
]
[
]
vi[E2]lmatrnnv22v[H]lmatrn(n2)(n2)ccbng
cchchn[X]t(n2)phntphadicactth2camatrn[A].Thc
hin(n2)phpbini:
[ Ei ] [ 0 ]T
[Pi ] =
i=1,2,...,n2
0
H
[
]
[
]
ccmatrnbangcho(tridiagonal).Tac:
61
U ][ U ]
[ A][ U] U T = A V U T
[
[ ] [ ] [ ][ ]
[ A][H] = [ A] [E]
= [ A]
Q
Q
Trong:
[ A][ U]
(8)
[V] =
Q
Dovy:
T
U ][ U ]
[
T
[ H ][ A ][ H ] = [ E ]
[ A] [ V ][ U ]
Q
T
U ][ U ]
[
T
= [ A ] [ V ][ U ]
[ A] [ V ][ U ]T
Q
= [ A] [ V ][ U ]
T
= [ A] [ V ][ U ] [ U ][ V ] + 2g [ U ][ U ]
T
Trong:
T
U] [ V]
[
g=
2Q
t:[W]=[V]g[U]
Tathyngayphpbinicdng:
[ H][ A][ H] = [ A] [ W ][ U ]T [ U ][ W ]T
(9)
(10)
(11)
Thuttoncthtmlinhsau:
Cho[A]lmatrnvungcp(ni)cctphndibnphi
camatrn[A]
t X = a i+1,i
a i+ 2 ,i L a n ,i
Tnh [ X ] .Chok= [ X ] nux1>0vk= [ X ] nux1<0
Cho U = k + x1
Tnh Q =
[ U]
x 2 L x n i
2
[ A][ U]
Tnh [ V ] =
Q
T
[U] [ V]
Tnh g =
2Q
62
Tnh[W]=[V]g[U]
T
T
Tnh [ A ] = [ A] [ W ][ U ] [ U ][ W ]
t a i ,i+1 = a i+1,i = k
Taxydnghmhousetrans()thchinthuttontrn:
functionA=housetrans(A)
%BiendoiHouseholdermatranAthanhmatran
%bangchodang[c\d\c].
%Decocvaddungd=diag(A),c=diag(A,1).
n=size(A,1);
fork=1:n2
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=vg*u;
A(k+1:n,k+1:n)=A(k+1:n,k+1:n)v*uu*v;
A(k,k+1)=uMag;
end
k=zeros(n);
fori=1:n
k(i,i)=A(i,i);
end
fori=1:n1
k(i,i+1)=A(i,i+1);
k(i+1,i)=A(i,i+1);
end
A=k;
63
clearall,clc
a=[1234;2935;3337;4576];
b=householder(a)
d=diag(b)
c=diag(b,1)
3.BINITHNHMATRNHESSENBERG
Numatrn[A]lmatrnixng,phngphpHouseholdercth
c s dng bin i n thnh ma trn ng dng i xng ba ng
cho.Numatrn[A]khngixng,phngphpHouseholderbini
matrn[A]thnhmatrnngdngHessenberg.
MatrnHessenberglmatrncdng:
a 11 a 12 a 13 L a 1,n
a
a 22 a 23 L a 2 n
21
0
a
a
a
L
[ ]=
32
33
2n
M M M L
M
0
0
0 L a nn
TathchinphpbiniHouseholdertrnmatrn[A]vcc:
[Q][H][Q]=[A]
trong[Q]lmatrntrcgiao(tagiylphntchHessenbergmatrn
[A]).
Thuttoncthtmlinhsau:
Cho[Q]lmatrnnvcpn
T
t X = 0 a i+ 2 ,i L a n ,i
Tnh [ X ] .Cho= [ X ] nuai+2,i>0v= [ X ] nuai+2,i<0
Cho U = 0 + x 2 L x n i
[U]
Tnh =
Tnh [ P ] = [ E ]
[ U ][ U]
64
Tnh [ Q] = [ Q][ P ]
Tnh [ A ] = [ P ][ A ][ P ]
Taxydnghmhessenberg()thchinphpphntchtrn:
function[H,Q]=hessenberg(a)
[n,n]=size(a);
q=eye(n);
fork=1:n2
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;
phntchmatrntadngchngtrnhcthessenberg.m:
clearall,clc
a=[1234;5674;6489;3579];
[H,Q]=hessenberg(a)
4.PHNTCHMATRNTHEOPHNGPHPDOOLITTLE
65
Mtmatrnkhngsuybin[A]gilphntchcthnhtchhaima
trn[L]v[R]nu:
[A]=[L][R]
Vicphntchny,nutnti,lkhngduynht.
Numatrn[L]cccphntnmtrnngchochnhbng1,tac
phpphntchDoolittle.
Numatrn[R]cccphntnmtrnngchochnhbng1,ta
cphpphntchCrout.
Nu[R]=[L]T(hay[L]=[R]T)tacphpphntchCholeski.
Vimatrnbc3,[L]v[R]cdng:
1 0 0
r11 r12 r13
[ L] = l 21 1 0
[ R ] = 0 r22 r23
l 31 l 32 1
0 0 r33
tmlijvrijtathchinphpnhn.Saukhinhntac:
r12
r13
r11
r13l 21 + r23
[ A ] = r11l 21 r12l 21 + r22
BygitathchinphpkhGaussiviphngtrnhtrn.utinta
chnhngthnhtlmtrvthchinphpbini:
hng2l21hng1(kha21)hng2
hng3l31hng1(kha31)hng3
ktqutac:
r13
r11 r12
[ A1 ] = 0 r22 r23
hng3l32hng2(kha32)hng3
vc:
r11 r12 r13
[ A 2 ] = 0 r22 r23
0 0 r33
Nhvytathyngayrngmatrn[R]lmatrncckhithchin
loitrGausstinmatrn[A]vccphntca[L]lccnhntdngkhi
66
loitraij.iu cnghaltmmatrn[L]v[R]tadngphpkh
Gausstin.Taxydnghmdoolittle()thchinloiphntchDoolittle.
function[l,r]=doolittle(A)
%PhantichmatranAthanhA=L*U
n=size(A,1);
u=zeros(n);
fork=1:n1
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.PHNTCHMATRNTHEOPHNGPHPCROUT
TngtnhthuttonDoolittle,tacthphntchmatrn[A]theo
thut ton Crout thnh tch ca ma trn [L] v [R]. Cc ma trn bc 3 theo
Croutcdng:
l11 0 0
1 r12 r13
[ L ] = l 21 l 22 0
[ R ] = 0 1 r23
l 31 l 32 l 33
0 0 1
tmlijvrijtathchinphpnhn.Saukhinhntac:
67
l11r13
l11 l11r12
a21=l21r11;
a22=l21r12+r22;a23=l31r11
a31=l31r11;a32=l31r12;
a33=l31r13+l32r23+r33
Mtcchtngquttac:
vij>i: lij=rji=0
vii=1: r1j=a1j(j=1tin)
lj1=aj1/r11(j=1tin)
vii=2tin
i 1
l ji =
a ji l jk rki
k =1
(j=itin)
rii
Taxydnghmcrout()phntchmatrntheothuttonCrout:
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);
ifk~=n
68
fori=1:n
l(i,k)=(a(i,k)l(i,1:k1)*r(1:k1,k))/r(k,k);
end
end
end
6.PHNTCHMATRNTHEOPHNGPHPCHOLESKI
ThuttonCholeskichophpphntchmatrn[A]thnhtchhaima
trn:
[A]=[L][L]T.
Thuttonnyihi:
[A]lmatrnthc,ixng
[A]lmatrnxcnhdng
Tavung[A]cp3theothuttonCholeski:
a11 a12 a13 l11 0 0 l11 l 21 l 31
a
21 a 22 a 23 = l 21 l 22 0 0 l 22 l 32
a 31 a 32 a 33 l 31 l 32 l 33 0 0 l 33
Saukhithchinphpnhntac:
2
l11l 21
a11 a12 a13 l11
2
2
a
a
a
=
l
l
l
+
l
21
22
23
11
21
21
22
a 31 a 32 a 33 l11l 31 l 21l 31 + l 22 l 32
l11l 31
l 21l 31 + l 22l 32
2
2
2
l 31
+ l 32
+ l 33
Vphilmatrnixng.Cnbngccphntcahaimatrntac:
l11 = a11
l 21 = a 21 / l11
l 31 = a 31 / l11
2
2
2
l 22 = a 22 l 21
l 32 = (a 32 l 21l 31 ) / l 22
l 33 = a 33 l 31 l 32
Tngqut,vimatrncpn,tac:
([L][L] )
ij
= l i1l j1 + l i2 l j2 + + = l ik l jk i j
k =1
Cnbngviphntcamatrn[A]tac:
j
a ij = l ik l jk i = j, j + 1,...,n j = 1,2,...,n
k =1
Domatrn[L]lmatrntamgictrinnivictthnhttac:
l11 = a11
l i1 = a i1 / l11
ivictkhc,rtlijrakhitngtac:
69
j1
a ij = l ik l jk + l ijl jj
k =1
Nui=j(phnttrnngcho)th:
j1
l jj = a jj l 2jk
j = 2,3,...,n
k =1
vphntnmngoingcho:
j1
l ij = a ij l ik l jk
j = 2, 3,..., n
k =1
l jj
i = j + 2, j + 3,...,n
Davothuttontrntaxydnghmcholeski()
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:j1),A(j,1:j1));
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:j1),A(j,1:j1)))/A(j,j);
end
end
L=tril(A);
functionf=posdef(M)
%KiemtralieumatranMcoxacdinhduonghaykong
isposdef=true;
70
fori=1:length(M)
if(det(M(1:i,1:i))<=0)
isposdef=false;
break;
end
end
f=isposdef;%0neusai,1neudung
7.PHNTCHQRBNGTHUTTONHOUSEHOLDER
Chomatrn[A],phntchQRcanchota:
[A]=[Q]*[R]
Trong[Q]lmatrntrcgiaov[R]lmatrntamgicphi.
TadngbiniHouseholdertmccmatrn[Q]v[R].
(1)
[Hn1 ][Hn2 ] [H1 ][ A ] = [ R ]
Nhvy:
1
1
[ A ] = ([ Hn1 ][ H n2 ] [ H1 ]) [ R ] = [ H1 ] [ Hn2 ] [H n1 ][ R ]
1
= [ H1 ] [ H n 2 ][ H n 1 ][ R ] = [ Q ][ R ]
TchcattcccmatrnHouseholder:
[ Q] = [ H1 ]L[ H n 2 ][ H n 1 ]
(2)
(3)
khngnhngixngmcntrcgiaonhmimatrn[Hk]:
T
T
T
= [ H n 1 ] [ H n 2 ] [ H1 ] [ H1 ] [ H n 2 ][ H n 1 ] = [ E ]
T
Taxydnghmqrdecom()phntchmatrn:
function[Q,R]=qrdecom(A)
%PhantichQR
n=size(A,1);
R=A;
Q=eye(n);
fork=1:n1
H=householder(R(:,k),k);
R=H*R;%Pt.(1)
Q=Q*H;%Pt.(3)
71
end
Hmhouseholder()dngtoramatrnHouseholder:
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;%matranHouseholder
phntchmatrntadngchngtrnhctqrdecom.m:
clearall,clc
a=[4132;1241;3412;2123];
[q,r]=qrdecom(a)
8.PHNTCHQRBNGTHUTTONQUAYGIVENS
K thut quay Givens l mt phng php phn tch ma trn [A]
thnhtchcamatrn[Q]vmatrn[R]bngcchlmchoccphntln
ltbngzerochonkhiccmatrntamgicphi.tngldng
mtmatrnquayngin22tdctheongchochnhcamtma
trnnvvlmchomtphntcamatrnbngzero.Ccphntca
matrnquayquaymtvectngcchiukimnghmtgcl:
cos sin
[ Q ] = sin cos
Nutamunquayvect[x1x2]Tvmunlmchox2bngzeroriquaytheo
chiukimnghmtgc(hayngcchiukimnghmtgc)trong
:
72
x2
x1
thmatrnquaythchinphpquaynytheochiukimnghmtgc
l:
cos sin
[ Q ] = sin cos
= arctg
Trong:
x1
cos = c =
x +x
2
1
2
2
sin = s =
x2
x +x
2
1
2
2
Do:
x1 x 2 c s
= s c
2
2 x
x
x1 + x 2 2
1
Chlnhmongmun:
x12 + x 22
x12 + x 22
x1 cx1 + sx 2 2
2
Q
=
=
=
x
x
+
[ ] x sx + cx 1 2
0
1
2
2
NuAlmatrnmn,tasxemiugxyrakhitathayccphntca
[Q]vomatrnconxcnhbngccctvhngthi,ccctvhngthj.
Nicchkhctathaymatrn22nydctheongchochnhtimts
im:
1 L 0 L 0 L 0
M O
M M M O M
kl k i, l j
0
c
s
0
L
L
L
c k, l = i; k,l = j
M O M M M
=M M
[ Gkl ] = s k = i; l = j
0 L s L c L 0
s k = j; l = i
M M O M
M M 0
0 L 0 L 0 L 1
Nhvy[G]lmatrnnvmmngoitrccgitrbthayth:
gii=gjj=c
gij=gij=s
iunystoramatrnunita:
[G]T[G]=[E]
nghal:
[ Q ] =
73
lk
g lp = kp
vihi:
c2+s2=1
iunyngvcos2+sin2=1.Khimatrnnycpdngchoma
trnmntac:
kla lp = a kp k i, j
l
b kp = g kla lp = g ila lp = ca ip + sa jp k = i
l
l
g jla lp = sa ip + ca jp k = j
l
Nhvymatrnmichbthayihngivctj.Tachnsvcsaocho
ccphntctrvhngjbngzero:
a jr
a
s= 2
c = 2 ir 2
2
a jr + a ir
a jr + a ir
Nhvytasc:
a jra ir + a ir b jr
= 0
b jr =
a 2jr + a ir2
Taxydnghmgivens()thchinthuttontrn:
function[Q,R]=givens(A);
%PhantichQRbangthuattoanquayGivens
n=size(A,1);
Q=eye(n);
forj=1:n1
fori=n:1:j+1
z=1/sqrt(A(i1,j)^2+A(i,j)^2);
c=A(i1,j)*z;
s=A(i,j)*z;
A(i1:i,:)=[cs;sc]*A(i1:i,:);
Q(i1:i,:)=[cs;sc]*Q(i1:i,:);
end
end
R=A;
74
Q=Q;
phntchmtmatrntadngchngtrnhctgivens.m:
clearall,clc
A=[17243017;813207;21086;23435426];
[Q,R]=givens(A)
9.PHNTCHQRBNGTHUTTONGRAMSCHMIDT
Tacththchinvicphntchmatrn[A]thnhtchccmatrn[Q]
v[R]bngcchtrcgiaohoccctcamatrn[A].Tagiccctcama
trn[A]la1,...,an.Tccvectnytamuncnvecttrcgiaov1,...,vn.Vec
ttrcgiaoutincchnl:
v1 = a1
cvectthhai,tadngy2nhngtrbtiphny2cngchiuviv2.
Nhvytac:
v 2 = y1 ba1
vibcchnsaochov1trcgiaoviv2:
v1v 2 = v1 (a 2 bv1 ) = v1a 2 bv1v1 = 0
hay:
va
b= 1 2
v 1v 1
Tiptcqutrnhnbcthktac:
k 1
vk = ak
vv v
v ia k
i =1
Nhvythuttongmccbc:
a
r11 = a1 , q1 = 1
r11
- lptk=2nn
k 1
q k = a k rik q i rkk
i =1
vi
rik = q iTa k
vrkkcchnsaocho q k = 1 ,nghal:
75
z = a k q k rik
rkk = z
Taxydnghmqrgramschmidt()thchinthuttontrn:
function[Q,R]=qrgramschmidt(A);
%PhantichmtbangthuattoanGramSchmidt
[m,n]=size(A);
R(1,1)=norm(A(:,1));
Q(:,1)=A(:,1)/R(1,1);
fork=2:n
R(1:k1,k)=Q(1:m,1:k1)*A(1:m,k);
z=A(1:m,k)Q(1:m,1:k1)*R(1:k1,k);
R(k,k)=norm(z);
Q(1:m,k)=z/R(k,k);
end
clearall,clc
a=[12345;67890;34567;89012;24681];
[q,r]=qrgramschmidt(a)
10.PHNTCHMATRNTHEOGITRRING
Chomatrn[A],tac:
[A][X]=[X]
Nu ta t [U] lmt ma trn m cc ct ca n l cc vec t ring ca ma
trn[A]vmatrn[]lmatrnngchocccphnttrnngcho
chnhlith:
[A][U]=[][U]
hay:
[A]=[U][][U]1
Dngnycamatrncgildngphntchtheogitrringvvect
ring.Tadngchngtrnhcteigdecom.mphntchmatrn:
clearall,clc
76
a=[135;349;596];
[L,U]=eigjacobi(a)
11.PHNTCHLQ
T
Chomatrn[A] ,tacthphntchQRmatrnnythnh:
[A]T=[Q1][R1]
Do([Q][R])T=[R1]T[Q1]Tnn:
([A]T)T=[A]=[L][Q]
vtanhncphntchLQcamatrn[A].Taxydnghm lqdecom()
thchinthuttonny:
function[Q,L]=lqdecom(A)
A=A;
[Q,L]=qrdecom(A);
L=L;
Q=Q;
phntchmtmatrntadngchngtrnhctlqdecom.m:
clearall,clc
a=[135;246;789];
[Q,L]=lqdecom(a)
12.PHNTCHJORDAN
1.Matrncthngchoho:Matrn[A]gilcthngchoho
nuvchnutntiphpbiningdng[V]saocho[A]=[V][][V]1
trong[]lmatrnngcho[]=diag(1,2,...,n).iukincn
[A]cthng choho l[A]c nvect ringclptuyntnh.iu
kin[A]cthngchohol[A]cngitrringphnbitvkhi
[A]cngitrringphnbitthccvectringtngnglclptuyn
tnh. S ln lp li mi ca gi tr ring i gi l v s i s (algebraic
multiplicity) ca i, k hiu l AM(i ). S vec t ring c lp tuyn tnh
tng ng vi gi tr ring i gi l v s hnh hc (geometric multiplicity)
cai,khiulGM(i).
77
2.DngJordan:Khikhngthtmcngitrringphnbit,nghalma
trn[A]khngcnvectringclptuyntnhthmatrn[A]khngth
ngchoho.Tuynhin,nucphpbiningdng[M]bini[A]
thnh[J]:
[A]=[M][J][M]1
Trong[J]lmatrngnngcho:
[J]=diag(J1,...,Jn)
i 1 0 L 0
0 1 O M
i
[ Ji ] = M O i O M
M O O i 1
M L L 0 i
lkhiJordanvmatrn[J]cgildngJordankinhincamatrn
[A].SkhiJordanbngsvectringclptuyntnhcamatrn[A],
nghalbngGM(i).Cth,mivectringclptuyntnhtngng
vimikhi.Dovynumatrn[A]cccvectringclptuyntnh
thdngJordantrngvidngngchocamatrn[S]1[A][S]=[]trong
[]=diag(1,...,n)v[S]cccctlccvectringca[A]
3. Xy dng dng Jordan ca ma trn [A]: Khi [A] khng c n vec t ring
clptuyntnhtoraccctcamatrn[M]thtacththmccvec
tclptuyntnhvoccvectringtoramatrnny.
[ A ][ x 1 ] = [ x 1 ]
[ A ][ x 2 ] = [ x 2 ] + [ x 1 ]
[ A ][ x k ] = [ x k ] + [ x k1 ]
78
1 0 L 0
0 1 0 M
[ A ][ x1 ,K ,x n ] = [ x1 ,K ,x n ] M O O O 0
0 L L 1
0 L L 0
Xutphttvecttngquthobckca[A]ngvi,khiul[xk]tac:
[xk]
[xk1]=([A][E])[xk]
M
[xi]=([A][E])ki[xk]
M
[x1]=([A][E])k1[xk]
Chl[x1]lmtvectringca[A]v:
([A][x1])=([A][E])([A][E])k1[xk]
phntchmatrn[A]tadngthuttonFilipovgmccbcsau:
Gisrngkchthckhnggianctcamatrn[A]lr<n.Phic
rvectclptuyntnh[xi]trongkhnggianctmnlccvectring
hayvectringtngqutho,nghal[A][xi]=[xi]hay[A][xi]=[xi]+[xi1]
Gisrngkhnggiankhngvkhnggianctcamatrn[A]c
phnchungvikchthcp.Mivect[xi]trongjgguankhngca[A]l
mtvectringtngngvi=0,nhvy[A][xi]=0.Byginu[xi]cng
lkhnggianctca[A]th[xi]=[A][yi]vimi[yi]
Cuicngdokchthccakhnggiankhngca[A]lnrvp
caccvectltrongckhnggiankhnglnkhnggianctnncnrp
vect[zi]trongkhnggiankhngmkhngtrongkhnggianct.
Ccvect[xi],[yi]v[zi]tmclclptuyntnh.Chngtonn
ccctca[M]v[J]=[M][A][M]1ldngJordan.
Taxydnghmjordandecom()thchinthuttontrn:
function[M,J]=jordandecom(a)
%TinhphantichJordancuamatranA
%saochoA*M=M*J
small=2*sqrt(eps);
[r,c]=size(a);
79
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!)
80
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
81
[M,D]=eig(a);
return
end
M=[];
forkk=1:sdu
e=du(kk);
ameig=sum(ismember(ds,e));
a1=ae*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
82
ifsum(ec)~=ameig
Cond_of_A=cond(a)
savejord
M=I;
D=I;
error(Kichthuockhonggiankhongsai)
end
k=1;
clearjv;
whilek<=dns(1)
p=find(ec==ec(k));
ifisempty(p)
Cond_of_A=cond(a);
savejord
M=I;
D=I;
error(Kichthuockhonggiankhongsai);
end
aa=I;
form=1:ec(k)
aa=aa*a1;
end
pp=max(size(p));
v=nulld(aa,small);
jv(:,p)=v*(rand(size(v,2),pp)0.5)*16;
k=k+pp;
end
clearv;
fork=1:dns(1)
v(:,1)=jv(:,k);
forp=2:ec(k)
v(:,p)=a1*v(:,p1);
end
vv=fliplr(v(:,1:ec(k)));
M=[Mvv];
83
end
end
end
k=abs(det(M))^(1/n);
M=k*M;
Mi=inv(M);
D=Mi*a*M;
d0=diag(D);
d1=diag(D,1);
D=diag(d0)+diag(d1,1);
functionZ=nulld(A,small)
norma=sqrt(mean(mean(abs(A))));
tiny=norma*eps;
ifnargin<2
small=(1+norma)*sqrt(eps);
end
[m,n]=size(A);
ifm~=n
error(Matranphaivuong!)
end
p=find(abs(A)<tiny);
if~isempty(p)
A(p)=0;
end
[U,S,V]=svd(A,0);
S=diag(S);
s=S;
norma=max(s);
smax=max(s);
ifsmax==0;
smax=1;
end
s=s/smax;
snorm=s;
84
t=find(s>0);
ifisempty(t);
Z=V;
return;
end
p=find(s<tiny);
if~isempty(p)
s(p)=tiny;
end
p=find(s==0);
if~isempty(p)
s(p)=small*min(s(t));
end
logs=log10(s);
sdifflog=diff(logs);
smax=max(sdifflog);
r=find(sdifflog==smax);
ifmin(size(r))>0
r=r(end);
else
r=0;
end
Z=V(:,r+1:n);
ifsnorm==ones(n,1);
Z=zeros(n,0);
end
ifmax(S)<=small;
Z=V;
end
13.PHNTCHMATRNTHEOCCGITRKD
Phntchmatrntheoccgitrkd(kdvalue)cthchintrn
ccmatrnvunghaychnht.Tac:
[Anp]=[Unn][Snp][Vpp]
Trong:
85
[U]T[U]=[Enn]
[V]T[V]=[Epp]
nghalccmatrn[U]v[V]ltrcgiao.
Cc ct ca [U] l cc vec t k d tri, [S] c cc gi tr k d v l ma trn
ngchov[V]Tccchnglccvectkdphi.tnhccmatrn
[U],[S]v[V]tatmccgitrringca[A][A]Tv[A]T[A].Ccvectring
ca[A]T[A]tonnccctca[V].Ccvectringca[A][A]Ttonncc
ct ca [U]. Cc gi tr k d ca [S] l cn bc hai ca cc gi tr ring ca
[A][A]T hay [A]T[A]. Cc gi tr ring trn ng cho ca [S] c sp xp
theothtgimdn.hiucthuttonnytaxtvdsau:
Taxydnghmsvddecomp()thchinthuttonny:
function[U,S,V]=svddecomp(A)
[m,n]=size(A);
if(m>n)
%tacantimcacvectokdphaitruoc
%[VD]=eigs(A*A)
[V,D]=eigs(A*A);
[dummy,perm]=sort(diag(D));
S=diag(sqrt(diag(D(perm,perm))));
V=V(:,perm);
sinv=diag(1./sqrt(diag(D)));
U=(A*V)*sinv;
else
%tacantimcacvectokdtraitruoc
%[UD]=eigs(A*A)
[U,D]=eigs(A*A);
[dummy,perm]=sort(diag(D));
S=diag(sqrt(diag(D(perm,perm))));
U=U(:,perm);
sinv=diag(1./sqrt(diag(D)));
V=sinv*(U*A);
V=V;
end
86
phntchmtmatrntadngchngtrnhctsvddecomp.m:
clearall,clc
%a=[12345;67890;34567;89012;24681];
a=[11;01;10];
[u,s,v]=svddecomp(a)
14.PHNTCHSCHUR
Chomatrnvung[A],cpntaphntchnthnh:
[A]=[T][U][T]*
Trong:
[T] ma trn unita v [T]* l ma trn chuyn v lin hp ca [T](l
chuynvca[T]rilylinhpcaccphnt).
[U]=[]+[N]
[]lmatrnngchocccphntlccgitrringca[A]
[N] ma trn tam gic phi, c cc phn t thuc ng cho chnh
bngzero.
MimatrnvungucthphntchSchur.Tuynhinphntchny
khngduynht.Nu[A]lmatrntrcgiaoth[U]lmatrnngcho
vccctca[T]lccvectringca[A].PhntchSchurkhinycgi
lphntchph.Nu[A]xcnhdng,phntchSchurchnhlphntch
SVD.
phntchmatrntheothuttonSchurtathchinccbcsau:
- Tmgitrring1ca[A]vvectringtngng[v1]
- Chnn1vect[w1],...,[wn1]clptuyntnhvtrcgiaovi[v1]
- To[V1]lmatrncccctl[v1],[w1],...,[wn1]vtnh:
[ V1 ] [ A ][ V1 ] = 01 A
[ 1 ]
Trong[A1]lmatrn(n1)(n1)
- Lpliqutrnhvimatrn[A1]tac:
2
[ V2 ] [ A1 ][ V2 ] =
0 [ A 2 ]
Trong[A2]lmatrn(n2)(n2)
87
- Do [ T2 ] [ A ] [ T2 ] = 0 1
0 0
[ A 2 ]
1
0
vi V
=
Trong [ T2 ] = V1 V
2
2 0 [ V2 ]
- Tiptcqutrnhtatmc[V1],...,[Vn].Cuicng[U]=[T]*[A][T]
T2 = V1 V
2 L Vn
Taxydnghmschurdecom()thchinthuttontrn:
function[T,U]=schurdecom(a)
%PhantichSchurmatranA
n=size(a,1);
v=zeros(n,1);
v(1)=1;
b=zeros(n,n);
b(:,n)=v;
fork=2:n
v=a*v;
b(:,nk+1)=v;
end
c=a*v;
rho=b\c;
rho=[1rho];
lambda=roots(rho);
n=size(lambda,1);
evec=zeros(n);
c=evec;
e=eye(n);
fori=1:n
b=alambda(i)*e;
c=nulld(b);
evec(:,i)=c(:,1);
88
end
p=grams(evec);
T=conj(transpose(p))*a*p;
U=p;
phntchmatrntadngchngtrnhctschur.m:
clearall,clc
a=[1235;4562;4689;9367];
[t,u]=schurdecom(a)
15.NHTHCCAMATRN
Chomtmatrnvungcpn.Tacntmnhthccan.Trcht
chngtanhclimtstnhchtquantrngcanhthc:
- nu nhn tt c cc phn t ca mt hng (hay ct) vi k th nh
thccnhnvik
- nh thc khng i nu ta cng thm vo mt hng t hp tuyn
tnhcacchngcnli.
- nuichhaihngchonhauthnhthcidu
Trckhiinnhnghavnhthctatmhiukhinimvhon
vvphpth.
Chomtdys,nutaichccstrongdychonhauthtathc
hin mt php hon v. V d 123, 132,.. l cc hon v ca dy s {1, 2, 3}.
Trong hon v 12ijn ta ni i lm mt nghch th vi j nu i < j
mi>j.Vdtronghonv1432s4lmvis3mtnghchth,s4
lmvis2mtnghchth,s3lmvis2mtnghchth.Mthonvgi
lchnnutngsnghchthtronghonvlmtschn;mthonv
gilltrongtrnghpngcli.Nhvy1432lmthonvl.
Cho mt dy s, nu ta to ra mt dy s mi bng cch i ch cc
phntchonhauthtathchinmtphpth.
2 1 4 3
Vd p =
lphpthbin2thnh1,1thnh4,4thnh2v3
1
4
2
3
thnh3.
Mtphpthgilchnnutnhchnlcadngtrnvdngdi
nhnhauvltrongtrnghpngcli.Phpthtrnlphpthl.
89
(1)
j1 j1 L jn
talptch:
a i1 j1 a i2 j2 Ka in jn
(2)
Trcmitch(2)tatdu+nuvdunuphpth(1)l.Sautalp
tngcan!tchcdunhvy,nghaltng:
(3)
(1)t(p) ai1j1 ai2 j2 Kain jn
p
trong:
t(p)=1nuphpthpl
t(p)=0nuphpthpchn
Tng(4)cgilnhthccamatrnvung[A],cpn.
Ta xy dng hm determinant() tnh nh thc ca ma trn theo nh
ngha:
functiond=determinant(A)
%DETERMINANTtinhdinhthuctheodinhnghia.
[m,n]=size(A);
if(m~=n)
fprintf(\n);
fprintf(Chimatranvuongmoicodinhthuc!\n);
return
end
p=zeros(1,n);
nf=prod([1:n]);
d=0.0;
fori=1:nf
p=nextperm(p);
s=permsign(p);
x=diag(A([1:n],p));
90
d=d+s*prod(x);
end
functionpsign=permsign(p)
%PERMSIGNtravedauphepthe.
%+1,neuphepthechan,
%1,neuphepthele.
n=length(p);
psign=1;
fori=1:n1
j=i;
while(p(j)~=i)
j=j+1;
end
if(j~=i)
temp=p(i);
p(i)=p(j);
p(j)=temp;
psign=psign;
end
end
functionq=nextperm(p)
n=length(p);
q=p;
if(n==1)
q=1;
elseif(q==0)
q=[1:n];
else
i=n1;
while(q(i)>q(i+1))
i=i1;
if(i==0)
break;
91
end
end
if(i==0)
q=[1:n];
else
j=n;
while(q(j)<q(i))
j=j1;
end
t=q(j);
q(j)=q(i);
q(i)=t;
q(i+1:n)=q(n:1:i+1);
end
end
tnhnhthctadngchngtrnhctdeterminant.m:
clearall,clc
%a=[12;35];
a=[135;346;463];
d=determinant(a)
16.TNHNHTHCBNGCCHPHNTCHMATRN
Chomatrn[A].Nu
[A]=[B][C]
th
det[A]=det[B]det[C]
Mtkhcvimtmatrntamgic,vd:
b11 b12 b13 b14
0 b
b23 b 24
22
[ B] =
0 b33 b 34
0
0
0 b 44
0
th
92
det [ B] = b11b 22 b 33 b 44
nghalivimatrntamgic,nhthcbngtchccphnttrnng
chochnh.
Khi phn tch ma trn [A] theo thut ton Doolitte, ta dng chng
trnhctdoodecmp.mtnhnhthccan:
clearall,clc
a=[1234;3457;2385;4914];
[l,r]=doolittle(a);
d=prod(diag(l))*prod(diag(r))
Khiphntchmatrn[A]theothuttonCrout,tadngchngtrnh
ctcrotdecmp.mtnhnhthccan:
clearall,clc
a=[1234;3457;2385;4914];
[l,r]=crout(a);
d=prod(diag(l))*prod(diag(r))
Khi phn tch ma trn [A] theo thut ton Choleski, ta dng chng
trnhctcholdecmp.mtnhnhthccan:
clearall,clc
a=[422;224;2411];
a=pascal(5);
l=choleski(a);
d=prod(diag(l))*prod(diag(l))
17.THUTTONTRCHI
Chomatrn[A]c a1,1 0 .Taxydngmatrn[B]cccphnt
bi ,j = a1,1a i ,j a i ,na n ,j
th:
2n
[ A ] = a1,1
[ B]
nghal:
93
a11
det
a
21
a11
det
n 2
a
det [ A ] = a11
det
31
a11
det
a n1
a12
a 22
a12
a 32
a11
det
a 21
a11
det
a 31
M
a13
a11 a1n
L
det
a
a 23
21 a 2n
a13
a11 a1n
L
det
a
a 33
a
31
3n
L
M
a13
a11 a1n
L
det
a
a n3
n1 a nn
a12
a11
det
a n2
a n1
Taxydnghmchiopivot()thchinthuttontrn:
functiond=chiopivot(a)
%tinhdinhthucbangthuattoanChiopivotalcondensation
ifa(1,1)==0
error(Khongdungphuongphapnaydetinhdinhthucduoc!);
return;
end
c=a(1,1);
n=size(a,1);
if(n<=2)
d=a(1,1)*a(2,2)a(2,1)*a(1,2);
return
end
m=n1;
while(m>=1)
fori=1:m%hang
b(i,1:m)=a(1,1)*a(i+1,2:m+1)a(i+1,1)*a(1,2:m+1);
end
if(m>2)
a=b;
c=c*a(1,1);
clearb;
end
m=m1;
end
d=b(1,1)*b(2,2)b(2,1)*b(1,2);
94
d=d/c;
tnhnhthctadngchngtrnhctchiopivot.m:
clearall,clc
a=[1234;3457;2385;4914];
d=chiopivot(a)
18.THUTTONLAPLACE
tnhnhthctheothuttonLaplace,takhaitrinnhthctheo
hnghayct.Chomatrnvung[A]cpn.Nubihngivctj(tcxo
hngvctchaphntaij)thtacmtmatrncp(n1),nhthcca
ngilnhthcconcp(n1)ngviphntaij(minor),khiulMij.
Ta ch n hng th i v aij l mt phn t ca hng . Trong det[A] ta
gpnhngshngchaaij livtaijlmthaschung,hscank
hiulAijvgilphnbis(cofactor)caphntaij.CofactorAijca
matrn[A]l:
A ij = ( 1)i+ j M ij
nhthcca[A]khikhaitrintheohngl:
n
det [ A ] = a ijA ij
i =1
Taxydnghmcofactor()tnhccphnbis:
functionc=cofactor(A,i,j)
%cacphanbudaisocuamatran
%dungdenghichdaomt
%C=cofactor(A,i,j)travephanbudaisocua
%ngi,cotjcuaA.
ifnargin==3
M=A;
M(i,:)=[];
M(:,j)=[];
c=(1)^(i+j)*det(M);
else
95
[n,n]=size(A);
fori=1:n
forj=1:n
c(i,j)=cofactor(A,i,j);
end
end
end
Saukhiphnbis,taxydnghm cofactordet()tnhnhthcca
[A]
functiond=cofactordet(A)
d=0;
fori=1:size(A,1)
c=cofactor(A,i,1);
d=d+A(i,1)*c;
end
tnhnhthctadngchngtrnhctcofactordet.m:
clearall,clc
a=[1234;3457;2385;4914];
det=cofactordet(a)
19.THUTTONDODGSON
ThuttonccDodgson(Dodgsoncondensation)dngtnhnh
thc ca ma trn vung. N c Charles Ludwidge Dodgson a ra.
tnhnhthccamatrncpnn,taxydngccmatrncp(n1)(n
1)chonmatrncp11lnhthccamatrncntm.
Bcutintaxydngmatrncp(n1)(n1)tccnhthc
caccmatrncon22.Vdvimatrn
5 1 0
2 8 5
0 6 7
96
tacccmatrnconl:
5 1
1 0
2 8
8 5
2 8
8 5
0 6
6 7
Ccmatrnnystoraccphntcamatrn22.Phnthngr,ctc
lnhthccamatrncon22camatrnbanuvihngrvctc
gctrntri.Nhvymatrnmil:
38 5
12 26
Matrnkkctorabngcchlynhthccamatrncon22cama
trn (k+1)(k+1) nh trn v chia n cho phn t tng ng ca ma trn
trungtm,nghalmatrnbihngtrncng,hngdicng,ctbn
phivctbntricamatrn(k+2)(k+2)
Taxydnghmdodgson()thchinthuttontrn:
functiondt=dodgson(a)
ifsize(a,1)~=size(a,2)
error(MatranAphailamttranvuong);
end;
n=size(a,1);
ifn==2
dt=a(1,1)*a(2,2)a(2,1)*a(1,2);
return
end;
ifn==3;
fori=1:n1
b(i,1:n1)=a(i,1:n1).*a(i+1,2:n)a(i+1,1:n1).*a(i,2:n);
end
dt=(b(1,1)*b(2,2)b(2,1)*b(1,2))/a(2,2);
return
end
c=a;
c(:,1)=[];
c(:,n1)=[];
c(1,:)=[];
97
c(n1,:)=[];
fori=1:n1
b(i,1:n1)=a(i,1:n1).*a(i+1,2:n)a(i+1,1:n1).*a(i,2:n);
end
m=size(b,1);
whilem>=2
fori=1:m1
forj=1:m1
d(i,j)=(b(i,j)*b(i+1,j+1)b(i+1,j)*b(i,j+1))/c(i,j);
end
end
ifm>3
c=b;
c(:,1)=[];
c(:,m1)=[];
c(1,:)=[];
c(m1,:)=[];
b=d;
end
m=m1;
end
dt=(d(1,1)*d(2,2)d(2,1)*d(1,2))/b(2,2);
tnhnhthctadngchngtrnhctdodgson.m:
clearall,clc;
a=[1234;5132;4922;6341];
dt=dodgson(a)
20.NGHCHOMATRNBNGCCHDNGMINOR
Chomatrn[A],tac:
A
( a 1 )i ,j = det [j,iA]
Trong:
98
(a )
1
i ,j
lphnthngi,ctjcamatrn[A]1
Ai,jlphnbiscaphntai,jcamatrn[A]
Taxydnghmminorinv()thchinthuttontrn:
functionc=minorinv(a)
%Timmatrannghichdaobangthuattoanminor
n=size(a,1);
ms=det(a);
fori=1:n
fork=1:n
b=cofactor(a,i,k);
c(i,k)=b/ms;
end
end
c=transpose(c);
tmmatrnnghchotadngchngtrnhctminorinv.m:
clearall,clc;
a=[135;349;596];
b=minorinv(a)
21.NGHCHOBNGCCHPHNTCHMATRN
Chomatrn[A[,tacthphntchnthnhmatrntamgicphi[R]
vtamgictri[L]:
[A]=[L][R]
Donhnghamatrnnghcho:
[L]1[L]=[L][L]1=[E]
nn:
[R]=[L]1[L][R]=[L]1[A]
v:
[L]=[L][R][R]1=[A][R]1
Dovy:
[A]=[L][R]=([A][R]1)([L]1[A])=[A][R]1[L]1[A]
99
[A][R]1[L]1=[E]
Ktqul:
[R]1[L]1=[R]1
Vimatrntamgicphi[R],cchngkhinghcholl1,..,lnctnhtheo
cchsau:
Cho[e1],..,[ei],..,[en]lccctcamatrnnv[E]cpn
[e ]
l n = n
a n ,n
1
l i = ([ e i ] a i ,i+1 l i+1 La i ,n l n )
a n ,n
Taxydnghm luinverse()thchinthuttontnhnhthccama
trn[R]:
functionr=luinverse(a)
%Nghichdaomatrantamgiacphai
n=size(a,1);
e=zeros(n,n);
c=zeros(n,1);
l=e;
b=e;
fori=1:n
c(i)=1;
e(:,i)=c;
c(i)=0;
end
l(:,n)=e(:,n)/a(n,n);
fori=n1:1:1
c=zeros(n,1);
fork=i+1:n
c=c+a(i,k)*l(:,k);
end
l(:,i)=(e(:,i)c)/a(i,i);
end
r=l;
100
nghichomatrntamgictadngchngtrnhctluinv.m:
clearall,clc
a=[123;045;002];
r=luinverse(a)
nghchomatrntamgictritadngccquanh:
[L]1=([LT]1)T
v[L]Tslmtmatrntamgicphi.Tadngchngtrnh ctluinverse.m
nghchomatrnthngthng:
clearall,clc
a=[135;349;596];
[l,r]=doolittle(a);
b=luinverse(r)*(luinverse(l))
22.NGHCHOMATRNBNGTHUTTONGAUSSJORDAN
Chomatrn[A]vmatrnnv[E]tngng.Dngcamatrn[E]
cp4,l:
1 0 0 0
0
1
0
0
E=
0 0 1 0
0
0
0
1
Nhvy,vnltacntmmatrn[A]1.Phngphploitrnhn
cmatrnnghcho[A]1 cthchinquangiaion,mimtgiai
ongmhaibc.ivigiaionthk:
chunhophntakkbngcchnhnhngvinghchocan
lmchobngkhngccphntphatrnvphadingcho
chonctthk.Khik=nth[A](k)strthnhmatrnnvv[E]
trthnh[A]1
Taxydngmthmnghchoinvmat():
functionx=invmat(a)
%Nghichdaomatrana
101
%Cuphap:x=invmat(a)
k=size(a,1);
n=k;
b=eye(n);
a=[a,b];
i=1;
whilei<=n
ifa(i,i)~=0
c=a(i,i);
a(i,i:2*n)=a(i,i:2*n)/c;
end
fork=1:n
ifk~=i
c=a(k,i);
a(k,i:2*n)=a(k,i:2*n)a(i,i:2*n)*c;
end
end
i=i+1;
end
x(:,1:k)=a(:,(1+k):(2*k));
nghchomatrn
2 1 1
[ A ] = 1 2 1
1 1 2
tadngchngtrnhctinvmat.m
clearall,clc
a=[211;121;112];
b=invmat(a)
23.NGHCHOBNGTHUTTONMOOREPENROSE
Chomatrn[A]cpmn.MatrnnghchotngquthoMoore
PensorelmatrnnmcMoorearanm1920vsauPensorea
ranm1955.MatrnMoorePensore[B]thomncciukin:
102
[A][B][A]=[A]
[B][A][B]=[B]
Tcciukinnytac:
[B]=[A]T([M][M])1
tnhmatrn[B]tadngchngtrnhctpseudoinv.m:
clearall,clc
a=[34567;36789;23454];
b=a*invmat(a*a)
24.GITRRINGVVECTRINGCAMATRN
Chomatrn[A]vung,cpn.Tagisvhnglgitrringca
matrn[A]v[V]lvectringphica[A]tngngvinu:
[A][V]=[V]
(1)
[V]gilvectringtrica[A]tngngvinu:
[V]T[A]=[V]T
Tacthvitli(1)didng:
([ A ] [ E ]) [ V ] = 0
Ttachnphngtrnhthunnht.Nghimtmthngcahchnh
l[X]=0.Hscnghimkhngtmthngnu:
det ([ A ] [ E ]) = 0
(2)
Khaitrin(2)tanhncphngtrnhctnh:
a1 n + a 2 n 1 + L + a n + a n +1 = 0
Ccnghimicaphngtrnhctnhlccgitrringca[A].Nghim
[Vi]ca:
([ A ] i [ E ]) [ V ] = 0
lccvectringca[A].Taxydnghm nulld()giihphngtrnh
tuyntnhthunnhtny:
functionZ=nulld(A,small)
norma=sqrt(mean(mean(abs(A))));
tiny=norma*eps;
ifnargin<2
small=(1+norma)*sqrt(eps);
end
103
[m,n]=size(A);
ifm~=n
error(Matranphaivuong!)
end
p=find(abs(A)<tiny);
if~isempty(p)
A(p)=0;
end
[U,S,V]=svd(A,0);
S=diag(S);
s=S;
norma=max(s);
smax=max(s);
ifsmax==0;
smax=1;
end
s=s/smax;
snorm=s;
t=find(s>0);
ifisempty(t);
Z=V;
return;
end
p=find(s<tiny);
if~isempty(p)
s(p)=tiny;
end
p=find(s==0);
if~isempty(p)
s(p)=small*min(s(t));
end
logs=log10(s);
sdifflog=diff(logs);
smax=max(sdifflog);
r=find(sdifflog==smax);
104
ifmin(size(r))>0
r=r(end);
else
r=0;
end
Z=V(:,r+1:n);
ifsnorm==ones(n,1);
Z=zeros(n,0);
end
ifmax(S)<=small;
Z=V;
end
25.BININGDNG
Takhostbitonvgitrringcamatrn:
[A][X]=[X]
vi[A]lmatrnixng.Bygitapdngphpbini:
[X]=[P][X]*
vi[P]lmatrnkhngsuybin.
Thay(2)vo(1)vnhnhaivvi[P]1tac:
[ P ]1 [ A ][ P ][ X ] = [ P ]1 [P ][ X ]
(1)
(2)
(3)
hay: [ A ] [ X ] = [ X ]
Trong
[ A ] [ P ][ X ] = [ P ]1 [ A ][ P ]
Dokhngikhithchinphpbininngitrringcamatrn[A]
cngchnhlgitrringcamatrn[A]*.Ccmatrnccnggitrring
cgilmatrnngdngvphpbinigiachnggilphpbin
ingdng.
Phpbiningdngthngdngabitontmgitrring
vdngdgiihn.Gistaccchnotmmatrn[P]mnng
chohomatrn[A],lc(3)cdng:
105
A11
0
A 22
0
M
M
0
0
x1 0
0
L
x1 =
M M
L
L Ann x1 0
L
0
0
0
Nghimcaphngtrnhtrnl:
1 = A11 2 = A22 L n = Ann
1
0
0
0
1
0
[ X1 ] = M
[X2 ] = M L [Xn ] = M
0
0
1
(4)
hay: [ X ] = X 1 X 2 L X n = [ E ]
Theo(2),vectringca[A]l:
[X]=[P][X]*=[P][E]=[P]
(5)
Nhvymatrnbini[P]lmatrnccvectringca[A]vcc
gitrringca[A]lccshngtrnngchoca[A]*.
26.TMGITRRINGBNGCCPHNGPHPLUTHA
1.Phngphpluthavhng:Gismatrnvung[A]cpncngi
trringphnbit:
1 > 2 3 L n
(1)
vccvectringtngng[V1],[V2],...,[Vn]
Tachnmtvect[X]btkcccthnhphnkhczero.Khi[X]sc
biudinbng:
(2)
[ X ] = 1 [ V1 ] + 2 [ V2 ] + L + n [ Vn ]
Do [ A ][ Vn ] = n [ Vn ] nn:
[ A ][ X ] = [ A ] 1 [ V1 ] + [ A ] 2 [ V2 ] + L + [ A ] n [ Vn ]
= 1 [ A ][ V1 ] + 2 [ A ][ V2 ] + L + n [ A ][ Vn ]
= 11 [ V1 ] + 2 2 [ V2 ] + L + n n [ Vn ]
= 1 1 [ V1 ] + 2 2 [ V2 ] + L + n n [ V2 ]
1
1
Lplilnthktac:
106
k
k
2
n
[ X k ] = [ A ] [ X 0 ] = 1 [ V1 ] + 2 [ V2 ] + L + n [ V2 ] (3)
1
1
Khik,do(1)nn(3)hitv[V1]khi10.Vylgitrring1,ctr
tuytilnnht,vvectringtngng[V1],cthtnhbngcchcho
trcmtvect[X0]cccthnhphnkhczerotheohng[V1]vlptheo
thtcsau:
[X ]
(4)
[ X k+1 ] = [ A] k 1 [ V1 ]
[Xk ]
k
k
1
Trong:
[ X ] = max { [ X n ] }
Tchitphthucvolnca 2 1 .
Thuttontmligmccbc:
chovectbanu[X0]
tnh[X1]=[A][X0]
tnh [ X ]
cho[X]= [ X ] = [ X ] [ X ] vlpliccbc24chonkhihit
Taxydnghmeigpower()thchinthuttontrn:
function[lambda,x,iter]=eigpower(A,tol,maxiter,x0)
%Timgiatririenglonnhat
%bangthuatloanlapluythua
[n,m]=size(A);
ifn~=m
error(Chidungchocacmatranvuong);
end
ifnargin==1
tol=1e8;
x0=ones(n,1);
nmax=200;
end
x0=x0/norm(x0);
pro=A*x0;
lambda=x0*pro;
107
err=tol+1;
iter=0;
whileerr>tol*abs(lambda)&abs(lambda)~=0&iter<=nmax
x=pro;
x=x/norm(x);
pro=A*x;
lambdanew=x*pro;
err=abs(lambdanewlambda);
lambda=lambdanew;
iter=iter+1;
end
tnhgitrringvvectringtadngchngtrnhcteigpower.m:
clearall,clc
A=[12345;67890;34567;89012;24681];
[lambdamax,v,iter]=eigpower(A)
2.Phngphpluthanghcho:Phngphpnydngtmgitr
ring c tr tuyt i b nht v vec t ring tng ng bng cch p dng
thuttontrongmc1chomatrn[A]1.tngcaphngphpphnny
datrnphngtrnh:
(5)
[ A ][ V ] = [ V ] [ A ]1 [ V ] = 1 [ V ]
Taxydnghminveigpower()thchinphngtrnhny:
function[lambda,v]=inveigpower(A,tol,maxiter)
B=A^1;
[lambda,v]=eigpower(B,tol,maxiter);
lambda=1/lambda;
clearall,clc
108
A=[201;020;102];
tol=1e8;
maxiter=100;
[lambdamin,v]=inveigpower(A,tol,maxiter)
3.Phngphpdchchuyn:Chomatrn[A]ixng.Giscntmgi
trringgnvimtsschotrc.Do:
[A][X]=[X]
nntrhaivchoc[E][X]tac:
([A]s[E])[X]=(s)[X]
hay: [A*][X*]=*[X]
1
1
(6)
X
=
A
1
Dngphngphplpluthacho(6)tanhnc hay
min =
s= =
=s+=s+
Taxydnghmshiftpower()thchinthuttontrn:
function[lambda,v]=shiftpower(A,s)
A=(As*eye(size(A)))^1;
maxiter=150;
tol=1e8;
[lambda,v]=eigpower(A,tol,maxiter);
lambda=1/lambda+s;
clearall,clc
A=[201;020;102];
tol=1e8;
maxiter=100;
s=0.5;
109
[lambda,v]=shiftpower(A,s)
27.TMGITRRINGCAMATRNBANG
CHOIXNG
1.DySturm:Saukhithchinbiningdngbngphngphpdng
matrnHouseholdertanhncmatrntridiagonalixng.timcc
gitrringvvectringtngngtacthdngthuttonlpQR.Tuy
nhinphngphpchiai(bisection)cngrthiuqu.
athcctnhcamatrncdng:
c1
0
0
0
L
d1
c
d2
c2
0
0
L
1
c2
d3
c3
0
L
0
Pn ( ) = det ([ A ] [ E ]) =
0
0
c
d
0
L
3
4
M
M
M
M
O
M
0
0
c n 1 d n
L
0
cthtnhvi3(n1)phpnhndngdysau:
P0 ( ) = 1
(1)
P1 () = d1
Pi ( ) = (di )Pi1 ( ) c i21Pi2 ( ) i=2,3,...,n
nhhn
functionp=sturmseq(c,d,lambda)
%ChodaySturmpganvoimatran
%tridiagonalA=[c\d\c]valambda.
%Chuy|Alambda*I|=p(n).
n=length(d)+1;
p=ones(n,1);
p(2)=d(1)lambda;
110
fori=2:n1
p(i+1)=(d(i)lambda)*p(i)(c(i1)^2)*p(i1);
end
functionnum=countevals(c,d,lambda)
%Tinhsogiatririengnhohonlambdacuamatran
%A=[c\d\c].DungdaySturm
p=sturmseq(c,d,lambda);
n=length(p);
oldsign=1;
num=0;
fori=2:n
psign=sign(p(i));
ifpsign==0;
psign=oldsign;
end
ifpsign*oldsign<0
num=num+1;
end
oldsign=psign;
end
2.nhlGerschgorin:nhlGerschgorinrtcchkhixcnhbinton
cctrnccgitrringcamatrnvung[A]cpn.Bintoncclbin
baolytonbccgitrring.ivimatrnixngth:
a i ri a i + ri i=1,2,...,n
Trong:
ri = a ij
a i = a ii
(2)
Vybintoncccaccgitrringl:
min min(a i ri )
m ax max(a i + ri )
(3)
j=1
j i
111
Taxydnghm gerschgorin()xcnhbintrnvdicaccgitr
ringcamatrnixng:
function[evalmin,evalmax]=gerschgorin(c,d)
%Danhgiacacbiencuagiatririeng
n=length(d);
evalmin=d(1)abs(c(1));
evalmax=d(1)+abs(c(1));
fori=2:n1
eval=d(i)abs(c(i))abs(c(i1));
ifeval<evalmin;
evalmin=eval;
end
eval=d(i)+abs(c(i))+abs(c(i1));
ifeval>evalmax
evalmax=eval;
end
end
eval=d(n)abs(c(n1));
ifeval<evalmin
evalmin=eval;
end
eval=d(n)+abs(c(n1));
ifeval>evalmax
evalmax=eval;
end
Taxydnghmevalbrackets()vyccgitrringnhnhtcamatrn
bangcho.Nchodyr1,r2,...,rm+1trongmion[ri,ri+1]chamt
gitrring.Thuttontrchttmbintoncccaccgitrringtheo
nh l Gerschorin. Phng php chia i kt hp vi dy c tnh ca dy
Sturmcdngxcnhbintrnm,m1,...,1
functionr=evalbrackets(c,d,m)
%NhommgiatririengmincuamatranA=[c\d\c]
112
[evalmin,evalmax]=gerschgorin(c,d);
r=ones(m+1,1);
r(1)=evalmin;
%Timcacgiatririengtheothutugiamdan
fork=m:1:1
%chiadoidoan(evalmin,evalmax)
eval=(evalmax+evalmin)/2;
h=(evalmaxevalmin)/2;
fori=1:100
%Timsogiatririengnhohoneval
numevals=countevals(c,d,eval);
%laichiadoidoanchuaeval
h=h/2;
ifnumevals<k;
eval=eval+h;
elseifnumevals>k;
eval=evalh;
else;
break
end
end
valmax=eval;
r(k+1)=eval;
end
3.Tnhccgitrring:Mtkhitmckhongchaccgitrringta
c th xc nh nghim ca a thc Pn() bng phng php Brent. Ta xy
dnghm eigenvals()tmccgitrringnhnhtcamatrnbang
choixngbngphngphpBrent.
functionevals=eigenvals(c,d,m)
%Tinhmgiatririengbenhatcuaa=[c\d\c].
%cvadphaikhaibaoglobaltrongchuongtrinhgoi
evals=zeros(m,1);
r=evalbrackets(c,d,m);%nhomcacgiatririeng
113
fori=1:m
evals(i)=brent(@func,r(i),r(i+1));
end
Khibitccgitrring,cchttnhttmccvectringtngngl
phng php lu tha nghch o. Ta dng hm invpower() thc hin
cngvicny:
function[eval,evec]=invpower(c,d,s,maxiter,tol)
%TinhcacgiatririengcuaA=[c\d\c]ganvoisva
%vavectoriengtuongungbangphuongphaplapnghichdao.
ifnargin<5;
tol=1.0e6;
end
ifnargin<4;
maxiter=50;
end
n=length(d);
e=c;
d=ds;
[c,d,e]=ludec3(c,d,e);%phantichA*=AsI
x=rand(n,1);
xmag=sqrt(dot(x,x));
x=x/xmag;%chuanhoax
fori=1:maxiter
xold=x;
x=lusol3(c,d,e,x);%giaiheA*x=xOld
xmag=sqrt(dot(x,x));
x=x/xmag;%chuanhoax
xsign=sign(dot(xold,x));%thiensudoidaucuax
x=x*xsign;
%kiemtrtinhhoitu
ifsqrt(dot(xoldx,xoldx))<tol
eval=s+xsign/xmag;
evec=x;
114
return
end
end
error(Quanhieulanlap)
function[c,d,e]=ludec3(c,d,e)
%PhantichmatranAthanhA=[c\d\e].
n=length(d);
fork=2:n
lambda=c(k1)/d(k1);
d(k)=d(k)lambda*e(k1);
c(k1)=lambda;
end
functionx=lusol3(c,d,e,b)
%GiaiheA*x=bvoiA=[c\d\e]
n=length(d);
fork=2:n%thaythetien
b(k)=b(k)c(k1)*b(k1);
end
b(n)=b(n)/d(n);%thaythelui
fork=n1:1:1
b(k)=(b(k)e(k)*b(k+1))/d(k);
end
x=b;
Taxydnghmsymmateig()tmccgitrringvvectring:
function[eigenvalues,eigvec]=symmateig(a)
globalcd
m=size(a,1);
b=housetrans(a);
d=diag(b);
c=diag(b,1);
p=householderp(a);
evals=eigenvals(c,d,m);
115
fori=1:m
s=evals(i)*1.0000001;
eval=invpower(c,d,s);
end
eigenvalues=diag(evals);
n=size(eigenvalues,1);
eigvec=zeros(n);
c=eigvec;
e=eye(n);
fori=1:n
b=aeigenvalues(i,i)*e;
c=nulld(b);
eigvec(:,i)=c(:,1);
end
clearall,clc
globalcd
a=[1234;2765;3690;4503];
[eval,evec]=symmateig(a)
n=size(a,1);
28.TMGITRRINGBNGPHNGPHPQUT
[A][X]=[X]
(1)
Bngphngphplpluthatanhncgitrringlnnht.tm
gitrringlnthhai2tadngphngphpqut.Munvyvectban
u[X0]phichnsaochokhngcngphngvivectringngvigi
trringlnnht1.Vccvectringtothnhcsnn:
(2)
[ X 0 ] = c1 [ X 1 ] + c 2 [ X 2 ] + L + c n [ X n ]
Nhnchaivca(2)vichuynv [ X 1 ] tac:
T
116
hay:
[ X1 ] [ X 0 ] = c1 [ X1 ] [ X1 ]
T
[X ] [X ]
c 1= 1 T 0
[ X1 ] [ X1 ]
T
Bygitachnvectbanul:
T
X 1 ] [ X 0 ][ X 1 ]
[
[ Y0 ] = [ X 0 ] c1 [ X1 ] = [ X 0 ]
T
[ X1 ] [ X1 ]
(3)
(4)
Vect [ Y0 ] trong(4)cthvitdidng:
X 1 ][ X 1 ]
[
[ X 0 ]
[ Y0 ] = [E]
T
X
X
[
]
[
]
1
1
v:
A ][ X 1 ][ X 1 ]
[
[ A ][ Y0 ] = [ A]
[ X 0 ]
T
X
X
[
]
[
]
1
1
= [ D1 ][ X 0 ]
Trong:
[ D1 ] = [ A ]
1[ X 1 ][ X 1 ]
(5)
(6)
(7)
(8)
[ X1 ] [ X1 ]
T
lmatrndngchophplptnhgitrringlnth2ca[A].tnh
gitrringlnth3,th4,...tadngccmatrnchophplplutha:
T
2 [ X 2 ][ X 2 ]
[ D 2 ] = [ D1 ]
T
X
X
[ 2] [ 2]
[ D3 ] = [ D2 ]
3 [ X 3 ][ X 3 ]
[X3 ] [X3 ]
T
Tiptcqutrnhtrnnlntathucccgitrringcamatrn[A].Ta
xydnghmsweeping()thchinthuttontrn:
function[t,s,iter]=sweeping(A)
%functiont=sweeping(A)
%TinhtatcacacgiatririengvavectoriengcuamatranAdoixung
117
n=size(A,1);
t=eye(n);
s=zeros(n);
k=zeros(n,1);
[l,v,iter]=eigpower(A);
t(1,1)=l;
s(:,1)=v;
k(1,1)=iter;
fori=2:n
A=A(l*v*v)/(v*v);
[l,v,iter]=eigpower(A);
t(i,i)=l;
s(:,i)=v;
k(i,1)=iter;
end
iter=max(k);
clearall,clc
A=[135;349;596];
%A=[17243017;813207;21086;23435426];
[t,s,iter]=sweeping(A)
29.TMGITRRINGBNGPHNGPHPJACOBI
Phngphpnychophptatmttccgitrringcamatrn[A]
ixng.Tatoramatrntrcgiaochun[V]gmccccvectringsao
cho[V]T[V]=[E];[V]1=[V]Tvdngnbiningdngmatrn[A].
Khi ta s nhn c ma trn ng cho c cc gi tr ring nm trn
ngchochnh:
(1)
[ V ]T [ A ][ V ] = [ V ]1 [ A ][ V ] = [ ]
hiuphngphpJacobi,trchttanhnghamatrnquaypq:
118
0
M
R pq () = 0
0
M
0
M
p
0
0
M
q
0
0
M
0 L
0 L
1 M
0 L
M M
M L
0 L cos L L sin
L L
0 L
0
0
M M
M
M M
M
0 L sin L L cos
M M
M
M M
M
L
L
M
L
L
M
L
M
(2)
Domatrn[R]trcgiaonnccvecthngvctcancngtrcgiaov
chunho:
R pq R pq = E
R pq = R pq
(3)
A(1) = R pq A R pq
(4)
Chlphpbiningdngkhnglmthayigitrringnnbtk
matrnnocctcclnlp:
(5)
(6)
V = R L R (k1) R (k)
Vncnlillmsaobinmatrn(5)thnhmatrnngcho.Cnnh
rngphpbini(4)chlmthayihngvctpvq.
v pq = v qp = a qp (c 2 s 2 ) + (a qq a pp )sc
(7a)
1
= a qpcos 2 + (a qq a pp )sin 2
2
v pn = v np = a pn c + a qn s n p, q
(7b)
119
v qn = v nq = a pn s + a qn c
c=cos,s=sin
Talmcho
v pq = v qp = 0
n p, q
bngcchchncamatrnquay[Rpq()]saocho:
2a pq
1
sin 2
tg2 =
=
cos 2 =
2
cos2
a pp a qq
1 + tg 2
(7c)
(7d)
(7e)
(8)
sin2=tg2cos2
(9)
1 + cos 2
sin 2
cos = cos 2 =
sin =
2
2 cos
chomatrngnmatrnngchosaumilnlp,tacoichshngv
ctcaphntlnnhtnmngoingcholpvqvlmchonbng
zero.
Taxydnghmeigjacobi()tnhccgitrringivccvectringca
mtmatrnixngcpnbngphngphpJacobi.
function[lambda,v]=eigjacobi(A,tol,maxiter)
%PhuongphapJacobichomatranAdoixung
ifnargin<3
maxiter=100;
end
ifnargin<2
tol=1e8;
end
n=size(A,2);
lambda=[];
v=[];
form=1:n
ifnorm(A(m:n,m)A(m,m:n))>eps
error(Matrankhongdoixung!);
end
end
120
v=eye(n);
fork=1:maxiter
form=1:n1
[Am(m),Q(m)]=max(abs(A(m,m+1:n)));
end
[Amm,p]=max(Am);
q=p+Q(p);
ifAmm<eps*sum(abs(diag(lambda)))
break;
end
ifabs(A(p,p)A(q,q))<eps
s2=1;
s=1/sqrt(2);
c=s;
cc=c*c;
ss=s*s;
else
t2=2*A(p,q)/(A(p,p)A(q,q));%Pt.(9a)tg2(theta)
c2=1/sqrt(1+t2*t2);%Pt.(9b)cos2(theta)
s2=t2*c2;%Pt.(9c)sin2(theta)
c=sqrt((1+c2)/2);%Pt.(9d)cos(theta)
s=s2/2/c;%Pt.(9e)sin(theta)
cc=c*c;
ss=s*s;
end
lambda=A;
lambda(p,:)=A(p,:)*c+A(q,:)*s;%Pt.(7b)
lambda(:,p)=lambda(p,:);
lambda(q,:)=A(p,:)*s+A(q,:)*c;%Pt.(7c)
lambda(:,q)=lambda(q,:);
lambda(p,q)=0;
lambda(q,p)=0;%Pt.(7a)
lambda(p,p)=A(p,p)*cc+A(q,q)*ss+A(p,q)*s2;%Pt.(7d)
lambda(q,q)=A(p,p)*ss+A(q,q)*ccA(p,q)*s2;%Pt.(7e)
A=lambda;
121
v(:,[pq])=v(:,[pq])*[cs;sc];
end
lambda=diag(diag(lambda));
tnhccgitrringtadngchngtrnhchngtrnhcteigjacobi.m:
clearall,clc;
a=[135;349;596];
[eigval,eigvec]=eigjacobi(a)
Ccbitonvtlthnganbitongitrringdidng:
[A][X]=[B][X]
(10)
Trong [A] v [B] l cc ma trn i xng cp n. Ta gi s [B] xc nh
dng.Bitonnhvyphiavdngchuntrckhidngthutton
ngchohoJacobi.Do[B]lmatrnixng,xcnhdngnntheo
thuttonCholeskitaphntchnthnhtch2matrn[B]=[L][L]T.Bygi
taavophpbini:
[ X ] = ([L ]1 ) [ Z ]
T
(11)
Thay(11)vo(10)tac:
[ A ] ([ L ]1 ) [ Z ] = [ L][L]T ([ L]1 ) [ Z ]
T
Nhntrchaivvi[L]1tac:
Do [ L] [ L ] = [ L] ([ L] )T = [ E] nn:
(12)
[ H][ Z ] = [ Z ]
ldngchuncabitontmgitrringvvectringvi:
(13)
dngthuttonCholeskitnh[L]
tnh[L]1
tnh[H]theo(13)
giibiton(12)theothuttonngchohoJacobi
tmvectringtheo(11),gitrringkhngikhibini
Taxydnghmstdform()toramatrn[H]v[T]=([L]1)T
122
function[H,T]=stdform(A,B)
%BiendoiA*x=lambda*B*xthanhH*z=lambda*z
n=size(A,1);
L=choleski(B);
Linv=invert(L);
H=Linv*(A*Linv);
T=Linv;
functionLinv=invert(L)
%nghichdaomatrantamgiactraiL.
n=size(L,1);
forj=1:n1
L(j,j)=1/L(j,j);
fori=j+1:n
L(i,j)=dot(L(i,j:i1),L(j:i1,j)/L(i,i));
end
end
L(n,n)=1/L(n,n);
Linv=L;
30.THUTTONQR
Chomatrn[A]tacthtmcmatrn[Q]v[R]saocho:
[A]=[Q][R]
Trong[Q]lmatrntrcgiaov[R]lmatrntamgicphi.
tmccgatrringcamatrn[A],tathchinphntchQRcho
[A]bngthuttonHouseholderhaythuttonGivens.Sautaxydng
matrn[A1]=[R1][Q1].TiptcphntchQRmatrn[A1]=[Q1][R1]vlixy
dngmatrn[A2]=[R2][Q2]chonkhihit.Thuttonnycthpdng
chomatrnbtk.Tuynhinnshiuquhnnumatrn[A]lmatrn
ba ng cho hay ma trn Hessenberg. Ta xy dng hm qreig() thc
hinthuttontrn:
function[lambda,evec]=qreig(a)
%TinhcacgiatririengbangthuattoanphantichQR
fori=1:500
123
s1=diag(a);
[q,r]=qrdecom(a);
a=r*q;
s2=diag(a);
ifabs(max(s2s1))<1e8
break;
end
end
lambda=diag(a);
n=size(lambda,1);
evec=zeros(n);
c=evec;
e=eye(n);
fori=1:n
b=alambda(i)*e;
c=nulld(b);
evec(:,i)=c(:,1);
end
lambda=diag(lambda);
clearall,clc
globalcd
a=[1234;2765;3690;4503];
[eval,evec]=symmateig(a)
n=size(a,1);
31.THUTTONRUTISHAUSER
Chomatrn[A]ixng,xcnhdng,tadngthuttonCrout
phntchnthnh:
[A]=[L][R]
(1)
Sautaxydngmatrn:
[A1]=[R][L]
(2)
124
Matrn[A1]sccnggitrringvimatrn[A].Talitiptcphntch
matrn[A1]theothuttonCrout:
[A1]=[L1][R1]
(3)
Vsautaxydngmatrn:
[A2]=[R1][L1]
Tiptcqutrnhtanhncmatrn:
[An]=[Ln][Rn]
[An+1]=[Rn][Ln]
Khi n , [An] tr thnh ma trn tam gic trn c cc phn t trn ng
chochnhlccgitrringcamatrn[A].Phplpnyhitkhi[A]l
matrnxng,xcnhdng.Khi[A]khngxcnhdng,phplp
khngnnh.PhntchCroutcngkhngthchinckhicmtphn
trii=0.Taxydnghmrutishauser()thchinthuttontrn:
function[lambda,evec]=rutishauser(a)
%TinhcacgiatririengbangthuattoanphantichLR
fori=1:500
s1=diag(a);
[l,r]=crout(a);
a=r*l;
s2=diag(a);
ifabs(max(s2s1))<1e8
break;
end
end
lambda=diag(a);
n=size(lambda,1);
evec=zeros(n);
c=evec;
e=eye(n);
fori=1:n
b=alambda(i)*e;
c=nulld(b);
evec(:,i)=c(:,1);
end
125
lambda=diag(lambda);
tnhccgitrringcamatrntadngchngtrnhctrutishauser.m:
clearall,clc
a=[1234;5678;9012;3456];
[lambda,evec]=rutishauser(a)
32.THUTTONFADDEEVLEVERIERSOURIAU
Chomatrn[A]:
a11 a11 L a1n
a
a 22 L a 2n
21
[A] =
M L M
M
a
n1 a n 2 L a nn
Ccgitrringcamatrn[A]lnghimcaathcctrng:
det ([ A ] [ E ]) = 0
(1)
Khikhaitrinnhthctrn,tacathccpn:
Pn ( ) = n p1 n 1 p1 n 1 L pn = 0
Givtcamatrnltngccphnttrnngchochnh:
trace([A])=a11 + a 22 + L + a nn
Cchscaathc(2)cxcnhtheo:
p1 = trace([ B1 ])
[ B1 ] = [ A ]
1
p2 = trace([ B1 ])
[ B2 ] = [ A ]([ B1 ] p1 [E])
2
1
p3 = trace([ B3 ])
[ B 3 ] = [ A ] ([ B 2 ] p2 [ E ] )
3
L
(2)
(3)
1
trace([ Bn ])
[ Bn ] = [ A ]([ Bn1 ] pn1 [E])
n
Giih(3)tacccgitrringca[A].
Taxydnghmfadlev()thchinthuttontrn:
function[lambda,evec]=fadlev(a)
%TimcacgiatririengvavectoriengbangphuongphapFaddeevLeverrier
n=size(a,1);
b=a;
pn =
126
fori=1:n
s=0;
fork=1:n
s=s+b(k,k);
end
p=s/i;
b=a*(bp*eye(n));
r(i+1)=p;
end
r(1)=1;
lambda=roots(r);
n=size(lambda,1);
evec=zeros(n);
c=evec;
e=eye(n);
fori=1:n
b=alambda(i)*e;
c=nulld(b);
evec(:,i)=c(:,1);
end
lambda=diag(lambda);
tmccgitrringcamatrntadngchngtrnhctfaclev.m:
clearall,clc
a=[112314;29352;45678;32167;49682];
[lambda,evec]=fadlev(a)
33.THUTTONKRYLOV
athcctrngcamatrn[A]cdng:
Pn ( ) = n p1 n 1 p1 n 2 L pn = 0
(1)
Tavitli(1)didng:
n 1
Pn ( ) = + pi i
n
(2)
i =0
TheonhlHamiltonKellytacP([A])=0.Xtdylp:
127
v(i+1) = [ A ] v(i)
DoP([A])=0nn:
i=0,1,...,n1
(3)
(4)
(5)
(6)
+1)
v(k
= ([ A ] v(k) )i = a i ,jv(k)
i=1,2,...,nk=0,1,...,n1
i
j
(7)
n 1
(i)
t v(i) = v(i)
1 ,...,v n
tac:
n 1
v(n)
+ i v(i) = 0
j
i =0
hay:
1)
v(n
v1(n)
L v(0)
1
1 n 1
= M
M
L
M
M
1)
(0)
(n)
v(n
L v n 0
n
v n
V v(k +1) = [ A ] v(k)
nn:
n
j=1
TmliqutrnhtnhtontheothuttonKrylovnhsau:
Chnv(0)tu,tnh v(k)
i theo(7)
Giih(6)tm
Khitmc tacathcctrng.
Taxydnghmkrylov()thchinthuttontrn:
function[lambda,evec]=krylov(a)
%TimgiatririengbangthuattoanKrylov
n=size(a,1);
v=zeros(n,1);
v(1)=1;
b=zeros(n,n);
b(:,n)=v;
fork=2:n
v=a*v;
b(:,nk+1)=v;
end
c=a*v;
128
rho=b\c;
rho=[1rho];
lambda=roots(rho);
n=size(lambda,1);
evec=zeros(n);
c=evec;
e=eye(n);
fori=1:n
b=alambda(i)*e;
c=nulld(b);
evec(:,i)=c(:,1);
end
lambda=diag(lambda);
tmgitrringcamatrntadngchngtrnhctkrylov.m:
clearall,clc
a=[17243017;813207;21086;23435426];
[lambda,evec]=krylov(a)
34.THUTTONHYMAN
ChomatrnHessenberg[B]vlmtgitrringca[B].Tatm:
(),x1(),x2(),...,xn1()
saocho[X]=[x1(),x2(),...,xn1(),xn]Tvixn=1lnghimcabiton:
( [ B] [ E ] ) [ X ] = [ e1 ]
nghal:
(b1,1 )x1 + b1,2 x 2 + L + b1,n 1 =
b x + (b )x + L + b 1 = 0
2 ,2
2
2 ,n
2 ,1 1
b n ,n 1x n1 + (b n ,n )1 = 0
Thaythngctaccccnghimxn1,xn2,...,x1v().
TheoquytcCramertac:
129
b1,1
b
0
2 ,1
det
0
b
0
n 1,n 1
0
b n ,n 1
0
1 = xn =
det ([ B] [ E ])
( )( 1)n 1 b 2 ,1 L b n ,n 1
=
det ([ B] [ E ])
Do:
( 1)n 1
( ) =
det ([ B] [ E ])
b 2 ,1 L b n ,n 1
athc()chsaikhcathcctrngp()mtnhnthng.Dovyta
cthdng ()tmccgitrringthaychop().Hm alffa()thchin
cngvicny:
functionr=alfa(a);
n=size(a,1);
b=a;
l=1;
fori=2:n
l=l*a(i,i1);
end
sign=(1)^(n1);
fori=1:n
s=0;
fork=1:n
s=s+b(k,k);
end
p=s/i;
b=a*(bp*eye(n));
r(i+1)=p;
end
r(1)=1;
r=sign*r/l;
130
Nuchomtmatrnbtk[A],tacthbiniHouseholdernthnhma
trnHessenberg[B]ngdngvi[A].Saukhicccgitrring,tatmcc
vectringtngng.Hmhyman()thchinthuttonny:
function[lambda,evec]=hyman(a)
%TimcacgiatririengvavectoriengbangphuongphapHyman
b=hessenberg(a);
r=alfa(b);
lambda=roots(r);
n=size(lambda,1);
evec=zeros(n);
c=evec;
e=eye(n);
fori=1:n
b=alambda(i)*e;
c=nulld(b);
evec(:,i)=c(:,1);
end
lambda=diag(lambda);
tmccgitrringvvectringtngngcamtmatrntadng
chngtrnhcthyman.m:
clearall,clc
a=[1234;2523;7141;3237];
[lambda,evec]=hyman(a)
35.TRCGIAOHOARNOLDI
Trongistuyntnh,phngphpArnoldicW.Arnoldiara
nm1951.PhngphplpArnoldisdngtrcgiaohoGramSchmidt
toradyccvecttrcgiao[q1],..,[qn]gilccvectArnoldi.Thut
toncthgmccbc:
- Chovectbtk[q1]c [ q1 ] = 1
- Lptk=2,3,...
131
[A][qk1]=[qk]
forj=1:k1
T
q j q k = h j,k 1
q k = h j,k 1 q j
[ q k ] = h k ,k 1
[ q k ] =
qk
h k ,k 1
Tagi[Qn]lmatrntotnvectArnoldiutin[q1],..,[qn]utinv
[Hn]lmatrn(Hessenbergtrn)tobinhngutinca[H]vc:
[Hn]=[Q]T[A][Q]
Taxydnghmarnoldi()thchinthuttontrn:
function[Hn,Vn]=arnoldi(A);
k=50;
m=size(A,1);
v=rand(m,1);
n=size(A,1);
H=zeros(m+1,m);
V=zeros(n,m+1);
V(:,1)=v/norm(v);
forj=1:m
w=A*V(:,j);
fori=1:j
H(i,j)=V(:,i)*w;
w=wH(i,j)*V(:,i);
end
H(j+1,j)=norm(w);
ifH(j+1,j)<=eps,
break;
end
V(:,j+1)=w/H(j+1,j);
end
Hn=H(1:m,:);
132
Vn=V(:,1:m);
phntchmatrntadngchngtrnhctarnoldi.m:
clearall,clc
A=[7231;2851;35129;1197];
[H,V]=arnoldi(A)
36.TRCGIAOHOLANCZOS
Chomatrn[A]ixng.Taphntchmatrnthnhccmatrn[Q]
v[T]saocho:
[A]=[Q][T][Q]T
vi: [Q][Q]T = [E], ngha l [Q] l ma trn trc giao v [T] l ma trn ba
ngchoixng.ThuttonLanczosgmccbc:
- Chovect[v1]c [ v1 ] = 1
- Chov0=0,0=0.[V]=[v1]
- Lp:
v j+1 = A v j j1 v j1
T
alfa = v j v j+1
v j+1 = v j+1 v j
T
Taxydnghmlanczos()thchinthuttonLanczos
function[T,Q]=lanczos(A);
%thuattoanLanczoschomatrandoixung
n=size(A,1);
Q(:,1)=rand(n,1);
Q(:,1)=Q(:,1)./norm(Q(:,1));
a(1)=Q(:,1)*A*Q(:,1);
Q(:,2)=A*Q(:,1)a(1)*Q(:,1);
133
b(1)=norm(Q(:,2));
Q(:,2)=1./b(1)*Q(:,2);
fori=2:n1
a(i)=Q(:,i)*A*Q(:,i);
Q(:,i+1)=A*Q(:,i)a(i)*Q(:,i)b(i1)*Q(:,i1);
b(i)=norm(Q(:,i+1));
Q(:,i+1)=1./b(i)*Q(:,i+1);
end
a(n)=Q(:,n)*A*Q(:,n);
T=diag(a)+diag(b,1)+diag(b,1);
phntchmatrntadngchngtrnhctlanczos.m:
clearall,clc
A=[4132;1241;3412;2123];
[T,Q]=lanczos(A);
134