Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Matlab Co Ban
Matlab Co Ban
1.CCTONTCBNCAMATLAB
1.Cctontcbn:Matlablmtphnmmcaocpdnggiiccbi
ton.khingMATLABtabmpvoiconcan.CcfileMATLAB
c dng *.m v ch chy trong mi trng MATLAB. MATLAB x l s liu
nhlmatrn.Khitanhlnhvocaslnh,nscthihnhngayv
kt qu hin ln mn hnh. Nu ta khng mun cho kt qu hin ln mn
hnhthsaulnhtatthmdu;.Nulnhqudi,khngvamtdng
dngcthnhlnhtrnnhiudngvcuimidngtthmdu...ri
xungdng.Khisontholnhtacthdngccphmtt:
CtrlP gililnhtrc
CtrlN gilnhsau
CtrlB lilimtkt
CtrlF tinlnmtkt
Ctrl CtrlR sangphimtt
Ctrl CrtlL sangphimtt
home CtrlA vudng
end CtrlE vcuidng
esc CtrlU xodng
del CtrlD xokttichconnhyng
)CcphptoncbncaMATLABgm:
cng
tr
nhn
chiaphi
chiatri
lutha
chuynvmatrnhaysphclinhp
)Cctontquanh:
< nhhn
<= nhhnhaybng
> lnhn
>= lnhnhocbng
== bng
1
~= khngbng
)Cctontlogic:
&
v
|
or
~
not
)Cchng:
pi 3.14159265
i so
j tngti
eps sais252
realmin sthcnhnht21022
realmax sthclnnht21023
inf vcngln
NaN
Notanumber
ngncchccphntcamatrnbngdu,haydutrng
dngdu;ktthcmthng
baoccphntcamatrnbngcpdungocvung[]
nhpccmatrnsau:
1 2 4
1
A = 3 2 5
B = 1 4 2 1
C = 4
1 5 3
7
tadngcclnh:
A=[123;324;153]
B=[1421]
C=[1;4;7]
3.Nhpxutdliutfile:MATLABcthxlhaikiufiledliu:file
2
saveABCABC
vnpliccmatrnA,Bbnglnh:
loadABCAB
NumunlusliucamatrnBdidngfileASCIItavit:
saveb.datB/ascii
Tavitchngtrnhct1_1.mnhsau:
clear
A=[123;456]
B=[3;2;1];
C(2)=2;C(4)=4
disp(Nhanphimbatkydexemnhap/xuatdulieutufile)
saveABCABC%luuA,B&CduoidangMATfilecotenABC.mat
clear(A,C)%xoaAvaCkhoibonho
loadABCAC%docMATfiledenhapAvaCvaobonho
saveb.datB/ascii%luuBduoidangfileASCIIcotenb.dat
clearB
loadb.dat%docASCII
b
x=input(Nhapx:)
formatshorte
x
formatrat,x
formatlong,x
formatshort,x
4. Nhp xut d liu t bn phm: Lnh input cho php ta nhp s liu t
bnphm.Vd:
x=input(Nhapx:)
Lnhformatchophpxcnhdngthccadliu.Vd:
formatrat%sohuuti
formatlong%sosc14chusosaudauphay
formatlonge%sodangmu
formathex%sodanghex
formatshorte%sodangmungan
formatshort%trovesodangngan(default)
Mtcchkhchinthgitrcabinvchuilnhtnbinvocas
lnh MATLAB. Ta cng c th dng disp v fprintf hin th cc bin. V
d:
disp(Trisocuax=),disp(x)
Tavitchngtrnhct1_2.mnhsau:
clc
f=input(NhapnhietdoFahrenheit[F]:);
c=5/9*(f32);
fprintf(%5.2f(doFahrenheit)la%5.2f(doC).\n,f,c)
fid=fopen(ct1_2.dat,w);
fprintf(fid,%5.2f(doFahrenheit)la%5.2f(doC).\n,f,c);
fclose(fid);
Trongtrnghptamunnhpmtchuitbnphm,tacnphithmk
tsvois.Vd:
ans=input(Bantraloi<co>hoac<khong>:,s)
5.Cchmtonhc:
a.Cchmtonhccbn:
exp(x) hm e x
sqrt(x) cnbchaicax
log(x) logarittnhin
4
log10(x) logaritcs10
abs(x) moduncasphcx
angle(x) argumentcasphca
conj(x) sphclinhpcax
imag(x) phnocax
real(x) phnthccax
sign(x) ducax
cos(x)
sin(x)
tan(x)
acos(x)
asin(x)
atan(x)
cosh(x)
coth(x)
sinh(x)
tanh(x)
acosh(x)
acoth(x)
asinh(x)
atanh(x)
b.Cchmtonhctto:MATLABchophptatohmtonhcv
lunvomtfiledngnhlhmcsncaMATLAB.Vdtacnto
hm:
1
f1 (x) =
1 + 8x 2
vhm:
x12 + 4x 22 5
f1 (x1 ,x 2 )
f2 (x) =
=
2x 2 2x 3x 2.5
f
(x
,x
)
2
1
2
1
1
2
Munthtatorafilef1.mnhsau:
functiony=f1(x)
y=1./(1+8*x.^2);
vfilef2.m:
5
functiony=f2(x)
y(1)=x(1)*x(1)+4*x(2)*x(2)5;
y(2) = 2*x(1)*x(1)-2*x(1)-3*x(2) -2.5;
Khinhplnhf1(2)tacgitrcahmf1tix=2.Khinhplnhf2([24])ta
cgitrcahmf2tix1=2vx2=4.Lnh feval(f1, 2)v feval(f2,[24])
cngchoktqutngt.
Cchthhaibiudinmthmtonhcmtbintrndnglnhl
toramtitnginlinetmt biuthcchui. Vdtacthnhpt
dnglnhhmnhsau:
f1=inline(1./(1+8*x.^2),x);
f1([01]),feval(f1,[01])
Tacngcthvit:
f1=1./(1+8*x.^2);
x=[01];
eval(f1)
Nuhmlathctachcnnhpmatrncchstsmcaonht.
VdviathcP4(x)=x4+4x3+2x+1tavit:
P=[14021]
nhnhaiathctadnglnh conv;chia2athctadnglnh
deconv.Muntnhtrscaathctadnglnh polyvalvlnh polyvalm
dngkhiathclmatrn.
c.Cclnhxlhm:Lnhfplotvthhmtonhcgiaccgitr
cho.Vd:
fplot(f1,[55])
gridon
Chomthmtonhcmtbin,tacthdnglnhfminbndcaMATLAB
tmcctiuaphngcahmtrongkhongcho.Vd:
f=inline(1./((x0.3).^2+0.01)+1./((x0.9).^2+0.04)6);
x=fminbnd(f,0.3,1)
functionb=three_var(v)
x=v(1);
y=v(2);
z=v(3);
b=x.^2+2.5*sin(y)z^2*x^2*y^2;
Bygitmcctiuivihmnybtutx=0.6,y=1.2vz=0.135
bngcclnh:
v=[0.61.20.135];
a=fminsearch(three_var,v)
f=inline(1./((x0.3).^2+0.01)+1./((x0.9).^2+0.04)6);
a=fzero(f,0.2)
Zerofoundintheinterval:[0.10949,0.264].
a=
0.1316
6.Ccphptontrnmatrnvvect:
a.Khinimchung:Gistatoraccmatrnavbbngcclnh:
a=[123;456];
b=[321];
Tacthsaichng:
A=[a;789]
B=[b;[101]]
Tontdngchuynvmtmatrnthcvchuynvlinhpmtma
trnphc.Nuchmunchuynvmatrnphc,tadngthmtont.
nghalphivit..Vd:
C=[1+2*i24*i;3+i22*j];
X=C
Y=C.
xcnhkchthccamtmatrntadnglnhlength(trvkch
thclnnht)haysize(shngvct).Vd:
c=[1234;5678];
length(c)
[m,n]=size(c)
c.Tont::Tont:lmttontquantrngcaMATLAB.N
xuthinnhiudngkhcnhau.Vd:
1:10
tomtvecthngcha10snguynt1n10.Lnh:
100:7:50
tomtdyst100n51,gim7miln.Lnh:
0:pi/4:pi
tomtdyst0npi,cchunhaupi/4
Ccbiuthcchsthamchiutimtphncamatrn.VitA(1:k,j)
l tham chiu n k phn t u tin ca ct j. Ngoi ra ton t : tham
chiutittcccphntcamthnghaymtct.Vd:
B=A(:,[132])
toramatrnBtmatrnAbngcchithtccctt[123]thnh
[132]
d.Tomatrnbnghmcsn:MATLABcungcpmtshmto
ccmatrncbn:
zeros toramatrnmccphntulzeros
z=zeros(2,4)
ones toramatrnmccphntul1
x=ones(2,3)
y=5*ones(2,2)
rand toramatrnmccphntngunhinphnbu
d=rand(4,4)
randn toramatrnmccphntngunhinphnbtrcgiao
e=randn(3,3)
magic(n)toramatrncpngmccsnguynt1nn2vitng
cchngbngtngccctnphilnhnhaybng3.
pascal(n)toramatrnxcnhdngmccphntlyttamgic
Pascal.
pascal(4)
eye(n)tomatrnnv
eye(3)
eye(m,n)tomatrnnvmrng
eye(3,4)
e.Lpghp:Tacthlpghp(concatenation)ccmatrncsnthnh
mtmatrnmi.Vd:
a=ones(3,3)
b=5*ones(3,3)
c=[a+2;b]
f.Xohngvct:Tacthxohngvcttmatrnbngdngdu
[].xoctth2camatrnbtavit:
b(:,2)=[]
Vit x(1:2:5)=[]nghaltaxoccphntbtutnphntth5v
cch2rispxplimatrn.
g.Cclnhxlmatrn:
Cng :X=A+B
Tr :X=AB
Nhn :X=A*B
:X.*Anhnccphnttngngvinhau
Chia :X=A/BlcX*B=A
:X=A\BlcA*X=B
:X=A./Bchiaccphnttngngvinhau
Lutha :X=A^2
:X=A.^2
Nghcho :X=inv(A)
nhthc :d=det(A)
7. To s ngu nhin: MATLAB c cc lnh to s ngu nhin l rand v
randntoraccsngunhintheophnbGauss.
rand(m,n)toramatrnccsngunhinphnbngnht.
randn(m,n)toramatrnccsngunhintheophnbchunGauss.
rand(3,3)
10
randn(3,3)
8.Cclnhdnglptrnh:
a.Ccphtbiuiukinif,else,elseif:
Cphpcaif:
if<biuthciukin>
<phtbiu>
end
Nu<biuthciukin>choktqungthphnlnhtrongthncaif
cthchin.
Ccphtbiuelsevleseifcngtngt.
Vd:Taxtchngtrnh)ct1_4.montuinhsau:
clc
disp(Xinchao!Hanhanhduoclamquen);
x=fix(30*rand);
disp(Tuoitoitrongkhoang030);
gu=input(Xinnhaptuoicuaban:);
ifgu<x
disp(Bantrehontoi);
elseifgu>x
disp(Banlonhontoi);
else
disp(Banbangtuoitoi);
end
b.switch:Cphpcaswitchnhsau:
switch<biuthc>
casen1:<lnh1>
casen2:<lnh2>
...............
casenn:<lnhn>
otherwise:<lnhn+1>
end
c.while:vnglpwhiledngkhikhngbittrcslnlp.Cphp
cannhsau:
11
while<biuthc>
<phtbiu>
end
XtchngtrnhinrachuoiXinchaolnmhnhvislnnhpt
bnphmct1_5.mnhsau:
clc
disp(xinchao);
gu=input(Nhapsolanin:);
i=0;
whilei~=gu
disp([Xinchaoi]);
i=i+1
end
d.for:vnglpfordngkhibittrcslnlp.Cphpnhsau:
for<chs>=<gitru>:<mctng>:<gitrcui>
Taxydngchngtrnhonsct1_6.m:
clc
x=fix(100*rand);
n=7;
t=1;
fork=1:7
num=int2str(n);
disp([Bancoquyendudoan,num,lan]);
disp(Socandoannamtrongkhoang0100);
gu=input(Nhapsomabandoan:);
ifgu<x
disp(Bandoannhohon);
elseifgu>x
disp(Sobandoanlonhon);
else
disp(Bandadoandung.Xinchucmung);
t=0;
break;
end
12
n=n1;
end
ift>0
disp(Bankhongdoanraroi);
numx=int2str(x);
disp([Dolaso:,numx]);
end
2.HOTRONGMATLAB
1.Cclnhv:MATLABcungcpmtlothmvbiudinccvects
liucngnhgiithchvinccngcongny.
plot ha2Dvisliu2trcvhngvtuyntnh
plot3
ha3Dvisliu2trcvhngvtuyntnh
polar
hotronghtocc
loglog
hovicctrclogarit
semilogx hovitrcxlogaritvtrcytuyntnh
semilogy hovitrcylogaritvtrcxtuyntnh
plotyy
hovitrcycnhnbntrivbnphi
t=[0:pi/100:2*pi]
y=sin(t);
plot(t,y)
gridon
polar(t,y)
3.ctkiungv:Tacthdngcckiungvkhcnhaukhiv
hnh.Munthtachuynkiungvchohm plot.Tavitchngtrnh
ct1_7.mtorathhmhnhsin:
13
t=[0:pi/100:2*pi];
y=sin(t);
plot(t,y,.)%vbngngchmchm
gridon
4.ctmuvkchthcngv:ctmuvkchthcng
vtadngccthamssau:
LineWidth rngngthng,tnhbngsim
MarkerEdgeColor
mucacccnhcakhinhdu
MarkerFaceColor
mucakhinhdu
MarkerSize
kchthccakhinhdu
Mucxcnhbngccthams:
M
Mu
M
Mu
r
red
m
magenta
g
green
y
yellow
b
blue
k
black
c
cyan
w
white
Ccdngimnhduxcnhbng:
M
Kiunhdu
M
Kiunhdu
+ ducng
. im
o vngtrn
x chthp
* dusao
s hnhvung
d htkimcng
v imtamgichngxung
^ imtamgichngln
< tamgicsangtri
> tamgicsangphi
h lcgic
p nggic
Ccdngngthngxcnhbng:
M
Kiung
M
Kiung
nglin
:
ngchmchm
ngtnt
. ngchmgch
14
Taxtchngtrnhct1_8.mnhsau:
x=pi:pi/10:pi;
y=tan(sin(x))sin(tan(x));
plot(x,y,rs,LineWidth,2,MarkerEdgeColor,k,...
MarkerFaceColor,g,MarkerSize,10)
Chngtrnhnysvngcongy=f(x)cccctsau:
ngvlngtnt()
khinhduhnhvung(s),ngvmu(r)
ngvrng2point
cccnhcakhinhmuen
khinhdumugreen
kchthckhinhdu10point
5.Thmngvvothc:lmiunytadnglnh hold.Khi
tanhlnhholdonthMATLABkhngxothangc.Nthmsliu
vothminy.Nuphmvigitrcathmivtquccgitr
catrctocthnsnhlitlxch.
6.Chvccimsliu:vccimnhdumkhngnichngli
vi nhau ta dng c t ni rng khng c cc ng ni gia cc im,
nghaltagihm plotchvictmuvimnhdu.Taxtchng
trnhct1_9.mnhsau:
x=pi:pi/10:pi;
y=tan(sin(x))sin(tan(x));
plot(x,y,s,MarkerEdgeColor,k)
7. V cc im v ng: v c cc im nh du v ng ni gia
chngtacnmtkiungvkiuim.Taxtchngtrnhct1_10.m:
x=0:pi/15:4*pi;
y=exp(2*sin(x));
plot(x,y,r,x,y,ok)
dngvngcongy=f(x)cngnilin,mu.imnhdul
15
chocmuen.
t=0:900;
A=1000;
b=0.005;
a=0.005;
z2=sin(b*t);
z1=A*exp(a*t);
[haxes,hline1,hline2]=plotyy(t,z1,t,z2,semilogy,plot);
9.Vngcongvisliu3D:Nux,y,zl3vectccngdith
plot3svngcong3D.Tavitchngtrnhct1_12.m:
t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
axissquare;
gridon
10.tccthngschotrc:Khitatomthnhv,MATLABtngchn
ccgiihntrntrctovkhongcchnhdudatrnsliudng
v.Tuynhintacthmtliphmvigitrtrntrcvkhongcch
nhdutheoring.Tacthdngcclnhsau:
axis
tliccgitrtrntrcto
axes
tomttrctomiviccctnhcmt
getvset chophpxcnhvtccthuctnhcatrctoang
c
gca trvtrctoc
MATLAB chn cc gii hn trn trc to v khong cch nh du da
trnsliudngv.Dnglnh axiscthtligiihnny.Cphp
calnh:
axis[xmin,xmax,ymin,ymax]
Taxtchngtrnhct1_13.mnhsau:
16
x=0:0.025:pi/2;
plot(x,tan(x),ro)
axis([0pi/205])
MATLABchiavchtrntrcdatrnphmvidliuvchiau.Tacth
mtcchchianhthngs xtickv ytickbngmtvecttngdn.Vd
xtchngtrnhct1_14.m:
x=pi:.1:pi;
y=sin(x);
plot(x,y)
set(gca,xtick,pi:pi/2:p);
set(gca,xticklabel,{pi,pi/2,0,pi/2,pi})
11.Ghinhnlncctrcto:MATLABcungcpcclnhghinhnln
hogm:
title
thmnhnvoho
xlabel
thmnhnvotrcx
ylabel thmnhnvotrcy
zlabel
thmnhnvotrcz
legend
thmchgiivoth
text
hinthchuivnbnvtrnhtnh
gtext
tvnbnlnhonhchut
\bf
boldfont
\it
italicsfont
\sl
obliquefont(chnghing)
\rm
normalfont
CcktcbitxemtrongStringpropertiescaHelp.
Tadngcclnh xlabel,ylabel,zlabelthmnhnvocctrcto.Ta
c th thm vn bn vo bt k ch no trn hnh v nh hm text. Ta c
chngtrnhct1_15.m:
x=pi:.1:pi;
y=sin(x);
plot(x,y)
xlabel(t=0to2\pi,Fontsize,16)
ylabel(sin(t),Fontsize,16)
17
title(\it{Giatricuasintuzeron2pi},Fontsize,16)
text(3*pi/4,sin(3*pi/4),\leftarrowsin(t)=0.707,FontSize,12)
12.nhvvnbntrnhnhv:Tacthsdngitngvnbnghi
chcctrcvtrbtk.MATLABnhvvnbntheonvdliutrn
trc.Vdvhmy=AetviA=0.25,t=0n900v=0.005tavit
chngtrnhct1_16.m:
t=0:900;
plot(t,0.25*exp(0.005*t))
plot(t,y)
text(300,.25*exp(.005*300),...
\bullet\leftarrow\fontname{times}0.25{\ite}^{0.005{\itt}}tai,...
{\itt}=300,FontSize,14)%ghichutait=300
13.hocbit:
a.Khivvng:hokhivvngbiudinsliulvecthayma
trn.MATLABcungcpcchmhokhivvng:
bar
hinthccctcamatrnm*nnhlmnhm,minhm
cnbar
barh
hinthccctcamatrnm*nnhlmnhm,minhm
cnbarnmngang
bar3
hinthccctcamatrnm*nnhlmnhm,minhm
cnbardng3D
bar3hhinthccctcamatrnm*nnhlmnhm,minhm
cnbardng3Dnmngang
Mc nh, mi phn t ca ma trn c biu din bng mt bar. Ta xt
chngtrnhct1_17.m:
y=[521
673
863
555
158];
18
bar(y)
nhdo=[2923272520232327];
ngay=0:5:35;
bar(ngay,nhdo)
xlabel(Ngay)
ylabel(Nhietdo(^{o}C))
set(gca,YLim,[1530],Layer,top)
gridon
set(gca,YLim,[1530])
set(gca,YLim,[1530],Layer,top)
vtrnth,phmvigitrcatrcythayi.
c.Xpchngth:Tacthxpchngsliutrnththanhbng
cchtoramttrckhctrncngmtvtrvnhvytacmttrcyc
lpvibsliukhc.
TCE=[5154203702501351206020];
nhdo=[2923272520232327];
ngay=0:5:35;
bar(ngay,nhdo)
xlabel(Ngay)
ylabel(Nhietdo(^{o}C))
h1=gca;
vtotrcth2vtrtrcthnhttrcnhtvbsliuth2:
h2=axes(Position,get(h1,Position));
19
plot(days,TCE,LineWidth,3)
trcth2khnggytrngichotrcthnhttavit:
set(h2,YAxisLocation,right,Color,none,XTickLabel,[])
set(h2,XLim,get(h1,XLim),Layer,top)
ghichlnthtavit:
text(11,380,Matdo,Rotation,55,FontSize,16)
ylabel(TCEMatdo(PPM))
title(Xepchongdothi,FontSize,16)
(lutrongct1_19.m)
d.hovng:Hmareahinthngcongtotmtvecthayt
mt ct ca ma trn. N v cc gi tr ca mt ct ca ma trn thnh mt
ngcongringvtyvngkhnggiangiaccngcongvtrcx.
taxtchngtrnhct1_20.m:
Y=[512
837
968
555
423];
area(Y)
hinththc3vng,mivngmtct.caocamithvngl
tngccphnttrongmthng.Mingcongsausdngngcong
trclmcs.hinthngchialitadnglnh:
set(gca,Layer,top)
set(gca,XTick,1:5)
gridon
x=sum(X);
explode=zeros(size(x));
[c,offset]=max(x);
explode(offset)=1;
h=pie(x,explode)
%A=[136];
%pie3(A)
x=[.19.22.41];
pie(x)
g.Lmhnhchuynng:Tacthtorahnhchuynngbng2cch
tovlunhiuhnhkhcnhauvlnlthinthchng
dnghm movieindnhbnhchomtmatrnlnnhmlu
cckhunghnh.
dnghmgetframestocckhunghnh.
dnghmmoviehinthcckhunghnh.
Sau y l v d s dng movie quan st hm fft(eye(n)).Ta to chng
trnhct1_22.mnhsau:
axisequal
M=moviein(16,gcf);
set(gca,NextPlot,replacechildren)
h=uicontrol(style,slider,position,[1001050020],Min,1,Max,16)
forj=1:16
plot(fft(eye(j+16)))
21
set(h,Value,j)
M(:,j)=getframe(gcf);
end
clf;
axes(Position,[0011]);
movie(M,30)
Bcutintohnhnhchuynnglkhignmatrn.Tuynhin
trc khi gi hm moviein, ta cn to ra cc trc to c cng kch thc
vikchthcmtamunhinthhnh.Dotrongvdnytahinthccs
liucchutrnvngtrnnvnntadnglnhaxisequalxcnht
lcctrc.Hm movieintoramatrnlncha16khunghnh.Pht
biu:
set(gca,NextPlot,replacechildren)
none
MATLABkhngxoitngkhindichuyn
background
MATLABxoitngbngcchvncmu
nn
xor
MATLABchxoitng
TatoraMfilectnlct1_23.mnhsau:
A=[8/300;01010;0281];
y=[35107];
h=0.01;
p=plot3(y(1),y(2),y(3),.,...
EraseMode,none,MarkerSize,5);
axis([05025252525])
22
holdon
fori=1:4000
A(1,3)=y(2);
A(3,1)=y(2);
ydot=A*y;
y=y+h*ydot;
set(p,XData,y(1),YData,y(2),ZData,y(3))%thaydoitoado
drawnow
i=i+1;
end
13.ho3D:
[x,y]=meshgrid(8:.5:8);
r=sqrt(x.^2+y.^2)+0.005;
matrnrchakhongcchttmcamatrn.Tiptheotadnghm mesh
vhm.
z=sin(r)./r;
mesh(z)
c.thngngmc:Cchmcontourto,hinthvghichcc
ngngmccamthaynhiumatrn.Chnggm:
clabel
toccnhnsdngmatrncontourvhinthnhn
contour hin th cc ng ng mc to bi mt gi tr cho trc
camatrnZ.
23
contour3 hinthccmtngmctobimtgitrchotrcca
matrnZ.
contourf hinththcontour2Dvtmuvnggia2ccng
contourc hmcpthptnhmatrncontour
Hmmeshchinthcontourvlivsurfchinthmtcontour.
[X,Y,Z]=peaks;
contour(X,Y,Z,20)
Micontourcmtgitrgnvin.Hmclabeldnggitrnyhinth
nhnngngmc2D.Matrncontourchagitrclabeldngchocc
ng contour 2D. Ma trn ny c xc nh bi contour, contour3 v
contourf.
hinth10ngngmccahmpeaktavit:
Z=peaks;
[C,h]=contour(Z,10);
clabel(C,h)
title({Caccontourconhan,clabel(C,h)})
Hmcontourfhinththngngmctrnmtmtphngvtmu
vng cn li gia cc ng ng mc. kim sot mu t ta dng hm
caxisvcolormap.Tavitchngtrnhct1_26.m:
Z=peaks;
[C,h]=contourf(Z,10);
caxis([2020])
colormapautumn;
title({Contourcotomau,contourf(Z,10)})
vectc2phntvichaiphntbngmcmongmun.Vdtora
mtngngmc3Dcahmpeakstavitchngtrnhct1_27.m:
xrange=3:.125:3;
yrange=xrange;
[X,Y]=meshgrid(xrange,yrange);
Z=peaks(X,Y);
contour3(X,Y,Z)
hinthmtmcZ=1,tachovl[11]
v=[11]
contour3(X,Y,Z,v)
Hm ginputchophptadngchuthayccphmmitnchncc
imv.Ntrvtocavtrcontr.Vdsausminhhoccdng
hmginputvhmsplinetorangcongnisuyhaibin.
TatomtMfilectnct1_28.mnhsau:
disp(Chuotphaitrocacdiemtrenduongve)
disp(Chuottraitrodiemcuoicuaduongve)
axis([010010])
holdon
x=[];
y=[];
n=0;
but=1;
whilebut==1
[xi,yi,but]=ginput(1);
plot(xi,yi,go)
n=n+1;
x(n,1)=xi;
y(n,1)=yi;
end
t=1:n;
ts=1:0.1:n;
xs=spline(t,x,ts);
25
ys=spline(t,y,ts);
plot(xs,ys,c);
holdoff
14.Vccvect:CnhiuhmMATLABdnghinthccvectchng
vvectvntc.Tanhnghamtvectbngcchdngmthay2is.
Ccismtthnhphnxvthnhphnycavect.Nutadng2i
s th i s th nht s m t thnh phn x v i s th ha m t thnh
phny.NutachdngmtisthMATLABxlnnhmtsphc,
phnthclthnhphnxvphnolthnhphny.
Cchmvvectgm:
compass vccvctbtutgctocahtocc
feather
vccvectbtutmtngthng
quiver
vccvect2Dcccthnhphn(u,v)
quiver3
vccvect3Dcccthnhphn(u,v,w)
hg=[45909045360335360270335270335335];
td=[668639689101412];
Tabinihnggithnhradiantrckhibininthnhto
vunggc.
hg1=hg*pi/180;
[x,y]=pol2cart(hg1,td);
compass(x,y)
vtoraghichtrnth:
gc={HuonggiovsucgiotaisanbayDaNang)
text(28,15,gc)
b.Hmfeather:Hmfeatherhinthccvectbtutmtng
thngsongsongvitrcx.Vdtoraccvectcgct900n00v
cngditavitchngtrnhct1_30.m:
theta=90:10:0;
26
r=ones(size(theta));
trckhiv,chuynccsliusangtovunggcvtnglnthnhr
dnhn:
[u,v]=pol2cart(theta*pi/180,r*10);
feather(u,v)
axisequal
Nuislsphczth feathercoiphnthclxvphnoly.Taxt
chngtrnhct1_31.m:
t=0:0.3:10;
s=0.05+i;
Z=exp(s*t);
feather(Z)
c.Hmquiver:Hmquiverhinthccvectccimchotrong
mtphng.Ccvectnycxcnhbngccthnhphnxvy.
Vdtora10contourcahmpeakstadngchngtrnhct1_32.m:
n=2.0:.2:2.0;
[X,Y,Z]=peaks(n);
contour(X,Y,Z,10)
Bygidnghmgradienttoccthnhphncavectdnglmis
choquiver:
[U,V]=gradient(Z,.2);
tholdonthmngcontour:
holdon
quiver(X,Y,U,V)
holdoff
27
2
Tavitchngtrnhct1_33.m.Trchttagnvntcbanuvgiatca:
v0=10;%Vantocbandau
a=32;%giatoc
Tiptheotnhzticcthiim:
t=0:.1:1;
z=vz*t+1/2*a*t.^2;
Tnhvtrtheohngxvy:
vx=2;
x=vx*t;
vy=3;
y=vy*t;
Tnhccthnhphncavectvntcvhinthbngccdngquiver3:
u=gradient(x);
v=gradient(y);
w=gradient(z);
scale=0;
quiver3(x,y,z,u,v,w,scale)
axissquare
3.GIAODINHO
1.Khinimchung: tindngtacthtonngiaodinho(GUI
GraphicUserInterface)giangidngvMATLAB.Tronggiaodinnyta
cthxutdliudi2dng:vnbnvho.MimtGUIcmthay
nhiu layout(din mo). Vic to GUI to nn mt cng c ho phc v
28
nhp xut d liu mt cch trc gic, rt thun tin. Ngoi ra c th dng
GUIgimstccqutrnh,hinthccitng.
2.Nhpxutkt,sliuraGUI:
a.Tokhunghnh:Taxtcclnhsau(ct1_35.m):
f=input(Nhapnhietdo(doK):);
c=(f32)*5/9;
fprintf(1,nhietdo(doC)la:%g\n,c)
Badnglnhtrnthchincccngvicsau:
nhpgitruvo
thchinphptnhquyinhit
xutktquramnhnh
Bygitatmcchciccdnglnhtrnsaochochngthchintrn
khunkhmtkhunghocdngnhtrn
Cclnhsau(ct1_36.m)thchincngvictrn:
set(gcf,DefaultUicontrolUnit,Normalized)
frame_1=uicontrol(gcf,Style,Frame,...
Position,[0.10.10.80.3]);
frame_2=uicontrol(gcf,Style,Frame,...
Position,[0.10.60.80.3]);
set(frame_1,BackgroundColor,[0.50.50.5]);
set(frame_2,BackgroundColor,[0.50.50.5]);
29
text_f=uicontrol(gcf,Style,Text,...
String,Fahrenheit:,...
Position,[0.30.70.20.05],HorizontalAlignment,Left);
edit_f=uicontrol(gcf,Style,Edit,...
String,168.0,...
Position,[0.60.70.10.05],...
HorizontalAlignment,Right,...
Callback,ct1_38);
text_c1=uicontrol(gcf,Style,Text,...
String,Celcius:,...
Position,[0.30.30.20.05],...
HorizontalAlignment,Left);
text_c2=uicontrol(gcf,Style,Text,...
String,100.0,...
Position,[0.60.30.10.05],...
HorizontalAlignment,Left);
Bygitasxemcclnhtrnhotngnhthno.Cclnhsau:
set(gcf,DefaultUicontrolUnit,Normalized)
frame1=uicontrol(gcf,Style,Frame,...
Position,[0.10.10.80.3]);
frame2=uicontrol(gcf,Style,Frame,...
Position,[0.10.60.80.3]);
set(frame1,BackgroundColor,[0.50.50.5]);
set(frame2,BackgroundColor,[0.50.50.5]);
tohaikhunghnhchnhttrongcasFigurehinhnhvinnmuxm.
Haikhung(Frames)ctoccgcditril(0.1,0.1)v(0.1,0.6),cng
chiucao0.3nvvbrng0.8nv.nvctnhbng%cakch
cngoicaFigure.Vytacthdingiinhsau:
Khungthnhtcgctriditiimcto10%chiungang
v10%chiucaocakhungngoiFigure.
Chaikhungcchiucaobng30%chiucaovbngangbng80%
bngangcakhungngoiFigure.
30
b.Dnglnheditvtextnhpxutktvsliu:Trnyta
dnglnhuicontroltovxcnhvtrhaikhunghnh.onlnhsau
sdnguicontrolvitchuiktFahrenheitlnkhungbntrn:
text_f=uicontrol(gcf,Style,Text,String,Fahrenheit:,...
Position,[0.30.70.20.05],HorizontalAlignment,Left);
edit_f=uicontrol(gcf,Style,Edit,...
String,168.0,...
Position,[0.60.70.10.05],...
HorizontalAlignment,Right,...
Callback,ct1_38);
Dosdngedit,chuikt68.0lchuicthvitlictrctiptrn
GUI.Saukhinhnnttrn,gitrmivitlictipnhnvMATLABs
gilnhvittrongphncallbackct1_38.m.
Cuicngtacnphidnguicontroltotachuitext,hinthchui
Celciusv20.0trongkhungbndi.
text_c1=uicontrol(gcf,Style,Text,String,Celcius:,...
Position,[0.30.30.20.05],HorizontalAlignment,Left);
text_c2=uicontrol(gcf,Style,Text,String,20.0,Position,...
[0.60.30.10.05],HorizontalAlignment,Left);
c=num2str(c);
set(text_c2,String,c);
onmtrnnhngitrdolnhuicontroleditcvodidngchui
(string)vsau:
binitdngstringsangdngs
tnhquyitnhitfahrenheitsangnhitcelcius
binitssangstring
xutktqudidngstringraGUInhtext_c2
3.Nhpsliutthanhtrt:Ngoicchnhpsliutbnphm,tacth
nhpsliutthanhtrt.Tamuntoramtgiaodinnhsau:
set(gcf,DefaultUicontrolUnit,Normalized)
frame_1=uicontrol(gcf,Style,Frame,Position,[0.10.10.80.3]);
frame_2=uicontrol(gcf,Style,Frame,Position,[0.10.60.80.3]);
set(frame_1,BackgroundColor,[0.50.50.5]);
set(frame_2,BackgroundColor,[0.50.50.5]);
text_f=uicontrol(gcf,Style,Text,String,Fahrenheit:,Position,...
[0.30.70.20.05],HorizontalAlignment,Left);
edit_f=uicontrol(gcf,Style,Edit,...
String,168.0.,,,
32
Position,[0.60.70.10.05],...
HorizontalAlignment,Right,...
Callback,ct1_38);
text_c1=uicontrol(gcf,Style,Text,...
String,Celcius:,...
Position,[0.30.30.20.05],...
HorizontalAlignment,Left);
text_c2=uicontrol(gcf,Style,Text,...
String,100.0,...
Position,[0.60.30.10.05],...
HorizontalAlignment,Left);
slider_f=uicontrol(gcf,Style,Slider,...
Min,32.0,Max,212.0,...
Value,68.0,...
Position,[0.60.80.20.05],...
Callback,ct1_39;ct1_38);
tothanhtrttadnglnh:
slider_f=uicontrol(gcf,Style,Slider,Min,32.0,Max,212.0,...
Value,68.0,Position,[0.60.80.20.05],...
Callback,ct1_39;ct1_38);
NhvyCallbackcthgimtchuicclnhMATLAB,phncchnhau
bngduchmthanhayduphy.Chuicallbackgict1_39.m:
f=get(slider_f,Value);
f=num2str(f);
set(edit_f,String,f,CallBack,ct1_40;ct1_38);
vitcdngnhpnhitgitiValuecaslider_fvovtrbncnh
chachuiFahrenheit.SauCallbackgitipct1_38.mtnhquyi
gitrnhitvgnvocnhchuiCelcius.Filect1_40.mnhsau:
f=get(edit_f,String);
f=str2num(f);
set(slider_f,Value,f);
33
cnhimvcpnhtgitrgitiValuecaslider_frisauct1_38.m
lm nt phn vic cn li: tnh i nhit v gn vo v tr cnh cha
chuiCelcius.
4.Chnlakhixutsliu:
a. Khi nim chung: Ngoi kh nng xut d liu c nh theo kiu
stringhaykius,tacthxutdliutheomtdanhmcno.minh
ho,tatofilect1_41.mnhsau:
f=input(Nhapnhietdo:);
r=f+459.7;
c=(f32)*5/9;
k=c+273.15;
choice=input([Nhap1choRankie,2choCelcius,3choKelvin:]);
ifchoice==1
fprintf(1,Nhietdo(doR)la:%g\n,r);
elseifchoice==2
fprintf(2,Nhietdo(doC)la:%g\n,c);
elseifchoice==3
fprintf(2,Nhietdo(doC)la:%g\n,c);
end
Tcaslnh,nhplnhct1_41thMATLABshinhitvchquyi
rihinthktqu.TuynhincngcGUIcaMATLABchophptathc
hinviclachnthunlihn.Tacthchnmttrong4phngxutd
liusauy:
dngpopupmenu
dnglistbox
dngradiobutton
dngcheckbox
b.Dngpopupmenu:Tatoragiaodinnhsau:
34
Cclnhthchincngvictrn(ct1_42.m)l:
set(gcf,DefaultUicontrolUnit,Normalized)
frame_1=uicontrol(gcf,Style,Frame,...
Position,[0.10.10.80.3]);
frame_2=uicontrol(gcf,Style,Frame,...
Position,[0.10.60.80.3]);
set(frame_1,BackgroundColor,[0.50.50.5]);
set(frame_2,BackgroundColor,[0.50.50.5]);
text_f=uicontrol(gcf,Style,Text,...
String,Fahrenheit:,...
Position,[0.30.70.20.05],...
HorizontalAlignment,Left);
edit_f=uicontrol(gcf,Style,Edit,...
String,...168.0,...
Position,[0.60.70.10.05],...
HorizontalAlignment,Right,...
Callback,ct1_38);
popup_c=uicontrol(gcf,...
Style,Popupmenu,...
String,Rankine|Celcius|Kelvin,...
Value,2,...
Position,[0.30.30.20.05],...
Callback,ct1_43;ct1_45);
text_c2=uicontrol(gcf,Style,Text,...
35
String,100.0,...
Position,[0.60.30.10.05],...
HorizontalAlignment,Left);
slider_f=uicontrol(gcf,Style,Slider,...
Min,32.0,Max,212.0,...
Value,68.0,...
Position,[0.60.80.20.05],...
Callback,ct1_39;ct1_45);
KhikchchutvoPopupmenu,cbakhnngchnlasxuthin.Tip
tcnhychutvomttrong3khnng,Popupmenubinmtchcnli
n v c chn. Khi dng chut ko thanh trt frame pha trn, ta c
cgitrquyisangnvcchnhinthphadi.Trongon
mtrn,gitrValuetsnl2.KhiCallbackgict1_43.m:
choice=get(popup_c,Value);
f=get(edit_f,String);
f=str2num(f);
r=f+459.7;
c=(f32)*5/9;
k=c+273.15;
choice=input([Nhap1choRankie,2choCelcius,3choKelvin:]);
ifchoice==1
t=r;
elseifchoice==2
t=c;
elseifchoice==3
t=k
end
t=num2str(t);
set(text_c2,String,t);
36
Cclnhthchincngvicny(ct1_46.m)l:
set(gcf,DefaultUicontrolUnit,Normalized)
frame_1=uicontrol(gcf,Style,Frame,Position,[0.10.10.80.3]);
frame_2=uicontrol(gcf,Style,Frame,Position,[0.10.60.80.3]);
set(frame_1,BackgroundColor,[0.50.50.5]);
set(frame_2,BackgroundColor,[0.50.50.5]);
text_f=uicontrol(gcf,Style,Text,String,Fahrenheit:,Position,...
[0.30.70.20.05],HorizontalAlignment,Left);
edit_f=uicontrol(gcf,Style,Edit,String,168.0,Position,...
[0.60.70.10.05],HorizontalAlignment,...
Right,Callback,ct1_41);
strings=[Rankine;Celcius;Kelvine];
show=[0;1;0];
ys=[3;2;1]*0.075+0.075;
fori=1:3
radio_c(i)=uicontrol(gcf,...
Style,Radiobutton,...
37
String, strings(i),...
Value, show(i),...
Position,[0.3ys(i)0.20.05],...
Callback,ct1_47;ct1_45);
end
text_c2=uicontrol(gcf,Style,Text,String,100.0,Position,...
[0.60.30.10.05],HorizontalAlignment,Left);
slider_f=uicontrol(gcf,Style,Slider,Min,32.0,Max,212.0,...
Value,68.0,Position,[0.60.80.20.05],...
Callback,ct1_39;ct1_45);
Filect1_47.m:
fori=1:3
ifgcbo==radio_c(i)
choice=i;
set(radio_c(i),Value,1);
elseif
set(radio_c(i),Value,0);
end;
end;
onlnhtrnlmtvnglp,sosnhs(handle)Callbackthuc(gitr
do hm gcbo tr v) vi handle ca mi nt. Nt no c s trng s c
ng(turnon,Value=1)vntnokhcssbngt(turnoff,Value=0).
CuicngCallbackgict1_45.mthchinvictnhquyicchnv
hinthktqu.imkhcduynhtlkhichn,Popupmenuchchamt
phntthradiobuttoncthngthichanhiuphnt.
Cuicngtaxtphngndnglistbox.Giaodincntonhsau:
38
Ccmtoragiaodintrn(ct1_48.m)l:
set(gcf,DefaultUicontrolUnit,Normalized)
frame_1=uicontrol(gcf,Style,Frame,Position,[0.10.10.80.3]);
frame_2=uicontrol(gcf,Style,Frame,Position,[0.10.60.80.3]);
set(frame_1,BackgroundColor,[0.50.50.5]);
set(frame_2,BackgroundColor,[0.50.50.5]);
text_f=uicontrol(gcf,Style,Text,String,Fahrenheit:,Position,...
[0.30.70.20.05],HorizontalAlignment,Left);
edit_f=uicontrol(gcf,Style,Edit,String,168.0,Position,...
[0.60.70.10.05],HorizontalAlignment,...
Right,Callback,ct1_38);
listbox_c=uicontrol(gcf,...
Style,Listbox,...
String,Rankine|Celcius|Kelvin,...
Value,2,...
Position,[0.30.30.20.05],...
Callback,ct1_49;ct1_45);
text_c2=uicontrol(gcf,Style,Text,String,100.0,Position,...
[0.60.30.10.05],HorizontalAlignment,Left);
slider_f=uicontrol(gcf,Style,Slider,Min,32.0,Max,212.0,...
Value,68.0,Position,[0.60.80.20.05],...
Callback,ct1_39;ct1_45);
5.CngchotoGUI
39
a.ToGUIbngcngcho:TrnytaxemxtcchtoGUI
bng phng php th cng. Ta c th to GUI bng cng c ho. Khi
nhp lnh guide ta gi trnh ho (Graphics User Interface Development
Environment)sontholayout.Ktquutinltacmtlayoutrng
nhsau:
Sontho
Alignment
thuctnh
Chyth
Sonmenu
Vngthit
k
Ccphnt
Vicutinltathitkgiaodinmongmun.Tasdngchutko
ccphntcndngtbntrivthvolayoutrngbnphi.Tacth
dchchuynccphntnyccvtrmongmunvcnchnhbngcng
cAlignment.Vimiphnttacnxcnhthuctnhchonbngcch
bmpvophnthaybmvocngcsonthothctnh
Saukhithitkxongtalunli.LcnyMATLABtngtorafile
*.figdnglugiaodinvatovfile*.mchaccmlnhcnthchin.
Viccuicnglvitccmlnhvofile*.m.Trongqutrnhthitktac
thchythxemsaumibcthitktyucuchabngcchbm
vochyth
b.MtsvdtoGUI:
)mslnbmchut:Tathitkmtgiaodinnhsau:
40
Tamunlkhibmchut,slnbmscmvghili.Trcht
tagiguidevccmtlayoutrng.VoPropertyInspector(sontho
thuctnh)vghivoNamechuict1_52vchpnhnthuctchTagmc
nhcanlfigure1;dngFontchmcnh,cch12,bold.Tadng
EditTextghilislnbm.TavoPropertyInspectorrichnString.Ta
nhpvonychuiSolanbamchuot:0.TaghivoTagchuieditmot
v cng dng Font ch mc nh, c ch 12 v bold. Tip theo ko
PushbuttonvolayoutvsonthothuctnhchonviFontchmcnh,
c ch12,bold.TrongthuctnhStringghichuiBamchuot;ghivTag
chuipushbuttonmot.Nhvyltathitkxong.Bygitalulivi
tnlct1_52.figvct1_52.m.
Nhimvtiptheolghicclnhcnthitvofile ct1_52.m.Fileny
c MATLAB t ng to ra. Ta phi thm vo cc m lnh khi
bmchutthslnbmcthhintrnEditText.Tasghiccmlnh
nyvophn:
functionvarargout=pushbuttonmot_Callback(h,eventdata,handles,varargin)
dolnhcncthchinkhigipushbutton.Nidungcact1_52.ml:
functionvarargout=Ct1_52(varargin)
ifnargin==0
fig=openfig(mfilename,reuse);
set(fig,Color,get(0,defaultUicontrolBackgroundColor));
41
handles=guihandles(fig);
guidata(fig,handles);
ifnargout>0
varargout{1}=fig;
end
elseif
ischar(varargin{1})
try
[varargout{1:nargout}]=feval(varargin{:});
catch
disp(lasterr);
end
end
functionvarargout=pushbuttonmot_Callback(h,eventdata,handles,varargin)
persistentdem;%biendemlapersistentdenotontaigiualangoiham
ifisempty(dem)
dem=0;
end
dem=dem+1;
str=sprintf(Solanbamchuot:%d,dem);
set(handles.editmot,String,str);
)ChuynitFahrenheitsangCelcius:TathitkmtGUI
chuyninhit.Giaodincdngnhsau:
ThuctnhcaLayoutcghiName: ct1_53cnccthuctnhkhc
lmcnh.
42
functionvarargout=Ct1_53(varargin)
ifnargin==0%LAUNCHGUI
fig=openfig(mfilename,reuse);
set(fig,Color,get(0,defaultUicontrolBackgroundColor));
handles=guihandles(fig);
guidata(fig,handles);
ifnargout>0
varargout{1}=fig;
end
elseifischar(varargin{1})
try
[varargout{1:nargout}]=feval(varargin{:});%FEVALswitchyard
catch
disp(lasterr);
end
end
functionvarargout=edithai_Callback(h,eventdata,handles,varargin)
f=get(handles.edithai,String);
43
f=str2num(f);
c=(f32)*5/9;
c=num2str(c);
set(handles.editbon,String,c);
Trongonmcnvitnmtrongon:
functionvarargout=edithai_Callback(h,evendata,handles,varargin)
CclnhkhcldoMATLABtngtora.
)Dngslidernhpsliu:Tadngvdchuyninhittrn
nhngbygisthmsliderthayinhituvo.Giaodinsc
dng:
Nhvytacn5phnt,trongcmtphntlsliderv4phn
tEditText.
Layout c thuc tnh Name: ct1_54, cn cc thuc tnh khc ta chp
nhngitrmcnh.
SlidercthuctnhMax:1.0vMin:0.0.
EditTextthnhtcthuctnhFontSize:12,FntWeight:bold,String:
Fahrenheitcnccthuctnhkhcchpnhngitrmcnh.
EditTextth2cthuctnhFontSize:12,FntWeight:bold,String:
trng.
Edit Text th 3 c thuc tnh FontSize: 12, FntWeight: bold, String:
Celcius.
44
EditTextth4cthuctnhFontSize:12,FntWeight:bold,String:
trng.(Ccthuctnhmtakhngnhcncnghalchpnhngitrmc
nh).
Layoutcluvitnct1_54.fig.
Bygitavitmchophn ct1_54.mmMATLABtngtora.
Nhimvcanlnhngitrthayitcontrt,cpnhtchoEditText
2vEditText4.Tacnidungcact1_54.m:
functionvarargout=ct1_54(varargin)
ifnargin==0
fig=openfig(mfilename,reuse);
handles=guihandles(fig);
guidata(fig,handles);
ifnargout>0
varargout{1}=fig;
end
elseifischar(varargin{1})
try
[varargout{1:nargout}]=feval(varargin{:});%FEVALswitchyard
catch
disp(lasterr);
end
end
functionvarargout=slider1_Callback(h,eventdata,handles,varargin)
f=get(handles.slider1,Value);%nhangiatritucontruot
f=f*180+32;%tinhradoFahrenheit
a=num2str(f);%bienlaithanhchuoi
set(handles.edit2,String,a);%ghivaoodoFahrenheit
b=(f32)*5/9;%doithanhdoCelcius
b=num2str(b);%doilaithanhchuoi
set(handles.edit4,String,b);%ghivaoodoCelcius
)Xutsliuclachn:Tavndngvdtrnnhngbyginhit
quy i c th c tnh theo thang nhit Kenvine, Celcius hay
45
Rankine.cthchnlatadngmttrongccphngn:Popupmenu,
Rdiobutton,ListboxhayCheckbox.GiaodinkhidngPopupmenunhsau:
NhvyltacnmtSlider,baEditTextvmtPopupmenu.Layout
cthuctnhName:ct13_55.
SlidercthuctnhMax:1vMin:0
EditTextthhaicthuctnhFontSize:12,FntWeight:boldvString
trng.
EditTextth3cthuctnhFontSize:12,FntWeight:boldvString
trng.
Popupmenu c thuc tnh FontSize: 12, FontWeight: bold. ghi vo
thuctnhStringtabmpchutvoiconcanvvit3dng:Kelvine,
CelciusvRankine.
functionvarargout=ct1_55(varargin)
ifnargin==0%LAUNCHGUI
fig=openfig(mfilename,reuse);
set(fig,Color,get(0,defaultUicontrolBackgroundColor));
handles=guihandles(fig);
guidata(fig,handles);
46
ifnargout>0
varargout{1}=fig;
end
elseifischar(varargin{1})
try
[varargout{1:nargout}]=feval(varargin{:});
catch
disp(lasterr);
end
end
functionvarargout=slider1_Callback(h,eventdata,handles,varargin)
f=get(handles.slider1,Value);
f=f*180+32;
a=num2str(f);
set(handles.edit2,String,a);
r=f+495.7;
c=(f32)*5/9;
k=c+273.15;
chon=get(handles.popupmenu1,Value);
ifchon==1
t=k;
elseifchon==2
t=c;
elseifchon==3
t=r;
end
t=num2str(t);
set(handles.edit3,String,t);
Tiptheotaxttrnghpdnglistbox.ThayvdngPopupmenutadng
Listbox. Cc phn t khc v thuc tnh ca n khng thay i. Thuc tnh
NamecaLayoutl ct1_56.TavoStringcaListboxvghivo3dng
Kelvine,CelciusvRankine.Giaodinnhsau:
47
Filecluvitn ct1_56.fig.Tiptheovitlnhcho ct1_56.m.Tac
filenynhsau:
functionvarargout=ct1_56(varargin)
ifnargin==
fig=openfig(mfilename,reuse);
set(fig,Color,get(0,defaultUicontrolBackgroundColor));
handles=guihandles(fig);
guidata(fig,handles);
ifnargout>0
varargout{1}=fig;
end
elseifischar(varargin{1})
try
[varargout{1:nargout}]=feval(varargin{:});
catch
disp(lasterr);
end
end
functionvarargout=slider1_Callback(h,eventdata,handles,varargin)
f=get(handles.slider1,Value);
f=f*180+32;
a=num2str(f);
set(handles.edit2,String,a);
r=f+495.7;
48
c=(f32)*5/9;
k=c+273.15;
chon=get(handles.listbox1,Value);
ifchon==1
t=k;
elseifchon==2
t=c;
elseifchon==3
t=r;
end
t=num2str(t);
set(handles.edit3,String,t);
TatiptcxtphngndngRadiobutton.Giaodincdng:
Tiptheotavitccmlnhtrongct1_57.m:
functionvarargout=ct1_57(varargin)
ifnargin==0
fig=openfig(mfilename,reuse);
set(fig,Color,get(0,defaultUicontrolBackgroundColor));
handles=guihandles(fig);
49
guidata(fig,handles);
ifnargout>0
varargout{1}=fig;
end
elseifischar(varargin{1})
try
[varargout{1:nargout}]=feval(varargin{:}); catch
disp(lasterr);
end
end
functionmutual_exclude(off)
set(off,Value,0);
functionvarargout=slider1_Callback(h,eventdata,handles,varargin)
globalchon
f=get(handles.slider1,Value);
f=f*180+32;
a=num2str(f);
set(handles.edit2,String,a);
r=f+495.7;
c=(f32)*5/9;
k=c+273.15;
ifchon==1
t=r;
elseifchon==2
t=c;
elseifchon==3
t=k;
end
t=num2str(t);
set(handles.edit3,String,t);
functionvarargout=radiobutton1_Callback(h,eventdata,handles,varargin)
global chon;
off = [handles.radiobutton2, handles.radiobutton3];
mutual_exclude(off);
chon = 1;
function varargout = radiobutton2_Callback(h, eventdata, handles, varargin)
global chon;
off = [handles.radiobutton1, handles.radiobutton3];
50
mutual_exclude(off);
chon = 2;
function varargout = radiobutton3_Callback(h, eventdata, handles, varargin)
global chon;
off = [handles.radiobutton1, handles.radiobutton2];
mutual_exclude(off);
chon = 3;
o n l nh:
function mutual_exclude(off)
set(off,'Value',0);
l m cho 3 nt l nh tr th nh m t nhm. Cc cu l nh:
off = [handles.radiobutton1, handles.radiobutton2];
mutual_exclude(off);
l m cho khi ch n m t nt Radiobutton n y th khng ch n
cng ta xt ph ng n dng Checkbox. Giao di n nh sau:
c nt khc n a. Cu i
if nargout > 0
varargout{1} = fig;
end
elseif ischar(varargin{1})
try
[varargout{1:nargout}] = feval(varargin{:}); catch
disp(lasterr);
end
end
function mutual_exclude(off)
set(off,'Value',0);
function varargout = slider1_Callback(h, eventdata, handles, varargin)
global chon
f = get(handles.slider1,'Value');
f = f*180 + 32;
a = num2str(f);
set(handles.edit2,'String',a);
r = f + 495.7;
c = (f - 32)*5/9;
k = c + 273.15;
if chon = = 1
t = r;
elseif chon = = 2
t = c;
elseif chon = = 3
t = k;
end
t = num2str(t);
set(handles.edit3,'String',t);
function varargout = checkbox1_Callback(h, eventdata, handles, varargin)
global chon;
off = [handles.checkbox2, handles.checkbox3];
mutual_exclude(off);
chon = 1;
function varargout = checkbox2_Callback(h, eventdata, handles, varargin)
global chon;
off = [handles.checkbox1, handles.checkbox3];
mutual_exclude(off);
chon = 2;
function varargout = checkbox3_Callback(h, eventdata, handles, varargin)
global chon;
off = [handles.checkbox2, handles.checkbox1];
mutual_exclude(off);
chon = 3;
) GUI c dng
ho : Ta xy d ng m t GUI dng
y=tsin(t). Giao di n nh sau:
th
h m
52
functionvarargout=ct1_59(varargin)
ifnargin==0
fig=openfig(mfilename,reuse);
handles=guihandles(fig);
guidata(fig,handles);
ifnargout>0
varargout{1}=fig;
end
elseifischar(varargin{1})
try
[varargout{1:nargout}]=feval(varargin{:});%FEVALswitchyard
catch
disp(lasterr);
end
end
functionvarargout=pushbutton1_Callback(h,eventdata,handles,varargin)
gridon
functionvarargout=pushbutton2_Callback(h,eventdata,handles,varargin)
gridoff
53
functionvarargout=pushbutton3_Callback(h,eventdata,handles,varargin)
close
functionvarargout=pushbutton4_Callback(h,eventdata,handles,varargin)
t=0:0.01:20;
y=t.*sin(t);
plot(t,y);
Ti p theo ta xt m t GUI c giao di n nh sau:
Nhi m v c a GUI l v
th c a h m peaks theo cc d ng khc nhau(
mesh, surf v contour) v i cc Colormap khc nhau(hsv, hot, gray, prism, cool, winter v
summer). Vi c v cc d ng
th th c hi n nh cc Pushbutton. Vi c ch n
Colormap th c hi n nh Listbox.
Layout c thu c tnh Name: ct1_60 v thu c tnh HandleVisbility: on. Cc
Pushbutton
u c thu c tnh FontSize: 12 v F ntWeight: bold. Ta l u GUI v i tn
ct1_60.fig. M trong ct1_60.m g m:
function varargout = ct1_60(varargin)
if nargin = = 0
fig = openfig(mfilename,'reuse');
set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));
handles = guihandles(fig);
guidata(fig, handles);
if nargout > 0
varargout{1} = fig;
end
elseif ischar(varargin{1})
try
[varargout{1:nargout}] = feval(varargin{:});
catch
54
disp(lasterr);
end
end
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)
z = peaks(40);
chon = get(handles.listbox1,'Value');
if chon = =1
colormap(hsv(256));
elseif chon = =2
colormap(hot(256));
elseif chon = =3
colormap(gray(256));
elseif chon = =4
colormap(prism(256));
elseif chon = =5
colormap(cool(256));
elseif chon = =6
colormap(winter(256));
elseif chon = =7
colormap(summer(256));
end
mesh(z);
function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)
z = peaks(40);
chon = get(handles.listbox1,'Value');
if chon = =1
colormap(hsv(256));
elseif chon = =2
colormap(hot(256));
elseif chon = =3
colormap(gray(256));
elseif chon = =4
colormap(prism(256));
elseif chon = =5
colormap(cool(256));
elseif chon = =6
colormap(winter(256));
elseif chon = =7
colormap(summer(256));
end
surf(z);
function varargout = pushbutton3_Callback(h, eventdata, handles, varargin)
z = peaks(40);
chon = get(handles.listbox1,'Value');
if chon = =1
colormap(hsv(256));
55
elseif chon = =2
colormap(hot(256));
elseif chon = =3
colormap(gray(256));
elseif chon = = 4
colormap(prism(256));
elseif chon = = 5
colormap(cool(256));
elseif chon = = 6
colormap(winter(256));
elseif chon = = 7
colormap(summer(256));
end
contour(z);
MenuDrawgmccmenuconMesh,ContourvClose.GUIclu
trongfilect1_61.figvchngtrnhclutrongfilect1_61.m:
functionvarargout=ct1_61(varargin)
gui_Singleton=1;
gui_State=struct(gui_Name,mfilename,...
gui_Singleton,gui_Singleton,...
gui_OpeningFcn,@ct1_61_OpeningFcn,...
gui_OutputFcn,@ct1_61_OutputFcn,...
gui_LayoutFcn,[],...
56
gui_Callback,[]);
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});
else
gui_mainfcn(gui_State,varargin{:});
end
handles.output=hObject;
functionvarargout=ct1_61_OutputFcn(hObject,eventdata,handles)
varargout{1}=handles.output;
functionmnumesh_Callback(hObject,eventdata,handles)
z=peaks(40);
mesh(z);
functionUntitled_3_Callback(hObject,eventdata,handles)
z=peaks(40);
contour(z);
functionmnuclose_Callback(hObject,eventdata,handles)
clf
close
functionmnudraw_Callback(hObject,eventdata,handles)
57
CHNG 2: MA TRN
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
1.KHINIMCHUNG
a n1x1 + a n2 x 2 + + a nn x n = b n
Ccphngtrnhnycthvitgndidng:
[A][x]=[b]
Trong:
b1
x1
a11 a12 a1n
b
x
a
a 22 a 2n
21
2
[ A] =
[ x] = 2
[ b] =
xn
a n1 a n2 a nn
bn
Tasxt3trnghp:
)sphngtrnhbngsnsnnmatrn[A]lmatrnvung
)sphngtrnhnhhnsns
)sphngtrnhlnhnsns
2.NGHIMCAHPHNGTRNHISTUYNTNH
1.Trnghpkhngsuybin:Khisphngtrnhmbngsnsn,ma
trn[A]vungvtac:
(1)
[ x ] = [ A ]1 [ b]
numatrnAkhngsuybin,nghalnhthccamatrnkhckhng.
CclnhMATLABgiihl(ctsys.m):
clc
A=[12;34];
b=[1;1];
x=A^1*b
%x=inv(A)*b
2.Trnghpsphngtrnhthnsn(nghimcctiuchun):Nus
135
phngtrnhmthnsnsnthnghimkhngduynht.Gismhng
camatrnhs[A]lclpthvectnchiucthphntchthnhhai
thnhphn:
(2)
[ x] = [ x]+ + [ x]
Trongmtmatrnlmatrnkhnggianhngcamatrn[A]vc
vitdidngthpca:
(3)
[ x]+ = [ A]T [ ]
vmatrnkialmatrnkhnggiankhngsaocho:
(4)
[ A ][ x] = 0
Nhvy:
[ A ]([ x ]+ + [ x] ) = [ A ][ A ]T [ ] + [ A ][ x] = [ A ][ A ]T [ ] = [ b]
(5)
Do[A][A]Tlmatrnkhngsuybinmmccbngcchnhnmatrn
mnvimatrnnmnntacthgiiphngtrnhivi[]c:
1
[ ]0 = AAT [ b]
(6)
[ ]0+ = [ A ]T [ ]0 = [ A ]T AAT [ b]
(7)
Thay(6)vo(3)tac:
iunythomnphngtrnh[A][x]=[b].Tuynhinnkhnglnghim
duy nht v nu thm bt k mt vec t [x] tho mn (4) th n s cng l
nghim.MATLABdnglnhpinvgiih(ctpinv.m)
A=[12];
b=3;
x=pinv(A)*b
3.Trnghpsphngtrnhnhiuhnsn(nghimsaisbnhphng
bnht):Nusphngtrnhmlnhnsnsnthkhngtntinghim
thomnyccphngtrnh.Tacgngtmvectnghimcsais[e]
nhnht.
(8)
[ e ] = [ A][ x] [ b]
Vythbitimcatalcctiuhohm:
T
J = [ A ] [ A ][ x ] [ b ] = 0
(10)
[ x ]0 = [ A ]T [ A ] [ A ]T [ b]
x
136
A=[1;2];
b=[2.1;3.9];
x=pinv(A)*b
x=A\b
x=(A*A)^1*A*b
functionx=pttt(A,B)
%HamnaytimnghiemcuaptAx=B
[M,N]=size(A);
ifsize(B,1)~=M
error(KichthuocAvaBtrongpttt()khongbangnhau!)
end
ifM==N
x=A^1*B;
elseifM<N
x=pinv(A)*B;
else
x=pinv(A)*B;
end
giihphngtrnhtadngchngtrnhctpptt.m:
clearall,clc;
a=[134;257;312];
b=[8146];
x=pttt(a,b)
3.CCPHNGPHPKH
137
1.PhngphpkhGauss:Chngtabitrngccnghimcahkhngi
nutathaymthngbngthptuyntnhcacchngkhc.Taxtmth
phngtrnhistuyntnhcmatrn[A]khngsuybinvim=n=3.
Phngtrnhcdng:
a11x1 + a12 x 2 + a13 x 3 = b1
(1)
a 21x1 + a 22 x 2 + a 23 x 3 = b 2
a x + a x + a x = b
32 2
33 3
3
31 1
)Trchttakhx1rakhiccphngtrnh,ngoitrphngtrnhu
tin,bngcchnhnphngtrnhutinviai1/a11(ilchshng)vtr
imiphngtrnh:
(0)
(0)
(0)
a(0)
11 x1 + a 12 x 2 + a 13 x 3 = b1
(1)
(1)
a(1)
(2)
22 x 2 + a 23 x 3 = b 2
(1)
(1)
a(1)
32 x 2 + a 33 x 3 = b 3
Trong:
a(0)
b(0)
= bi
vii=1,j=1,2,3
i
ij = a ij
a(0)
a(0)
(0)
(1)
(0)
i1
i1
a = a (0) a1j
bi = bi (0)
b(0)
vii,j=2,3
1
a11
a11
Vicnygillytrtia11vphnta11giltr.
)Tiptheotakhx2trongphngtrnhth3ca(2)bngcchlyphng
(1)
trnhth2nhnvi a(1)
i2 / a 22 (i=3)vtriphngtrnhth3:
(1)
ij
(0)
ij
(0)
(0)
(0)
a(0)
11 x1 + a 12 x 2 + a 13 x 3 = b1
(1)
(1)
a(1)
22 x 2 + a 23 x 3 = b 2
(2)
a(2)
33 x 3 = b 3
(3)
Trong:
a(1)
a(1)
(1)
(2)
(1)
i2
i2
bi = bi (1)
b(1)
a = a (1) a 2 j
vii,j=3 (4)
2
a 22
a 22
QutrnhnycgilthuttonkhGausstinvctngqutho
thnh:
1)
a(k
(k)
(k 1)
1)
ik
a ij = a ij (k1) a(k
i, j = k + 1,k + 2,...,m
kj
a kk
(5)
(k 1)
a
1)
1)
ik
b(k)
b(k
i = k + 1,k + 2,...,m
= b(k
(k
i
i
k
1)
a kk
(2)
ij
(1)
ij
thchinthuttonkhGausstadngonmlnh:
138
fork=1:n1
fori=k+1:n
ifA(i,k)=0
lambda=A(i,k)/A(k,k);
A(i,k+1:n)=A(i,k+1:n)lambda*A(k,k+1:n);
b(i)=b(i)lambda*b(k);
end
end
end
Saukhichphngtrnhdngtagictatmnghimddng.Tphng
trnhth3ca(3)tac:
b(2)
3
x 3 = (2)
(6a)
a 33
Thayvophngtrnhth2tac:
(1)
b(1)
2 a 23 x 3
x2 =
(6b)
a(1)
22
vcuicngtphngtrnhthnhttac:
3
1
x1 = (0) b(0)
a(0)
(6c)
1
1j x j
a11
j= 2
Tacngcthtngquthoqutrnhtmnghimbngcchtnhlivtm
nghimbng:
1 (i1) m (i1)
xi = (i1) bi a ij x j
i = m,m 1,...,1
(7)
a ii
j= i +1
vtmnghimbngonmlnh:
fork=n:1:1
b(k)=(b(k)A(k,k+1:n)*b(k+1:n))/A(k,k);
end
NhvyphngphpGaussgmhaibc:
khtheothuttonGauss
tmnghimcaphngtrnhdngtamgic
onmlnhtrohngcvittronghmswaprows():
139
functionv=swaprows(v,i,j)
%Traodoihangivahangjcuamatranv.
%Cuphap:v=swaprows(v,i,j)
temp=v(i,:);
v(i,:)=v(j,:);
v(j,:)=temp;
Taxydnghmgauss()thchinthuttonkhGauss
functionx=gauss(A,B)
%KichthuoccuamatranA,BlaNAxNAvaNAxNB.
%HamnaydunggiaiheptAx=BbangphuongphapkhuGauss
NA=size(A,2);
[NB1,NB]=size(B);
ifNB1~=NA
error(AvaBphaicokichthuoctuongung);
end
N=NA+NB;
AB=[A(1:NA,1:NA)B(1:NA,1:NB)];
epss=eps*ones(NA,1);
fork=1:NA
%ChontruAB(k,k)
[akx,kx]=max(abs(AB(k:NA,k))./...
max(abs([AB(k:NA,k+1:NA)epss(1:NAk+1)])));
ifakx<eps
error(Matransuybienvanghiemkhongduynhat);
end
mx=k+kx1;
ifkx>1%traohangkhican
swaprows(AB,k,mx);
end
%KhuGauss
AB(k,k+1:N)=AB(k,k+1:N)/AB(k,k);
AB(k,k)=1;
form=k+1:NA
AB(m,k+1:N)=AB(m,k+1:N)AB(m,k)*AB(k,k+1:N);%(2.2.5)
140
AB(m,k)=0;
end
end
%Timnghiem
x(NA,:)=AB(NA,NA+1:N);
form=NA1:1:1
x(m,:)=AB(m,NA+1:N)AB(m,m+1:NA)*x(m+1:NA,:);%(2.2.7)
end
giihphngtrnhtadngctgauss.m
clearall,clc
A=[111;211;111];
b=[201];
x=gauss(A,b)
2.PhngphpkhGaussJordan:XthphngtrnhAX=B.Khigiih
bng phng php Gauss ta a n v dngma trn tam gic sau mt lot
bini.PhngphpkhGaussJordancitincchkhGaussbngcch
ahvdng:
[E][X]=[B*]
v khi nghim ca h chnh l [B*]. Trong phng php Gauss Jordan
mibctnhphitnhnhiuhnphngphpGaussnhnglikhngphi
tnhnghim.amatrn[A]vdngmatrn[E]tibcthitaphic
aii=1vaij=0.Nhvytilnkhthitabini:
1.aij=aij/aii(j=i+1,i+2,...,n)
2.k=1,2,...,n
akj=akjaijaki(j=i+1,i+2,...,n)
bk=bkbiaki
gii h phng trnh bng phng php Gauss Jordan ta to ra hm
gaussjordan()
functionx=gaussjordan(A,B)
%KichthuoccuamatranA,BlaNAxvaNAxNB.
%HamnaydunggiaiheAx=BbangthuattoanloaitruGaussJordan
NA=size(A,2);
141
[NB1,NB]=size(B);
ifNB1~=NA
error(AvaBphaicokichthuoctuongung);
end
fori=1:NA
ifA(i,i)==0%traohangneucan
swaprows(A,i,mx);
end
c=A(i,i);
forj=i:NA
A(i,j)=A(i,j)/c;
end
B(i)=B(i)/c;
fork=1:NA
ifk~=i
c=A(k,i);
A(k,i:NA)=A(k,i:NA)A(i,i:NA)*c;
B(k)=B(k)B(i)*c;
end
end
end
x=B;
vdngchngtrnhctgaussjordan.mgiih:
clearall,clc
a=[531;211;111];
b=[9;2;1];
x=gaussjordan(a,b)
4.GIIHPHNGTRNHBNGCCHPHNTCHMATRN
1.Khinimchung: Mtmatrnkhngsuybin[A]gilphntchc
thnhtchhaimatrn[L]v[R]nu:
[A]=[L][R]
Vic phn tch ny, nu tn ti, l khng duy nht. Nu ma trn [L] c cc
phn t nm trn ng cho chnh bng 1, ta c php phn tch Doolittle.
142
Numatrn[R]cccphntnmtrnngchochnhbng1,tacphp
phntchCrout.Nu[R]=[L]T(hay[L]=[R]T)tacphpphntchCholeski.
2.PhntchDoolittle:Taxthphngtrnh[A][X]=[B].Nutaphntch
matrn[A]thnhtchhaimatrn[L]v[R]saocho:
[A]=[L][R]
trong[L]lmatrntamgictriv[R]lmatrntamgicphi.Vima
trnbc3[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
Khihphngtrnhcvitlil:
[L][R][X]=[B]
Tat[R][X]=[Y]vhtrthnh
[L][Y]=[B]
Do[L]lmatrntamgicnntaddngtmc[Y].Saukhic[Y]tatip
tctm[X].Nhvybitonavvicphntchmatrn[A].
giihphngtrnhbngcchphntchmatrntheothuttonDoolittle
tadnghmdoolittlesol():
functionx=doolittlesol(A,b)
%GiaiheAX=B,trongdoA=LU
%nghialaAcodang[L\U].
%Cuphap:x=doolittlesol(A,b)
n=size(A,1);
[l,r]=doolittle(A);
%timnghiemmttamgiactrai
y(1,:)=b(1)/l(1,1);
form=2:n
y(m,:)=(b(m)l(m,1:m1)*y(1:m1,:))/l(m,m);
end
%timnghiemmttamgiacphai
x(n,:)=y(n)/r(n,n);
form=n1:1:1
x(m,:)=(y(m)r(m,m+1:n)*x(m+1:n,:))/r(m,m);
end
143
pdnghmdoolittlesol()giihphngtrnh:
4 3 6 x 1 1
8 3 10 x = 0
2
4 12 10 x 3 0
tadngchngtrnhctdoolitle.m:
a=[436;8310;41210];
b=[1;0;0];
x=doolittlesol(a,b)
3.PhntchCrout:TngtnhthuttonDoolittle,tacthphntchma
trn [A] theo thut ton Crout thnh tch ca ma trn [L] v [R]. gii h
phngtrnhbngcchphntchmatrntheothuttonCrouttadnghm
croutsol():
functionx=croutsol(a,b)
%HamdunggiaiheptAX=BbangthuattoanCrout
%Cuphap:x=croutsol(a,b)
n=size(a,1);
[l,r]=crout(a);
y(1,:)=b(1)/l(1,1);
form=2:n
y(m,:)=(b(m)l(m,1:m1)*y(1:m1,:))/l(m,m);
end
x(n,:)=y(n)/r(n,n);
form=n1:1:1
x(m,:)=(y(m)r(m,m+1:n)*x(m+1:n,:))/r(m,m);
end
Khigiiphngtrnhtachngtrnhctcrout.m:
clearall,clc
a=[4820;61316;201691];
b=[24;18;110];
144
x=croutsol(a,b)
4. Phn tch Choleski: Sau khi phn tch ma trn [A] theo thut ton
Choleski,hphngtrnh[A][X]=[B]trthnh:
[L][L]T[X]=[B]
Trc ht ta tm nghim ca h phng trnh [L][Y] = [B] v sau tm
nghim[X]thphngtrnh][L]T[X]=[Y].Taxydnghm choleskisol()
thchinthuttonny:
functionx=choleskisol(a,b)
%GiaiheptbangthuattoanCholeski
%Cuphap:x=choleskisol(a,b)
n=size(a,1);
l=choleski(a);
r=l;
y(1,:)=b(1)/l(1,1);
form=2:n
y(m,:)=(b(m)l(m,1:m1)*y(1:m1,:))/l(m,m);
end
x(n,:)=y(n)/r(n,n);
form=n1:1:1
x(m,:)=(y(m)r(m,m+1:n)*x(m+1:n,:))/r(m,m);
end
giihphngtrnh
4 2 2 x1 5
2 2 4 x = 10
2 4 11 x1 27
tadngchngtrnhctcholeski.m:
clearall,clc
a=[422;224;2411];
b=[6;10;27];
x=choleskisol(a,b)
145
5.PhntchQR:Taxthphngtrnh[A][X]=[B].Phntchmatrn[A]
thnhtchcahaimatrn[Q]v[R]saocho:
[A]=[Q]*[R]
Trong[Q]lmatrntrcgiao,nghal[Q]T[Q]=[E],v[R]lmatrntam
gicphi.Nhvyphngtrnhtrthnh:
[Q]*[R]*[X]=[B]
Nhnhaivcaphngtrnhvi[Q]Ttac:
[Q]T[Q]*[R]*[X]=[Q]T[B]
hay:
[R]*[X]=[Q]T[B]
Hphngtrnhnyddngtmnghimv[R]lmatrntamgic.Khigii
hphngtrnhtadngchngtrnhctqrsol.m:
clearall,clc
A=[1235;4562;4689;9367];
b=[2468];
[q,r]=qrdecomp(A);
c=transpose(q)*b;
x=r\c
5.CCMATRNCBIT
1.Matrnngchobc3:Taxthphngtrnh[A][X]=[B]vi[A]l
matrnngchocdng:
0
d1 e1 0 0
c d e 0
0
2
2
1
0
0 c 2 d 3 e 3
[A] =
M
0
0
c
d
3
4
M
M
M
M
O M
0 0 0 L c n 1 d n
Taluccphntkhc0ca[A]didngvect:
d1
c1
e1
d
2
c
e
[c] =
[e] = 2
[d ] = M
M
M
n 1
e n 1
c n 1
d n
146
gimbtslngphntcnlutr.
BygitaphntchmatrntheothuttonDoolittle:
hngk(ck1/dk1)hngk1hngkk=1,2,,n
v: dk(ck1/dk1)ek1dk
hon tt thut vic phn tch, ta lu h s = ck1/dk1 vo v tr ca ck1
trc
ck1/dk1ck1
Nhvythuttonphntchmatrnl:
fork=2:n
lambda=c(k1)/d(k1);
d(k)=d(k)lambda*e(k1)
c(k1)=lambda;
end
Sautatmnghimcaphngtrnh[L][R][X]=[B]bngcchgiiphng
trnh[L][Y]=[B]vsaulphngtrnh[R][X]=[Y].Phngtrnh[L][Y]=
[B]cdng:
1 0 0 0 L 0 y 1 b1
c
1 0 0 L 0 y 2 b2
1
0 c 2 1 0 L 0 y 3 b3
=
0
0
c
0
0
L
3
y 4 b4
M M M M L M L L
0 0 0 0 c n 1 1 y n bn
tmnghim[Y]bngcchthaythtintadngonlnh:
y(1)=b(1);
fork=2:n
y(k)=b(k)c(k1)*y(k1);
end
Phngtrnh[R][X]=[Y]cdng:
147
d1 e 1
0 d
2
0 0
0 0
M
M
0 0
L 0 x1 y 1
L 0 x2 y2
L 0 x3 y3
=
L 0 x4 y4
L M L L
0 dn xn y n
tmnghim[X]bngcchthaythlitadngonlnh:
x(n)=y(n);
fork=n1:1:1
x(k)=(y(k)e(k)*x(k+1))/d(k);
end
Taxydnghmband3()phntchmatrndngngcho:
function[c,d,e]=band3(c,d,e)
%PhantichmatranA=[c\d\e].
%Cuphap:[c,d,e]=band3(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=band3sol(c,d,e,b)
%GiaiheA*x=bvoiA=[c\d\e]latichLU
%Cuphap:x=band3sol(c,d,e,b)
[c,d,e]=band3(c,d,e);
n=length(d);
fork=2:n%thaythetien
b(k)=b(k)c(k1)*b(k1);
0
e2
d3
0
M
0
0
0
e3
d4
M
0
148
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;
Tadngchngtrnhctband3eq.mgiihphngtrnh:
clearall,clc
c=[1;2;3;3];
d=[67875];
e=[2222];
b=[2;3;4;3;1];
x=band3sol(c,d,e,b);
2.Matrnngchoixngbc5:Khigiiphngtrnhviphnthng
bc 4 ta thng gp mt h phng trnh i s tuyn tnh dng bng i
xngcbrngbng5.Matrn[A]khicdng:
L
0
0
0
0
d1 e1 f1
e d e
L
f2
0
0
0
1
2
2
L
f3
0
0
f1 e 2 d 3 e 3
L
0 f2 e 3 d 4
0
[A] =
M
M
M
M
M
M
O
M
0 L 0 fn 4 e n 3 d n 2 e n 2 fn2
0 L 0
0 fn3 e n 2 d n 1 e n 1
0
0
fn 2 e n 1 d n
0 L 0
vtalumatrn[A]didngvect:
149
d1
e1
d
f1
1
e
f
2
M
[d ] = [ e ] = M [ f ] = 2
M
d n 2
e
n
2
d n 1
fn 2
e n 1
dn
Tathchinthuttonbinimatrn:
hng(k+1)(ek/dk)hngkhng(k+1)
hng(k+2)(fk/dk)hngkhng(k+2)
Ccshngbthayitheothuttonnyl:
dk+1(ek/dk)ekdk+1
ek+1(ek/dk)fkek+1
dk+2(fk/dk)fkdk+2
vlutrli:
ek/dkekfk/dkfk
saukhibinimatrn,tagiihphngtrnhcmatrntamgic.
Hmband5()dngphntchmatrn:
function[d,e,f]=band5(d,e,f)
%A=[f\e\d\e\f].
%Cuphap:[d,e,f]=band5(d,e,f)
n=length(d);
fork=1:n2
lambda=e(k)/d(k);
d(k+1)=d(k+1)lambda*e(k);
e(k+1)=e(k+1)lambda*f(k);
e(k)=lambda;
lambda=f(k)/d(k);
d(k+2)=d(k+2)lambda*f(k);
f(k)=lambda;
end
lambda=e(n1)/d(n1);
d(n)=d(n)lambda*e(n1);
e(n1)=lambda;
150
Tavithmband5sol()giihphngtrnh:
functionx=band5sol(d,e,f,b)
%GiaiheA*x=bvoiA=[f\e\d\e\f]
%Cuphap:x=band5sol(d,e,f,b)
[e,d,f]=band5(e,d,f);
n=length(d);
b(2)=b(2)e(1)*b(1);
fork=3:n
b(k)=b(k)e(k1)*b(k1)f(k2)*b(k2);
end
giihphngtrnh
1 1 2 0 0 0 x1 4
1 2 3 1 0 0 x 7
2
2 3 3 2 2 0 x 3 12
=
0
1
2
1
2
1
x4 7
0 0 2 2 2 1 x 5 5
0 0 0 1 1 1 x 6 1
tadngchngtrnhcban5eq.m
clearall,clc
d=[123121];
e=[13221];
f=[2121];
b=[4712751];
x=band5sol(d,e,f,b)
6.CCPHNGPHPLPGIIHPHNGTRNH
ISTUYNTNH
Nichungchaiphngphpgiihphngtrnhistuyntnh:
phngphptrctipvphngphplp.Ccbitonkthutthnga
v h phng trnh i s tuyn tnh c ma trn [A] tha v ln nn cc
phngphplprtthchhp.
Taxthphngtrnhistuyntnh[A][X]=[B].Taavdng
lp:
[X]=[C][X]+[D]
Saumilntnhtacsd:
[R]=[B][A][X]
Khilptphngtrnhny,ccmatrn[C]v[D]khngi.Vvy
nnccphngphpxutphttygilccphngphplptnh.Cc
phngphpnydhiu,dlptrnhnhngkhnghiuqu.
Ccphngphpnygmc:
Phng php lp Jacobi: Phng php ny tnh gi tr ca mt bin
datrngitrcaccbinkhc.Nhitchmvrtcthkhng
hittrongmtstrnghp.
PhngphplpGaussSeidel:Ntngtnhphngphplp
Jacobinhngkhitnhgitrcabinthktadngccgitrccbin
vaccpnht.Phngphpnyhitnhanhhnphngphp
lp Jacobi nhng khng nhanh bng cc phng php lp khng n
nh.
Phng php lp c tngSOR: Phng php ny a ra t phng
phpGaussSeidelbngcchathmhsngoisuy.Vic
chntiu,phngphpnyhitnhanhhnphngphpGaus
Seidel.Khi=1phngphpSORtrthnhphngphpGauss
Seidel.TchitcaphngphpSORphthucvo
PhngphplpctngixngSSOR:Phngphpnykhngc
uimnotrihnSOR.
Ccphngphplpkhngnnhmicxydng,khhiu,nhng
hiuqucao.Trongqutrnhlp,victnhtonbaohmccthngtinthay
isaumibctnh.
Ccphngphpnybaogm:
Phng php gradient lin hp CG(Conjugate Gradient): Phng
phpnytoramtdyccvectlinhp(haytrcgiao)lsdca
php lp. Chng cng l gradient ca mt hm bc 2 m vic tm cc
tiu tng ng vi vic gii h phng trnh i s tuyn tnh.
Phng php CG rt hiu qu khi ma trn [A] i xng, xc nh
dng v ch i hi lu tr mt s t phn t. Tc hi t ca
phngphpnyphthuc siukincamatrn(siukinca
matrnonhycanghimcahphngtrnhistuyntnh
152
CNGRdnggiihdng[A]T[A][X]=[B]vi[B]=[A]T[B]
CGNEdnggiihdng[A][A]T[Y]=[B]ivi[Y]vsau
giih[X]=[A]T[Y]
Khimatrn[A]khngixng,khngsuybinth[A][A]Tv[A]T[A]
ixng,xcnhdngnncthdngphngphpCG.
PhngphpsdcctiutngqutGMRES(GeneralizedMinimal
Residual): Phng php GMRES tnh ton dy cc vec t trc giao v
kthpccnybngbitonbnhphngbnhtgiivcpnht.
Tuynhinnihilutonbdy.Dovyphngnkhingli
c dng trong phng php ny. Phng php ny tin dng khi
matrnhskhngixng.
Phng php gradient lin hp kp BiCG(Biconjugate Gradient):
PhngphpnytotahaidyvectgingnhCG,mtdatrnh
vi ma trn [A] v mt da trn [A]T. Thay v trc giao ho mi dy,
chngtrcgiaotnghhaitrcgiaokp.Nrthutkhimatrn
cmatrnhskhngixng,khngsuybin.
Phng php gn nh s d cc tiu QMR(Quasi Minimal
Residual): Phng php QMR dng bnh phng ti thiu gii v
cpnhtsdBiCG.Phngphpnydngchohphngtrnhc
matrnhskhngixng.
Phng php gradient lin hp bc 2 CGS(Conjugate Gradient
Squared):PhngphpCGSlmtbinthcaBiCG,dngcpnht
dy [A] v [A]T. Phng php ny c u im l khng cn nhn vi
matrnhschuynvvcdngchohphngtrnhistuyn
tnhcmatrnhskhngixng.
PhngphpgradientlinhpkpnnhBiCGSTAB(Biconjugate
GradientStabilized):PhngphpBiCGSTABcnglmtbinthca
153
BiCG.Ncdngchohphngtrnhcmatrnhskhngi
xng.
PhngphpChebyshev:Phngphpnytnhlpccathcvi
cchscchncctiuhochuncasdtheonghamin
max.Matrnhsphixcnhdng.Ncdngchohphng
trnhcmatrnhskhngixng.
Tabitrngtchitcaphplpphthucrtnhiuvophcama
trn(ccgitrringcamatrn).Dovyphplpthngathmmtma
trn th hai bin i ma trn h s thnh ma trn c ph thch hp. Ma
trn bin i nh vy gi l ma trn iu kin trc(preconditioner). Mt
preconditionerttscithinshitcaphngphplp.Nhiutrng
hp,nukhngcpreconditioner,phplpskhnghit.Preconditioner
nginnhtchnhlmatrnngchomMi,j=Ai,jnui=jvccphn
tkhcbngzero.MatrnnhvygilmatrniukintrcJacobi.
Trongtnhton,tntihailoimatrniukintrc:
matrn[M]xpxmatrn[A]vlmchovicgiih[M][X]=[B]d
hngiih[A][X]=[B]
matrn[M]xpx[A]1saochochcntnh[M][B]lc[X]
Phnlnccmatrn[M]thucloithnht.
7.PHNGPHPLPJACOBI
XthphngtrnhAX=F.Bngcchnotaahphngtrnh
vdng
X=BX+G
trong:
B=(bij)n,n
G=(g1,g2,...,gn)T
Chnvect:
X=(x1(o),x2(o),....,xn(o))T
lmxpxth0canghimngvxydngxpx
X(m+1)=BX(m)+G(m=0,1,....)
Ngi ta chng minh rng nu phng trnh ban u c nghim duy
nhtvmttrongbachuncamatrnBnhhn1thdyxpxhitv
nghimduynht.ChomtmatrnB,chuncamatrnB,khiu B l
mttrong3s:
154
B 1 = max b ij
B 2 = max b ij
j=1
n
j=1
1/ 2
n n
B 3 = b ij2
i =1 j=1
(Chuncamatrnquanhtishitcaphngphplp)
Taxydnghmjacobi()thchinthuttontrn:
functionx=jacobi(a,b,x0,kmax)
%TimnghiemcuaptAx=BbangthuattoanJacobi.
%Cuphap:x=jacobi(a,b,x0,kmax)
%hayjacobi(a,b,x0,kmax)
ifnargin<4
tol=1e6;
kmax=100;%jacobi(a,b,x0)
elseifkmax<1
tol=max(kmax,1e16);
kmax=100;%jacobi(a,b,x0,tol)
else
tol=1e6;%jacobi(a,b,x0,kmax)
end
ifnargin<3
x0=zeros(size(b));end
na=size(a,1);
x=x0;
At=zeros(na,na);
form=1:na
forn=1:na
ifn~=m
At(m,n)=a(m,n)/a(m,m);
end
end
Bt(m,:)=b(m,:)/a(m,m);
end
155
fork=1:kmax
x=At*x+Bt;
ifnargout==0,
x
end
ifnorm(xx0)/(norm(x0)+eps)<tol
break;
end
x0=x;
end
giiphngtrnhtachngtrnhctjacobi.m:
b=[11];
a=[32;12];
x0=[00];
x=jacobi(a,b,x0,20)
8.PHNGPHPLPGAUSSSEIDEL
Phng php lpGauss Seidel c ci tin t phng phpJacobi.
Nidungcbncaphngphplchkhitnhnghimxpxth(k+1)
canxitasdngccxpxth(k+1)tnhcaccnx1,...,xi1.Gis
choh[A][X]=[B]thtacnghim:
x i = i + ij x j
i = 1,..., n
j= 1
Lyxpxbanutux1(o),x2(o),....,xn(o) vttnhintacgnglychng
tngngvix1,x2,...,xn(cnggncngtt).Tiptheotagisrngbit
xp x th k xi(k) ca nghim. Theo Seidel ta s tm xp x th (k+1) ca
nghimtheocccngthcsau:
n
x (1k +1) = 1 + ij x (j k )
j=1
( k + 1)
2
= 1 + 21 x
( k + 1)
1
+ ij x (j k )
......
x (i k +1) = i + ij x (j k +1) + ij x (j k )
......
j= 2
i 1
j=1
j= i
156
n 1
Chohphngtrnh:
10 x 1 + x 2 + x 3 = 12
2 x 1 + 10x 2 + x 3 = 13
2 x + 2x + 10 x = 14
2
3
1
nghimngcahl(1,1,1)
Taavdngthuntinchophplp:
x 1 = 1.2 0.1x 2 0.1x 3
x(2)
1 = 1.2 0.1 1.06 0.1 0.948 = 0.9992
(2)
vcthtiptcchonkhihit.Taxydnghm gausseidel()thc
hinthuttontrn:
functionx=gausseidel(a,b,x0,kmax)
%TimnghiemcuaheAX=BbangcachlapGaussSeidel.
ifnargin<4
kmax=100;
end
ifnargin<3
157
x0=zeros(size(b));
kmax=100;
end
na=size(a,1);
x=x0;
fork=1:kmax
x(1,:)=(b(1,:)a(1,2:na)*x(2:na,:))/a(1,1);
form=2:na1
tmp=b(m,:)a(m,1:m1)*x(1:m1,:)a(m,m+1:na)*x(m+1:na,:);
x(m,:)=tmp/a(m,m);
end
x(na,:)=(b(na,:)a(na,1:na1)*x(1:na1,:))/a(na,na);
err=sqrt(xx0)*(xx0);
iferr<eps
break;
end
x0=x;
end
ifk==kmax
fprintf(Khonghoitusau%dlanlap,kmax);
else
fprintf(Hoitusau%dlanlap,k);
end
giiphngtrnhtachngtrnhctgausseidel.m:
b=[11];
a=[32;12];
x0=[00];
x=gausseidel(a,b,x0,20)
9.PHNGPHPLPRICHARDSON
Trongccphplpnitrn,matrn[B]khngthayi.Bygitaxt
ccphngphplpc[B]thayi.Phngphpnginnhtlphng
phplpRichardson.Taccngthclpsau:
x(k +1) = x(k) + P 1r(k)
158
Tronglthngsrelaxationvsdr(k)ctnhbng:
r(k) = b Ax(k)
Matrnlplnkl:
B k = E k P 1 A
0<<
2
i
Taxydnghmrichardsoniter()thchinthuttontrn:
functionx=richardsoniter(a,b,x,maxiter,tol)
d=eig(a);
k=length(d);
alfa1=abs(2*real(d(1))/(abs(d(1))^2));
forj=2:k
alfa=abs(2*real(d(j))/(abs(d(j))^2));
ifalfa<alfa1
alfa1=alfa;
end
end
omega=alfa1/2;
fori=1:maxiter
r=ba*x;
x=x+omega*r;
ifnorm(r)<tol
break;
end
end
i
giihphngtrnhtadngchngtrnhctrichardsoniter.m
clearall,clc
a=[1011;1102;2210];
b=[121314];
159
x=[000];
maxiter=50;
tol=1e6;
x=richardsoniter(a,b,x,maxiter,tol)
10.PHNGPHPSOR
Gi s ta dng phng php lp gii h phng trnh tuyn tnh
[A][X]=[B]v[Xk]lnghimgnng.Nhvytacvectsdl:
[Rk]=[B][A][Xk]
Nuxpxttth[Rk]0.Mtphngphpdatrnvicgimchunca
vectdstoradys[Xk]hitnhanhhn.PhngphpSOR(succesive
over relaxtion l phng php gii cc phng trnh trong sai s c
gimlintipchonkhitcsaismongmun)avomtthams
tngtchit.
O M
M M
M O M
M
0 L a nn
a n1 a n 2 L a nn 0
0
L 0 0 a12 L a1n
0
a
0
0 L a 2n
L 0 0
21
M
O M M O
M
M
M
0 L
0
a n1 a n 2 L 0 0
[Xk+1]=M[Xk]+C
Trong:
M=([D][L])1{(1)[D]+[U]}
C=([D][L])1[B]
Khaitrinccphnttac:
160
+1)
= ( 1 ) x(k)
+
x(k
i
i
(k +1)
(k)
bi a ijx j a ijx j
a ii
j< i
j> i
Phngphprthiuqukhisphngtrnhln.Nu=1tacphplp
GaussSeidel.
Taxydnghmsoriter()thchinthuttonny.
functiony=soriter(a,b,omega,x0,kmax)
%cuphapy=soriter(a,b,omega,x0,kmax)
%giaiheptbangppSOR
%vao
%a,blacacmatranheso
%x0langhiembandau
%kmaxsolanlapmax
%ra
%xlanghiem
n=size(a,1);
ifnargin<5
kmax=100;
end
ifnargin<4
kmax=100;
x0=zeros(1,n);
end
ifnargin<3
kmax=100;
x0=zeros(1,n);
omega=1;
end
ifsize(x0,1)==1
x0=x0;
end
x=x0;
kmax=100;
fork=1:kmax
x(1,:)=(1omega)*x(1,:)+omega*(b(1,:)a(1,2:n)*x(2:n,:))/a(1,1);
161
form=2:n1
tmp=b(m,:)a(m,1:m1)*x(1:m1,:)a(m,m+1:n)*x(m+1:n,:);
x(m,:)=(1omega)*x(m,:)+tmp*omega/a(m,m);
end
x(n,:)=(1omega)*x(n,:)+omega*(b(n,:)a(n,1:n1)*x(1:n1,:))/a(n,n);
err=sqrt((xx0)*(xx0));
iferr<eps
break;
end
x0=x;
end
ifk==kmax
fprintf(Khonghoitusau%dlanlap,kmax);
else
fprintf(Hoitusau%dlanlap,k);
end
y=x;
giihphngtrnh
10 x 1 + x 2 + x 3 = 12
2 x 1 + 10x 2 + x 3 = 13
2 x + 2x + 10 x = 14
2
3
1
tadngchngtrnhctsoriter.m
clearall,clc
a=[210000000;
121000000;
012100000;
001210000;
000121000;
000012100;
000001210;
000000121;
000000012];
b=[1;2;3;4;5;4;3;2;1];
x0=[111111111];
162
x=soriter(a,b,1.25,x0,500)
11.PHNGPHPSSOR
Nu ma trn h s [A] l i xng th php lp SSOR kt hp hai ln
tnhtheoSORsaochomatrnktqugingvimatrnixng.cbit
lnthchinSORutinl:
xk=([D][L])1{[U]+(1)[D]}xk1+([D][L])1[B]
Ln thc hin SOR th hai cc n s c cp nht theo hng ngc li.
NhvySSORllpSORthunvsaulSORngc.
Didngmatrn,phplpSSORl:
[Xk]=[B1][B2][Xk1]+(2)([D][U])1[D]([D][L])1[B]
Trong:
[B1]=([D][U])1{[L](1)[D]}
[B2]=([D][L])1{[U](1)[D]}
[B2]lmatrncaphplpSORcn[B2]cngtngtnhngivai
trca[U]v[L]
Taxydnghmssoriter()thchinthuttonny:
functionx=ssoriter(a,b,x1,omega,maxiter,tol)
%hamthuchienthuattoanSSOR
ifsize(x1,1)==1
x1=x1;
end
n=length(a);
d=zeros(n);
fori=1:n
d(i,i)=a(i,i);
end
l=tril(a);
fori=1:n
l(i,i)=0;
end;
u=triu(a);
fori=1:n
u(i,i)=0;
end;
163
u=u;
l=l;
b1=inv(domega*u)*(omega*l+(1omega)*d);
b2=inv(domega*l)*(omega*u+(1omega)*d);
fork=1:maxiter
x=b1*b2*x1+omega*(2omega)*inv(domega*u)*d*inv(domega*l)*b;
ifnorm(xx1)<=tol
break;
end
x1=x;
end
giihphngtrnhtadngchngtrnhctssoriter.m
clearall,clc
a=[411;142;124];
b=[1215];
maxiter=50;
tol=1e6;
x1=[000];
omega=1.2;
x=ssoriter(a,b,x1,omega,maxiter,tol)
12.PHNGPHPARNOLDIVLANCZOS
Mt bin th ca thut ton Arnoldi l thut ton do nh ton hc
HungaryLanczosara.Thuttongmccbcsau:
cho[X0]
tnh[R0]=[B][A][X0]
[R ]
= R 0 2 v v1 = 0
lpk=0,1,2,...,maxiter
w = [ A ] v j v j1 nuj=1cho1v00
= w Tj v j
wj=wjjvj
j+1 = w j nuj+1=0thotkhivnglp
2
164
vj+1=
wj
j+1
Tm=tridiag(j,i,j+1)
V=[v1,v2,...,vm]
y= Tm1 ( e1 )
xm=x0+Vmym
Taxydnghmlanczos4sys()thchinthuttontrn
functionx=lanczos4sys(a,b,x0,maxiter,tol)
%hamfgiaihephuongtrinhbangthuattoanLanczos
r0=ba*x0;
nres0=norm(r0,2);
ifnres0~=0
V=r0/nres0;
Z=V;
gamma(1)=0;
beta(1)=0;
k=1;
nres=1;
whilek<=maxiter&nres>tol
vk=V(:,k);
zk=Z(:,k);
ifk==1,
vk1=0*vk;
zk1=0*zk;
else
vk1=V(:,k1);
zk1=Z(:,k1);
end
alpha(k)=zk*a*vk;
tildev=a*vkalpha(k)*vkbeta(k)*vk1;
tildez=a*zkalpha(k)*zkgamma(k)*zk1;
gamma(k+1)=sqrt(abs(tildez*tildev));
ifgamma(k+1)==0
165
k=maxiter+2;
else
beta(k+1)=tildez*tildev/gamma(k+1);
Z=[Z,tildez/beta(k+1)];
V=[V,tildev/gamma(k+1)];
end
ifk~=maxiter+2
ifk==1
Tk=alpha;
else
Tk=diag(alpha)+diag(beta(2:k),1)+diag(gamma(2:k),1);
end
yk=Tk\(nres0*[1,0*[1:k1]]);
xk=x0+V(:,1:k)*yk;
nres=abs(gamma(k+1)*[0*[1:k1],1]*yk)*norm(V(:,k+1),2)/nres0;
k=k+1;
end
end
else
x=x0;
end
ifk==maxiter+2
niter=k;
else
niter=k1;
end
giihphngtrnhtadngchngtrnhctlanczos.m
clearall,clc
a=[135;324;546];
b=[9915];
maxiter=50;
tol=1e6;
x0=[000];
x=lanczos4sys(a,b,x0,maxiter,tol)
166
13.PHNGPHPDCLNNHT
Takhostbitontmcctrcahm
(1)
f([X])=0.5[X]T[A][X][B][X]
vi[A]lmatrnixng,xcnhdng.
Dof([X])tcctrkhigradientf([X])=[A][X][B]=0nnbitontmcc
trtngngvivicgiihphngtrnhistuyntnh:
[A][X]=[B]
(2)
Tabitrnggradientlhnghmtngnhanhnht.Nhthmunin
cc tiu ta cho [X], tnh gradient v tm theo hng ngc li cho n khi
hmkhnggimna.Phngphpdclnnht(steepestdescent)thc
hinthuttonlp,btut[X0].Tilnlpthk,nghimchiuchnh
bng:
[Xk+1]=[Xk]+k[Rk]
(3)
Gitrcacxcnhbng:
T
R k ] [R k ]
[
k =
T
R
A
R
[
]
[ k]
[ k]
Nhvythuttonsteepestdescentl:
cho[X0]
tnh[R0]=[B][A][X0]
lpk=1,2,...
T
R k ] [R k ]
[
k =
T
R
A
R
[ k ] [ ][ k ]
[Xk+1]=[Xk]+k[Rk]
[Rk+1]=[B][A][Xk+1]
chonkhihit
Thuttonnycnhcimlhitkhngnhanh.
Taxydnghmsteepest()thchinthuttontrn:
functionx=steepest(a,b,x,maxiter,tol)
%Steepestdescent
r=ba*x;
k=1;
whilek<=maxiter&norm(r)>tol
ar=a*r;
alpha=(r*r)/(r*ar);
x=x+alpha*r;
167
r=ralpha*ar;
k=k+1;
end
giihphngtrnhtadngchngtrnhctsteepest.m
clearall,clc
a=[411;142;124];
b=[1215];
maxiter=50;
tol=1e6;
x=[000];
x=steepest(a,b,x,maxiter,tol)
14.PHNGPHPCG
Thut ton gradient lin hp c Hestennes v Stiefel trnh by nm
1952.Nthchhpgiicchphngtrnhcmatrn[A]ixng,xc
nhdng.NltrnghpcbitcaphngphpLanczoskhimatrn
hsixng,xcnhdng.
Phngphpgradientthchinthuttonlp,btut[X0].Tiln
lpthk,nghimchiuchnhbng:
[Xk+1]=[Xk]+k[Sk]
(1)
dicakcchnsaocho[Xk+1]cctiuf([Xk+1])theohngtm[Sk].
Nhvy[Xk+1]phithomn:
[A]([Xk]+k[Sk])=[B]
(2)
Sdcaphplpl:
[Rk]=[B][A][Xk]
(2)
Nhvy(4)trthnh:
k[A][Sk]=[Rk]
(4)
T
Nhnchaivca(4)vi[Sk] tac:
T
Sk ] [R k ]
[
k =
(5)
T
[ S k ] [ A ][ S k ]
Tachn[Sk]theogradientlinhp:
[Sk+1]=[Rk+1]+k[Sk]
(6)
Hngsksaochohaihngtmlintiplinhpvinhau,nghal:
168
[ S k + 1 ] [ A ][ S k ] = 0
T
Nhvy ([ R k +1 ] + k [ S k ]) [ A ][ S k ] = 0 ,nn:
T
R k + 1 ] [ A ][ S k ]
[
k =
T
S
A
S
[ k ] [ ][ k ]
T
(7)
(8)
Nhvythuttongradientlinhpl:
cho[X0]
tnh[R0]=[B][A][X0]
[R0]=[S0]
lpk=0,1,2,...
T
Sk ] [R k ]
[
k =
T
S
A
S
[
]
[ k]
[ k]
[Xk+1]=[Xk]+k[Sk]
[Rk+1]=[B][A][Xk+1]
T
R k + 1 ] [ A ][ S k ]
[
k =
T
[ S k ] [ A ][ S k ]
[Sk+1]=[Rk+1]+k[Sk]
chonkhihit
Taxydnghmconjgradient()thchinthuttontrn
functionx=conjgradient(a,b,x1,maxiter,tol)
%giaiptAX=Bbangppgradientlienhop
%cuphap
%x=conjgradient(a,b,x1,maxiter,tol)
ifnargin<5
tol=1e6;
end
ifnargin<4
tol=1e6;
maxiter=50;
end
ifsize(x1,1)==1
x1=x1;
end
r1=ba*x1;
169
s1=r1;
fork=1:maxiter
alfa=(s1*r1)/(s1*a*s1);
x2=x1+alfa*s1;
r2=ba*x2;
ifnorm(r2)<tol
break
end
beta=(r2*a*s1)/(s1*a*s1);
s2=r2+beta*s1;
s1=s2;
x1=x2;
end
x=x2
giihphngtrnhtadngchngtrnhctconjgradient.m
clearall,clc
a=[411;142;124];
b=[1215];
maxiter=50;
tol=1e6;
x1=[000];
x=conjgradient(a,b,x1,maxiter,tol);
TacngcthdngkthutpreconditionningchophngphpCG.Thut
tonsl:
Chn[X0]
tnh[R0]=[B][A][X0]
Lpti=1,2,..,maxiter
[Zi1]=[M]1[Ri1]
i1 = [ R i1 ] [ Z i1 ]
Nui=1
[P1]=[Z0]
khngth:
170
i1
i 2
[Pi]=[Zi1]+i1[Pi1]
[Qi]=[A][Pi]
i1
i =
T
[Pi ] [Qi ]
i1 =
[Xi]=[Xi1]+i[Pi]
[Ri]=[Ri1]i[Qi]
chonkhihit
Taxydnghmpcg()thchinthuttontrn
functiony=pcg(a,b,x,M,maxiter,tol)
%giaiptAX=Bbangppgradientlienhopcopreconditionner
%cuphap
%x=conjgradient(a,b,x1,M,maxiter,tol)
r=ba*x;
ifnargin<6
tol=1e6;
end
ifnargin<6
tol=1e6;
maxiter=50;
end
ifsize(x,1)==1
x=x;
end
foriter=1:maxiter
z=M\r;
rho=(r*z);
if(iter==1)
p=z;
else
beta=rho/rho_1;
p=z+beta*p;
171
end
q=a*p;
alpha=rho/(p*q);
x=x+alpha*p;
r=ralpha*q;
ifnorm(r)<tol
break;
end
rho_1=rho;
end
y=x;
giihphngtrnhtadngchngtrnhctpcg.m
clearall,clc
a=[411;142;124];
b=[1215];
maxiter=50;
tol=1e6;
x=[000];
fori=1:3
M(i,i)=a(i,i);
end
x=pcg(a,b,x,M,maxiter,tol)
15.PHNGPHPCGNE
Taxthphngtrnh
[A][X]=[B]
Khi ma trn [A] khng i xng v khng suy bin th [A][A]T s i
xng v xc nh dng nn c th p dng thut ton CG. Thut ton
CGNE(thuttonCraig)gmccbc:
Chn[X0],tnh[R0]=[B][A][X0]
Tnh[S0]=[A]T[R0]
[P0]=[S0]
Lpchonkhihit
[Vk]=[A][Pk]
172
[S ] [S ]
k = k 1 T k1
[ Vk1 ] [ Vk1 ]
T
[Xk]=[Xk1]+k[Pk1]
[Rk]=[Rk1]k[Vk]
[Sk]=[A]T[Rk]
T
Sk ] [Sk ]
[
k =
T
[ S k1 ] [S k1 ]
[Pk]=[Sk]+k[Pk1]
Taxydnghmcgne()thchinthuttontrn
functionx=cgne(a,b,x0,maxiter,tol);
%HamnaythuchienthuattoanCGNE
x=x0(:,:);
i=1;
r=ba*x;
s=a*r;
p=s;
delta1=norm(s)^2;
rnorm=norm(r);
rho=rnorm;
while((rnorm/rho>tol)&(i<maxiter))
v=a*p;
alfa=delta1/norm(v)^2;
x=x+alfa*p;
r=ralfa*v;
rnorm=norm(r);
s=a*r;
delta2=norm(s)^2;
beta=delta2/delta1;
p=s+beta*p;
delta1=delta2;
i=i+1;
end
giihphngtrnhtadngchngtrnhctcgne.m
173
clearall,clc
a=[134;257;312];
b=[8146];
maxiter=50;
tol=1e6;
x0=[000];
x=cgne(a,b,x0,maxiter,tol)
16.PHNGPHPCGNR
[A][X]=[B]
Taahvdng:
[A]T[M][A][X]=[A]T[M][B]
hay
X = B
A
v B i xng nn c th dng c phng php
vi cc ma trn A
CG.ThuttoncaphngphpCGNRl:
X vv=r
Cho[X0]tnh r = B A
0
Lpchonkhihit
rkT rk
k = T
v ([A]v
)
k
x k +1 = x k k v k
v
rk+1 = rk k A
k
rkT rk
k = T
rk 1rk1
v k +1 = rk+1 + k v k
Taxydnghmcgnr()thchinthuttontrn
functionx=cgnr(a,b,x,maxiter,tol)
%dungthuattoancgnrdergiaihephuongtrinh
n=size(a,1);
174
m=ones(n,1);
m=diag(m);
m=1.2*m;
am=a*m*a;
bm=a*m*b;
r=bmam*x;
v=r;
delta1=norm(r)^2;
fork=1:maxiter
ifnorm(r)<tol
break
end
alfa=norm(r)^2/(v*(am*v));
x=x+alfa*v;
r=ralfa*am*v;
delta2=norm(r)^2;
beta=delta2/delta1;
v=r+beta*v;
delta1=delta2;
end
giihphngtrnhtadngchngtrnhctcgnr.m
clearall,clc
a=[134;257;312];
b=[8146];
maxiter=50;
tol=1e6;
x=[000];
x=cgnr(a,b,x,maxiter,tol)
17.PHNGPHPCGLS
PhngphpCGLScngdnggiicchphngtrnhcma
trnhskhngixngvicchtnhsaochotngbnhphngsdb
nht.Dovytaphicho [ A ][ X ] [ B] 2 min.ThuttonCGLSgmccbc
sau:
175
Cho[X0]tnh [ r ] = [ B] [ A ][ X 0 ] ,[d]=[A]T[r]v=[d]T[d]
Lpchonkhihit
k 1
k =
([A][d ])T ([A][d ])
x k +1 = x k kd k
rk+1 = rk k[ A ] d k
s k = [ A ] rk
sTk s k
k = T
s k1s k1
d k+1 = s k + kd k
Taxydnghmcgls()thchinthuttontrn.
functionx=cgls(a,b,x,maxiter,tol)
r=ba*x;
d=a*r;
rho1=d*d;
forj=1:maxiter
ad=a*d;
alpha=rho1/(ad*ad);
x=x+alpha*d;
r=ralpha*ad;
s=a*r;
rho2=s*s;
beta=rho2/rho1;
rho1=rho2;
d=s+beta*d;
ifnorm(r)<1e6
break;
end
end
giihphngtrnhtadngchngtrnhctcgls.m
clearall,clc
a=[134;257;312];
`
176
b=[8146];
maxiter=50;
x=[000];
tol=1e6;
x=cgls(a,b,x,maxiter,tol)
Nudngkthutpreconditionningvimatrn[m]ththuttonsl:
Cho[X0]
2
tnh [ r ] = [ B] [ A ][ X 0 ] ,[p]=[m]1[A]T[r],[s]=[p]v = s 2
Lpchonkhihit
tk=[s]1pk
qk=[A]tk
k = k 2
qk 2
x k +1 = x k k t k
rk+1 = rk k q k
s k+1 = [ m ] ([ A ] rk+1 )
k +1 = k +1
k
pk+1 = s k +1 + k pk
1
Taxydnghmcglsp()thchinthuttontrn.
functionx=cglsp(a,b,x,maxiter,tol)
%giaihebgthuattoanCGLScopreconditionning
n=size(a,1);
m=ones(n,1);
m=diag(m);
m=1.*m;
r=ba*x;
p=inv(m)*(a*r);
s=p;
k=1;
gamma1=norm(s)^2;
whilek<=maxiter&norm(r)>tol
177
t=inv(m)*p;
q=a*t;
alfa=gamma1/(norm(q)^2);
x=x+alfa*t;
r=ralfa*q;
s=inv(m)*(a*r);
gamma2=norm(s)^2;
beta=gamma2/gamma1;
gamma1=gamma2;
p=s+beta*p;
k=k+1;
end
18.PHNGPHPBiCG
Phng php gadient lin hp khng thch hp cho h phng trnh
khngixngvccvectsdkhngthtrcgiaovimtstlnlp.
Phngphpgradientlinhpkpthaythdyvectdtrcgiaobnghai
dytrcgiaotngh.
Khicpnhtsdtadngmatrn[A]Tthaychomatrn[A].Nhvy
tac:
T
R% i = R% i1 i A P% i
[R i ] = [R i1 ] i [ A ][Pi ]
vhaidyhngtm:
P% i = R% i1 + i1 P% i1
[Pi ] = [R i1 ] + i1 [Pi1 ]
Vicchn:
T
T
R% i1 R i1
R% i R i
i = T
i = T
P% i A Pi
R% i1 R i1
bomquanhtrcgiaokp:
T
T
R% i R j = P% i A Pj = 0 nuij
Taxydnghmbiconjgrad()thchinthuttontrn
functionx=biconjgrad(a,b,x,maxiter,tol)
%hamthuchienthuattoangradientlienhopkep
ifsize(x,1)==1
x=x;
178
end
r=ba*x;
rn=r;
fori=1:maxiter
z=r;
zn=rn;
rho=z*rn;
ifrho==0
error(Khongdungduocphuongphapnay!);
break;
end
ifi==1
p=z;
pn=zn;
else
beta=rho/rho1;
p=z+beta*p;
pn=zn+beta*pn;
end
q=a*p;
qn=a*pn;
alfa=rho/(pn*q);
x=x+alfa*p;
r=ralfa*q;
rn=rnalfa*qn;
ifnorm(r)<=tol
break
end
rho1=rho;
end
giihphngtrnhtadngchngtrnhctbiconjgrad.m
clearall,clc
a=[411;142;124];
b=[1215];
179
maxiter=50;
tol=1e6;
x=[000];
x=biconjgrad(a,b,x,maxiter,tol)
19.PHNGPHPBiCGSTAB
Phngphpgradientlinhpkpnnhcxydnggiicc
hphngtrnhtuyntnhkhngixng.Thuttongmcccbcsau:
chovectnghimbanutnh[X0]tatnh[R0]=[B][A][X0]
tachn R% .ngiintachn R% = [ R 0 ]
thchinccbclp
T
i1 = R% [ R i1 ]
nui=1th [ P1 ] = [ R 0 ]
i1 = i1 i1
i2 i1
[ Pi ] = [ R i1 ] + i1 ([ Pi1 ] + i1 [ Vi1 ])
nuciukintrctagiih M P = Pi
Vi = A P
i 1
i =
T
R% Vi
[ S ] = [ R i1 ] i [ Vi ]
kimtrachunca[S].Nunhth X i = X i1 + i P v
dng
giihphngtrnh M S = S
T = A S
T
[T ] [S]
i =
[ T ]T [ T ]
X i = X i1 + i P + i S
[ R i ] = [ S ] i [ T ]
chonkhihit
Taxydnghmbicgstab()thchinthuttonny
180
functionx=bicgstab(a,b,x,maxiter,tol)
%hamdunggiaiheptbangppgradientkepondinh
ifsize(x,1)==1
x=x;
end
iter=0;
r=ba*x;
err=norm(r);
if(err<tol)
fprintf(Hoitusau%dlanlap,iter);
return
end
omega=1.0;
rm=r;
foriter=1:maxiter
rho=rm*r;
if(rho==0.0)
fprintf(Khongsudungduocphuongphapnay);
break
end
if(1<iter)
beta=(rho/rho1)*(alfa/omega);
p=r+beta*(pomega*v);
else
p=r;
end
ph=p;
v=a*ph;
alfa=rho/(rm*v);
s=ralfa*v;
if(norm(s)<tol)
fprintf(Pheplaphoitusau%dlanlap,iter);
x=x+alfa*ph;
resid=norm(s);
err=norm(s);
break;
181
end
sh=s;
t=a*sh;
omega=(t*s)/(t*t);
x=x+alfa*ph+omega*sh;
r=somega*t;
err=norm(r);
if(err<=tol)
fprintf(Pheplaphoitusau%dlanlap,iter)
break
end
if(omega==0.0)
fprintf(Khongdungduocphuongphapnay);
break
end
rho1=rho;
end
giiphngtrnhtadngchngtrnhctbicgstab.m
clearall,clc
a=[411;142;124];
b=[1215];
maxiter=50;
tol=1e6;
x=[000];
x=bicgstab(a,b,x,maxiter,tol)
20.PHNGPHPCGS
Phngphpgradientlinhpbc2cSonneveldara.Nlmt
binthcaphngphpBiCG.Thuttongmcccbcsau:
chovectnghimbanutnh[X0]tatnh[R0]=[B][A][X0]
T
thchinccbclp
T
i1 = R% [ R i1 ]
182
nui=1th [ P1 ] = [ U1 ] = [ R 0 ]
i1 = i1
i 2
[ U i ] = [ R i1 ] + i1 [ Qi1 ]
[ Pi ] = [ U i ] + i1 ([ Qi1 ] + i1 [ Pi1 ])
nuciukintrctagiih [ M ] P = [ Pi ]
= A P
V
i1
i =
R V
Qi = U i i V
= U + Q
giihphngtrnh M U
i i
X i = X i1 + i U
= A U
R i = R i1 i A Q
chonkhihit
Taxydnghmconjgradsq()thchinthuttontrn:
functionx=conjgradsq(a,b,x,maxiter,tol)
%hamthuchienthuattoangradientlienhopbachai
ifsize(x,1)==1
x=x;
end
r=ba*x;
rn=r;
fori=1:maxiter
rho=rn*r;
ifrho==0
error(Khongdungduocphuongphapnay!);
break;
end
ifi==1
183
u=r;
p=u;
else
beta=rho/rho1;
u=r+beta*q;
p=u+beta*(q+beta*p1);
end
pm=p;
vm=a*pm;
alfa=rho/(rn*vm);
q=ualfa*vm;
um=u+q;
x=x+alfa*um;
qm=a*um;
r=ralfa*qm;
ifnorm(r)<=tol
break
end
rho1=rho;
p1=p;
end
giihphngtrnhtadngchngtrnhctconjgradsq.m:
clearall,clc
a=[411;142;124];
b=[1215];
maxiter=50;
tol=1e6;
x=[000];
x=conjgradsq(a,b,x,maxiter,tol)
21.PHNGPHPMINRES
Phngphpnynhmcctiuhosd[R]=[B][A][X].Phplp
tmnghimcahphngtrnhchobi:
x(k+1)=x(k)+kp(k)
184
vip(k)lhngtm.
Sdcaphplp:
r(k+1)=r(k)k[A][R(k)]+kbk1[A]p(k1)
Cchscchntngtnhtrcgiao.Nu[A]ixng,tathyrngs
dccctiuhovtacthuttonMINRES.Thuttoncthgmcc
bcsau:
Cho[X0],tnh:
[R]=[B][A][X0],0= R 0 ,v=0;vnew=[R0]/0,new=0
c=0,s=0,cnew=1,snew=0
p=0,pnew=0
Lpvik=1,2,
%thuttonLanczostmTk
=new
[vold]=[v];[v]=[vnew]
[vnew]=[A][v][vold]
=[vnew]T[v]
[vnew]=[vnew][v]
new = v new
v new
v = new
%dngphpquaytrnctcuicaTk
clod=c,sold=s,c=cnew,s=snew
1=slod
2=c.clod+s
% 3 = c sc old
%loitrTk(k+1,k)
= % 3 + new
new
= 3 + new
%
c new = 3
s new = new
3=
%TnhPk
2
185
pold=p,p=pnew
v 1pold 2 pold
pnew =
3
%tnhx
x=x+cnewpnew
%iukinngnglp
=snew
chonkhi
0
Taxydnghmminres()thchinthuttonny.
functionx=minres(a,b,x,maxiter,tol)
k=0;
r=ba*x;
gamma0=norm(r);
v=0;
vnew=r/gamma0;
gamma=gamma0;
betanew=0;
c=1;
s=0;
cnew=1;
snew=0;
p=0;
pnew=0;
fork=1:maxiter
beta=betanew;
vold=v;
v=vnew;
vnew=a*vbeta*vold;
alfa=vnew*v;
vnew=vnewalfa*v;
betanew=norm(vnew);
vnew=vnew/betanew;
cold=c;
sold=s;
186
c=cnew;
s=snew;
rho1=sold*beta;
rho2=c*cold*beta+s*alfa;
rhon3=c*alfas*cold*beta;
tho=abs(rhon3)+abs(beta);
nuy=tho*sqrt((rhon3/tho)^2+(betanew/tho)^2);
cnew=rhon3/nuy;
snew=betanew/nuy;
rho3=nuy;
pold=p;
p=pnew;
pnew=(vrho1*poldrho2*p)/rho3;
x=x+cnew*gamma*pnew;
gamma=snew*gamma;
ifabs(gamma)/gamma0<tol
break;
end
end
giihtadngchngtrnhctminres.m
clearall,clc
a=[1135;1224;3232;5424];
b=[1091015];
maxiter=50;
tol=1e6;
x=[0000];
x=minres(a,b,x,maxiter,tol)
22.PHNGPHPQMR
Chox0,tnhR0=BAx0
% (1) vdbngR0
1 = y 2 ,chn w
% (1)
Giih M T2 z = w
0=1,0=1
Lpchonkhihit
nu(i)=0hayi=0thkhngdngphngphpny
v(i) = v% (i) / i , y = y / i
% (i) / i , z = z / i
w(i) = w
i = z T y ,nui=0thkhngdngphngphpny
giih M 2 y% = y
giih M1T z% = z
nui=1
* p(1) = y% , q(1) = z%
khngth
* p(i) = y% ( i i / i1 ) p(i1)
* q (i) = z% ( i i / i1 ) q (i1)
p% = Ap(i)
i = q(i)T p% ,nui=0thkhngdngphngphpny
i = i / i ,nui=0thkhngdngphngphpny
v% (i+1) = p% i v(i)
giih M1y = v% (i+1)
i+1 = y 2
% (i+1) = ATq(i) i w(i)
w
% (i+1)
giih M T2 z = w
i+1 = z 2
i = i+1 /( i1 i )
i = 1 + i2 ,nui=0thkhngdngphngphpny
i = i1i i /(i i21 )
nui=1th
x(i)=x(i1)+d(i)
r(i)=r(i1)s(i)
Taxydnghmqmr()thchinthutton:
functionx=qmr(a,x,b,maxiter,tol)
%qmr.mgiaihephuongtrinhax=btheothuattoan
%QMRcodungpreconditioning.
r=ba*x;
error=norm(r);
if(error<tol)
return
end
n=size(a,1);
M=ones(n,1);
M=diag(M);
M=1.2*M;
[M1,M2]=lu(M);
vn=r;
y=M1\vn;
rho=norm(y);
wn=r;
z=M2\wn;
xi=norm(z);
gamma=1.0;
eta=1.0;
theta=0.0;
foriter=1:maxiter,
if(rho==0.0|xi==0.0)
error(Khongdungduocphuongphapnay)
break;
end
v=vn/rho;
y=y/rho;
w=wn/xi;
z=z/xi;
delta=z*y;
189
if(delta==0.0)
error(Khongdungduocphuongphapnay)
break
end
yn=M2\y;
zn=M1\z;
if(iter>1),
p=yn(xi*delta/ep)*p;
q=zn(rho*delta/ep)*q;
else
p=yn;
q=zn;
end
pn=a*p;
ep=q*pn;
if(ep==0.0)
error(Khongdungduocphuongphapnay)
break
end
beta=ep/delta;
if(beta==0.0)
error(Khongdungduocphuongphapnay)
break
end
vn=pnbeta*v;
y=M1\vn;
rho1=rho;
rho=norm(y);
wn=(a*q)(beta*w);
z=M2\wn;
xi=norm(z);
gamma1=gamma;
theta1=theta;
theta=rho/(gamma1*beta);
gamma=1.0/sqrt(1.0+(theta^2));
if(gamma==0.0)
190
error(Khongdungduocphuongphapnay)
break
end
eta=eta*rho1*(gamma^2)/(beta*(gamma1^2));
if(iter>1),
d=eta*p+((theta1*gamma)^2)*d;
s=eta*pn+((theta1*gamma)^2)*s;
else
d=eta*p;
s=eta*pn;
end
x=x+d;
r=rs;
error=norm(r);
if(error<=tol)
break
end
end
giihphngtrnhtadngchngtrnhctqmr.m:
clearall,clc
a=[411;142;124];
b=[1215];
maxiter=50;
tol=1e6;
x=[000];
x=qmr(a,b,x,maxiter,tol)
23.PHNGPHPGMINRES
Phngphpnythngdnggiihphngtrnhcmatrnh
skhngsuybin,khngixng.Phngphpnymrngphngphp
MINRESchohkhngixng.GingnhphngphpMINRES,phng
phpnytoramtdyccvecttrcgiaocdng:
w(i) = Av(i)
fork=1,..,i
191
end
v(i+1) = w(i) / w(i)
CclnlptheoGMINREScdng:
x(i)=x(0)+y1v(1)++yiv(i)
Thuttoncthgmccbcsau:
Chox(0)
TnhrthphngtrnhMr=bAx(0)
Lpchonkhihit
v(1) = r / r 2
s = r 2e1
fori=1,2,..,m
giihMw=Av(i)
fork=1,..,i
hk,i=(w,v(k))
w=whk,iv(k)
end
h i+1,i = w 2
[n,n]=size(a);
m=restart;
V(1:n,1:m+1)=zeros(n,m+1);
H(1:m+1,1:m)=zeros(m+1,m);
cs(1:m)=zeros(m,1);
sn(1:m)=zeros(m,1);
e1=zeros(n,1);
e1(1)=1.0;
foriter=1:maxiter
r=M\(ba*x);
V(:,1)=r/norm(r);
s=norm(r)*e1;
fori=1:m
w=M\(a*V(:,i));
fork=1:i
H(k,i)=w*V(:,k);
w=wH(k,i)*V(:,k);
end
H(i+1,i)=norm(w);
V(:,i+1)=w/H(i+1,i);
fork=1:i1
temp=cs(k)*H(k,i)+sn(k)*H(k+1,i);
H(k+1,i)=sn(k)*H(k,i)+cs(k)*H(k+1,i);
H(k,i)=temp;
end
[cs(i),sn(i)]=rotmat(H(i,i),H(i+1,i));
temp=cs(i)*s(i);
s(i+1)=sn(i)*s(i);
s(i)=temp;
H(i,i)=cs(i)*H(i,i)+sn(i)*H(i+1,i);
H(i+1,i)=0.0;
error=abs(s(i+1));
if(error<=tol)
y=H(1:i,1:i)\s(1:i);
x=x+V(:,1:i)*y;
break;
193
end
end
if(error<=tol)
break
end
y=H(1:m,1:m)\s(1:m);
x=x+V(:,1:m)*y;
r=M\(ba*x);
s(i+1)=norm(r);
error=s(i+1)/bnrm2;
if(error<=tol)
break
end;
end
giihphngtrnhtadngchngtrnhctgmres.m:
clearall,clc
a=[134;257;312];
b=[8146];
maxiter=50;
tol=1e6;
x=[000];
restart=5;
x=gmres(a,b,x,restart,maxiter,tol)
24.PHNGPHPFOM
a
j=1
i ,j
x j + a i ,n +1 = 0
(1)
194
k 1
u k = c k ,i v i v v k = u k / u k .Cngthctnhtonsl:
i =1
u k = a k (a k ,v i )v i
i =1
v = u / u ; v = a / a
k
k
1
1
1
k
(2)
a
j=1
Do
i ,j
zj = 0
n +1
u n +1 = z = z i2 > 0
2
2
i
i =1
i =1
(u n +1 ,a i ) = a i ,jz j + a i ,n +1z n +1 = 0
j=1
Chiahaivchozn+1tac
j=1
zj
a i ,j
+ a i ,n +1 = 0
z
n +1
ngthcnychngt xi =
zi
lnghimca(1).ThuttonFOMcth
z n +1
gmccbc:
Cho[X0],tnhr0=[B], = r0 , v1 = r0 / r0
Lpchonkhihit
wj=[A]vj
trcgiaohoGramSchmidt
h j+1,j = w j
nuhj+1,j=0thm=j,ktthclp
y m = H m1 ( e1 )
xm=x0+Vmym
Taxydnghmfom()thchinthuttontrn:
195
functionx=fom(a,b,x0,maxiter,tol)
%GiaiheptbangthuattoanFOM
i=1;
x=x0(:);
r=ba*x;
rnorm=norm(r);
rho=rnorm;
v(:,i)=r/rho;
while((rnorm/rho>tol)&(i<=maxiter))
v(:,i+1)=a*v(:,i);
h(1:i,i)=v(:,1:i)*v(:,i+1);
v(:,i+1)=v(:,i+1)v(:,1:i)*h(1:i,i);
h(i+1,i)=norm(v(:,i+1));
v(:,i+1)=v(:,i+1)/h(i+1,i);
x=x0+v(:,1:i)*(h(1:i,1:i)\[rho;zeros(i1,1)]);
r=ba*x;
rnorm=norm(r);
i=i+1;
end
i
giihphngtrnhtadngchngtrnhctfom.m:
clearall,clc
a=[134;257;312];
b=[8146];
maxiter=50;
tol=1e6;
x0=[000];
x=fom(a,b,x0,maxiter,tol)
25.PHNGPHPLSQR
PhngphpLSQRLeastSquaresQRdoPaigevSaunderaravo
nm1982.PhngphpLSQRtngngviphngphpCGLSnhng
choktqutthnivicchphngtrnhcmatrnhsciukin
196
(1)
=
T
X
0
[
]
[
]
A
0
[
]
[
]
Toramtcstrcgiaovi(1)vivectbanu:
1 [ B]
w1 =
[ B] 2 [ 0 ]
1 [ B]
tacvectthhai
.Saukhitrcgiaohonviw1vchun
B 2 [ A ]T [ B]
hoktqutacvectcstrcgiaothhai:
[ B]
1
w2 =
T
[ A ]T [ B] 2 [ A ] [ B]
vtiptc.
ThuttonLSQRgiihphngtrnhAx=bgmccbcsau:
Chox0,tnh 1 = b , u1 = b 2 1 , v = A T u1 , = v 2 , w1 = v1 = v
% = , % =
1
Lpchonkhihit:
u = Av i i u i , 1 = u 2 , u i+1 = u i+1
functionx=lsqr(A,b,maxiter)
%GiaihephuongtrinhbangphuongphapLSQR.
197
%min ||Axb||.
s=1;
tol=1e6;
[m,n]=size(A);
X=zeros(n,maxiter);
UV=0;
eta=zeros(maxiter,1);
rho=eta;
c2=1;
s2=0;
xnorm=0;
z=0;
%ChuanbilapLSQR.
v=zeros(n,1);
x=v;
beta=norm(b);
if(beta==0)
error(Vephaiphaikhackhong)
end
u=b/beta;
if(UV)
U(:,1)=u;
end
r=A*u;
alpha=norm(r);
v=r/alpha;
if(UV)
V(:,1)=v;
end
phi_bar=beta;
rho_bar=alpha;
w=v;
fori=2:maxiter+1
alpha_old=alpha;
beta_old=beta;
%TinhA*valpha*u.
198
p=A*valpha*u;
beta=norm(p);
u=p/beta;
%TinhA*ubeta*v.
r=A*ubeta*v;
alpha=norm(r);
v=r/alpha;
%LuuUvaVneucan
if(UV)
U(:,i)=u;
V(:,i)=v;
end
rrho=pythag(rho_bar,beta);
c1=rho_bar/rrho;
s1=beta/rrho;
theta=s1*alpha;
rho_bar=c1*alpha;
phi=c1*phi_bar;
phi_bar=s1*phi_bar;
%Tinhchuancuanghienvasodu;
delta=s2*rrho;
gamma_bar=c2*rrho;
rhs=phidelta*z;
z_bar=rhs/gamma_bar;
eta(i1)=pythag(xnorm,z_bar);
gamma=pythag(gamma_bar,theta);
c2=gamma_bar/gamma;
s2=theta/gamma;
z=rhs/gamma;
xnorm=pythag(xnorm,z);
rho(i1)=abs(phi_bar);
%Capnhatnghiem
x=x+(phi/rrho)*w;
w=v(theta/rrho)*w;
ifrho(i1)<tol
break;
199
end
end
i
functionx=pythag(y,z)
%tinhsqrt(y^2+z^2).
rmax=max(abs([y;z]));
if(rmax==0)
x=0;
else
x=rmax*sqrt((y/rmax)^2+(z/rmax)^2);
end
giihphngtrnhtadngchngtrnhctlsqr.m:
clearall,clc
maxiter=50;
A=[134;257;312];
b=[8146];
x=lsqr(A,b,maxiter)
26.PHNGPHPSYMMLQ
LinquannphngphpMINRESvCGlthuttonSYMMLQdo
PaigevSaundersara.Taxthphngtrnh[A][X]=[B]vi[A]lma
trnixngnhngkhngcnxcnhdng.Tachnnghimbanul
1[v1]={B], 1 = [ B] 2 . Ti ln lp th k caphng php CG ta c c xk
saocho[rk]=[B][A][Xk]trcgiao.Do[Vk]lcstrcgiaonntactht
[Xk]=[Vk][yk]vc:
T
[rk]=[B][A][Vk][yk]=1[v1][Vk][Tk][yk] k+1 ([ e ] [ y k ]) [ v k+1 ] (1)
Do [ Vk ] [ rk ] = 0 nnnhn(1)vi [ Vk ] vdng [ Vk ] [ v k +1 ] = 0 v [ Vk ] v1= e1 ta
T
c:
0 = [ Vk ] [ rk ] = 1e1 [ Tk ][ y k ]
T
(2)
giih(2),PaigevSaundersnghthchinphpphntchLQ:
[ Tk ] = [Lk ][ Qk ]
T
200
Chox0
Tnhx=xo,r=bAx, = r , v = r
=0, % = 0 ,c=1,s=0,k=
vold=0,w=v,g=0,g% = 0
Lpkhik<tol:
v% = Av v old
= v * v% , v% = v% v
= v% , v old = v , v = v% /
l = s c% , l = s
1
% = s% c , % = c
l 0 = % 2 + 2
c = % l 0 ,s = l 0
g% = g l1g, g = l 2g, g = g% l 0
x = x + (gc)w +(gs)v
w=swcv
k = g% 2 + g 2
Taxydnghmsymmlq()thchinthuttonny:
functionx=symmlq(A,b,x,maxiter,tol)
%HamthuchienthuatoanSYMMLQvoiAlamatrandoixung
[m,n]=size(A);
n2b=norm(b);
xmin=x;
imin=0;
tolb=tol*n2b;
r=bA*x;
normr=norm(r);
normrmin=normr;
v=r;
vold=r;
u=vold;
v=u;
201
beta1=vold*v;
beta1=sqrt(beta1);
vv=v/beta1;
wbar=vv;
v=A*vv;
alpha=vv*v;
v=v(alpha/beta1)*vold;
numer=vv*v;
denom=vv*vv;
v=v(numer/denom)*vv;
volder=vold;
vold=v;
u=vold;
v=u;
betaold=beta1;
beta=vold*v;
beta=sqrt(beta);
gammabar=alpha;
deltabar=beta;
gamma=sqrt(gammabar^2+beta^2);
cs=gammabar/gamma;
sn=beta/gamma;
zeta=beta1/gamma;
epsilonzeta=0;
normrcgcs=abs(beta1*sn);
if(cs==0)
normrcg=Inf;
else
normrcg=normrcgcs/abs(cs);
end
stag=0;
fori=1:maxiter
vv=v/beta;
w=cs*wbar+sn*vv;
stagtest=zeros(n,1);
ind=(x~=0);
202
stagtest(ind)=w(ind)./x(ind);
stagtest(~ind&(w~=0))=Inf;
if(zeta==0)|(abs(zeta)*norm(stagtest,inf)<eps)
stag=stag+1;
else
stag=0;
end
x=x+zeta*w;
wbar=sn*wbarcs*vv;
v=A*vv;
v=v(beta/betaold)*volder;
alpha=vv*v;
v=v(alpha/beta)*vold;
volder=vold;
vold=v;
u=vold;
v=u;
betaold=beta;
beta=vold*v;
if(beta<0)
break
end
beta=sqrt(beta);
delta=cs*deltabar+sn*alpha;
deltazeta=delta*zeta;
gammabar=sn*deltabarcs*alpha;
epsilon=sn*beta;
deltabar=cs*beta;
gamma=sqrt(gammabar^2+beta^2);
csold=cs;
snzeta=sn*zeta;
cs=gammabar/gamma;
sn=beta/gamma;
epszdelz=epsilonzeta+deltazeta;
epsilonzeta=epsilon*zeta;
zeta=epszdelz/gamma;
203
mrcg=norm((csold*epszdelz/gammabarsnzeta)*vold);
normr=sqrt(epszdelz^2+epsilonzeta^2);
normrcgcs=normrcgcs*abs(sn);
if(cs==0)
normrcg=Inf;
else
normrcg=normrcgcs/abs(cs);
end
if(normr<=tolb)
r=bA*x;
normr=norm(r);
if(normr<=tolb)
break
end
end
if(normrcg<=tolb)
xcg=x+(epszdelz/gammabar)*wbar;
r=bA*xcg;
normrcg=norm(r);
if(normrcg<=tolb)
x=xcg;
break
end
end
if(stag>=2)
break
end
if(normr<normrmin)
normrmin=normr;
xmin=x;
imin=i;
end
end
r=bA*x;
normr=norm(r);
i
204
gii h phng trnh bng thut ton SYMMLQ ta dng chng trnh
ctsymmlq.m:
clearall,clc
A=[1241;2315;4116;1565];
b=[8111217];
maxiter=50;
x=[000];
tol=1e12;
x=symmlq(A,b,x,maxiter,tol)
27.PHNGPHPCHEBYSHEV
[M]1[A][X]=[M]1[B]
scnghimnhhphngtrnh[A][X]=[B]nhngtnhchtphcahs
camatrn[M]1[A]cththunlihn.
Taxtphngtrnhvi[A]lmatrnixng,xcnhdng.Lc
phcamatrn[A]snmtrongon[min, max]vi min, maxlccgi
trringlnnhtvnhnhtca[M]1[A].Thuttontmnghiml:
cho[X0],tnh[R0]=[B][A][X0]
chnthams vcsaochophca[A]nmtrnon[dc,d+c]
haytrongellipctiuimdckhngchagcto
vtnhvin=1,2,...,nchonkhihit:
[Z]=[M]1[R]
2
=
[P]=[Z]khin=1
d
2
c n 1
1
n =
n =
[Pn ] = [Z n ] + [Pn1 ] khin2
d n
2
[ X n+1 ] = [ X n ] + n [Pn ]
[Rn+1]=[Rn]n[A][Pn]
205
Taxydnghmchebyiter()thchinthuttontrn:
functionx=chebyiter(A,x,b,M,maxiter,tol)
%Cuphapx=chebyiter(A,x,b,M,maxiter,tol)
%DungpplapChebyshevdegiaiheptA*x=b.
%A(n,n)matrandoixung,xacdinhduong
%X(n),vectonghiembandau
%B(n),vephai
%M,matranpreconditioner
%choMbangmtdonvineukhongthutruoc
%X(n),nghiem
ifsize(x,1)==1
x=x;
end
r=bA*x;
eigs=eig(inv(M)*A);
eigmax=max(eigs);
eigmin=min(eigs);
c=(eigmaxeigmin)/2.0;
d=(eigmax+eigmin)/2.0;
fori=1:maxiter
z=M\r;
if(i==1)
p=z;
alfa=2.0/d;
else
beta=(c*alfa/2.0)^2;
alfa=1.0/(dbeta);
p=z+beta*p;
end
x=x+alfa*p;
r=ralfa*A*p;
err=norm(r);
if(err<=tol)
break
end
206
end
Tadngchngtrnhctchebyiter.mgiihphngtrnh:
clearall,clc;
n=10;
A=zeros(n,n);
fori=1:n
A(i,i)=3.0;
end
fori=1:n1
A(i,i+1)=1;
end
fori=1:n1
A(i+1,i)=1;
end
x=[1:n];
b=A*x;
x=ones(n,1);
M=2.0*eye(n);
maxiter=50;
tol=1e6;
y=chebyiter(A,x,b,M,maxiter,tol);
fprintf(Nghiemcuahephuongtrinh\n);
fprintf(%f\n,y)
28.PHNGPHPQR
Taphntchmatrnhs[A]thnh:
[A]=[Q][R]
Do [Q]T[Q]=[E]
nn:
[A][X]=[Q][R][X]=[B]
[Q]T[A][X]=[Q]T[Q][R][X]=[R][X]=[Q]T[B]
Do[R]lmatrntamgictrnnntatmnghimddng.Taxydnghm
givens()thchinphpquayGivens:
207
function[c,s,r]=givens(x,y);
%tinhc,s,rsaocho[cs][x]=[r]
%[sc][y]=[0]
%voic*c+s*s=1;
if(y==0)
c=1;
s=0;
r=x;
else
if(abs(x)>=abs(y))
t=y/x;
r=sqrt(1+t*t);
c=1/r;
s=t*c;
r=x*r;
else
t=x/y;
r=sqrt(1+t*t);
s=1/r;
c=t*s;
r=y*r;
end
end
functionx=qrgivens(A,b);
[m,n]=size(A);
tau=zeros(n,1);
%R=[A(1:n+1,:)b(1:n+1)];
R=[A(1:n,:)b(1:n)];
forj=2:n
fori=1:j1
[c,s,r]=givens(R(i,i),R(j,i));
R(i,i)=r;
208
R(j,i)=0;
t=c*R(i,i+1:n+1)+s*R(j,i+1:n+1);
R(j,i+1:n+1)=s*R(i,i+1:n+1)+c*R(j,i+1:n+1);
R(i,i+1:n+1)=t;
end
end
fork=n+2:m,
a=[A(k,:)b(k)];
fori=1:n+1
[c,s,r]=givens(R(i,i),a(i));
R(i,i)=r;
a(i)=0;
t=c*R(i,i+1:n+1)+s*a(i+1:n+1);
a(i+1:n+1)=s*R(i,i+1:n+1)+c*a(i+1:n+1);
R(i,i+1:n+1)=t;
end
end
x=R(1:n,n+1);
forj=n:1:2
x(j)=x(j)/R(j,j);
x(1:j1)=x(1:j1)R(1:j1,j)*x(j);
end
x(1)=x(1)/R(1,1);
giihphngtrnhtadngchngtrnhctqrgivens.m:
clearall,clc
A=[121;211;113];
b=[245];
x=qrgivens(A,b)
209
CHNG 3: NI SUY V XP X HM
1.NISUYLAGRANGE
Trongthctnhiukhitacntnhgitrcahmy=f(x)timtgitr
x trong mt on [a, b] no m ch bit mt s nht nh cc gi tr ca
hm ti mt s im cho trc. Cc gi tr ny c cung cp qua thc
nghimhaytnhton.Vvynysinhvntonhcltrnonaxb
chomtlotccimxi(i=0,1,2...)vticcimxinygitrcahml
yi =f(xi)bitvtacntmy=f(x)datrnccgitrbit.Lcta
cntmathc:
Pn(x)=aoxn+a1xn1++an1x+an
saochoPn(xi)=f(xi)=yi.athcPn(x)cgilathcnisuycahm
y=f(x). Ta chn a thc ni suy hm y = f(x) v a thc l loi hm n
gin,luncohmvnguynhm.Victnhgitrcantheothutton
Hornercngngin.
BygitaxydngathcnisuykiuLagrange.GiLilathc:
( x x0 )...( x xi 1 )( x xi + 1 )...( x x n )
Li =
( xi x 0 )...( xi xi 1 )( x i x i + 1 )...( x i x n )
RrnglLi(x)lmtathcbcnv:
j=i
1
L i (x j ) =
0
j
TagiathcnylathcLagrangecbn.
Bygitaxtbiuthc:
n
Pn ( x) = f( x i )L i ( x)
i =0
x
x0
x1
y
y0
y 1
athcnisuysl:
P1(x)=yoL0(x)+y1L1(x1)
x x0
x x1
L0 =
L 1 =
x 0 x1
x1 x 0
210
nn P1 ( x) = y 0
x x0
x x1
+ y1
x1 x 0
x 0 x1
NhvyP1(x)lmtathcbcnhtivix
Vin=2tacbng
x
x0
x1
x2
y
y 0
y1
y2
athcnisuysl:
P2(x)=yoL0(x)+y1L1(x1)+y2L2(x2)
( x x1 )( x x 2 )
L0 =
( x 0 x1 )( x0 x 2 )
( x x0 )( x x 2 )
L1 =
( x1 x0 )( x1 x 2 )
( x x 0 )( x x1 )
L2 =
( x 2 x 0 )( x 2 x1 )
NhvyP1(x)lmtathcbchaiivix.
Ta xy dng hm lagrange() thc hin vic ni suy hm theo thut ton
Lagrange:
function[l,L]=lagrange(x,y)
%Duavao:x=[x0x1...xn],y=[y0y1...yn]
%ketqua:l=HesocuadathucLagrangebacn
%L=DathucLagrange
n=length(x)1;%baccuadathucl
l=0;
form=1:n+1
p=1;
fork=1:n+1
ifk~=m
p=conv(p,[1x(k)])/(x(m)x(k));
end
end
L(m,:)=p;%dathucLagrange
l=l+y(m)*p;
end
211
Chohmdidngbng:
x
2
1
1
2
y
6
0
0
6
vtmy(2.5)tadngchngtrnhctlagrange.m:
clearall,clc
x=[2112];
y=[6006];
l=lagrange(x,y);
yx=polyval(l,2.5)
2.NISUYNEWTON
Bygitaxtmtcchkhcxydngathcnisuygilphng
phpNewton.Trchttaavomtkhinimmilthiu
Gishmy=y(x)cgitrchotrongbngsau:
x
x0 x1 x2 xn1 xn
y
y0 y1 y2 yn1 yn
Thiucp1caytixi,xjl:
yi y j
y[x i , x j ] =
xi x j
Thiucphaicaytixi,xj,xkl:
y[x i , x j ] y[x j , x k ]
y[xi , x j , x k ] =
xi xk
v.v.
Viy(x)=Pn(x)lmtathcbcnththiucp1tix,x0:
P ( x) Pn ( x0 )
Pn [x , x0 ] = n
x x0
lmtathcbc(n1).Thiucp2tix,x0,x1:
P [x , x0 ] Pn [x0 , x1 ]
Pn [x , x 0 , x1 ] = n
x x1
lmtathcbc(n2)v.vvtithiucp(n+1)th:
212
Pn[x,xo,..,xn]=0
Tccnhnghathiutasuyra:
Pn(x)=Pn(x0)+(xx0)Pn[x,xo]
Pn[x,x0]=Pn[x0,x1]+(xx1)Pn[x,xo,x1]
Pn[x,xo,x1]=Pn[x0,x1,x2]+(xx2)Pn[x,xo,x1,x2]
............
Pn[x,xo,..,xn1]=Pn[x0,x1,..,xn]+(xxn)Pn[x,xo,..,xn]
Do Pn[x,xo,..,xn]=0nnttac:
Pn(x)=Pn(x0)+(xx0)Pn[xo,x1]+(xx0)(xx1)Pn[x0,x1,x2]+
+(xx0)(xxn1)Pn[x0,,xn]
NuPn(x)lathcnisuycahmy=f(x)th:
Pn(xi)=f(xi)=yivii=0n
Doccthiutcp1ncpncaPnvcayltrngnhauv
nhvytac:
Pn(x)=y0+(xx0)y[x0,x1]+(xx0)(xx1)y[x0,x1,x2]+..+
(xx0)(xx1)...(xxn1)y[x0,..,xn]
athcnygilathcnisuyNewtontinxutphttntx0ca
hmy=f(x).NgoiathctincncathcnisuyNewtonlixutpht
timxncdngnhsau:
Pn(x)=yn+(xxn)y[xn,xn1]+(xxn)(xxn1)y[xn,xn1,xn2]+..+
(xxn)(xxn1)...(xx1)y[xn,..,x0]
Trnghpccntcchuthxi=x0+ihvii=0,1,..,n.Tagisai
phntincp1tiil:
yi=yi+1yi
vsaiphntincphaitii:
2yi=(yi)=yi+22yi+1+yi
.........
vsaiphntincpnl:
nyi=(n1yi)
Khitac:
y 0
y[x 0 , x 1 ] =
h
2 y 0
y[x 0 , x 1 , x 2 ] =
2h 2
...........
213
n y 0
y[x 0 , x 1 , x 2 ,..., x n ] =
n! h n
Bygitx=x0+httrongathcNewtontintac:
t( t 1) 2
t( t 1) ( t n + 1) n
Pn ( x 0 + ht) = y 0 + ty 0 +
y0 + +
y0
2!
n!
thtanhnc athcNewtontinxutphttx0trongtrnghpnt
cchu.Vin=1tac:
P1(x0+ht)=y0+y0
Vin=2tac:
t( t 1) 2
Pn ( x 0 + ht) = y 0 + ty 0 +
y0
2!
Mtcchtngttackhinimccsaiphnlitii:
yi=yiyi1
2yi=(yi)=yi2yi1+yi2
.........
nyi=(n1yi)
vathcnisuyNewtonlikhiccimnisuycchu:
t( t + 1) 2
t( t + 1) ( t + n 1) n
Pn ( x 0 + ht) = y n + ty n +
yn + +
yn
2!
n!
Taxydnghmnewton()nisuy:
function[n,DD]=newton(x,y)
%Duavao:x=[x0x1...xN]
%y=[y0y1...yN]
%Layra:n=hesocuadathucNewtonbacN
N=length(x)1;
DD=zeros(N+1,N+1);
DD(1:N+1,1)=y;
fork=2:N+1
form=1:N+2k
DD(m,k)=(DD(m+1,k1)DD(m,k1))/(x(m+k1)x(m));
end
end
a=DD(1,:);
n=a(N+1);
fork=N:1:1
214
n=[na(k)][0n*x(k)];
end
Chohmdidngbng:
x
2
1
1
2
4
y
6
0
0
6
60
Tadngchngtrnhctnewton.mnisuy:
clearall,clc
x=[21124];
y=[600660];
a=newton(x,y)
yx=polyval(a,2.5)
3.NISUYAITKENNEVILLE
Mt dng khc ca a thc ni suy c xc nh bng thut ton
AitkenNeville.Gistacnimchocahmf(x).Nhvyquahai
im x0 v x1 ta c a thc ni suy Lagrange ca hm f(x) c vit di
dng:
y0 x0 x
y x1 x
P01 ( x) = 1
x1 x 0
ylmtathcbc1:
x x1
x x0
P01 ( x) = y 0
+ y1
x 0 x1
x1 x 0
Khix=x0th:
P01 ( x 0 ) =
y0
y1
x0 x0
x1 x 0
= y0
x1 x 0
Khix=x1th:
y 0 x 0 x1
y x1 x1
P01 ( x1 ) = 1
= y1
x1 x 0
athcnisuyLagrangecaf(x)qua3imx0,x1,x2cdng:
215
P01 ( x) x0 x
P ( x) x 2 x
P012 ( x) = 12
x2 x0
vlmtathcbc2:
( x x1 )( x x 2 )
( x x 0 )( x x 2 )
( x x 0 )( x x1 )
+ y2
+ y1
P012 ( x) = y 0
( x 0 x1 )( x 0 x 2 )
( x1 x 0 )( x1 x 2 )
( x 2 x 0 )( x 2 x1 )
Khix=x0th:
y0
x0 x0
P ( x) x 2 x 0
P012 ( x0 ) = 12
= y0
x 2 x0
Khix=x1th:
y 1 x 0 x1
y x 2 x1
P012 ( x1 ) = 1
= y1
x2 x0
Khix=x2th:
P01 ( x 2 ) x0 x 2
y2
x2 x2
P012 ( x 2 ) =
= y2
x2 x0
TngqutathcnisuyLagrangequaniml:
P01..( n 1) ( x) x 0 x
P12..n ( x) x n x
P012..n ( x) =
x2 x0
Nh vy ta c th dng php lp xc nh ln lt cc a thc
Lagrange.StnhtonnhvygilsNevilleAitken.
Taxydnghmaitkenneville()nisuy:
functiona=aitkenneville(xData,yData,x)
%Travegiatrinoisuytaix.
%Cuphap:y=aitkenneville(xData,yData,x)
n=length(xData);
y=yData;
fork=1:n1
y(1:nk)=((xxData(k+1:n)).*y(1:nk)...
+(xData(1:nk)x).*y(2:nk+1))...
./(xData(1:nk)xData(k+1:n));
216
end
a=y(1);
Chocccps(1,3),(2,5),(3,7),(4,9)v(5,11),tmytix=2.5tadng
chngtrnhctaitkennevile.m:
clearall,clc
x=[1234];
y=[3579];
yx=aitkenneville(x,y,2.5)
4.NISUYBNGNGCONGSPLINEBCBA
Khisimchotrcdngkhinisuytng,athcnisuycdng
sngvsaistng.Taxthmthc:
1
f31(x) =
1 + 8x 2
vnisuynbngthuttonNewtonnhchngtrnhcttestintp.m
%NoisuyNewton
x1=[10.500.51.0];
y1=f31(x1);
n1=newton(x1,y1)
x2=[10.750.50.2500.250.50.751.0];
y2=f31(x2);
n2=newton(x2,y2)
x3=[10.80.60.40.200.20.40.60.81.0];
y3=f31(x3);
n3=newton(x3,y3)
xx=[1:0.02:1];%phamvinoisuy
yy=f31(xx);%hamthuc
yy1=polyval(n1,xx);%hamxapxiqua5diem
yy2=polyval(n2,xx);%hamxapxiqua9diem
yy3=polyval(n3,xx);%hamxapxiqua11diem
subplot(221)
plot(xx,yy,k,xx,yy1,b)
subplot(224)
217
plot(xx,yy1yy,r,xx,yy2yy,g,xx,yy3yy,b)%dothisaiso
subplot(222)
plot(xx,yy,k,xx,yy2,b)
subplot(223)
plot(xx,yy,k,xx,yy3,b)
y
vnhncktqu.
fi,i+1
fi1,i
trnhhintngsaislnkhi
s im mc tng ta dng ni suy ni
trn(spline). Trn cc on ni suy ta
yi1 yi
yi+1
thay hm bng mt ng cong. Cc
x
ng cong ny c ghp trn ti cc
xi
xi+1
xi1
imni.Tachnccngcongnyl
hmbc3vhmbc1vbchaikh
bomiukinnitrn.
Chomtlotgitrnisuy(x1,y1),,(xi,yi),,(xn,yn).Trnmionta
cmthmbc3.Nhvygiantiv(i+1)tachmfi,i+1(x),nghalta
dng(n1)hmbc3f1,2(x),f2,3(x),,fn1,n(x)thaythchohmthc.Hm
fi,i+1(x)cdng:
(1)
fi,i+1(x)=ai+bi(xxi)+ci(xxi)2+di(xxi)3
Hmnythomn:
(3)
fi,i+1(xi)=ai=yi
3
2
(4)
fi,i+1 (xi ) = bi
(5)
fi,i+1 (x i ) = 2c i = yi
fi,i+1 (xi+1 ) = 6di h i + 2c i = yi+1
(6)
(7)
(8)
Munnitrntacncohmbcnhtlintcvdo:
fi1,i (x i ) = fi,i+1 (x i ) = k i
Lc ny cc gi tr k cha bit, ngoi tr k1 = kn = 0(ta cc cc mt l im
un).imxutphttnhcchscafi,i+1(x)lbiuthcca fi,i+1 (xi ) .S
dngnisuyLagrangechohaiimtac:
Li (x) =
x x i +1
x i x i +1
Li+1 (x) =
x xi
x i +1 x i
Dovy:
k i (x x i+1 ) k i+1 (x x i )
x i x i +1
Tchphnbiuthctrnhailntheoxtac:
k i (x xi+1 )3 k i+1 (x xi )3
fi ,i+1 (xi ) =
+ A(x xi+1 ) B(x xi )
6(xi xi+1 )
TrongAvBlcchngstchphn
ShngcuitrongphngtrnhtrnthngcvitlCx+D.
tC=ABvD=Axi+1+Bxiddngtnhton.Tiukinfi,i+1(xi)=yi
tac:
k i (xi xi+1 )3
+ A(xi xi+1 ) = y i
6(xi x i+1 )
nn:
yi
k (x x i+1 )
A=
i i
x i x i +1
6
fi,i+1 (x i ) =
Tngt,iukinfi,i+1(xi+1)=yi+1chota:
y i +1
k (x xi+1 )
B=
i +1 i
x i x i +1
6
Ktqul:
k (x xi+1 )3
(x xi+1 )(xi xi+1 )
fi ,i+1 (xi ) = i
6 x i x i +1
k i+1 (x xi )3
(x
x
)(x
x
)
i
i
i +1
6 xi xi+1
y i (x xi+1 ) y i+1 (x xi )
x i x i +1
ohmcp2kiticcntbntrongctnhtiukin:
fi1,i (x i ) = fi,i+1 (x i )
+
Saukhibinitacphngtrnh:
k i1 (xi1 xi ) + 2k i (xi1 xi+1 ) + k i+1 (xi xi+1 )
y y i y i y i +1
= 6 i 1
x i 1 x i x i x i + 1
Khiccimchiacchu(xi+1xi)=htac:
219
6
i=2,3,,n1
( yi1 2yi + yi+1 )
h2
Taxydnghmcubicspline()nisuy:
functiony=cubicspline(xData,yData,x)
%Hamnayxapxibangdathucbac3spline
%Cuphap:[yi,f]=cubicspline(xData,yData,x)
n=length(xData);
c=zeros(n1,1);d=ones(n,1);
e=zeros(n1,1);k=zeros(n,1);
c(1:n2)=xData(1:n2)xData(2:n1);
d(2:n1)=2*(xData(1:n2)xData(3:n));
e(2:n1)=xData(2:n1)xData(3:n);
k(2:n1)=6*(yData(1:n2)yData(2:n1))...
./(xData(1:n2)xData(2:n1))...
6*(yData(2:n1)yData(3:n))...
./(xData(2:n1)xData(3:n));
[c,d,e]=band3(c,de);
k=band3sol(c,d,e,k);
i=findseg(xData,x);
h=xData(i)xData(i+1);
y=((xxData(i+1))^3/h(xxData(i+1))*h)*k(i)/6.0...
((xxData(i))^3/h(xxData(i))*h)*k(i+1)/6.0...
+yData(i)*(xxData(i+1))/h...
yData(i+1)*(xxData(i))/h;
Tacchngtrnhctcubicspline.mdngnisuy:
clearall,clc
x1=0:0.1:5;
y1=(x1+1).^2;
while1
x=input(x=);
ifisempty(x)
fprintf(Ketthuc);
break
k i1 + 4k i + k i+1 =
220
end
y=cubicspline(xData,yData,x)
fprintf(\n)
end
5.NISUYBNGATHCCHEBYSHEV
xk = cos
k=1,2,,n
(1)
2(n + 1)
Vionnisuy[a,b]btk:
ba
b+a ba
2n + 1 2k
a+b
xk =
xk +
cos
=
+
k=1,2,,n (2)
2
2
2
2(n + 1)
2
CcntnisuynycgilccntChebyshev.athcnisuydatrn
ccntChebyschevgilathcnisuyChebyshev.
Taxthmthc:
1
f(x) =
1 + 8x 2
Tachnsntnisuylnltl5,9,11vxydngccathcNewton
(hay Lagrange) c4(x), c8(x) v c10(x) i qua cc nt nyv v th ca hm
thccngnhsaiskhinisuybngchngtrnhctcomchebynew.mvicc
Nkhcnhau.
x1=[10.500.51.0];
y1=f31(x1);
n1=newton(x1,y1);
xx=[1:0.02:1];%phamvinoisuy
yy1=polyval(n1,xx);%hamxapxiqua5diem
yy=f31(xx);%hamthuc
221
subplot(221)
plot(xx,yy,k,x,y,o,xx,yy1,b);
title(Newton)
subplot(223)
plot(xx,yy1yy,r)%dothisaiso
N=4;
k=[0:N];
x=cos((2*N+12*k)*pi/2/(N+1));
y=f31(x);
c=newton(x,y)%dathucnoisuyduatrencacnutChebyshev
xx=[1:0.02:1];%doannoisuy
yy=f31(xx);%dothihamthuc
yy1=polyval(c,xx);%dothihamxapxi
subplot(222)
plot(xx,yy,k,x,y,o,xx,yy1,b)
title(Chebyshev)
subplot(224)
plot(xx,yy1yy,r)%dothisaiso
Khitngsimmc,nghaltngbccaathcChebyschev,saisgim.
athcChebyshevbcncxcnhbng:
Tn+1(x)=cos((n+1)arccos(x))
(3)
vccntChebyshevchobi(1)lnghimca(3).
Tac:
Tn +1 (x) = cos(arccos(x) + narccos(x))
= cos(arccos(x))cos(narccos(x) sin(arccos(x))sin(narccos(x))
n1
v T0(x)=1
T1(x)=cos(arccos(x)=x
CcathcChebyshevnbc6l:
T0(x)=1
T1(x)=x
T2(x)=2x21
(4)
(5)
222
T3(x)=4x33x
T4(x)=8x48x2+1
T5(x)=16x520x3+5x
T6(x)=32x648x4+18x21
T7(x)=64x7112x5+56x37x
Hmf(x)cxpxbng:
N
f(x) = d m Tm (x) x=
m =0
2 a+b
x
b a
2
(6)
Trong:
1 n
1 n
d0 =
f(x k )
f(xk )T0 (xk ) = n + 1
n + 1 k =0
k =0
2 n
dm =
f(xk )Tm (xk )
n + 1 k =0
2 n
m(2n + 1 2k)
=
f(xk )cos 2(n + 1) m = 1,2,...,n
n + 1 k =0
Taxydnghmcheby()tmathcnisuyChebyshev:
function[c,x,y]=cheby(f,N,a,b)
%vao:f=tenhamtrendoan[a,b]
%Ra:c=CachesocuadathucNewtonbacN
%(x,y)=cacnutChebyshev
ifnargin==2
a=1;
b=1;
end
k=[0:N];
theta=(2*N+12*k)*pi/(2*N+2);
xn=cos(theta);%pt.(1)
x=(ba)/2*xn+(a+b)/2;%pt.(2)
y=feval(f,x);
d(1)=y*ones(N+1,1)/(N+1);
form=2:N+1
cos_mth=cos((m1)*theta);
d(m)=y*cos_mth*2/(N+1);%pt.(7)
end
xn=[2(a+b)]/(ba);%nghichdaocuat.(2)
(7)
(8)
223
T_0=1;T_1=xn;%pt.(5)
c=d(1)*[0T_0]+d(2)*T_1;%pt.(6)
form=3:N+1
tmp=T_1;
T_1=2*conv(xn,T_1)[00T_0];%pt.(4)
T_0=tmp;
c=[0c]+d(m)*T_1;%pt.(6)
end
1
ta dng chng
1 + 8x 2
trnhctcheby.m:
clearall,clc
N=2;
a=2;
b=2;
[c,x1,y1]=cheby(f31,N,a,b)%dathucChebyshev
%sosanhvoidathucLagrange/Newton
k=[0:N];
xn=cos((2*N+12*k)*pi/2/(N+1));%pt.(1):nutChebyshev
x=((ba)*xn+a+b)/2;%pt.(2)
y=f31(x);
n=newton(x,y)
l=lagrange(x,y)
6.XPXHMBNGPHNTHCHUT
XpxPaddngxpxhmf(x)tix0bnghmhut:
Q (x x 0 )
Pm ,n (x x 0 ) = m
D n (x x 0 )
q 0 + q 1 (x x0 ) + q 2 (x x0 )2 + L + q m (x x0 )m
1 + d1 (x x0 ) + d 2 (x x0 )2 + L + d n (x x0 )n
vim=nhaym=n+1
Trongf(x0),f(x0),,f(m+n)(x0)cho
TrchttakhaitrinTaylorhmf(x)tix=x0nbc(m+n).
(1)
224
(2)
Tm + n (x) m
= 0 hayTm+n(x)Dn(n)Qm(x)=0
Dn (x)
nghal:
(a 0 + a1x + L + a m + n x m + n )(1 + d1x + L + d n x n ) = (q 0 + q1x + L + q m x m ) (3)
Cnbngccshngcngbchaivtac:
a 0 = q 0
a + a d = q
0 1
1
1
a 2 + a1d1 + a 0d 2 = q 2
L
a m + a m 1d1 + a m 2d 2 + L + a m nd n = q m
a m +1 + a md1 + a m 1d 2 + L + a m n+1d n = 0
a
m + 2 + a m +1d1 + a md 2 + L + a m n+ 2d n = 0
a m + n + a m + n 1d1 + a m + n2d 2 + L + a md n = 0
Trchttagii(5)tmdivsauthayvo(4)tmqi.
Taxydnghmpadeapp()tnhxpx:
function[num,den]=padeapp(f,xo,M,N,x0,xf)
%Vao:f=Hamcanxapxitrongdoan[xo,xf]
%Ra:num=Cachesocuatuso
%den=Cachesocuamauso
a(1)=feval(f,xo);
h=.01;
tmp=1;
fori=1:M+N
tmp=tmp*i*h;%i!h^i
dix=difapx(i,[ii])*feval(f,xo+[i:i]*h);%daoham
a(i+1)=dix/tmp;%hesochuoiTaylor
(4)
(5)
225
end
form=1:N
n=1:N;
A(m,n)=a(M+1+mn);
b(m)=a(M+1+m);
end
d=A\b;%pt.(5)
form=1:M+1
mm=min(m1,N);
q(m)=a(m:1:mmm)*[1;d(1:mm)];%pt.(4)
end
num=q(M+1:1:1)/d(N);den=[d(N:1:1)1]/d(N);%giamdan
ifnargout==0%vehamthuc,khaitrientaylorvahamPade
ifnargin<6
x0=xo1;
xf=xo+1;
end
x=x0+[xfx0]/100*[0:100];
yt=feval(f,x);
x1=xxo;
yp=polyval(num,x1)./polyval(den,x1);
yT=polyval(a(M+N+1:1:1),x1);
clf,plot(x,yt,k,x,yp,r,x,yT,b)
end
xpxhmextadngchngtrnhctpadeapp.m:
f1=inline(exp(x),x);
M=3;
N=2;%baccuaQ(x)vaD(x)
xo=0;%tamcuachuoiTaylor
[n,d]=padeapp(f1,xo,M,N)%tinhcachesocuaQ(x)/P(x)
x0=3.5;
xf=0.5;%bientraivaphaicuakhoangxapxi
padeapp(f1,xo,M,N,x0,xf)%xemdothi
226
7.NISUYBNGATHCHERMIT
Trongmtstrnghp,tacntmhmathckhngnhngiqua
ccimchotrcmcnphithomniukinvohmticcim
.TagiathcnhvylathcnisuyHermit.ngin,takho
stmtathcbc3:
h(x) = H 3 x 3 + H 2 x 2 + H1x + H0
(1)
iquahaiim(x0,y0),(x1,y1)vcccohml y0 , y1 .Tatmcchs
Hibngcchgiihphngtrnh:
h(x 0 ) = H 3 x03 + H 2 x02 + H1x0 + H0 = y 0
3
2
h(x1 ) = H 3 x1 + H 2 x1 + H1x1 + H0 = y1
h
(x
)
=
3H
x
+
2H
x
+
H
=
y
0
3 0
2 0
1
0
h(x ) = 3H x 2 + 2H x + H = y
1
3 1
2 1
1
1
(2)
Ccohmbcnhtctnhgnngbng:
h(x0 + ) h(x0 ) y 2 y 0
=
y0 =
(3)
h(x1 ) h(x1 ) y1 y 3
=
y1 =
BygitatmathcnisuyLagrangehayNewtoniqua4im:
(x0,y0), (x 2 = x0 + ,y2 = y0 + y0 ) , (x 3 = x1 , y3 = y1 y1) ,(x1,y1)
Hmhermit()tonnphngtrnh(2):
functionH=hermit(x0,y0,dy0,x1,y1,dy1)
A=[x0^3x0^2x01;x1^3x1^2x11;
3*x0^22*x010;3*x1^22*x110];
b=[y0y1dy0dy1];%Pt.(2)
H=(A\b);
Hm hermits()dnghm hermit()tnhcchscaathcHermittrn
nhiuonvgitrnisuy:
function[H,yi]=hermits(x,y,dy,xi)
%TimcachesocuacdathucHermitetrencdoan
clc
forn=1:length(x)1
H(n,:)=hermit(0,y(n),dy(n),x(n+1)x(n),y(n+1),dy(n+1));
227
end
yi=ppval(mkpp(x,H),xi)
nisuytadngchngtrnhcthermite.m:
clearall,clc
x=[0123];
y=[1245];
dy=[0246];
[h,y]=hermits(x,y,dy,1.5)
8.BINIFOURIER
1.BiniFourrier:Tnhiuthctthngbaogmccthnhphnctn
s khc nhau. Chui Fourier v php bn i Fourier l cng c ton hc
dngphntchctnhtnscatnhiu.C4nhnghatngtnhau
v chui v php bin i Fourier, gm: chui Fourier lin tc theo t(CFS),
php bin i Fourier lin tc theo t(CFT), chui Fourier gin on theo
t(DFS) v php bin i Fourier gin on theo t(DFT). Trong cc cng c
ny,DFTddnglptrnhtrnmytnhnntrongphnnytaschn
n.
Gischuisliu{x[n]=x(nT),n=0:M1}viTlchuklymu
ccbngcchlymumttnhiulintcx(t)Tlntrongmtgiy.N
cpimDFTviDFTcnhnghabng:
N 1
DFT:
(1a)
n =0
N 1
1
X(k)e j2nk/N
(1b)
N n =0
NichunghsDFTcaX(k)lmtsphcvnxcnhbinvpha
ca thnh phn tn hiu c tn s s k = k0(rad), tng ng vi tn s
tngtk=k0=k0/T=2k/NT(rad/s).Tagi0=2/Nv0=2/NTl
cctnscbnsvtngt(tnsphngii)vylhiutnscth
phnbitbiNimDFT.
iDFT:
x[n] =
228
phntchbiDFSvDFScanX(k)lchuktnhiuvichukNtrnton
btpsnguyn.
BiniFouriernhanhFFTlthuttonhiuqutnhDFTviDFT
c xy dng bng cch dng tnh chu k v tnh i xng cu nhn t
ei2nk/NgimbtsnhntphctN2thnh(N/2)log2N)Nthhinkch
thccaDFT.HmMATLABfft()vifft()thchinthuttoniviN=
2l (llsnguynkhngm).NudiMcachuisliubanukhng
philbisca2,cthmrngbngcchmthms0vocuichui
vgilmzero.
%SosanhphepbiendoiFouriernhanhvaroirac
clear,clf
N=2^10;
n=[0:N1];
x=cos(2*pi*200/N*n)+0.5*sin(2*pi*300/N*n);
tic%ngungdongho
fork=0:N1
X(k+1)=x*exp(j*2*pi*k*n/N).;
end%DFT
k=[0:N1];
forn=0:N1
xr(n+1)=X*exp(j*2*pi*k*n/N).;
end%IDFT
time_dft=toc
plot(k,abs(X))
pause,holdon
tic
X1=fft(x);%FFT
xr1=ifft(X1);%IFFT
time_fft=toc%duarathoigianthuchien
clf,plot(k,abs(X1),r)%phobiendo
Chyonlnhvsosnhthigianthchin1024imtnhDFT/iDFTv
FFT/iFFT.
229
2.nghavtlcabiniFourrierrirc:hiucnghavtlca
FFttathchincclnhtrongchngtrnhctmeanning.m.Chngtrnhcho
taphbincatnhiu
x(t)=sin(1.5t)+0.5cos(3t)
(2)
clymumiTs.
TccktqutathykhiT=0.1vN=32thXa(k)lntik=2vk=5.
Lck0=2k/NT=2k/3.21.5v3.1253.
KhiT=0.05vN=64thXb(k)cnglntik=2vk=5.Lc
k0=1.251.5v3.1253.
KhiT=0.1vN=64thXc(k)lntik=4,k=5,k=9vk=10.Lc
k0=2k/NT=2k/6.41.25~1.5625v2.8125~3.
Khi T = 0.1 v N = 64 th Xd(k) ln ti k = 5 v k = 10. Lc k0 =
1.56251.5v3.1253.
TntinhiuphDFTkhcnhaucacngmttnhiutngt,tu
thucvokchthcDFT,chuklymu,khongbinthincahmvm
zero.SosnhviphtiT=0.1s,phtiT=0.05scphmvitnstngt
[0,2/Tb]rnghnnhngccngtnsphngiitngtl0=0/Tb=
2/NbTb=/1.6=2/NaTa.Phkhicmzerotrn.
clear,clf
w1=1.5*pi;
w2=3*pi;
N=32;
n=[0:N1];
T=0.1;%chukilaymau
t=n*T;
xan=sin(w1*t)+0.5*sin(w2*t);
subplot(421)
stem(t,xan,.)
k=0:N1;
Xa=fft(xan);
dscrp=norm(xanreal(ifft(Xa)))
subplot(423)
stem(k,abs(Xa),.)
N=32;
n=[0:N1];
230
T=0.1;
t=n*T;
xan=sin(w1*t)+0.5*sin(w2*t);
subplot(422)
stem(t,xan,.)
k=0:N1;
Xa=fft(xan);
Dscrp=norm(xanreal(ifft(Xa)))
subplot(424)
stem(k,abs(Xa),.)
N=64;
n=[0:N1];
T=0.05;
t=n*T;
xbn=sin(w1*t)+0.5*sin(w2*t);
subplot(425)
stem(t,xbn,.)
k=0:N1;
Xb=fft(xbn);
subplot(427)
stem(k,abs(Xb),.)
N=64;
n=[0:N1];
T=0.1;
t=n*T;
xbn=sin(w1*t)+0.5*sin(w2*t);
subplot(426)
stem(t,xbn,.)
k=0:N1;
Xb=fft(xbn);
subplot(428)
stem(k,abs(Xb),.)
3.NisuybngccdngbiniFourrierrirc:TadngDFS/DFTni
suydyx[n]nhnctktqulymutnhiukhongcchcchu.
Thtcgmhaibc:lyNimFFTX(k)cax[n]vdngcngthc:
1
j2 kt / NT
%
x (t) =
X(k)e
N |k|<N / 2
(5)
N / 2 1
1
Taxydnghmnisuyinterpdfs():
function[xi,Xi]=interpdfs(T,x,Ws,ti)
%T:chulilaymau
%x:thuturoirachoa
%Ws:tansodungchuan(1.0=pi[rad])
%ti:khoangthoigiannoisuy
ifnargin<4
ti=5;
end
ifnargin<3|Ws>1
Ws=1;
end
N=length(x);
iflength(ti)==1
ti=0:T/ti:(N1)*T;%khoangconduocchiachoti
end
ks=ceil(Ws*N/2);
Xi=fft(x);
Xi(ks+2:Nks)=zeros(1,N2*ks1);%phodaloc
xi=zeros(1,length(ti));
fork=2:N/2
xi=xi+Xi(k)*exp(j*2*pi*(k1)*ti/N/T);
end
xi=real(2*xi+Xi(1)+Xi(N/2+1)*cos(pi*ti/T))/N;%pt.(.5)
nisuytadngchngtrnhctfourier.m:
clear,clf
232
w1=pi;
w2=.5*pi;%haitanso
N=32;
n=[0:N1];
T=0.1;
t=n*T;
x=sin(w1*t)+0.5*sin(w2*t)+(rand(1,N)0.5);%0.2*sin(20*t);
ti=[0:T/5:(N1)*T];
subplot(411),plot(t,x,k.)%solieubandau
title(Solieubandauvaketquanoisuy)
[xi,Xi]=interpdfs(T,x,1,ti);
holdon,plot(ti,xi,r)%taitaotinhieu
k=[0:N1];
subplot(412),stem(k,abs(Xi),k.)%phobandau
title(Phobandau)
[xi,Xi]=interpdfs(T,x,1/2,ti);
subplot(413),stem(k,abs(Xi),r.)%phodaloc
title(Phodaloc)
subplot(414),plot(t,x,k.,ti,xi,r)%tinhieudaloc
title(Tinhieudaloc)
9.XPXHMBNGPHNGPHPBNHPHNGBNHT
1.Khinimchung:Trongccmctrctanisuygitrcahm.Bi
tonlchomthmdidngbngsvphitmgitrcahmtimt
gitrcaiskhngnmtrongbng.
Trongthct,bncnhbitonnisuytacngpmtdngbiton
khc.ltmcngthcthcnghimcamthm.
Nidungbitonltmtlotccimchotrc(cthlccgitr
camtphpono)taphitmmthmxpxccgitrcho.Tas
dngphngphpbnhphngtithiugiibiton.
Gi s c mu quan st (xi, yi) ca hm y = f(x). Ta chn hm f(x) c
dng:
f(x)=a0f0(x)+a1f1(x)+a2f2(x)...
(1)
Trongcchmf0(x),f1(x),f2(x)v.v.l(m+1)hmclptuyntnhmta
cthchntuvcchsailthamschabitmtaphixcnhda
233
vohhmchnvccimquanst.Saisgiatrocvtrtnh
theo(1)l:
ei=yif(xi)
(2)
Sai s ny c th m hay dng tu tng gi tr ca yi. Khi dng phng
phpbnhphngbnhttaxtbnhphngcasaistimtim:
e i2 = [ y i f(x i )] 2
(3)
Vinimtngbnhphngcasaissl:
i =1
i =1
S = e i2 = {y i [a 0 f0 (x i ) + a1f1 (x i ) + + a m fm (x i )]}
2
RrngSlhmcaccgitrcntmai vchngtaschnccaisao
S
phibngkhng.
choStgitrmin,nghalccohm
a i
Tasxtcctrnghpcth.
2.Hmxpxcdngathc:Trongtrnghptngquttachnhhm
xpxlmtathc,nghal:
f(x)=a0+a1x+a2x2++amxm
VyhmSl:
S = ( y i a 0 + a1x + a 2 x 2 + + a m x m )
Theoiukinohm
S
= 0 tanhnchphngtrnh:
a i
n
n
a n x m + a
m 1
+
+
=
x
na
yi
m 1
i
0
m i =1 i
i =1
i =1
n
n
n
n
a x m + 1 + a x m + +a x = x y
m 1
i
0
i
i i
m i =1 i
i =1
i =1
i =1
n
n
n
n
m+2
m +1
2
2
a m xi + a m 1 x i + +a 0 xi = x i y i
i =1
i =1
i =1
i =1
n
n
n
n m+3
m+2
3
+
+
+
=
a
x
a
x
a
x
xi3 y i
m i
m 1 i
0 i
i =1
i =1
i =1
i =1
n
n
n
n
a m xi2 m + a m 1 x i2 m 1 + +a 0 x im = x im y i
i =1
i =1
i =1
i =1
ylmthphngtrnhtuyntnh.Giintanhncccgatrai.
Taxydnghmpolynomfit()thchinthuttontrn:
234
functionx=polyfits(xData,yData,m)
%Dungdetinhhesocuadathucxapxi
%Cuphap:x=polyfits(xData,yData,m)
m=m+1;
A=zeros(m);
b=zeros(m,1);
s=zeros(2*m1,1);
fori=1:length(xData)
temp=yData(i);
forj=1:m
b(j)=b(j)+temp;
temp=temp*xData(i);
end
temp=1;
forj=1:2*m1
s(j)=s(j)+temp;
temp=temp*xData(i);
end
end
fori=1:m
forj=1:m
A(i,j)=s(i+j1);
end
end
x=A\b;
%Sapxeplaihesotusomucaonhat
x=flipdim(x,1);
clearall,clc
xData=[01234];
yData=[182463124];
x=polyfits(xData,yData,3);
y=0:0.1:4;
235
z=polyval(x,y);
holdon
plot(y,z,b,xData,yData,ro);
3.HmdngAecx:Khiccsliuthhinmtsbininiutadng
hmxpxly=Aecx.Lylogarithaivtac:
lny=lnA+cxlne
S
= 0 tachphngtrnh:
Theoiukinohm
a i
c n x + n ln A = n ln y
i
i
i =1
i =1
n
n
n
c x i2 + ln A xi = x i ln y i
i =1
i =1
i =1
GiihphngtrnhnytaccchsAvc.
Taxydnghmexpfit()xpx
function[c,A]=expfit(x,y)
a=sum(x);
b=size(x,2);
c=sum(log(y));
d=sum(x.^2);
e=sum(x.*log(y));
d1=a*ad*b;
d2=c*ae*b;
d3=a*ec*d;
c=d2/d1;
A=exp(d3/d1);
Tadngchngtrnhctexpfit.mxpxdysliucho
clearall,clc
x=[1.22.84.3 5.4 6.8 7.9];
y=[7.5
16.1 38.9 67 146.6266.2];
[c,A]=expfit(x,y);
t=0:0.1:8;
z=A*exp(c*t);
plot(t,z,b,x,y,ro);
236
4.Hm dngAxq:Khiccsliuthhinmtsbininiutacng
cthdnghmxpxly=Axq.Lylogarithaivtac:
lny=lnA+qlnx
Theoiukinohmtrittiutachphngtrnh:
q n ln x + n ln A = n ln y
i
i
i =1
i =1
n
n
n
2
q ln x i + ln A ln x i = ln x i ln y i
i =1
i =1
i =1
Giihphngtrnhnytaccchs
Avq.
Taxydnghmpowerfit()xpx:
function[q,A]=powerfit(x,y)
a=sum(log(x));
b=size(x,2);
c=sum(log(y));
d=sum(log(x).^2);
e=sum(log(x).*log(y));
d1=a*ad*b;
d2=c*ae*b;
d3=a*ec*d;
q=d2/d1;
A=exp(d3/d1);
Tadngchngtrnhctpowerfit.mxpxdysliucho:
clc
x=[ 1
2
3
45];
y=[1.5
15.1 52.5130.5
253];
[q,A]=powerfit(x,y)
t=0.1:0.1:5;
z=exp(log(A)+q*log(t));
plot(t,z,b,x,y,ro);
5.Hmlnggic:Khiquanhy=f(x)cdngtunhontadnghmxp
xlthptuyntnhcacchmsinvcosindng:
237
i =1
i =1
ngintrchttaxthmchcmtshngsincos,nghal:
f( x) = a 0 + a 1 cos x + b1 sin x
HmSscdng:
n
S = y i (a 0 + a1cosx + b1sinx)
2
i =1
a 0 y i
n
cosxi
sinx i
Do:
sinxi = 0
cos xi = 0
n
n
2
sin xi = 1 cos2xi = 1
n
2
n
2
cos xisinxi = 0
n
nnhphngtrnhcdngngin:
0 a 0 y i
n 0
0 n 2 0 a =
y
cos
1
i
i
0 0 n 2 b1 y i sinxi
Giihtac:
y
2
2
a0 = i
a1 = y i cos xi
b1 = y i sin x i
n
n
n
Trongtrnghptngqut,mtcchtngttac:
y
2
2
a0 =
a i = y cos ix
bi = y sin ix
n
n
n
Taxydnghmsinfit()xpx:
function[a,b,c,omega]=sinfit(x,y,T)
%Tlachuki
omega=2*pi/T;
n=size(x,2);
238
a=sum(y)/n;
b=(2/n)*sum(y.*cos(omega*x));
c=(2/n)*sum(y.*sin(omega*x));
Tadngchngtrnhctsinfit.mtnh:
cearall, clc
x=[00.15 0.3 0.45 0.6 0.75 0.9 1.05 1.2 1.3];
y=[2.2
1.5951.0310.7220.7861.2 1.81 2.3692.6782.614];
T=1.5;
[a,b,c,omega]=sinfit(x,y,T)
t=0.:0.01:1.5;
z=a+b*cos(omega*t)+c*sin(omega*t);
plot(t,z,b,x,y,ro);
b+x
Lynghchocantac:
1 b1 1
=
+
y ax a
t1/y=Y,1/x=X,b/a=Bv1/a=Aphngtrnhtrnscdng:
Y=A+BX
vlmtathcbcmt.DovytachphngtrnhivicchsA
vBl:
nA + B n 1 = n 1
x y
i =1 i
i =1 i
n
n
n
1
1
1
A + B =
2
i =1 x i
i =1 xi
i =1 xi y i
vttnhcavb.
Taxydnghmracfit()xpx:
function[a,b]=racfit(x,y)
a1=size(x,2);
b1=sum(1./x);
c1=sum(1./y);
239
d1=sum(1./x.^2);
e1=sum((1./x).*(1./y));
del=a1*d1b1*b1;
del1=c1*d1e1*b1;
del2=a1*e1b1*c1;
A=del1/del;
B=del2/del;
a=1/A;
b=B/A;
xpxtadngchngtrnhctracfit.m:
clearall,clc
x=[12345];
y=[0.3333333 0.5 0.6 0.66666
[a,b]=racfit(x,y)
t=0.:0.01:5;
z=a*t./(b+t)
plot(t,z,b,x,y,ro);
0.7142857];
240
Taxtphngtrnh:
f(x)=0
(1)
vi f(x) l hm cho trc ca bin x. Chng ta cn tm gi tr gn ngca
nghimcaphngtrnhny.
Qutrnhgiithngchialmhaibc:bcsbvbckinton
nghim.
function[x1,x2]=rootsearch(func,a,b,dx)
%Timdoanchuanghiemcuahamf(x).
%Cuphap:[x1,x2]=rootsearch(func,a,d,dx)
%func=hamf(x).
%a,b=daontim.
%dx=khoangtang
%x1,x2=doanchunghiem(a,b);
%datlaNaNneukhongthaynghiem
241
x1=a;f1=feval(func,x1);
x2=a+dx;f2=feval(func,x2);
whilef1*f2>0.0
ifx1>=b
x1=NaN;x2=NaN;
return
end
x1=x2;f1=f2;
x2=x1+dx;f2=feval(func,x2);
end
clearall,clc
f=inline(x^310*x^2+5);
[x1,x2]=rootsearch(f,2,10,.2)
Bckintonnghimtmccnghimgnngtheoyucutra.
Crtnhiuphngphpxcnhnghimca(1).Sauychngta
xttngphngphp.
2.PHNGPHPLPN
Gisphngtrnh(1)cavdngtngng:
x=g(x)
(2)
tgitrxonogilgitrlputintalpdyxpxbngcngthc:
xn=g(xn1)
(3)
vin=1,2,....
Hmg(x)cgilhmlp.Nudyxnkhinthtaniphplp
(3)hit.
Tacnhl:Xtphngphplp(3),gis:
[a,b]lkhongchanghimcaphngtrnh(1)tclca(2)
mixntnhtheo(3)uthuc[a,b]
g(x)cohmthomn:
242
g(x) q < 1
a < x < b
(4)
trongqlmthngsthphngphplp(3)hit
Tacthminhhophplptrnbnghnhvsau.
xo x1
xo
x1
Taxydnghmsimpiter()lp
function[x,err,xx]=simpiter(g,x0,tolx,maxiter)
%giaiptx=g(x)tux0bangcahlap
%vao:g,x0=hamvagiatridau
%tolx=saisomongmuon
%maxiter=solanlapmax
%ra:x=nghiem
%err=saiso|x(k)x(k1)|
%xx=cacgiatritrunggian
ifnargin<4
maxiter=100;
end
ifnargin<3
tolx=1e6;
end
xx(1)=x0;
fork=2:maxiter
xx(k)=feval(g,xx(k1));
err=abs(xx(k)xx(k1));
iferr<tolx
break;
end
243
end
x=xx(k);
ifk==maxiter
fprintf(Khonghoitusau%dlanlap\n,maxiter)
else
fprintf(Hoitusau%dlanlap\n,k)
end
tnhlivdtrntadngchngtrnhctsimpiter4_2.m
clearall,clc
f=inline(0.5*((x1).^23));
[x,ss,xx]=simpiter(f,0.5,.00001,200)
3.PHNGPHPCHIAICUNG
Gi s cho phng trnh f(x) = 0 vi
y
f(x) lin tc trn on [a, b] v f(a).f(b) < 0.
Chia on [a, b] thnh 2 phn bi chnh
imchia(a+b)/2.
1.Nuf((a+b)/2)=0th=(a+b)/2
function[x,err,xx]=bisection(f,a,b,tolx,maxiter)
%bisection.mdegiaiptf(x)=0bangphuongphapchiadoicung
%vao:f=hamcantimnghiem
%a/b=biencuadoancantimnghiem
%tolx=saisomongmuon
%maxiterlanlapmax
%ra:x=nghiem
%err=saiso
%xx=cacgiatritrunggian
x
b
244
tol=eps;
fa=feval(f,a);
fb=feval(f,b);
iffa*fb>0
error(Nghiemkhongotrongdoannay);
end
fork=1:maxiter
xx(k)=(a+b)/2;
fx=feval(f,xx(k));
err=(ba)/2;
ifabs(fx)<tol|abs(err)<tolx
break;
elseiffx*fa>0
a=xx(k);
fa=fx;
elseb=xx(k);
end
end
x=xx(k);
ifk==maxiter
fprintf(Khonghoitusau%dlanlap\n,maxiter),
else
fprintf(Hoitusau%dlanlap\n,k),
end
tmnghimcahmf(x)=tg()xtadngchngtrnhctbisection.m
clearall,clc
f=inline(tan(pix)x);
[x,ss,xx]=bisection(f,1.6,3,1e4,50)
4.PHNGPHPDYCUNG
Gi sf(x)lintctrntrnon[a,b]vf(a).f(b)<0.Cntmnghim
ca f(x) = 0. xc nh ta xem f(a) < 0 v f(b) > 0. Khi thay v chia i
on[a,b]tachia[a,b]theotlf(a)/f(b).iuchotanghimgnng:
x1=a+h1
245
y
Trong
= f(a)
h f(a)+ f(b) (ba)
Tiptheodngcchvion[a,x1]
x
x1
a
hay [x1, b] m hai u hm nhn gi tr tri
b
dutacnghimgnngx2v.v.
V mt hnh hc, phng php ny c
nghalkdycungcangcongf(x)
quahaiimA[a,f(a)]vB[b,f(b)]haynicchkhcltuyntnhhohm
f(x)trongon[a,b].
ThtvyphngtrnhdycungABcdng:
f(a) f(b)
af(b) bf(a)
y =
x+
ab
ab
Chox=x1,y=0tac
af(b) bf(a)
x1 =
(1)
f(b) f(a)
Taxydnghmchord()thchinthuttontrn
function[x,err,xx]=chord(f,a,b,tolx,maxiter)
%giaiptf(x)=0bgphuongphapdaycung.
%vao:fhamcantimnghiem
%a/bkhoangtimnghiem
%tolxsaisomongmuoncuanghiem
%maxiterlanlapmax
%ra:xnghiem
%errsaiso
%xxcacgiatritrunggian
tolfun=eps;
fa=feval(f,a);
fb=feval(f,b);
iffa*fb>0
error(Nghiemkhongotrongdoannay!);
end
fork=1:maxiter
xx(k)=(a*fbb*fa)/(fbfa);%pt.(1)
fx=feval(f,xx(k));
err=min(abs(xx(k)a),abs(bxx(k)));
1
246
ifabs(fx)<tolfun|err<tolx
break;
elseiffx*fa>0
a=xx(k);
fa=fx;
else
b=xx(k);
fb=fx;
end
end
x=xx(k);
ifk==maxiter
fprintf(Khonghoitusau%dlanlap\n,maxiter)
else
fprintf(Hoitusau%dlanlap\n,k)
end
tmnghimcahmf(x)=tg(x)xtadngchngtrnhctchord.m
clearall,clc
f=inline(tan(pix)x);
[x,ss,xx]=falsp(f,1.7,3,1e4,50)
5.PHNGPHPNEWTONRAPHSON
Phng php lp Newton(cn gi l phng php tip tuyn)c
dngnhiuvnhitnhanh.Tuynhinphngphpnyihitnhf(x).
CngthcNewtonRaphsoncsuytkhaitrinTaylorcaf(x)lncnx:
f(xi+1 ) = f(xi ) + f(xi )(xi+1 xi ) + O(xi+1 xi )2
(1)
Nuxi+1lnghimcaphngtrnhf(x)=0th(1)trthnh:
0 = f(xi ) + f(xi )(xi+1 xi ) + O(xi+1 xi )2
(2)
Gisrngxignvixi+1,tacthbquashngcuitrong(2)vccng
thcNewtonRaphson:
f(xi )
x i +1 = x i
(3)
f(xi )
Nuxi+1lnghimngcaphngtrnhthsaislei=xxi.Khinghim
ctnhtheo(3)thsaisl:
247
f(x i ) 2
ei
y
2f(xi )
Minh ho hnh hc ca thut ton
NewtonRaphsonnhhnhbn.
Thuttonctmlcnhsau:
a
choxo
x1 b=xo
f(x)
tnh x =
f (x)
chox=x+x
lplibc2v3chonkhi|x|
Taxydnghmnewtonraphson()thchinthuttontrn.
function[x,fx,xx]=newtonraphson(f,df,x0,tolx,maxiter)
%giaiptf(x)=0bangppNewtonRaphson.
%vao:f=ftntobegivenasastringfifdefinedinanMfile
%df=df(x)/dx(neukhongchosedungdaohamso.)
%x0=giatribandau
%tolx=saisomongmuon
%maxiter=solanlapmax
%ra:x=nghiem
%fx=f(x(last)),xx=cacgiatritrunggian
h=1e4;
h2=2*h;
tolf=eps;
ifnargin==4&isnumeric(df)
maxiter=tolx;
tolx=x0;
x0=df;
end
xx(1)=x0;
fx=feval(f,x0);
fork=1:maxiter
if~isnumeric(df)
dfdx=feval(df,xx(k));%daohamcuaham
else
dfdx=(feval(f,xx(k)+h)feval(f,xx(k)h))/h2;%daohamso
e i +1 =
248
end
dx=fx/dfdx;
xx(k+1)=xx(k)+dx;%pt.(3)
fx=feval(f,xx(k+1));
ifabs(fx)<tolf|abs(dx)<tolx,
break;
end
end
x=xx(k+1);
ifk==maxiter
fprintf(Khonghoitusau%dlanlap\n,maxiter)
else
fprintf(Hoitusau%dlanlap\n,k)
end
clearall,clc
f=inline(x.^310*x.^2+5);
[x,ss,xx]=newtonraphson(f,0.7,1e4,50)
6.PHNGPHPCTTUYN
PhngphpcttuyncthcoilbinthcaphngphpNewton
Raphsontheonghaohmcthaybngxpx:
f(x k ) f(x k 1 )
f(x)
(1)
x k x k 1
vtntthigiantnhhnkhidngohmgiitchhayohms.
Bngcchxpx,biuthc:
f(x k )
x k +1 = x k
f(x k )
trthnh:
x k x k 1
f(x k )
x k +1 = x k f(x k )
(2)
= xk
f(x
)
f(x
)
dfdx
k 1
k
k
f(x k ) f(x k 1 )
vi dfdx k =
x k x k 1
249
Phng trnh (2) chnh l biu thc tng qut ca php lp. Hai gi tr u
tinx1vx2cnkhingphplp.Qutrnhlpcminhhobng
hnha
y
y
f(x)
x1
x0
x2 x1
x0
x
x
f(x)
a
b
Phplpcthkhnghit(hnhb).Tuynhinkhihit,nhirtnhanh.
Taxydnghmsecant()thchinthuttontrn.
function[x,fx,xx]=secant(f,x0,x1,tolx,maxiter)
%giaiptf(x)=0bgphuongphapdaycung
%vao:fhamcantimnghiem
%x0,x1giatrikhoidongpheplap
%tolxsaisomongmuon
%maxitersolanlapmax
%ra:x=nghiem
%fx=f(x(last)),xx=cacgiatritrunggian
h=(x1x0)/100;
h2=2*h;
tolfun=eps;
xx(1)=x0;
fx=feval(f,x0);
fork=1:maxiter
ifk<=1
dfdx=(feval(f,xx(k)+h)feval(f,xx(k)h))/h2;
else
dfdx=(fxfx0)/dx;
250
end
dx=fx/dfdx;
xx(k+1)=xx(k)+dx;%pt.(2)
fx0=fx;
fx=feval(f,xx(k+1));
ifabs(fx)<tolfun|abs(dx)<tolx,
break;
end
end
x=xx(k+1);
ifk==maxiter
fprintf(Khonghoitusau%dlanlap\n,maxiter)
else
fprintf(Hoitusau%dlanlap\n,k)
end
clearall,clc
f=inline(x.^310*x.^2+5);
[x,ss,xx]=secant(f,0.5,1,1e4,50)
7.PHNGPHPBRENT
x1 x
x3 x
x1
x
x
x3
x2
x2
251
Trongqutrnhnytatnhcf(x1),f(x2)vf(x3).Qua3imnytacmt
ng cong bc 2 v tm c nghim x ca ng cong bc 2 ny. Nu x
nm trong on [x1, x2] nh hnh trn th gi tr ny c chp nhn. Tip
theotatmnghimtrongon[x1,x3]hay[x3,x2]tutheovtrcax.
athcnisuyLagrangequa3iml:
(f f2 )(f f3 )
(f f1 )(f f3 )
(f f1 )(f f2 )
x(y) =
x1+
x2+
x3
(f1 f2 )(f1 f3 )
(f2 f1 )(f2 f3 )
(f3 f1 )(f3 f2 )
Choy=0tac:
f f x (f f ) + f1f3 x 2 (f3 f1 ) + f1f2 x 3 (f1 f2 )
x= 2 3 1 2 3
(1)
(2)
functionroot=brent(f,a,b,tol)
%giaiptf(x)=0bangthuattoanBrent.
%Cuphap:root=brent(f,a,b,tol)
%vao:f=hamcantimnghiem
%a,b=doanchuanghiem
%tol=saisochotruoc
ifnargin<4;
tol=1.0e6*eps;
end
%lanchiadoidautien
x1=a;
f1=feval(f,x1);
iff1==0;
root=x1;
return;
end
x2=b;
f2=feval(f,x2);
iff2==0;
root=x2;
return;
252
end
iff1*f2>0.0
error(Nghiemkhongnamtrongdoannay)
end
x3=0.5*(a+b);
%batdaulap.
fori=1:30
f3=feval(f,x3);
ifabs(f3)<tol
root=x3;
return
end
%xacdinhdoanchuanghiem.
iff1*f3<0.0;
b=x3;
else
a=x3;
end
if(ba)<tol*max(abs(b),1.0)
root=0.5*(a+b);
return
end
%noisuybac2.
denom=(f2f1)*(f3f1)*(f2f3);
numer=x3*(f1f2)*(f2f3+f1)...
+f2*x1*(f2f3)+f1*x2*(f3f1);
ifdenom==0;
dx=ba;
else
dx=f3*numer/denom;
end
x=x3+dx;
%neulaprangoaidoan(a,b),dungcachchiadoicung
if(bx)*(xa)<0.0
dx=0.5*(ba);
x=a+dx;
253
end
%chox=x3&chonx1,x2moisaochox1<x3<x2.
ifx<x3
x2=x3;
f2=f3;
else
x1=x3;
f1=f3;
end
x3=x;
end
root=NaN;
clearall,clc
f=inline(x.*abs(cos(x))1);
x=brent(f,0.0,4,1e4)
8.PHNGPHPNGOISUYAITKEN
Xtphngphplp:
x=f(x)
(1)
vif(x)thomniukinhitcaphplp,nghalvimix[a,b]ta
c:
|f(x)|q<1
(2)
Nhvy:
(3)
xn+1=f(xn)
(4)
xn=f(xn1)
Tr(3)cho(4)vpdngnhlLagrangechovphivic[a,b]tac:
(5)
xn+1xn=f(xn)f(xn1)=(xnxn1)f(c)
Vphplp(1)nn:
(6)
|xn+1xn|q|xnxn1|
Do(6)ngviminnnchon=1,2,3,...tac:
|x2x1|q|x1xo|
|x3x2|q|x2x1|
254
...................
|xn+1xn|q|xnxn1|
iunycnghaldyxi+1xi,mtcchgnng,lmtcpsnhn.Ta
cngcoirngdyxnyviylnghimngca(1),gnngnhmtcp
snhnccngsaiq.Nhvy:
x n +1 y
= q < 1
(7)
xn y
hay: x n +1 y = q(x n y)
(8)
Tngttac:
x n + 2 y = q(x n +1 y)
(9)
T(8)v(9)tac:
x x n +1
q = n+2
(10)
x n +1 x n
Thaygitrcaqvatnh(10)vobiuthccaqtrntac:
2
x n x n +1 )
(
y = xn
(11)
x n 2x n +1 + x n + 2
Cng thc (11) c gi l cng thc ngoi suy Adam. Nh vy theo (11)
trchttadngphngphplptnhgitrgnngxn+2,xn+1,xnca
nghimvsautheo(11)tmcnghimvisaisnhhn.
x1=f(x0)
x2=f(x1)
vsaudngthuttonAitkentinhy0theo(11).tiptclptacho
x0=y0vlplibctnhtrc.
Taxydnghmaitstef()thchinhaithuttontrn
function[x,y]=aitstef(g,x0,tolx,maxiter)
%phuongphapAitkenSteffenson
%giaiptx=g(x)
xstart=x0;
f0=0;
f0old=1.;
count=0;
while((count<maxiter)&(abs(f0f0old)>.0000001))
count=count+1;
f0old=f0;
255
x1=feval(g,x0);
x2=feval(g,x1);
f0=x0(x1x0)*(x1x0)/(x22.*x1+x0);
x0=x1;
end
x=f0;
fprintf(\n);
fprintf(PhuongphapAitkenSteffenson);
x0=xstart;
count=0;
f0=0;
x2=1.;
while((count<maxiter)&(abs(f0x2)>.0000001))
count=count+1;
x1=feval(g,x0);
x2=feval(g,x1);
f0=x0(x1x0)*(x1x0)/(x22.*x1+x0);
x0=f0;
end
y=f0;
tmnghimcaphngtrnhx=(2ex+x2)/3=g(x)tadngchngtrnh
ctaitstef.m
clearall,clc
f=inline((2.exp(x)+x.^2)/3);
[x,y]=aitstef(f,0.,1e4,50)
9.PHNGPHPMUELLER
Trongphngphpdycungkhitmnghimtrongon[a,b]taxp
x hm bng mt ng thng. Tuy nhin gim lng tnh ton v
nghimhitnhanhhntacthdngphngphpMuller.Nidungca
phngphpnylthayhmtrongon[a,b]bngmtngcongbc2
mtahontoncthtmnghimchnhxccan.
256
Giccimchonhlnltla=x2,b=x1vtachnthm
mtimx0nmtrongon[x2,x1].Gi
x0,f0
h1=x1x0
h2=x0x2
x1,f1
v=xx0
f(x0)=f0
f(x1)=f1
f(x2)=f2
f(x) x2,f2
h2
h1
h2
h1
Qua3imnytacmtngparabol:
y=av2+bv+c
Tatmcchsa,b,ctccgitrbitv:
v = 0 (x = x 0 ) a(0)2 + b(0) + c = f0
v = h1 (x = x1 )
v = h 2 (x = x 2 )
ah12 + bh1 + c = f1
ah 22 bh 2 + c = f2
Ttac:
f f (1 + ) + f2
a = 1 02
h 1 (1 + )
f1 f0 ah 12
b=
h1
c = f0
Sautatmnghimcaphngtrnhav2+bv+c=0vc:
2c
n = x0
b b 2 4ac
Ducamuscchnsaochoncgitrtuytilnnht,nghal
khib>0,talydu+,khib<0talydu.
Tip ta chn x0 lm mt trong 3 im tnh xp x mi. Cc im ny
c chn gn nhau nht, ngha l nu nghim n bn phi x0 th ba im
tnhmilx0,x1vn;nunnmbntrix0th3imtnhmilx0,x2v
nghim.Tiptcqutrnhtnhnkhitchnhxcyucuthdngli.
Taxydnghmmuller()thchinthuttontrn
functionp=muller(f,a,b,maxiter)
%giaiptf(x)=0
257
%vaoflahamcantimnghiem
% a,bladoanchuanghiem
%maxitersolanlapmax
%rapxapxiMullercuaf
%ylagiatriy=f(p)
%errsaisothuccuanghiem.
%khoigana,b,x0vacacgiatrituongungcuaham
x0=(a+b)/2.;
P=[x0ab];
Y=feval(f,P);
delta=1e4;
%tinhcachesocuaptbachai
fork=1:maxiter
h0=P(1)P(3);
h1=P(2)P(3);
e0=Y(1)Y(3);
e1=Y(2)Y(3);
c=Y(3);
denom=h1*h0^2h0*h1^2;
a=(e0*h1e1*h0)/denom;
b=(e1*h0^2e0*h1^2)/denom;
%neunghiemphuc
ifb^24*a*c>0
disc=sqrt(b^24*a*c);
else
disc=0;
end
%timnghiemnhonhat
ifb<0
disc=disc;
end
z=2*c/(b+disc);
p=P(3)+z;
%sapxeplaicactritinhlap
ifabs(pP(2))<abs(pP(1))
Q=[P(2)P(1)P(3)];
258
P=Q;
Y=feval(f,P);
end
ifabs(pP(3))<abs(pP(2))
R=[P(1)P(3)P(2)];
P=R;
Y=feval(f,P);
end
%cactritinhlanmoi
P(3)=p;
Y(3)=feval(f,P(3));
y=Y(3);
%dieukiendunglap
err=abs(z);
relerr=err/(abs(p)+delta);
if(err<delta)|(relerr<delta)|(abs(y)<eps)
break
end
end
giiphngtrnhsin(x)0.5*x=0tadngchngtrnhctmuller.m
clearall,clc
formatlong
f=inline(sin(x)0.5*x);
x=muller(f,1.8,2.2,50)
10.PHNGPHPHALLEY
PhplpNewtontmnghimcahmphngtrnhx=g(x)l:
f(x)
g(x)=x
(1)
f (x)
Tchittngngkkhihmcnghimn.tngtchi
t,EdmonHalleyaracngthclp:
1
f(x) f(x)f(x)
h(x)=x
1
2
f (x) 2 [ f(x)]
(2)
Taxydnghmhalley1()thchinthuttontrn
259
functionx=halley1(f,x,maxiter)
%hamdungdetimnghiemcuaptf(x)=0
%vao:hamcantimnghiemf
%giatridaux0
%solanlapcucdaimaxiter
%ranghiemx
%dungdaohamso
i=0;
h=1e4;
while(i<maxiter)
f1=feval(f,x);
df1=(feval(f,x+h)feval(f,xh))/(2*h);
ddf1=(feval(f,x+h)2*feval(f,x)+feval(f,xh))/(h*h);
hx=x(f1/df1)*1./(1(f1*ddf1)/(2*(df1)^2))
x=hx;
i=i+1;
if(abs(f1)<eps)
break;
end
end
haydnghmhalley2()
functionx=halley2(f,x,maxiter)
%hamdungdetimnghiemcuaptf(x)=0
%vao:hamcantimnghiemf
%giatridaux
%solanlapcucdaimaxiter
%ranghiemx
%dungdaohamsymbolic
df=diff(f,x);
ddf=diff(f,x,2);
i=0;
while(i<maxiter)
f1=eval(f);
260
df1=eval(df);
ddf1=eval(ddf);
hx=x(f1/df1)*1./(1(f1*ddf1)/(2*(df1)^2));
x=hx;
i=i+1;
if(abs(f1)<eps)
break;
end
end
giiphngtrnhf(x)=x33x+2=0tadngchngtrnhcthalley.m:
clc,clearall
%f=inline(x.^33*x+2);%khidunghalley1()
%x=halley1(f,3,50);
symsx
f=x^33*x+2;%khidunghalley2()
x=halley2(f,3,50)
11.PHNGPHPCHEBYSHEV
y(x)=p1+p2(xp3)e
(1)
Cc thng s p1 v p3 to s chuyn dch theo cc trc; thng s p xc nh
binvecungcpcongcahm.
Takhosthmf(x)trnon[a,b]trongf(a).f(b)<0,nghaltrong
on [a, b] tn ti nghim ca phng trnh f(x) = 0. Ta c thm iu kin
f(x).f(x) 0 x [a, b]. Gi xi [a, b] l ln xp x th i ca nghim th
nghimlnthi+1theocngthcPopovskil:
1
f
e f.f e
xi+1 xi = (e 1) 1
(2)
1
f
e 1 f 2
Khie=1
f.f
x i +1 x i =
0.5f.f f2
vlphplpHalley
261
Khie1:
f
vlphplpNewton
Khie=0.5
1 + 0.5f.f
f
f(xi ) f 2 (x i ) f (xi )
f 2
= 3
x i +1 x i =
f
f (xi )
2f3 (xi )
vtacphplpChebyshev.
Taxydmghmchebyiter()thchinthuttontrn
function[x,fx,xx]=chebyiter(f,x0,tol,maxiter)
%giaiptf(x)=0bangppChebyshev.
%vao:f=hamcantimnghiem
%x0=giatribandau
%tol=saisomongmuon
%maxiter=solanlapmax
%ra:x=nghiem
%fx,xx=cacgiatritrunggian
ifnargin<4
maxiter=200;
end
ifnargin<3
maxiter=100;
tol=1e4;
end
h=1e4;
h2=2*h;
xx(1)=x0;
fx=feval(f,x0);
fork=1:maxiter
df=(feval(f,xx(k)+h)feval(f,xx(k)h))/h2;%daohamso
d2f=(feval(f,xx(k)+h)2*feval(f,xx(k))+feval(f,xx(k)h))/h^2;
dx=fx/df^30.5*fx^2*d2f/df^3;
xx(k+1)=xx(k)+dx;
fx=feval(f,xx(k+1));
x i +1 x i =
262
ifabs(fx)<tol|abs(dx)<tol
break;
end
end
x=xx(k+1);
giiphngtrnhtadngchngtrnhctchebyiter
clearall,clc
f=inline(x.^310*x.^2+5);
x=chebyiter(f,3,1e4)
12.PHNGPHPNEWTONDNGCHOHPHITUYN
Phng php Newton c th c tng qut ho gii h phng
trnhphituyndng:
f1 (x1 ,x 2 ,x 3 ,...,x n ) = 0
f (x ,x ,x ,...,x ) = 0
2 1 2 3
n
fn (x1 ,x 2 ,x 3 ,...,x n ) = 0
hayvitgnhndidng:
F(X)=0
Trong:
X=(x1,x2,x3,.....,xn)
Vimtphngtrnhmtbin,cngthcNewtonl:
f( x i )
x i +1 = x i
f ( x i )
hay:
f(xi).x=f(xi)
vi x=xi+1xi
ivihphngtrnh,cngthclpl:
J(Xi)X=F(Xi)
TrongJ(Xi)ltontJacobi.Nlmtmatrnbcn(ntngngvi
sthnhphntrongvectX)cdng:
263
f1
x 1
f2
x
J( X i ) = 1
fn
x 1
f1
x 2
f2
x 2
fn
x 2
f1
x 3
f2
x 3
fn
x 3
f1
x n
f2
x n
fn
x n
X=Xi+1Xi
PhngphpNewtontuyntnhhohvnhvyvimibclp
cn gii mt h phng trnh tuyn tnh (m bin l Xi) xc nh bi cng
thclpchotikhivectX(x1,x2,x3,.....,xn)gnvinghim.
Taxydnghmnew4sys()thchinthuttonny
function[P,iter,err]=new4sys(f,jf,P,max1)
%vaoFlaheptluutrongMfilef.m
%JFlamatranjacobiluutrongMfilejf.m
%Pvectonghiembandau
%max1solanlapcucdai
%raPlavetonghiem
%itersolanlapthucte
%errsaiso
Y=f(P);
fork=1:max1
J=jf(P);
Q=P(J\Y);
Z=f(Q);
err=norm(QP);
relerr=err/(norm(Q)+eps);
P=Q;
Y=Z;
iter=k;
if(err<eps)|(relerr<eps)|(abs(Y)<eps)
break
end
end
264
giihphngtrnh:
x 2 + xy 2 = 0
2
2xy
+
y
3
=
0
tadngchngtrnhctnew4sys.m
clearall,clc
formatlong
p=[.5,.5];
[n,ll,ss]=new4sys(@f,@jf,p,50)
Nidungcaf.m:
functionf=f(p)
f=[(p(1)^2+p(1)*p(2)2),(2*p(1)*p(2)+p(2)^23)];
Nidungcajf.m:
functionjf=jf(p)
jf=[(2*p(1)+p(2))p(1)
(2*p(1))(2*p(1)+2*p(2))];
Tacthdnghmnew4sys2()thchinthutton:
functionroot=new4sys2(func,x,maxiter)
%PhuongphapNewtonRaphsondetimnghiem
%cuaheptfi(x1,x2,...,xn)=0,i=1,2,...,n.
%Cuphap:root=new4sys2(func,x,tol)
%vao:
%func=controham,trave[f1,f2,...,fn].
%x=vectobandau[x1,x2,...,xn].
%tol=saisomongmuon
%ra:
%rootnghiemcuahe
ifsize(x,1)==1;
x=x;
265
end%xphailavecto
i=0;
while(i<maxiter)
[jac,f0]=jacobi(func,x);
dx=jac\(f0);
x=x+dx;
root=x;
ifmax(abs(dx))<eps
break;
else
i=i+1;
end
end
ifi==maxiter
fprintf(Khonghoitusau%dlanlap\n,maxiter);
else
fprintf(Hoitusau%dlanlap\n,i);
end
Hmjacobi()gmcclnh:
function[jac,f0]=jacobi(func,x)
%TinhmatranJacobivahamf(x).
h=1.0e4;
n=length(x);
jac=zeros(n);
f0=feval(func,x);
fori=1:n
temp=x(i);
x(i)=temp+h;
f1=feval(func,x);
x(i)=temp;
jac(:,i)=(f1f0)/h;
end
Hmt()gmcclnh:
266
functionx=t(p)
x=[(p(1)^2+p(2)^2+p(3)^214)
(p(1)^2+2*p(2)^2p(3)6
(p(1)3*p(2)^2+p(3)^2+2)];
giihphngtrnhtadngchngtrnhctnew4sys2.m:
clearall,clc
formatlong
p=[111];
r=new4sys2(@t,p,50)
13.PHNGPHPBROYDENDNGCHOHPHITUYN
1.PhngphpBroyden: giihphngtrnhphituyntnhF([X])=[0]
bngphngphplpNewtontachovectnghimbanu[P0]vtora
dy[Pk]hitvnghim[P],nghalF([P])=[0].Khinytacntnhmatrn
Jacobicah.VictnhmatrnJacobiihitnhn2ohmring.
ohmcahmf(x)tipkcthtnhgnngbngcngthc:
f(pk ) f(pk 1 )
f(pk ) =
pk pk 1
nn:
J([Pk])([Pk][Pk1])=F([Pk])F([Pk1])
PhngphpBroydenbtubngvictnhmatrnJacobiA0=J([P0]).Sau
trongqutrnhlplintiptadngmatrnJacobiccpnhtAk:
Ak([Pk][Pk1])=F([Pk])F([Pk1])
ThuttonBroydennhvybaogmccbc:
Bc0:TnhmatrnJacobibanuA0=J([P0]).
SdngntnhlnlputintheophngphpNewton
[P1]=[P0](A0)1F([P0])
Vik1,gisbit[Pk]sdngccbcsautnh[Pk+1]
f1 (pk ,q k )
Bc1:Tnhhm F([ Pk ]) =
f
(p
,q
)
2
k
k
Bc2:CpnhtmatrnJacobibngcchdng
[S]=[Pk][Pk1]v[Yk]=F([Pk])F([Pk1])
267
vc:
[ Ak ] = [ Ak1 ] +
[S] [S]
T
( [ Y ] [ A ][ S ] ) [ S ]
k 1
Bc3:Giihphngtrnhtuyntnh[Ak][Pk]=F([Pk])tm[Pk]
Bc4:Lptipvi[Pk+1]=[Pk]+[Pk]
thchinthuttonnytaxydnghmbroyden()
functionroot=broyden(g,p0,maxiter)
ifnargin==2
maxiter=50;
end
ifsize(p0,1)==1;
p0=p0;
end
[a0,f0]=jacobi(g,p0);
p1=p0inv(a0)*f0;
i=0;
whilei<maxiter
s=p1p0;
d=(s)*s;
f1=feval(g,p1);
y=feval(g,p1)feval(g,p0);
m=ya0*s;
a1=a0(1/d)*(ya0*s)*s;
dp=inv(a1)*f1;
p2=p1+dp;
err=max(abs(dp));
iferr<eps
root=p2;
break;
end
p0=p1;
p1=p2;
f0=f1;
a0=a1;
i=i+1;
268
end
giihphngtrnh
2x 2 2y 3 4x + 1 = 0
4
4
x + 4y + 4y 4 = 0
tadngchngtrnhctbroyden.m
clearall,clc
formatlong
p=[.1.7];
root=broyden(@g,p,50)
Tacthdnghmbroyden1():
function[t,k]=broyden1(fcn1,fcn2,x0,maxits,tol)
%Timnghiemcuaheptphituyen
%cuphap[t,k]=broyden1(fcn1,fcn2,x0,maxits,tol)
%vao
%fcn1:hamthunhat
%fcn2:hamthuhai
%x0:nghiembandau
%maxiter:solanlapmax
%tolsaisomongmuon
%ra
%x:nghiem
%k:solanlap
tol=1e8;
maxiter=50;
ifsize(x0,1)==1
x0=x0;
end
symsxy
B=[diff(fcn1,x)diff(fcn1,y);diff(fcn2,x)diff(fcn2,y)];
x=x0(1);
y=x0(2);
269
h=inline(fcn1);
g=inline(fcn2);
f(1:2,1)=[h(x,y);g(x,y)];
B=eval(B);
t=[xy];
fork=1:maxiter
s=B\(f);
t=t+s;
fnew=[h(t(1),t(2));g(t(1),t(2))];
u=fnewf;
ifabs(fnewf)<tol
break
end
f=fnew;
B=B+((uB*s)*s)/(s*s);
end
vdngchngtrnhctbroyden1.m
clc,clearall
symsxy
f1=2*x^22*y^34*x+1;
f2=x^4+4*y^4+4*y4;
[n,l]=broyden1(f1,f2,[.1.7],50)
Ngoiratacmtphinbnkhclhmbroyden2():
function[t,k]=broyden2(f,x0,maxiter,tol)
%Timnghiemcuaheptphituyen
%cuphap[t,k]=broyden2(fcn1,fcn2,x0,maxits,tol)
%vao
%fcn1:hamthunhat
%fcn2:hamthuhai
%x0:nghiembandau
%maxiter:solanlapmax
%tolsaisomongmuon
270
%ra
%x:nghiem
%k:solanlap
tol=eps;
maxiter=50;
ifsize(x0,1)==1
x0=x0;
end
symsxy
B=[diff(f(1),x)diff(f(1),y);
diff(f(2),x)diff(f(2),y)];
x=x0(1);
y=x0(2);
h=inline(f(1));
g=inline(f(2));
f(1:2,1)=double([h(x,y);g(x,y)]);
B=double(eval(B));
t=[xy];
fork=1:maxiter
s=double(B\(f));
t=t+s;
fnew=[h(t(1),t(2));
g(t(1),t(2))];
u=fnewf;
ifabs(double(u))<tol
break
end
f=fnew;
B=B+((uB*s)*s)/(s*s);
end
vdngvichngtrnhctroyden2.m
clc,clearall
symsxy
271
f=[2*x^22*y^34*x+1;
x^4+4*y^4+4*y4];
[n,l]=broyden2(f,[.7.7])
2.PhngphpBroydencitin:Matrnnghchotnhtonrtphctp.
V vy ta dng cng thc Sherman Morison gim bt khi lng tnh
tonkhinghchomatrn.
Nu[A]1khngsuybinv[U],[V]l2vectsaocho[V]T[A]1[U]1
th:
([ A] + [U][ V] )
T 1
([ A ]
[ U ][ V ]T [ A ]1 )
= [A]
hay
[ A]1 [ U ] [ V ]T 1
[ A ] + [ U][ V ] = [E]
[ A ]
T
1
+
1
V
A
U
[
]
[
]
[
]
giihphngtrnhphituynF([X])=[0]tachovectnghimban
u[P0]vtorady[Pk]hitv[P],nghalF([P])=[0].
TrchttatnhmatrnJacobiA0=J([P0])vdngntnhlnlpth
nhttheophngphpNewton.
[P1]=[P0][A]1F([P0])
Gisc[Pk]vik1tadngccbcsautnh[Pk+1]
Bc1:Tnhhm Fk = F([ Pk ])
T 1
Bc2:CpnhtmatrnJacobibngcchdng
[V]=[Pk][Pk1]
1
[ U ] = T ([Fk ] [ Fk1 ] [ A k1 ][ V ])
[V] [V]
vc:
[ A k ] = [ A k1 ] + [ U ][ V ]T
Bc3:Tnh[Bk]=[Ak]1bngcchdngcngthcShermanMorison
1
[ Ak1 ] [ U] [ V ]T
1
1
[ Bk ] = [ Ak ] = [E]
[ A k 1 ]
1
T
1 + [ V ] [ A k 1 ] [ U ]
Bc4:Lptipvi[Pk+1]=[Pk][Bk]F([Pk])
thchinthuttontrntaxydnghmimprovedbroyden()
272
function[m,ll]=improvedbroyden(g,p0,maxiter);
%cuphap[n,ll]=improvedboyden(g,x0,maxiter);
%vao:
%glafichuahamcantimnghiem
%p0lavectonghiembandau
%maxitersolanlapmax
%ra:
%mlanghiem
%llsolanlapthucte
ifsize(p0,1)==1
p0=p0;
end
n=length(p0);
[a0,f0]=jacobi(g,p0);
b0=inv(a0);
p1=p0b0*g(p0);
fork=1:maxiter
f1=g(p1);
v=p1p0;
d=v*v;
u=(1/d)*(f1f0a0*v);
a1=a0+u*v;
e=eye(n);
ts=(b0*u)*v;
ms=1+v*b0*u;
b1=(ets/ms)*b0;
p2=p1b1*g(p1);
ifabs(max(v))<eps
break;
end
a0=a1;
b0=b1;
p0=p1;
p1=p2;
f0=f1;
end
273
m=p2;
ll=k;
Tagiihphngtrnh:
2x 2 2y 3 4x + 1 = 0
4
4
+
+
=
x
4y
4y
4
0
bngcchdngchngtrnhctimprovedbroyden.m
clearall,clc
formatlong
p=[.1.7];
[r,s]=improvedbroyden(@g,p,50)
14.TNHTRSCAATHC
1. S Horner: Gi s chng ta cn tm gi tr ca mt a thc tng qut
dng:
(1)
P(x)=a0xn+a1xn1+a2xn2+....+an
timttrsxno.Trong(1)cchsailccsthccho.Chngta
vitli(1)theothuttonHornerdidng:
P(xo)=(...((a0x+a1)x+a2x)+...+an1)x+an
(2)
T(2)tac:
P0=a0
P1=P0x+a1
P2=P1x+a2
P3=P2x+a3
..................
P(x)=Pn=Pn1x+an
Tngquttac:
Pk=Pk1x+akvik=1,2...n;P0=a0
DochngtachquantmntrscaPnnntrongcccngthctruyhi
vsauchngtasbquachskcaPvvitgnP:=Px+akvik=0...n.
Khi ta tnh ti k = n th P chnh l gi tr cn tm ca a thc khi cho x.
Chngtathccbctnhnhsau:
Banu
P=0
Bc0
k=0
P=ao
Bc1
k=1
P=aox+a1
274
Bc2
k=2
P=(aox+a1)x+a2
.................................
Bcn
k=n
P=P(xo)=(...((aox+a1)x+a2x)+...+an1)x+an
Taxydnghmhorner()tnhtrcaathctix:
functionp=horner(a,x)
%Tinhtrisodathuc
%p=a(1)*xn+a(2)*x(n1)+...+a(n+1)
%cuphap:p=horner(a,x)
n=length(a)1;
p=a(1);
fori=1:n
p=p*x+a(i+1);
end
tnhtrscaathcP3(x)=x3+3x2+2x5tix=1tadngchngtrnh
cthorner.m
clearall,clc
a=[1325];
p=horner(a,1)
2.SHornertngqut:Gischngtacathc:
Pn(x)=a0xn+a1xn1+a2xn2+....+an
(1)
KhaitrinTaylorcaathctix=xocdng:
P( x 0 )
P( x 0 )
P( n ) ( x 0 )
2
Pn ( x) = Pn ( x 0 ) +
( x x0 ) +
( x x0 ) + +
( x x0 )n (2)
1!
2!
2!
Mtkhcchngtacthbiniathcvdng:
Pn(x)=(xxo)Pn1(x)+Pn(xo)
(3)
TrongPn1(x)lathcbcn1vcdng:
Pn1(x)=boxn1+bo1xn2+b2xn3+....+bn1
(4)
Thuttontmcchsnhncbngcchsosnh(1)v(3):
bo=ao
bi=ai+bi1xo
bn=Pn(xo)
Sosnh(2)v(3)tac:
275
P(x0 )
P(x0 )
(x x0 ) +
(x x 0 )2
1!
2!
(n)
P (x0 )
n
(x x0 )
+ +
2!
hay:
( x x0 )Pn 1 ( x) =
P( x0 )
P( x 0 )
P( n ) ( x 0 )
( x x0 ) +
( x x 0 )2 + +
( x x 0 )n
1!
2!
2!
vkhichiahaivcho(xx0)tanhnc:
P( x0 ) P( x 0 )
P( n ) ( x 0 )
Pn 1 ( x) =
+
( x x0 ) + +
( x x 0 )n 1
(5)
1!
2!
2!
Sosnh(4)v(5)tanhncktqu:
P( x 0 )
Pn 1 ( x0 ) =
1!
TrongPn1(x)licthphntchgingnhPn(x)dng(3)tmraPn1(xo).
QutrnhnyctiptcchonkhitatmhtcchscachuiTaylor
caPn(x).Tngqutthuttonthhinbngsau:
Pn(x)ao a1 a2a3...an1 an
x=xo0 boxob1xob2xo...bn2xo bn1xo
functionb=genhorner(a,x)
%travehesocuadathuckhaitrien
%c(1)(xx0)^n+c(2)(xx0)^(n1)+...+c(n+1)
m=length(a)
x=2;
fork=1:m
b(1)=a(1);
fori=2:mk+1
b(i)=b(i1)*x+a(i);
end
c(mk+1)=b(mk+1)
a=b(1:mk);
end
276
khaitrinathcP(x)=x52x4+x35x+4tix0=2tadngchngtrnh
ctgenhorner.m
clearall,clc
a=[121054];
c=genhorner(a,2)
15.PHNGPHPLAGUERRE
Taxtathcbcn:
Pn(x)=a1xn+a2xn1++an+1
(1)
Nuathccnghimlrthtac:
(2)
Pn(x)=(xr)Pn1(x)
Trong:
Pn1(x)=b1xn1+b2xn2++bn
Cnbng(1)v(2)tac:
b1=a1
b2=a2+rb1
......
bn=an+rbn1
Taxydnghmdeflpoly()tnhcchscaathcPn1(x)
functionb=deflpoly(a,r)
%habacdathuc
n=length(a)1;
b=zeros(n,1);
b(1)=a(1);
fori=2:n
b(i)=a(i)+r*b(i1);
end
BygitaxtathcPn(x)cnghimnx=rv(n1)nghimtrng
nhaux=q.athcnhvyscvitthnh:
(3)
Pn(x)=(xr)(xq)n1
Bitoncatalchoathc(3)didng:
Pn(x)=a1xn+a2xn1++an+1
vcntmr(chlqcngchabit).
277
ohm(3)theoxtac:
Pn (x) = (x q)n 1 + (n 1)(x q)n 2 (x r)
1
n 1
= Pn (x)
xr xq
Nhvy:
Pn (x)
1
n 1
=
Pn (x) x r x q
Ttac:
(4)
(5)
Pn(x) Pn (x)
1
n 1
2
Pn (x) Pn (x)
(x r) (x q)2
Tat:
Pn (x)
P(x)
(6)
H(x) = G 2 (x) n
Pn (x)
Pn (x)
Nhvy(4)v(5)trthnh:
P (x)
1
n 1
=
+
(7)
G(x) = n
Pn (x) x r x q
P(x)
1
n 1
H(x) = G 2 (x) n
=
+
(8)
2
Pn (x) (x r) (x q)2
Nutagii(7)theo(xq)vthayktquvo(8)tanhncphngtrnh
bc2ivi(xr).NghimcaphngtrnhnylcngthcLaguerre:
n
xr=
(9)
chogitrbanucanghimcaathclx
tnhG(x)vH(x)theo(6)
tnhnghiemtheo(9).Chndusaochomuslnnht.
chox=rvtiptclptbc2chon5nkhi|Pn(x)|<hay
|xr|<.
Taxydnghmlaguerre()thchinthuttontrn
functionx=laguerre(a,tol)
%timnghiemcuadathuc
x=randn;%choxngaunhien
n=length(a)1;
G(x) =
278
fori=1:30
[p,dp,ddp]=evalpoly(a,x);
ifabs(p)<tol;
return;
end
g=dp/p;
h=g*gddp/p;
f=sqrt((n1)*(n*hg*g));
ifabs(g+f)>=abs(gf)
dx=n/(g+f);
else
dx=n/(gf);
end
x=xdx;
ifabs(dx)<tol
return;
end
end
error(Lapquanhieu)
tmttcccnghimcaathctadnghmpolyroots()
functionroot=polyroots(a,tol)
%Timcacnghiemcuadathuc%a(1)*xn+a(2)*x(n1)+...+a(n+1).
%Cuphap:root=polyroots(a,tol).
%tol=saiso
ifnargin==1
tol=1.0e6;
end
n=length(a)1;
root=zeros(n,1);
fori=1:n
x=laguerre(a,tol);
ifabs(imag(x))<tol
x=real(x);
end
279
root(i)=x;
a=deflpoly(a,x);
end
clearall,clc
a=[1325];
r=polyroots(a);
16.PHNGPHPLPBERNOULLI
Cnhiuphngphptmnghimcamtathc.Taxtphng
trnh:
aoxn+a1xn1++an=0
Nghimcaphngtrnhtrnthomnnhl:
Nu max{| a1 |, | a2 |,..., |an |} = A th cc nghim ca phng trnh tho
mniukin|x|<1+A/|a0|
PhngphpBernoullichophptnhtonnghimlnnhtcamt
athcPn(x)cnnghimthcphnbit.Saukhitmcnghimlnnht
tachiaathcPn(x)cho(x)vnhncathcmiQn1(x).Tiptc
dngphngphpBernoullitmnghimlnnhtcaQn1(x).
SaulitiptcccbctrnchonkhitmhtccnghimcaPn(x).
Chngtakhostphngtrnhsaiphncdngnhsau:
=aoyk+n+a1yk+n1+.....+anyk=0
(1)
y l mt phng trnh sai phn tuyn tnhh s hng. Khi cho trc cc
gi tr u yo, y1,..yn1 ta tm c cc gi tr yn, yn+1,.. Chng c gi l
nghimcaphngtrnhsaiphntuyntnh(1).
athc
(2)
Pn(x)=a0xn+a1xn1+..+an1x+an
vicngmthsainh(1)cgilathcctnhcaphngtrnh
saiphntuyntnh(1).Nu(2)cnnghimphnbitx1,x2,..,xnth(1)ccc
nghimringl
y i = x ik
Nuyilccnghimcaphngtrnhsaiphnltuyntnh(1),th
y k = c 1 x 1k + c 2 x k2 + + c n x kn
(3)
280
vicchscibtkcnglnghimcaphngtrnhsaiphntuyntnhh
shng(1).
Nuccnghimcnsaocho:
|x1||x2|...|xn|
c x k
k
1
2
Vy y k = c 1 x 1 1 + +
c 2 x 1
c x k +1
k +1
v y k +1 = c 1 x 1 1 + 1 2 +
c 2 x 1
c x k +1
1 + 1 2 +
c 2 x1
y
do: k +1 = x 1
k
yk
c x
1 + 1 2 +
c 2 x 1
do x1>x2>...>xn
k
k +1
x x
nn: 2 , 2 0 khik
x1 x1
y
vy: k +1 0 khik
yk
Nghal:
y
lim k +1 = x 1
k y
k
Nuphngtrnhviphngmn+1hs,mtnghimringykcth
cxcnhtngitryk1,yk2,...,yn1.iuchophptnhtonbngcch
truyhiccnghimringcaphngtrnhviphn.
tnhnghimlnnhtcaathc,taxutphttccnghimring
y1=0,y1=0,..,yn=1tnhyn+1.Cchtnhnyctiptctnhyn+2xut
phtty1=0,y2=0,..,yn+1vtiptcchonkhiyk+1/ykkhngbinina.
Trscayk+nctnhtheocngthctruyhi:
1
y k + n = (a 1 y k + n 1 + + a n y k )
(4)
a0
Taxydnghmbernoulli()thchinthuttontrn
functionx=bernoulli(p)
%timnghiemlonnhatcuaP(x)
%theothuattoanBernoulli
281
%cuphapx=bernoulli(p)
n=length(p);
maxiter=200;
y=zeros(maxiter);
y(n1)=1;
k=0;
while(k<maxiter)
s=0;
fori=1:n1
s=s+p(i+1)*y(k+ni);
end
y(k+n)=s/p(1);
x=y(k+n)/y(k+n1);
err=polyval(p,x);
iferr<1e6
break;
end
k=k+1;
end
tmnghimcaathcP4(x)=x422x3+179x2638x+840tadng
ctbernoulli.m
clearall,clc
p=[122179638840];
m=length(p);
fprintf(Nghiemcuadathuc:\n);
whilem>3
x=bernoulli(p);
m=m1;
fprintf(%f\n,x);
p=deflpoly(p,x);
end
x1=(p(2)+sqrt(p(2)^24*p(1)*p(3)))/2*p(1);
fprintf(%f\n,x1);
x2=(p(2)sqrt(p(2)^24*p(1)*p(3)))/2*p(1);
282
fprintf(%f\n,x2);
17.PHNGPHPLPBERGEVIETTE
Ccnghimthc,ncamtathcPn(x)ctnhtonkhisdng
phngphpNewton
P (x )
x i +1 = x i n i
(1)
Pn ( x i )
btutnhtoncnchnmtgitrbanuxo.Chngtacth
chnmtgitrxono,vd:
a
x0 = n
a n 1
vtnhtipccgitrsau:
P (x )
x1 = x 0 n 0
Pn ( x 0 )
P (x )
x 2 = x1 n 1
Pn ( x 1 )
TiptheocthnhgiPn(xi)theothuttonHorner:
P0=a0
P1=P0xi+a1
(2)
P2=P1xi+a2
P3=P2xi+a3
..................
P(xi)=Pn=Pn1xi+an
MtkhckhichiaathcPn(x)chomtnhthc(xxi)tac:
Pn(x)=(xxi)Pn1(x)+bn
(3)
vibn=Pn(xi).athcPn1(x)cdng:
Pn1(x)=boxn1+b1xn2+p3xn3+..+bn2x+bn1
(4)
xcnhcchscaathc(4)tathay(4)vo(3)vcnbngcc
hsviathccntmnghimPn(x)mcchsaicho:
(xxi)(boxn1+b1xn2+b3xn3+..+bn2x+bn1)+bn
=aoxn+a1xn1+a2xn2+...+an1x+a
(5)
T(5)rtra:
bo=ao
b1=a1+boxi
(6)
b2=a2+b1xi
......
283
bk=ak+bk1xi
.......
bn=an+bn1xi=Pn(xi)
ohm(3)tac:
Pn ( x) = ( x xi )Pn 1 ( x) + Pn 1 ( x)
v: Pn ( x i ) = Pn 1 ( x i )
(7)
Nhvyvimtgitrxinotheo(2)tatnhcPn(xi)vkthp
(6)vi(7)tnhcPn(xi).Thayccktqunyvo(1)tatnhcgitr
xi+1.Qutrnhctiptcchonkhi|xi+1xi|<hayPn(xi+1)0nn1
xi+1lmtnghimcaathc.
PhpchiaPn(x)cho(x1)chotaPn1(x)vmtnghimmikhcc
tmtheocchtrnkhichnmtgitrxomihaychnchnhxo =1.Khibc
ca a thc gim xung cn bng 2 ta dng cc cng thc tm nghim ca
tamthctmccnghimcnli.
Taxydnghmbirgeviette()thchinthuttontrn
functionx=birgeviette(a,x0)
%timnghiemtheothuattoanlapBirgeViette
%vao:adathuccantimnghiem
%x0giatridau
%cuphapx=birgeviete(a,x0,maxiter)
n=length(a)1;
k=0;
x0=3.5;
maxiter=50;
while(k<maxiter)
p=a(1);
b(1)=a(1);
fori=1:n
p=p*x0+a(i+1);
b(i+1)=p;
end
b=b(1,1:n);
p1=horner(b,x0);
x1=x0p/p1;
k=k+1;
284
err=horner(a,x1);
if(abs(err)<eps)
break;
end
x0=x1;
end
x=x0;
tmnghimcaathcP4(x)=x422x3+179x2638x+840tadng
ctbirgeviette.m
clearall,clc
p=[122179638840];
m=length(p);
x0=1;
fprintf(Nghiemcuadathuc:\n);
whilem>3
x=birgeviete(p,x0);
m=m1;
fprintf(%f\n,x);
p=deflpoly(p,x);
end
x1=(p(2)+sqrt(p(2)^24*p(1)*p(3)))/2*p(1);
fprintf(%f\n,x1);
x2=(p(2)sqrt(p(2)^24*p(1)*p(3)))/2*p(1);
fprintf(%f\n,x2);
18.PHNGPHPBAIRSTOW
NguyntccaphngphpBairstowltrchtathcPn(x)mttam
thcQ2(x)=x2rxsmtacthtnhnghimthchaynghimphccan
mtcchnginbngccphngphpbit.VicchiaathcPn(x)cho
tathcQ2(x)atiktqu:
Pn(x)=Q2(x).Pn2(x)+R1(x)
vi: Pn(x)=a1xn+a2xn1+a3xn2++an+1
Q2(x)=x2rxs
Pn2(x)=b1xn2+b2xn3+b3xn4++bn1
285
R1(x)=x+
c c mt thng ng, cn tm cc gi tr s v p sao cho R1(x) = 0
(nghalvtrittiu).Virvscho,cchsbicaathcPn2(x)v
cchsvctnhbngphngphptruyhi.Cccngthcnhn
ckhikhaitrinbiuthcPn(x)=Q2(x).Pn2(x)+R1(x)vspxpliccs
hngcngbc:
a1xn+a2xn1+a3xn2+...+an+1=(x2rxs)(b1xn2+b2xn3+b3xn4+...+bn1)
HscaQ2(x).Pn2(x)
Shngbc HscaPn(x)
xn
a1
b1
xn1
a2
b1rb1
n2
x
a3
b3rb2sb1
......
......
.....
a k
bkrbk1sbk2
xnk
x
an
rbn1sbn2
xo
an+1
rbn1
Nhvy:
b1=a1
(1)
b2=a2+rb1
b3=a3+rb2+sb1
.............
bk=ak+rbk1+sbk2
=an+rbn1+sbn2
=anpb2
Chngtanhnthyrngctnhtonxutphttcngmtcng
thctruyhinhcchsbkvtngngvihsbn
bn=an1+rbn1+sbn2=
Hsbn+1l:
bn+1=an+1+rbn1+sbn2=sbn2+
vcuicng:
R1(x)=x+=bn(xr)+bn+1
Ngoiracchsbiphthucvorvsvbygichngtacnphi
tmccgitrcbitr*vs*chobn vbn+1trittiu.KhiR1(x)=0v
nghimcatamthcx2r*xs*xslnghimcaathcPn(x).
Tabitrngbn1vbnlhmcasvp:
bn=f(r,s)
286
bn+1=g(r,s)
Victmr*vs*anvicgiihphngtrnhphituyn:
f(r ,s) = 0
g(r
,s)
0
=
g(r
,s
)
i i
f f
r s
J(X i ) =
g g
r s
Quan h : J(Xi)X = F(Xi) vi X = {ri+1 ri,si+1 si}T tng ng vi mt h
phngtrnhtuyntnhhainsr=ri+1rivs=si+1si:
f
f
r r + s s = f(ri ,si )
g
g
r +
s = g(ri ,si )
r
s
TheocngthcCramertac:
g
f
f + g
s
r = s
f g
g + f
s = r r
f g f g
r s s r
f f g g
dng c cng thc ny ta cn tnh c cc o hm , , , .
r s r s
Ccohmnyctnhtheocngthctruyhi.
Dob1=a1nn
287
b1 a1
b1 a1
=
=0
=
= 0
r
r
s
s
b2=a2+rb1nn
b 2
b
b 2 a 2
b
=
+ r 1 = 0
= r 1 + b1 = b1
s
s
s
r
r
b3=a3+rb2+sb1nn
b 3 a 3 (rb2 ) (sb1 )
=
+
+
r
r
r
r
Mtkhc:
a 3
(rb 2 )
(b 2 )
(rb1 )
= 0
= 0
=r
+ b 2
r
r
r
r
b
b 3
b
b
nn: 3 = b 2 + rb1
= r 2 + s 1 + b 1 = b1
r
s
s
s
b4=a4+rb3+sb2nn:
b 4
b
b
b 4
b
b
= b3 + r 3 + s 2
= r 3 + s 2 + b2
r
r
r
s
s
s
.....
b n
b
b
b n
b
b
= r n 1 + s n 2 + b n 1
= r n 1 + s n 2 + b n 2
r
r
r
s
r
r
Nuchngtat:
b k
= c k 1
r
th:
c1=b1
(2)
c2=b2+rc1
c3=b3+rc2+sc1
..........
cn=bn+rcn1+scn2
Nhvytac:
b c + b n +1c n 2
r = n 2 n 1
(3)
c n 1 c n c n 2
b c + bnc n
s = n2+1 n 1
(4)
c n 1 c n c n 2
Sau khi phn tch xong Pn(x) ta tip tc phn tch Pn2(x) theo phng
phptrn.Ccbctnhtongm:
288
Chnccgitrbanubtks0vp0
Tnhccgitrb1,..,bn+1theo(1)
Tnhccgitrc1,...,cntheo(2)
Tnhrovsotheo(3)v(4)
Tnhs1=r0+rovs1=so+so
Lplibc1chonkhiri+1=ri=rvsi+1=si=s
Giiphngtrnhx2rxstm2nghimcaathc
BtuqutrnhtrnchoathcPn2(x)
Taxydnghmbairstow()thchinthuttontmr,s
function[r,s]=bairstow(p,r0,s0,maxiter)
%timdathucbac2dangx^2rxs
%vaopladathuccantimnghiem
%r0,s0giatribandau
%maxitersolanlapmax
%rar,s
%cuphap[r,s]=bairstow(p,r0,s0,maxiter)
n=length(p)1;
c=zeros(n);
b=zeros(n);
j=0;
whilej<maxiter
b(1)=p(1);
b(2)=p(2)+r0*b(1);
fork=3:(n+1)
b(k)=p(k)+r0*b(k1)+s0*b(k2);
end
c(1)=b(1);
c(2)=b(2)+r0*c(1);
fork=3:(n)
c(k)=b(k)+r0*c(k1)+s0*c(k2);
end
d0=det([c(n1),c(n2);c(n),c(n1)]);
d1=det([b(n),c(n2);b(n+1),c(n1)]);
d2=det([c(n1),b(n);c(n)b(n+1)]);
r=r0+d1/d0;
289
s=s0+d2/d0;
if((abs(d1/d0))&(abs(d2/d0)))<eps
break;
end
r0=r;
s0=s;
j=j+1;
end
tmnghimcaathcP4(x)=x41.1x3+2.3x20.5x+3.3tadngchng
trnhctbairstow.m
clearall,clc
p=[11.12.30.53.3];
m=length(p);
s0=1,;
r0=1;
fprintf(Nghiemcuadathuc:\n);
whilem>3
[r,s]=bairstow(p,r0,s0,50);
m=m2;
x1=(r+sqrt(r^2+4*s))/2;
x2=(rsqrt(r^2+4*s))/2;
fprintf(%s\n,num2str(x1));
fprintf(%s\n,num2str(x2));
p=deconv(p,[1rs]);
end
iflength(p)==3
x1=(p(2)+sqrt(p(2)^24*p(3)))/2;
x2=(p(2)sqrt(p(2)^24*p(3)))/2;
fprintf(%s\n,num2str(x1));;
fprintf(%s\n,num2str(x2));;
else
x1=p(2)/p(1);
fprintf(%f\n,x1);;
end
290
19.PHNGPHPLOBACHEVSKYGRAEFFE
P(x)=a0xn+a1xn1++an=0
(1)
chcnghimthcvigitrtuytikhcnhau.Tanhsccnghim
theothtgitrtuytigim:
|x1|>|x2|>>|xn|
(2)
Davo(1)taxydngmtphngtrnhmi:
Q(x)=c0xn+c1xn1++cn=0
(c00)
(3)
m
m
m
cnghiml x1 , x 2 ,..., x n .Sautavitliphngtrnhtrn:
Q(x) = c 0 (x + x1m )(x + x 2m ) (x + x nm )
(4)
Sosnh(3)v(4)tac:
x m + x m + + x m = c1
2
n
1
c0
x m x m + x m x m + + x m x m = c 2
2 3
n 1 n
1 2
c0
(5)
x m x m x m x m = c n
n 1 n
1 2
c0
Vcgithit(2)nnkhimtngthvtricaccngthc(5)shng
utriln,lntccshngsauvvimlntac:
x m c1
1 c
0
x m x m c 2
1 2
c0
(6)
x m x m x m x m c n
n 1 n
1 2
c0
T(6)tac:
291
x m c1
1 c
0
x m c 2
2
c1
(7)
x m c n
n c
n 1
Tasuyratrtuyticaccnghiml:
c
x1 m 1
c0
c
x2 m 2
(8)
c1
x m cn
n
c n 1
Sautathay|xi|vo(1)vtmcnghim.Nhvyvnlphitm
cphngtrnh(3)davophngtrnh(1).Qutrnhbini(1)thnh
(3)ctinhnhnhsau:
utint(1)taxydngphngtrnhmicnghiml x12 vqu
trnhnycgilbnhphngnghim.VP(x)cccnghimlxinnn
cdng:
P(x)=a0(xx1)(xx2)(xxn)
Do:
(1)nP(x)=a0(x+x1)(x+x2)(x+xn)
Tasuyra:
( 1)n P(x)P( x) = a 02 (x 2 x12 )(x 2 x 22 ) (x 2 x 2n )
Thayx2=ytac:
P1 (y) = P(x)P( x) = a 02 (y + x12 )(y + x 22 ) (y + x 2n )
athcP1(y)cnghiml y i = x12 .athcnycdng:
n
(1) n 1
n 2
P1 (y) = a(1)
+ a(1)
+ + a(1)
(9)
0 y + a1 y
2 y
n
Do
P(x)=a0xn+a1xn1++an=0
nn
P(x)=(1)n[a0xna1xn1++(1)nan]
(1)nP(x)=a0xna1xn1++(1)nan
292
v
( 1)n P(x)P( x) = a 02 x 2n (a12 2a 0a 2 )x 2n 2 + (a 22 2a1a 3 + 2a 0a 4 )x 2n 4
+ + ( 1)n a n2
Thayx2=ytac:
P1 (y) = a 02 y n (a12 2a 0a 2 )y n 1 + (a 22 2a1a 3 + 2a 0a 4 )y n 2 + + ( 1)n a 2n (10)
Sosnh(9)v(10)taccngthctnhcchscaP1(y)tccakl:
2
a(1)
0 = a0
(1)
2
a1 = a1 2a 0a 2
a(1) = a 2 2a a + 2a a
2
1 3
0 4
2
(11)
(1)
2
i
a
a
2
(
1)
a
a
=
+
k
k i k +i
k
i =1
(1)
2
a n 1 = a n1 2a n 2a n
a(1) = a 2
n
n
TiptcqutrnhbnhphngnghimathcP1(y)tacP2(y)c
(1)
nghiml y k = ( x12 )2 vicchs a(2)
k ctnhtheo a k tngtnh(11)
khitnh a(1)
k theoak.Tinhnhbnhphngnghim(s+1)lntac(3).Lc
cchscxcnhbng:
a(s+1) = a(s) 2
0
0
k
a(s+1) = a(s) 2 + 2 ( 1)i a(s) a(s)
k i
k+i
k
k
i =1
(s+1)
2
(s) (s)
a n 1 = a(s)
n 1
2a n 2a n
2
a(sn +1) = a(s)
n
Vykhislntac:
a(s)
2s
m
i
xi = xi (s)
a i 1
Tacm=26=64.Dnglogarittatnhraccnghim:x1=4,x2=2,x3=1
Taxydnghmlobachevskygraeffe()thchinthuttontrn
293
functiony=lobachevskygraeffe(a,maxiter)
%giaiptbangppLochevskyGraeffe
%aladathuccantimnghiem
%maxiterlasolanlapmax
c=a;
n=length(a);
m=1;
whilem<maxiter
b=a;
fork=2:n1;
s=0;
i=1;
while(((ki)>=1)&((k+i)<=n))
s=s+(1)^i*b(ki)*b(k+i);
i=i+1;
end
a(k)=b(k)^2+2*s;
end
a(1)=a(1)^2;
a(n)=a(n)^2;
j=2^m;
fori=1:n1
err=1;
x(i)=a(i+1)/a(i);
ifx(i)==1
x(i)=1;
else
x(i)=exp((1/j)*log(x(i)));
end
err=abs(horner(c,x(i)));
end
iferr<eps
break;
end
m=m+1;
end
294
fori=1:n1
ifround(polyval(c,x(i)))~=0
x(i)=x(i);
end
end
y=x;
tmnghimcaathcP4(x)=x4+2x325x226x2+120tadngchng
trnhctlobachevskygraeffe.m:
clc,clearall
a=[122526120];
x=lobachevskygraeffe(a,50)
20.PHNGPHPSCHRODER
PhngphplpSchroderdngtmnghimbi,cdngtngt
nhcngthclpNewton:
mf(x k )
x k +1 = x k
f(x k )
Trong m l bi ca nghim. Ban u ta c th cha bit m nn cn phi
th.Taxydnghmschroder()thchinthuttontrn:
function[r,iter]=schroder(f1,df1,m,x0,tol)
%HamtimnghiemboibangthuattoanSchroder
iter=0;
d=feval(f1,x0)/feval(df1,x0);
whileabs(d)>tol
x1=x0m*d;
iter=iter+1;
x0=x1;
d=feval(f1,x0)/feval(df1,x0);
end
r=x0;
giiphngtrnh
(e x x)2 = 0
295
Tadngchngtrnhctschroder.mvim=2:
clearall,clc
[x,iter]=schroder(f1,df1,2,2,1e4)
Trong:
functiony=f1(x)
y=(exp(x)x).^2;
functiony=df1(x)
y=2.0*(exp(x)x).*(exp(x)1);
%cuphapx=bernoulli(p)
n=length(p);
maxiter=200;
y=zeros(maxiter);
y(n1)=1;
k=0;
while(k<maxiter)
s=0;
fori=1:n1
s=s+p(i+1)*y(k+ni);
end
y(k+n)=s/p(1);
x=y(k+n)/y(k+n1);
err=polyval(p,x);
iferr<1e6
break;
end
k=k+1;
end
tmnghimcaathcP4(x)=x422x3+179x2638x+840tadng
ctbernoulli.m
clearall,clc
296
p=[122179638840];
m=length(p);
fprintf(Nghiemcuadathuc:\n);
whilem>3
x=bernoulli(p);
m=m1;
fprintf(%f\n,x);
p=deflpoly(p,x);
end
x1=(p(2)+sqrt(p(2)^24*p(1)*p(3)))/2*p(1);
fprintf(%f\n,x1);
x2=(p(2)sqrt(p(2)^24*p(1)*p(3)))/2*p(1);
fprintf(%f\n,x2);
17.PHNGPHPLPBERGEVIETTE
Ccnghimthc,ncamtathcPn(x)ctnhtonkhisdng
phngphpNewton
P (x )
x i +1 = x i n i
(1)
Pn ( x i )
btutnhtoncnchnmtgitrbanuxo.Chngtacth
chnmtgitrxono,vd:
a
x0 = n
a n 1
vtnhtipccgitrsau:
P (x )
x1 = x 0 n 0
Pn ( x 0 )
P (x )
x 2 = x1 n 1
Pn ( x 1 )
TiptheocthnhgiPn(xi)theothuttonHorner:
P0=a0
P1=P0xi+a1
P2=P1xi+a2
P3=P2xi+a3
..................
P(xi)=Pn=Pn1xi+an
MtkhckhichiaathcPn(x)chomtnhthc(xxi)tac:
(2)
297
Pn(x)=(xxi)Pn1(x)+bn
(3)
vibn=Pn(xi).athcPn1(x)cdng:
Pn1(x)=boxn1+b1xn2+p3xn3+..+bn2x+bn1
(4)
xcnhcchscaathc(4)tathay(4)vo(3)vcnbngcc
hsviathccntmnghimPn(x)mcchsaicho:
(xxi)(boxn1+b1xn2+b3xn3+..+bn2x+bn1)+bn
=aoxn+a1xn1+a2xn2+...+an1x+a
(5)
T(5)rtra:
bo=ao
b1=a1+boxi
(6)
b2=a2+b1xi
......
bk=ak+bk1xi
.......
bn=an+bn1xi=Pn(xi)
ohm(3)tac:
Pn ( x) = ( x xi )Pn 1 ( x) + Pn 1 ( x)
(7)
v: Pn ( x i ) = Pn 1 ( x i )
Nhvyvimtgitrxinotheo(2)tatnhcPn(xi)vkthp
(6)vi(7)tnhcPn(xi).Thayccktqunyvo(1)tatnhcgitr
xi+1.Qutrnhctiptcchonkhi|xi+1xi|<hayPn(xi+1)0nn1
xi+1lmtnghimcaathc.
PhpchiaPn(x)cho(x1)chotaPn1(x)vmtnghimmikhcc
tmtheocchtrnkhichnmtgitrxomihaychnchnhxo =1.Khibc
ca a thc gim xung cn bng 2 ta dng cc cng thc tm nghim ca
tamthctmccnghimcnli.
Taxydnghmbirgeviette()thchinthuttontrn
functionx=birgeviette(a,x0)
%timnghiemtheothuattoanlapBirgeViette
%vao:adathuccantimnghiem
%x0giatridau
%cuphapx=birgeviete(a,x0,maxiter)
n=length(a)1;
k=0;
x0=3.5;
298
maxiter=50;
while(k<maxiter)
p=a(1);
b(1)=a(1);
fori=1:n
p=p*x0+a(i+1);
b(i+1)=p;
end
b=b(1,1:n);
p1=horner(b,x0);
x1=x0p/p1;
k=k+1;
err=horner(a,x1);
if(abs(err)<eps)
break;
end
x0=x1;
end
x=x0;
tmnghimcaathcP4(x)=x422x3+179x2638x+840tadng
ctbirgeviette.m
clearall,clc
p=[122179638840];
m=length(p);
x0=1;
fprintf(Nghiemcuadathuc:\n);
whilem>3
x=birgeviete(p,x0);
m=m1;
fprintf(%f\n,x);
p=deflpoly(p,x);
end
x1=(p(2)+sqrt(p(2)^24*p(1)*p(3)))/2*p(1);
fprintf(%f\n,x1);
299
x2=(p(2)sqrt(p(2)^24*p(1)*p(3)))/2*p(1);
fprintf(%f\n,x2);
18.PHNGPHPBAIRSTOW
NguyntccaphngphpBairstowltrchtathcPn(x)mttam
thcQ2(x)=x2rxsmtacthtnhnghimthchaynghimphccan
mtcchnginbngccphngphpbit.VicchiaathcPn(x)cho
tathcQ2(x)atiktqu:
Pn(x)=Q2(x).Pn2(x)+R1(x)
vi: Pn(x)=a1xn+a2xn1+a3xn2++an+1
Q2(x)=x2rxs
Pn2(x)=b1xn2+b2xn3+b3xn4++bn1
R1(x)=x+
c c mt thng ng, cn tm cc gi tr s v p sao cho R1(x) = 0
(nghalvtrittiu).Virvscho,cchsbicaathcPn2(x)v
cchsvctnhbngphngphptruyhi.Cccngthcnhn
ckhikhaitrinbiuthcPn(x)=Q2(x).Pn2(x)+R1(x)vspxpliccs
hngcngbc:
a1xn+a2xn1+a3xn2+...+an+1=(x2rxs)(b1xn2+b2xn3+b3xn4+...+bn1)
Shngbc HscaPn(x)
HscaQ2(x).Pn2(x)
xn
a1
b1
n1
x
a2
b1rb1
xn2
a3
b3rb2sb1
......
......
.....
nk
x
a k
bkrbk1sbk2
x
an
rbn1sbn2
xo
an+1
rbn1
Nhvy:
b1=a1
(1)
b2=a2+rb1
b3=a3+rb2+sb1
.............
bk=ak+rbk1+sbk2
=an+rbn1+sbn2
=anpb2
300
Chngtanhnthyrngctnhtonxutphttcngmtcng
thctruyhinhcchsbkvtngngvihsbn
bn=an1+rbn1+sbn2=
Hsbn+1l:
bn+1=an+1+rbn1+sbn2=sbn2+
vcuicng:
R1(x)=x+=bn(xr)+bn+1
Ngoiracchsbiphthucvorvsvbygichngtacnphi
tmccgitrcbitr*vs*chobn vbn+1trittiu.KhiR1(x)=0v
nghimcatamthcx2r*xs*xslnghimcaathcPn(x).
Tabitrngbn1vbnlhmcasvp:
bn=f(r,s)
bn+1=g(r,s)
Victmr*vs*anvicgiihphngtrnhphituyn:
f(r ,s) = 0
=
g(r
,s)
0
g(ri ,si )
f f
r s
J(X i ) =
r s
Quan h : J(Xi)X = F(Xi) vi X = {ri+1 ri,si+1 si}T tng ng vi mt h
phngtrnhtuyntnhhainsr=ri+1rivs=si+1si:
f
f
r
+
s = f(ri ,si )
r
s
g
g
r +
s = g(ri ,si )
s
r
TheocngthcCramertac:
301
g
f
+g
s
r = s
f g
g + f
s = r r
f g f g
=
r s s r
f
f f g g
, , , .
r s r s
Ccohmnyctnhtheocngthctruyhi.
Dob1=a1nn
b1 a1
b1 a1
=
=0
=
= 0
r
r
s
s
b2=a2+rb1nn
b 2
b
b 2 a 2
b
= r 1 + b1 = b1
=
+ r 1 = 0
r
r
s
s
s
b3=a3+rb2+sb1nn
b 3 a 3 (rb 2 ) (sb1 )
=
+
+
r
r
r
r
Mtkhc:
a 3
(rb 2 )
(b2 )
(rb1 )
= 0
=r
+ b 2
= 0
r
r
r
r
b
b 3
b
b
= r 2 + s 1 + b 1 = b1
nn: 3 = b 2 + rb1
r
s
s
s
b4=a4+rb3+sb2nn:
b 4
b
b
b 4
b
b
= b3 + r 3 + s 2
= r 3 + s 2 + b2
r
r
r
s
s
s
.....
b n
b
b
b n
b
b
= r n 1 + s n 2 + bn 1
= r n 1 + s n 2 + b n 2
r
r
r
s
r
r
Nuchngtat:
b k
= c k1
r
th:
c1=b1
c2=b2+rc1
c3=b3+rc2+sc1
(2)
302
..........
cn=bn+rcn1+scn2
Nhvytac:
b c + b n +1c n 2
r = n 2 n 1
(3)
c n 1 c n c n 2
b c + bncn
s = n2+1 n 1
(4)
c n 1 c n c n 2
Sau khi phn tch xong Pn(x) ta tip tc phn tch Pn2(x) theo phng
phptrn.Ccbctnhtongm:
Chnccgitrbanubtks0vp0
Tnhccgitrb1,..,bn+1theo(1)
Tnhccgitrc1,...,cntheo(2)
Tnhrovsotheo(3)v(4)
Tnhs1=r0+rovs1=so+so
Lplibc1chonkhiri+1=ri=rvsi+1=si=s
Giiphngtrnhx2rxstm2nghimcaathc
BtuqutrnhtrnchoathcPn2(x)
Taxydnghmbairstow()thchinthuttontmr,s
function[r,s]=bairstow(p,r0,s0,maxiter)
%timdathucbac2dangx^2rxs
%vaopladathuccantimnghiem
%r0,s0giatribandau
%maxitersolanlapmax
%rar,s
%cuphap[r,s]=bairstow(p,r0,s0,maxiter)
n=length(p)1;
c=zeros(n);
b=zeros(n);
j=0;
whilej<maxiter
b(1)=p(1);
b(2)=p(2)+r0*b(1);
fork=3:(n+1)
303
b(k)=p(k)+r0*b(k1)+s0*b(k2);
end
c(1)=b(1);
c(2)=b(2)+r0*c(1);
fork=3:(n)
c(k)=b(k)+r0*c(k1)+s0*c(k2);
end
d0=det([c(n1),c(n2);c(n),c(n1)]);
d1=det([b(n),c(n2);b(n+1),c(n1)]);
d2=det([c(n1),b(n);c(n)b(n+1)]);
r=r0+d1/d0;
s=s0+d2/d0;
if((abs(d1/d0))&(abs(d2/d0)))<eps
break;
end
r0=r;
s0=s;
j=j+1;
end
tmnghimcaathcP4(x)=x41.1x3+2.3x20.5x+3.3tadngchng
trnhctbairstow.m
clearall,clc
p=[11.12.30.53.3];
m=length(p);
s0=1,;
r0=1;
fprintf(Nghiemcuadathuc:\n);
whilem>3
[r,s]=bairstow(p,r0,s0,50);
m=m2;
x1=(r+sqrt(r^2+4*s))/2;
x2=(rsqrt(r^2+4*s))/2;
fprintf(%s\n,num2str(x1));
fprintf(%s\n,num2str(x2));
304
p=deconv(p,[1rs]);
end
iflength(p)==3
x1=(p(2)+sqrt(p(2)^24*p(3)))/2;
x2=(p(2)sqrt(p(2)^24*p(3)))/2;
fprintf(%s\n,num2str(x1));;
fprintf(%s\n,num2str(x2));;
else
x1=p(2)/p(1);
fprintf(%f\n,x1);;
end
19.PHNGPHPLOBACHEVSKYGRAEFFE
(1)
P(x)=a0xn+a1xn1++an=0
chcnghimthcvigitrtuytikhcnhau.Tanhsccnghim
theothtgitrtuytigim:
(2)
|x1|>|x2|>>|xn|
Davo(1)taxydngmtphngtrnhmi:
(c00)
(3)
Q(x)=c0xn+c1xn1++cn=0
m
m
m
cnghiml x1 , x 2 ,..., x n .Sautavitliphngtrnhtrn:
Q(x) = c 0 (x + x1m )(x + x 2m ) (x + x nm )
(4)
Sosnh(3)v(4)tac:
x m + x m + + x m = c1
2
n
1
c0
x m x m + x m x m + + x m x m = c 2
2 3
n 1 n
1 2
c0
(5)
x m x m x m x m = c n
n 1 n
1 2
c0
Vcgithit(2)nnkhimtngthvtricaccngthc(5)shng
utriln,lntccshngsauvvimlntac:
305
x m c1
1 c
0
x m x m c 2
1 2
c0
x m x m x m x m c n
n 1 n
1 2
c0
T(6)tac:
x m c1
1 c
0
x m c 2
2
c1
x m c n
n c
n 1
(6)
(7)
Tasuyratrtuyticaccnghiml:
c
x1 m 1
c0
c
x2 m 2
(8)
c1
x m cn
n
c n 1
Sautathay|xi|vo(1)vtmcnghim.Nhvyvnlphitm
cphngtrnh(3)davophngtrnh(1).Qutrnhbini(1)thnh
(3)ctinhnhnhsau:
utint(1)taxydngphngtrnhmicnghiml x12 vqu
trnhnycgilbnhphngnghim.VP(x)cccnghimlxinnn
cdng:
P(x)=a0(xx1)(xx2)(xxn)
Do:
(1)nP(x)=a0(x+x1)(x+x2)(x+xn)
Tasuyra:
306
(9)
0 y + a1 y
2 y
n
Do
P(x)=a0xn+a1xn1++an=0
nn
P(x)=(1)n[a0xna1xn1++(1)nan]
(1)nP(x)=a0xna1xn1++(1)nan
v
( 1)n P(x)P( x) = a 02 x 2n (a12 2a 0a 2 )x 2n 2 + (a 22 2a1a 3 + 2a 0a 4 )x 2n 4
+ + ( 1)n a 2n
Thayx2=ytac:
P1 (y) = a 02 y n (a12 2a 0a 2 )y n 1 + (a 22 2a1a 3 + 2a 0a 4 )y n 2 + + ( 1)n a n2 (10)
Sosnh(9)v(10)taccngthctnhcchscaP1(y)tccakl:
2
a(1)
0 = a0
(1)
2
a1 = a1 2a 0a 2
a(1) = a 2 2a a + 2a a
2
1 3
0 4
2
(11)
(1)
2
i
a
a
2
(
1)
a
a
=
+
k
k i k +i
k
i =1
(1)
2
a n 1 = a n1 2a n 2a n
a(1) = a 2
n
n
TiptcqutrnhbnhphngnghimathcP1(y)tacP2(y)c
(1)
nghiml y k = ( x12 )2 vicchs a(2)
k ctnhtheo a k tngtnh(11)
khitnh a(1)
k theoak.Tinhnhbnhphngnghim(s+1)lntac(3).Lc
cchscxcnhbng:
307
a(s+1) = a(s) 2
0
0
k
a(s+1) = a(s) 2 + 2 ( 1)i a(s) a(s)
k i
k+i
k
k
i =1
(s+1)
2
(s) (s)
a n 1 = a(s)
n 1
2a n 2a n
2
a(sn +1) = a(s)
n
Vykhislntac:
a(s)
2s
m
i
xi = xi (s)
a i 1
Tacm=26=64.Dnglogarittatnhraccnghim:x1=4,x2=2,x3=1
Taxydnghmlobachevskygraeffe()thchinthuttontrn
functiony=lobachevskygraeffe(a,maxiter)
%giaiptbangppLochevskyGraeffe
%aladathuccantimnghiem
%maxiterlasolanlapmax
c=a;
n=length(a);
m=1;
whilem<maxiter
b=a;
fork=2:n1;
s=0;
i=1;
while(((ki)>=1)&((k+i)<=n))
s=s+(1)^i*b(ki)*b(k+i);
i=i+1;
end
a(k)=b(k)^2+2*s;
end
a(1)=a(1)^2;
a(n)=a(n)^2;
j=2^m;
308
fori=1:n1
err=1;
x(i)=a(i+1)/a(i);
ifx(i)==1
x(i)=1;
else
x(i)=exp((1/j)*log(x(i)));
end
err=abs(horner(c,x(i)));
end
iferr<eps
break;
end
m=m+1;
end
fori=1:n1
ifround(polyval(c,x(i)))~=0
x(i)=x(i);
end
end
y=x;
tmnghimcaathcP4(x)=x4+2x325x226x2+120tadngchng
trnhctlobachevskygraeffe.m:
clc,clearall
a=[122526120];
x=lobachevskygraeffe(a,50)
20.PHNGPHPSCHRODER
PhngphplpSchroderdngtmnghimbi,cdngtngt
nhcngthclpNewton:
mf(x k )
x k +1 = x k
f(x k )
Trong m l bi ca nghim. Ban u ta c th cha bit m nn cn phi
th.Taxydnghmschroder()thchinthuttontrn:
309
function[r,iter]=schroder(f1,df1,m,x0,tol)
%HamtimnghiemboibangthuattoanSchroder
iter=0;
d=feval(f1,x0)/feval(df1,x0);
whileabs(d)>tol
x1=x0m*d;
iter=iter+1;
x0=x1;
d=feval(f1,x0)/feval(df1,x0);
end
r=x0;
giiphngtrnh
(e x x)2 = 0
Tadngchngtrnhctschroder.mvim=2:
clearall,clc
[x,iter]=schroder(f1,df1,2,2,1e4)
Trong:
functiony=f1(x)
y=(exp(x)x).^2;
functiony=df1(x)
y=2.0*(exp(x)x).*(exp(x)1);
310
f( x h) = f( x) hf ( x) + f ( x) f ( x) + f ( x)
(2)
2
3!
4!
Tr(1)cho(2)tac:
2h 3
2h 5 ( 5)
f( x + h ) f( x h) = 2 hf ( x) +
f ( x) +
f ( x) +
(3)
3!
5!
Nhvyrtra:
h4
f( x + h) f( x h) h 2
f ( x) =
f ( x) f ( 5 ) ( x)
(4)
2h
3!
5!
haytacthvitli:
1
[f( x + h) f( x h)] + a 2 h 2 + a 4 h 4 + a 6 h 6 +
f ( x) =
(5)
2h
trongcchsaiphthucfvx.
Tat:
1
(6)
[f( x + h) f( x h)]
( h) =
2h
Nhvyt(5)v(6)tac:
D(1,1) = ( h) = f ( x) a 2 h 2 a 4 h 4 a 6 h 6
(7)
h6
h4
h2
h
(8)
a4
a6
D( 2 ,1) = = f ( x) a 2
64
16
4
2
vtngqutvihi=h/2i1tac:
D(i ,1) = ( h i ) = f ( x) a 2 h i2 a 4 h i4 a 6 h 6i
(9)
TatorasaiphnD(1,1)4D(2,1)vc:
h
3
15
( h) 4 = 3f ( x) a 4 h 4 a 6 h 6
(10)
4
16
2
Chiahaivca(10)cho3tanhnc:
4 D( 2 ,1) D(1,1)
1
5
D( 2 ,2) =
= f ( x) + a 4 h 4 + a 6 h 6 +
(11)
4
4
16
TrongkhiD(1,1)vD(2,1)saikhcf(x)phthucvoh2thD(2,2)saikhc
f(x)phthucvoh4.Bygitalichiaibchvnhnc:
311
1
h
5
h
D( 3 ,2) = f ( x) + a 4 + a 6 +
(12)
4 2 16 2
vkhshngch4bngcchtora:
15
D( 2 ,3) 16 D( 3,2) = 15f ( x) + + a 6 h 6
(13)
64
Chiahaivca(13)cho15tac:
16 D( 3,2) D( 2 ,2)
1
(14)
D( 3 ,3) =
= f ( x) a 6 h 6
15
64
Vilntnhnysaiscaohmchcnphthucvoh6.Litiptcchia
i bc h v tnh D(4, 4) th sai s ph thuc h8. S tnh o hm theo
phngphpRombergl:
D(1,1)
D(2,1)
D(2,2)
D(3,1)
D(3,2)
D(3,3)
D(4,2)
D(4,3)
D(4,4)
D(4,1)
............
trongmigitrsaulgitrngoisuycagitrtrchngtrn.
Vi2jintac:
4 j1 D(i , j 1) D(i 1, j 1)
D(i , j) =
4 j1 1
vgitrkhiul:
1
[f( x + h i ) f( x h i )]
D(i , j) = ( h i ) =
2h i
vihi=h/2i1.
Chngtangnglikhihiugiahailnngoisuytchnhxcyu
cu.
Taxydnghmdiffromberg()thchinthuttontrn:
functiondf=diffromberg(f,x,h,maxiter,tol)
%TinhdaohambangphuongphapRomberg
D(1,1)=(feval(f,x+h)feval(f,xh))/(2*h);
fori=1:maxiter
h=h/2;
D(i+1,1)=(feval(f,x+h)feval(f,xh))/(2*h);
forj=1:i
D(i+1,j+1)=(4^j*D(i+1,j)D(i,j))/(4^j1);
312
end
if(abs(D(i+1,i+1)D(i,i))<tol)
df=D(i+1,i+1);
break;
elseif(i==maxiter)
error(NgoaisuyRichardsonkhonghoitu);
end
end
tnhohmcahmchotrctadngchngtrnhctdiffromberg.m:
clearall,clc
formatlong;
f=inline(x^2+2*x*exp(x)+1);
x=2;
h=0.5;
tol=1e6;
maxiter=10;
df=diffromberg(f,x,h,maxiter,tol)
2.TNHOHMBCCAO
TaxtkhaitrinTaylorcahmf(x):
h2
h3
h4
f( x + h) = f( x) + hf ( x) + f ( x) + f ( x) + f ( 4 ) ( x) +
(1)
2
3!
4!
h2
h3
h 4 (4)
(3)
h 2 (4)
2h 4 (6)
= f (x) +
f (x) +
f (x) + L
12
6!
Nh vy nu ta tnh o hm cp 2 theo (3) th sai s c h2. Dng phng
phpngoisuyRichadsontac:
313
(2)
2 2 D(2)
f(x + 2h) + 16f(x + h) 30f(x) + 16f(x + h) f(x 2h)
c2 (x, h) D c2 (x, 2h)
=
22 1
12h 2
h 4 ( 5)
f (x) +L
= f (x)
90
Dovy:
f(x + 2h) + 16f(x + h) 30f(x) + 16f(x + h) f(x 2h)
D(2)
c2 (x, h) =
12h 2
(4)
h 4 ( 5)
f (x) +L
= f (x)
90
Nuohmcpctnhtheo(4)thsaischcnch4.T(4)tac:
c 2 f2 + c1f1 + c 0 f0 + c 1f1 + c 2 f2
D(2)
(5)
c2 (x, h) =
h2
Trong:
f2=f(x+2h)
f1=f(x+h)
f0=f(x)
f1=f(xh)
f2=f(x2h)
VitrcckhaitrinTaylorcaf2,f1,f0,f1,f2tac:
(2h)2
h2
c
f
2hf
f
c
f
hf
f
+
+
+
+
+
+
+
L
L
20
0
0
1
0
0
0
2!
2!
1
(2)
Dc2 (x, h) = 2
h2
( 2h)2
f0 L + c 2 f0 2hf0 +
f0 L
+c f + c 1 f0 hf0 +
00
2!
2!
2
D(2)
1
1
22
(6)
c2 (x, h) =
2 2
2
h + h c 2 + c1 + c 1 + c 2 f0 + L
2
2
2
2
Taphigiihphngtrnhsautmcchsci.
1 1
1
1 c 2 0
1
2
1
2 c 1 0
1 0
2
2 2 2! c 0 = 1
2 2! 1 2! 0 1 2!
(7)
3
2 3! 1 3! 0 1 3! 2 3! c 1 0
2 4 4! 1 4! 0 1 4! 2 4 4! c 2 0
314
Ktqutacc2=1/12,c1=4/3,c0=5/2,c1=4/3c2=1/12.Dovy:
f2 + 16f1 30f0 + 16f1 f2
D(2)
c2 (x, h) =
12h 2
Tngttacohmbc4cahm:
f2 4f1 + 6f0 4f1 + f2
D(4)
(x,
h)
=
c2
12h 4
Taxydnghmdiffn()tnhohmtibc5:
functiondf=diffn(f,n,x)
%Tinhdaohamcapncuaftaix
ifn>5
error(Hamchitinhduocdaohamdenbac5);
return;
end;
N=5;
xo=x;
T(1)=feval(f,xo);
h=0.005;
tmp=1;
fori=1:N
tmp=tmp*h;
c=difapx(i,[ii]);%hesocuadaoham
dix=c*feval(f,xo+[i:i]*h);
T(i+1)=dix/tmp;%daoham
end
df=T(n+1);
h=0.005;
tmp=1;
fori=1:N
tmp=tmp*h;
c=difapx(i,[ii]);%hesocuadaoham
dix=c*feval(f,xo+[i:i]*h);%/h^i;%daoham
T(i+1)=dix/tmp;%hesocuachuoiTaylor
end
df=T(n+1);
315
tnhohmcahmtadngchngtrnhctdiffn.m
clearall,clc
f=inline(x.^2+atan(x),x);
df=diffn(f,5,0)
3.TNHOHMBNGPHNGPHPNISUY
Gistachmchodidngbng:
x
x0
x1
x0
...
xn
y
y0
y1
y0
...
yn
tmohmcahmtimtimnotasnisuyhmrisau
tnhohmcahmtiimcho.Taxydnghm diffinterp()thc
hincngvictrn.
functiondf=diffinterp(x,y,n,x0)
%Tinhdaohamcap1hai2bangphuogphapnoisuy
px=lagrange(x,y);%TimdathucnoisuyLagrange(x,y)
[p,dp,ddp]=peval(px,x0);
fprintf(Trisocuahamla:%f\n,p)
ifn==1
df=dp;
else
df=ddp;
end
fprintf(Daohamcap%dla:%f\n,n,df);
tnhohmtadngchngtrnhctdiffinterp.m:
clear,clc
x0=pi/4;
x=[2:6]*pi/16;
y=sin(x);
x=[1.51.92.12.63.2];
y=[1.06281.39611.54321.84232.0397];
316
n=2;
df=diffinterp(x,y,n,x0);
4.TCHPHNXCNH
Mc ch ca tnh tch phn xc nh, cn gi l cu phng, l nh
ginhlngbiuthc:
y
b
B
J = f( x)dx
a
J = A i f(xi )
i =1
trongAiltrngs,phthucphngphptnhtchphn.
Ttcccphngphptnhtchphncsuyratphngphpni
suyhmdidutchphn.Dovyktquschnhxcnuhmcthxp
xbngathc.Ccphngphptnhtchphnxcnhbngphngphp
scchiathnh2nhm:ccphngphpNewtonCotesvccphng
phpGauss.KhidngccphngphpNewtonCoteskhonglytchphn
c chia u nh trong phng php hnh thang hay phng php
Simpson.KhidngccphngphpGauss,cccdimchiacchnt
chnhxccaonht.Dophngphpnycntlntnhgitrhmdci
dutchphnnnthchhpkhihmf(x)khtnh.
5.CCCNGTHCNEWTONCOTES
1.Khinimchung:Takhosttchphn
b
J= f(x)dx
(1)
Tachiaminlytchphn[a,b]thnh(n1)onbngnhauc
chiudimionh=(ba)/(n1)nhhnhvvkhiuccimchial
317
x1,x2,..,xn.Sautaxpxhmf(x)bnga
thc bc (n 1) i qua cc nt. a thc ni
suyLagrangecaf(x)cdng:
n
Nhvy,xpxtchphn(1)l:
b
x1
i =1
i =1
xn
x2 x3
(2)
(3)
Trong:
b
A i = Li (x)dx
i = 1,2,...,n
Cng thc (2) l cng thc Newton Cotes. Vi n = 2 ta c cng thc hnh
thangvvin=3taccngthcSimpson.
2.Phngphphnhthang:Khin=2tac:
x x2
xb
L1 (x) =
=
x1 x 2
h
x x1 x a
L 2 (x) =
=
h
x 2 x1
h
b
1
1
h
A1 =
(x b)dx =
(b a)2 =
h
2h
2
x1=a
x2=b
A2 =
1
1
h
(x a)dx =
(b a)2 =
h
2h
2
a
Vy:
h
J = f(a) + f(b)
2
Trongthct,phngphphnhthangcpdngtrntngon.Trn
mion[xi,xi+1]tac:
h
J i = f(x i ) + f(xi+1 )
2
n
h
(7)
v: J = J i = f(x1 ) + 2f(x 2 ) + 2f(x 3 ) + L + 2f(x n 1 ) + 2f(x n )
2
i =1
TagiH=ba.Nutchphntrnctnhchbikhnhthangth:
H
k=1:
J1 = f(a) + f(b)
(8)
318
k=2:
k=3:
H 1
H
H H
J 2 = f(a) + 2f a + + f(b) = J1 + f a +
2
22
4 2
H
H
H
3H
J 2 = f(a) + 2f a + + 2f a + + 2f a +
f(b)
+
4
2
4
H
3H H
1
= J 2 + f a + + f a +
4
4 4
2
Tngqut,vik>1tac:
2 k 1
Jk =
1
H
J k1 + k1
2
2
i =1
f a +
(2i 1)H
2 k1
k = 2,3,...
(9)
Cngthc(8)lcngthchnhthanglp.Tathyrngtngchchaccnt
mixuthinkhishnhthangtnggpi.TnhdyJ1,J2,...bng(8)v(9)
cncngmtslntnhnhkhidng(7).Nhngkhidng(8)v(9)takim
tractnhhitvcthdnglpkhitchnhxcchotrc.
Taxydnghmtrapezoid()thchinthuttontrn.
functionJ=trapezoid(f,a,b,maxiter,tol)
%Quytachinhthanglap.
%Cuphap:J=trapezoid(f,a,b,k)
fa=feval(f,a);
fb=feval(f,b);
J1=(fa+fb)*(ba)/2;
fork=2:maxiter
n=2^(k2);%sodiemmoi
h=(ba)/n;%khoangchiamoi
x=a+h/2.0;%toadodiemmoithunhat
sum=0.0;
fori=1:n
fx=feval(f,x);
sum=sum+fx;
x=x+h;
end
319
J=(J1+h*sum)/2;
ifabs(J1J)<tol
break;
end
J1=J;
end
tnhtchphntadngchngtrnhcttrapezoid.m
clearall,clc
f=inline((x^3+1)*sin(x),x);
a=0;
b=1;
maxiter=50;
tol=1e6;
J=trapezoid(f,a,b,maxiter,tol)
3.PhngphpSimpson:Khin=3taccngthc
Simpson.Qua3im,hmf(x)cxpxbngmt
hm bc hai(mt parabol). tnh tch phn ta thay
hmf(x)vphibngathcnisuyNewtontin
bc2:
t(t 1) 2
P2 = y 0 + ty 0 +
y0
(10)
2!
vtac:
b
x0=a x1 x2=b
f(x)dx = P (x)dx
2
(11)
ibinx=x1+ththdx=hdt.Vix=x1tht=0vvix=x3tht=2nn:
320
P (x)dx = h y
2
+ ty 0 +
t(t 1) 2
y 0 dt
2!
t =2
t2
1 t3 t2 2
= h y 0 t + y 0 + y 0
2
2 3 2
t =0
1 8 4
= h 2y 0 + 2y 0 + 2 y 0
2 3 2
(12)
h
h
a+b
( y0 + 4y1 + y 2 ) = f(a) + 4f
+ f(b)
3
3
2
Thcttachiaon[a,b]thnh2nphnvtnhtchphntrnmioncon.
Cngcctchphntrncconcontac:
b
h
Cngthc(13)ihinlschn.
Taxydnghmsimpson()thchinthuttontrn
functions=simpson(f,a,b,n)
%nsokhoangchia
%neufchuatrongmotfiledungkihieu@degoi
%s=simpson(@f,a,b,n).
%neuflahaminline
%s=simpson(f,a,b,n).
ifmod(n,2)~=0
n=n+1
end
h=(ba)/(2*n);
s1=0;
s2=0;
fork=1:n
x=a+h*(2*k1);
s1=s1+f(x);
end
fork=1:(n1)
x=a+h*2*k;
s2=s2+f(x);
321
end
s=h*(f(a)+f(b)+4*s1+2*s2)/3;
clc
tnhtchphntadngchngtrnhctsimpson.m:
clearall,clc
f=inline(exp(x).*sin(x),x);
a=0;
b=1;
n=6;
s=simpson(f,a,b,n)
3.Phngphpcuphngthchnghi:Trong
tch phn bng phng php Simpson, cc
on c chia u v lm cho sai s khng
ging nhau trn cc on: sai s ln trn cc
onhmbininhiuvsaisnhtrncc
onhmtngibngphng.Ngcli
phngphpcuphngthchnghichiacconkhngu:ngntrncc
onhmthayinhiuvditrncconthayitvscsaisnh
khisonchianh.
Thuttoncuphngthchnghibtubngvictnhtchphnint
ivitonbon[a,b]vtngtchphnint12=int1+int2trn2on
bngnhau.Datrnintvint12tatnhsais.Nuchatchnhxc,ta
chiaimionvlpliqutrnhtnh.Tadnghm adaptivesimpson()
thchinthuttonny:
functionint=adaptivesimpson(f,a,b,tol)
mid=(b+a)/2.0;
int=simpsonapprox(f,a,b);
int12=simpsonapprox(f,a,mid)+simpsonapprox(f,mid,b);
if(abs(intint12)<15.0*tol)
int=int12;
else
leftint=adaptivesimpson(f,a,mid,tol/2);
rightint=adaptivesimpson(f,mid,b,tol/2);
322
int=leftint+rightint;
end
functionint=simpsonapprox(f,a,b)
h=(ba)/2.0;
int=h*(feval(f,a)+4.0*feval(f,(a+h))+feval(f,b))/3.0;
tnhtchphntadngchngtrnhctadaptive.m:
clc,clearall
f=inline(sqrt(x).*cos(x));
a=0;
b=1;
tol=1e5;
J=adaptivesimpson(f,a,b,tol)
6.TCHPHNROMBERG
TchphnRombergkthpquytctchphnhnhthangviphng
phpngoisuyRichardson.Trchttaavokhinim:
Ri,1=Ji
b
lphnhthanglnthi.
TchphnRombergbtutR1,1=J1(mthnhthang)vR2,1=J2 (hai
hnthang).SautnhR2,2bngcchngoisuy:
2 2 R 2 ,1 R 1,1 4
1
R 2 ,2 =
= R 2 ,1 R 1,1
(1)
2
2 1
3
3
tindngtaluccktquvomngdng:
R 1,1
R
2 ,2
2 ,1
BctiptheoltnhR3,1=J3(bnhnhthang)vlplingoisuyRichadson
tac:
2 2 R 3,1 R 2 ,1 4
1
R 3,2 =
= R 3,1 R 2 ,1
(2)
2
2 1
3
3
323
2 4 R 3,2 R 2 ,2 16
1
=
R
R 2 ,2
v: R 3,3 =
3,2
24 1
15
15
CcphntcaRbygigm:
R 1,1
R 2 ,1 R 2 ,2
Cngthctngqutdngtrongsnyl:
4 j1 R i ,j1 R i1,j1
R i ,j =
i > 1, j = 2, 3,...
4 j1 1
Taxydnghmromberg()thchinthuttontrn:
functionJ=romberg(f,a,b,maxiter,tol)
m=1;
h=ba;
err=1;
j=0;
R=zeros(4,4);
R(1,1)=h*(f(a)+f(b))/2;
while((err>tol)&(j<maxiter))|(j<4)
j=j+1;
h=h/2;
s=0;
forp=1:m
x=a+h*(2*p1);
s=s+f(x);
end
R(j+1,1)=R(j,1)/2+h*s;
m=2*m;
fork=1:j
R(j+1,k+1)=R(j+1,k)+(R(j+1,k)R(j,k))/(4^k1);
end
err=abs(R(j,j)R(j+1,k+1));
end
J=R(j+1,j+1);
(3)
(4)
324
tnhtchphntadngchngtrnhctromberg.m:
clearall,clc
f=inline(exp(x).*sin(x),x);
a=0;
b=1;
maxiter=20;
tol=1e6;
J=romberg(f,a,b,maxiter,tol)
7.TCHPHNBOOL
Takhosthmy=f(x)trnon[x0,x4],vi:
x1=x0+h,x2=x0+2h,x3=x0+3h,x4=x0+4h
TheoBool,tchphn:
x4
2h m
J = f(x)dx =
7f(x0 ) + 32f(x1 ) + 12f(x 2 ) + 32f(x 3 ) + 7f(x 4 )
45
k
1
=
x0
Xttchphn:
b
J = f(x)dx
a
ba
bicc
4m
imchiaxk=x0+hk=a+hk,k=0,1,...,4m.CngthcBoolcho4mon
conl:
b
2h m
7f(x0 ) + 32f(x1 ) + 12f(x 2 ) + 32f(x 3 ) + 7f(x 4 )
J = f(x)dx =
45
k =1
a
Tachiaon[a,b]thnh4monconunhaucrng h =
Taxydnghmintbool()thchinthuttonny
functiontp=intbool(f,a,b,m)
%TinhtichphanbangphuongphapBool
a=0;
b=2;
m=2;
h=(ba)/(4*m);
fork=1:4*m
x(k)=a+k*h;
325
end
tp=0;
j=1;
fork=1:m
tp=tp+(7*feval(f,a)+32*feval(f,x(j))+...
12*feval(f,x(j+1))+32*feval(f,x(j+2))+7*feval(f,x(j+3)));
a=x(4*k);
j=4*k+1;
end
tp=tp*h*2/45;
tnhtchphncamthmtadngchngtrnhctintbool.m:
clearall,clc
formatlong
f=inline(x.*sin(x));
a=0;
b=2;
m=2;
J=intbool(f,a,b,m)
8.CNGTHCTCHPHNFILON
Giscntnhtchphn:
b
J = f(x)cos(x)dx
a
LctacthdngcngthctchphnFilon:
xn
f(x)cos(tx)dx
x0
2 4
th S2n
45
Trong:
a=x0,b=xn,t=
n
326
C 2n 1 = f2i1cos(tx 2i1 )
i =0
n
1 sin 2 sin 2
() = +
3
2 2
2
1 + cos sin 2
() = 2
2
3
sin cos
() = 4 3 2
Taxydnghmfilon()thchincccngthctrn:
functionint=filon(f,a,b,t,m,key)
%hamfilontinhgandungtichphan
b
% f (x)cos(tx)dx neukey=1,
a
%hay
b
% f (x)sin(tx)dx neukey=2,
a
%dungmdiemtheoquytacFilon(mle).
if(any(size(a)~=[11]))
error(Thongsoaphailaso.);
end
if(any(size(b)~=[11]))
error(Thongsobnhapvaophailaso.);
end
if(any(size(t)~=[11]))
error(Thongsotphailaso.);
end
if(any(size(m)~=[11]))
error(Thongsomphailaso.);
end
if(any([(fix(m)~=m)(rem(m,2)==0)]))
error(Thongsomphailasole.);
end
327
if(m<3)
error(Thongsomphailonhon3.);
end
if(all([(key~=1)(key~=2)]))
error(Thongsokeyphaila1hoac2.);
end
n=m1;
h=(ba)/n;
th=t*h;
thh=th*th;
if(abs(th)>=0.1)
s=sin(th);
c=cos(th);
alfa=(1.0+s*(c2.0*s/th)/th)/th;
beta=2.0*(1.0+c*c2.0*s*c/th)/thh;
gamma=4.0*(s/thc)/thh;
else
alfa=th*thh*(2.0/45.0+thh*(2.0/315.0+2.0*thh/4725.0));
beta=2.0/3.0+thh*(2.0/15.0+thh*(4.0/105.0+2.0*thh/567.0));
gamma=4.0/3.0+thh*(2.0/15.0+thh*(1.0/210.0thh/11340.0));
end
args=[ab];
fbounds=feval(f,args);
s1=sin(a*t);
s2=sin(b*t);
c1=cos(a*t);
c2=cos(b*t);
if(key==1)
sum=s2*fbounds(2)s1*fbounds(1);
sum0=0.5*(c1*fbounds(1)+c2*fbounds(2));
if(n>2)
args=(a+(2:2:n2)*h);
sum0=sum0+cos(t*args)*feval(f,args);
end
args=(a+(1:2:n1)*h);
sum1=cos(t*args)*feval(f,args);
328
else
sum=c1*fbounds(1)c2*fbounds(2);
%sum=(c1*fbounds(1)c2*fbounds(2));
sum0=0.5*(s1*fbounds(1)+s2*fbounds(2));
%if(n==2)
if(n>2)
args=(a+(2:2:n2)*h);
sum0=sum0+sin(t*args)*feval(f,args);
end
args=(a+(1:2:n1)*h);
sum1=sin(t*args)*feval(f,args);
end
int=h*(alfa*sum+beta*sum0+gamma*sum1);
Khitnhtchphntadngchngtrnhctintfilon.m:
clearall,clc
a=0;
b=2;
key=2;
t=3;
m=51;
f=inline((x.^3+1).*sin(x));
J=filon(f,a,b,t,key)
9.QUYTCHARDY
b
x7
x1
tngchnhxctadngphngphpchiaon[a,b]thnhmonv
trnmiontadngcngthcHardy.Taxydnghminthardy()thc
hincngthctrn:
functiontp=inthardy(f,a,b,m)
329
%TinhtichphanbangphuongphapHardy
h=(ba)/(6*m);
fork=1:6*m
x(k)=a+k*h;
end
tp=0;
j=1;
fork=1:m
tp=tp+(28*feval(f,a)+162*feval(f,x(j))+...
220*feval(f,x(j+2))+162*feval(f,x(j+4))+28*feval(f,x(j+5)));
a=x(6*k);
j=6*k+1;
end
tp=tp*h*0.01;
tnhtchphntadngchngtrnhctinthardy.m:
clearall,clc
formatlong
f=inline(exp(x).*sin(x),x);
a=0;
b=2;
m=20;
J=inthardy(f,a,b,m)
10.QUYTCDURANT
b
xn
2 + 11 f + f + L + f + 11 f + 2 f
1
2
3
n2
n 1
n
10
10
5
f(x)dx = h 5 f
x1
Taxydnghmintdurant()thchincngthctrn:
functiontp=intdurant(f,a,b,n)
%TinhtichphanbangphuongphapDurant
h=(ba)/(n);
330
fork=1:n
x(k)=a+k*h;
end
tp=0;
fori=2:n2
tp=tp+feval(f,x(i));
end
tp=tp+0.4*feval(f,a)+1.1*feval(f,x(1))+...
1.1*feval(f,x(n1))+0.4*feval(f,x(n));
tp=h*tp;
tnhtchphntadngchngtrnhctintdurant.m:
clearall,clc
formatlong
f=inline(1./(1+x.^2));
a=0;
b=2;
n=50;
J=intdurant(f,a,b,n)
11.QUYTCSHOVELTON
b
x11
f(x)dx =
x1
5
h 8 ( f1 + f11 ) + 35 ( f2 + f4 + f8 + f10 ) + 15 ( f3 + f5 + f7 + f9 ) + 36f6
126
tngchnhxctadngphngphpchiaon[a,b]thnhmonv
trnmiontadngcngthcShovelton.Taxydnghm intshovelton()
thchincngthctrn:
functiontp=intshovelton(f,a,b,m)
%TinhtichphanbangphuongphapShovelton
h=(ba)/(10*m);
fork=1:10*m
x(k)=a+k*h;
331
end
tp=0;
j=1;
fork=1:m
tp=tp+8*(feval(f,a)+feval(f,x(j+9)))+...
35*(feval(f,x(j))+feval(f,x(j+2))+feval(f,x(j+6))+feval(f,x(j+8)))+...
15*(feval(f,x(j+1))+feval(f,x(j+3))+feval(f,x(j+5))+feval(f,x(j+7)))+...
36*feval(f,x(j+4));
a=x(10*k);
j=10*k+1;
end
tp=tp*h*5/126;
tnhtchphntadngchngtrnhctshovelton.m:
clearall,clc
formatlong
f=inline(1./(1+x.^2));
a=0;
b=2;
m=20;
J=intshovelton(f,a,b,m)
12.QUYTCWEDDLE
b
x7
f(x)dx = 0.3h ( f
x1
tngchnhxctadngphngphpchiaon[a,b]thnhmonv
trn mi on ta dng cng thc Weddle. Ta xy dng hm intweddle()
thchincngthctrn:
functiontp=intweddle(f,a,b,m)
%TinhtichphanbangphuongphapWeddle
h=(ba)/(6*m);
332
fork=1:6*m
x(k)=a+k*h;
end
tp=0;
j=1;
fork=1:m
tp=tp+feval(f,a)+5*feval(f,x(j))+...
feval(f,x(j+1))+6*feval(f,x(j+2))+...
feval(f,x(j+3))+5*feval(f,x(j+4))+feval(f,x(j+5));
a=x(6*k);
j=6*k+1;
end
tp=tp*h*0.3;
tnhtchphntadngchngtrnhctweddle.m:
formatlong
f=inline(exp(x).*sin(x),x);
a=0;
b=2;
m=20;
J=intweddle(f,a,b,m)
13.CUPHNGGAUSS
1. Cc cng thc tch phn Gauss: Trong phn ny chng ta s xt mt s
phngphpcuphngGauss:
TchphnGaussLegendredngxpx:
b
f(t)dt
a
TchphnGaussHermitedngxpx:
t
e f(t)dt
2
TchphnGaussLaguerredngxpx:
f(t)dt
333
TchphnGaussChebyshev1dngxpx:
1
1
1 t2
f(t)dt
TchphnGaussChebyshev2dngxpx:
1
1 t 2 f(t)dt
2.TchphnGaussLegendre:Nuhmdidutchphnf(t)lathc
bcnhhnhaybng3(bng2n1)thtchphn:
b
f(t)dt
(1)
cthtnhchnhxcbi2(n)imbngcchdngcngthc:
J[t1,t2]=w1f(t1)+w2f(t2)
viw1vw2lcctrngsvt1,t2lccnt.
(2)
+1
f(t)=1
(3a)
(3b)
2
w1f(t1 ) + w 2f(t 2 ) = w1t 12 + w 2 t 22 t 2dt =
3
1
(3c)
(3d)
(4)
+1
f(t)=t
1
+1
f(t)=t2
+1
f(t)=t
3
2 2
2
1
Nhn(3b)vi t vtrktqucho(3d)tac:
w 2 (t 32 t 12 t 2 ) = 0 nn t2=t1
Thayt2=t1vo(3b)tac:
(w1w2)t1=0 nn w1=w2
Thayw1=w2vo(3a)tac:
nn w1=w2=1
w1+w2=2
Thayw1=w2=1vo(3c)tac:
2
1
t12 + ( t 1 )2 = nn t1 = t 2 =
3
3
Nhvy(2)trthnh:
1 1
J [ t1 ,t 2 ] = f
+ f
3 3
334
nghalcngthcxpxnychotaktquchnhxcca(1)khin3.
Khi a thc di du tch phn c bc nh hn (2n 1) th cng thc
tchphnGaussLegendre:
n
J GL [ t1 ,t 2 ,K ,t n ] = w i f(t i )
(5)
i =1
chotchphnchnhxccaathc.Ccimnt(nnt)lnghimcaa
thcLegendrebcn:
n/2
(2n 2i)!
L n (t) = ( 1)i n
t n 2i
(6a)
2
i!(n
i)!(n
2i)!
i =0
haytnhtheocngthclp:
(2n 1)tL n 1 (t) (n 1)L n2 (t)
L n (t) =
(6b)
n
toraathcLegendretadnghmlegendre():
functionp=legendre(n)
%taoradathucLegendre
p0=1;
p1=[10];
ifn<=0
p=p0;
elseifn==1
p=p1;
end
fork=2:n
p=((2*k1)*[p10](k1)*[00p0])/k;
p0=p1;
p1=p;
end
Chonimnt,tacthtnhcctrngstngngcacngthctchphn
GaussLegendrenimbngcchgiihphngtrnhtuyntnh:
335
1
2
1
1 L 1 w n,1
t2
t i L t n w n,1
t1
t 22
t i2 L t 2n w n,i = 1(1)i / n
t1
M
M
M
M
M M
M
n 1 n 1 n 1
t2
ti
L t nn 1 w n,n 1(1)n / n
t1
trongphntthicavphiRHS(i)l:
+1
+1
1 i
1 ( 1)i
i 1
RHS(i) = t dt = t =
n
i
1
1
(8)
(7)
Thtctmnimntvcctrngswn,icacngthctchphnGauss
Legendrecvittronghmgausslegendre():
function[t,w]=gausslegendre(n)
ifn<0
fprintf(\nBaccuadathucLegendrephailasoduong\n);
return;
else
t=roots(legendre(n));%taothanhmothangcuamatran;
A(1,:)=ones(1,n);
b(1)=2;
fori=2:n%Pt.(7)
A(i,:)=A(i1,:).*t;
ifmod(n,2)==0
b(i)=0;
elseb(i)=2/n;%Pt.(8)
end
end
w=b/A;
end
dx =
dt
(9)
2
2
336
2
a
1
vxpxbngcngthc:
ba n
(b a)t i + a + b
(10)
J [ x1 ,x 2 ,K ,x n ] =
w i f(xi ) vi xi =
2 i =1
2
Vicchuyninycthchinbnghmintglegendre():
functionJ=intglegendre(f,a,b,n)
[t,w]=gausslegendre(n);
x=((ba)*t+a+b)/2;%Pt.(9)
fx=feval(f,x);
J=w*fx*(ba)/2;%Pt.(10)
tnhtchphntadngchngtrnhctgausslegendre.m:
clc,clearall
%tinhtichphanhamf(x)trendoan[a,b]
%n<=25;
f=inline(exp(x).*sin(x),x);
a=0;
b=1;
n=20;
J=intglegendre(f,a,b,n)
3.TchphnGaussHermite:CngthctchphnGaussHermitecdng:
n
J GH [ t 1 ,t 2 ,K ,t n ] = w i f(t i )
(11)
i =1
dngtnhtchphncahmm e t nhnvif(t)lathcbcnhhn
(2n1)trnon[,]:
2
J=
t2
f(t)dt
(12)
(13a)
CcimntlnghimcaathcHermite:
n/2
( 1)i
Hn =
n(n 1)L(n 2i + 1)(2t)n 2i
i!
i =0
337
hay:
H n (t) = 2tH n 1 (t) Hn 1 (t)
(13b)
toracchscaathcHermitetheo(13b)taxydnghmhermite():
functionp=hermite(n)
%Hn+1(x)=2xHn(x)Hn(x)
ifn<=0
p=1;
else
p=[20];
forn=2:n
p=2*[p0][00polyder(p)];%Pt.(13b)
end
end
ChonimnttatmcctrngscacngthctchphnGaussHermite
bngcchgiihphngtrnh(7)vivphil:
+
RHS(1) =
t2
dt =
+ +
x2
(x 2 + y 2 )
dxdy =
r2
2rdr = e r
(14a)
RHS(n) = 0 nunchn
+
RHS(n) =
dx e y dy
+
e t
t 2 n 1
dt =
t
(2t)e
1 n2
t dt
2
(14b)
1
1
1
= e t t n 2 + (n 2) e t t n 3dt = (n 2)RHS(n 2)
2
2
2
function[t,w]=gausshermite(n)
ifn<0
error(BaccuadathucHermitephailasoduong);
end
t=roots(hermite(n));
2
338
A(1,:)=ones(1,n);
b(1)=sqrt(pi);
forn=2:n
A(n,:)=A(n1,:).*t;%Pt.(7)
ifmod(n,2)==1
b(n)=(n2)/2*b(n2);%Pt.(14)
else
b(n)=0;
end
end
w=b/A;
Taxydnghmintghermite()tnhtchphn:
functionJ=intglegendre(f,n)
[t,w]=gausshermite(n);
fx=feval(f,t);
J=w*fx;%Pt.(11)
tnhtchphntadngchngtrnhctgausshermite.m:
clc,clearall
f=inline((x^3+1)*sin(x),x);
n=15;
J=intghermite(@f1,n)
4. Tch phn Gauss Laguerre: Khi dng cng thc tch phn Gauss
Laguerre(5)trthnh:
n
J GLa [ t 1 ,t 2 ,K ,t n ] = w i f(t i )
(16)
(17)
i =1
vchotaktqucatchphn:
+
J= e t f(t)dt
CcimntlnghimcaathcLaguerrebcn:
339
Ln =
0
( 1)i
ni
ti
i! (n i)!i!
(18a)
hay:
(18b)
toraathcLaguerrebcntadnghmlaguerre():
functionp=laguerre(n)
%Ln+1(x)=(2n+1x)Ln(x)nLn1(x)
p0=1;
p1=[11];
ifn<=0
p=p0;
elseifn==1
p=p1;
end
fork=2:n
p=([p10]+(2*k1)*[0p1](k1)*[00p0])/k;
p0=p1;
p1=p;
end
Chonnttitacthtmcctrngstngngbngcchgiihphng
trnhistuyntnh(7)vivphil:
RHS(1) = e tdt = e t 0 = 1
RHS(n) = e t
t n 1
t n 1
dt = e t
(19a)
(19b)
+ (n 1) e t t n 2dt
0
= (n 1)RHS(n 1)
tnhtoccntvtrngstngngtadnghmgausslaguerre():
function[t,w]=gausslaguerre(n)
ifn<0
error(BaccuadathucLaguerrephailasoduong);
end
t=roots(laguerre(n));
340
A(1,:)=ones(1,n);
b(1)=1;
fori=2:n
A(i,:)=A(i1,:).*t;%Pt.(7)
b(i)=(i1)*b(i1);%Pt.(15)
end
w=b/A;
Hmintglaguerre()dngtnhtchphn:
functionJ=intglaguerre(f,n)
[t,w]=gausslaguerre(n);
fx=feval(f,t);
J=w*fx;%Pt.(10)
tnhtchphntadngchngtrnhctgausslaguerre.m:
clearall,clc
formatlong
f=inline((x.^2).*cos(x),x);
n=10;
J=intglaguerre(f,n)
5. Tch phn Gauss Chebyshev: Cng thc tnh tch phn Gauss
Chebyshev1cdng:
n
J GC1 [ t 1 ,t 2 ,K ,t n ] = w i f(t i )
(20)
(21)
(22)
(23)
i =1
Cngthc(20)chotatnhtchphn:
+1
J =
1
1 t2
f(t)dt
CcimntlnghimcaathcChebyshevbcn:
(2i 1)
i=1,2,...,n
t i = cos
2n
Cctrngstngngl:
w in = i=1,2,...,n
341
Taxydnghm gausscheb1()tnhcctoccntvtrngstng
ng:
function[t,w]=gausscheb1(n)
ifn<0
error(BaccuadathucChebyshevphailasoduong);
end
fori=1:n
t(i)=cos((2*i1)*pi/(2*n));
w(i)=pi/n;
end
Hmintgcheb1()dngtnhtchphntheocngthcGaussChebyshev1:
functionJ=intgcheb1(f,n)
[t,w]=gausscheb1(n);
fx=feval(f,t);
fx=sqrt(1t.^2).*fx;
J=w*fx;%Pt.(21)
tnhmttchphnnotadngchngtrnhctgausscheb1.m:
clearall,clc
formatlong
f=inline(1./(1+x.^2));
n=16;
J=intgcheb1(f,n)
CngthctnhtchphnGaussChebyshev2cdng:
n
J GC1 [ t 1 ,t 2 ,K ,t n ] = w i f(t i )
(24)
(25)
(26a)
i =1
Cngthc(24)chotatnhtchphn:
J =
+1
1 t 2 f(t)dt
CcimntlnghimcaathcChebyshevbcn:
i
t i = cos
i=1,2,...,n
n +1
342
Cctrngstngngl:
i
w in =
sin 2
(26b)
i=1,2,...,n
n+1
n + 1
Taxydnghm gausscheb2()tnhcctoccntvtrngstng
ng:
function[t,w]=gausscheb2(n)
ifn<0
error(BaccuadathucChebyshevphailasoduong);
end
fori=1:n
t(i)=cos(i*pi/(n+1));
w(i)=(pi/(n+1))*(sin(i*pi/(n+1))).^2;
end
Hmintgcheb2()dngtnhtchphntheocngthcGaussChebyshev2:
functionJ=intgcheb2(f,n)
[t,w]=gausscheb2(n);
fx=feval(f,t);
fx=(1./sqrt(1t.^2)).*fx;
J=w*fx;%)
tnhmttchphnnotadngchngtrnhctgausscheb2.m:
clearall,clc
formatlong
f=inline(1./(1+x.^2));
n=16;
J=intgcheb2(f,n)
6.TchphnGaussviimkdlogarit:Taccngthccuphng:
i =1
f(x)ln(x)dx = A f(x )
i
Trongvin=6tac:
343
xi 0.0216334 0.129583
Ai 0.238764 0.308287
0.314020
0.245317
Taxydnghmintlogarit()thchintchphnny:
functiontp=intlogarit(f)
n=6;
x=[0.0216344;0.129583;0.314020;0.538657;0.756916;0.922669];
A=[0.238764;0.308287;0.245317;0.142009;0.0554546;0.010169];
tp=0;
fori=1:n
t=feval(f,x(i));
tp=tp+A(i)*t;
end
tp=tp;
tnhtchphntadngchngtrnhctintlogarit.m:
clearall,clc
formatlong
f=inline((x.^3+1).*sin(x),x);
J=intlogarit(f)
14.TCHPHNGAUSSLOBATTO
n 1
i=2
2
n(n 1) [ P (x )]
n 1
Taxydnghmgausslobatto()tnhccntvcctrngstngng:
function[x,w]=gausslobatto(N)
344
%TinhcacnutvatrongsoLegendreGaussLobatto
N1=N+1;
%DautiendungcacnutChebyshevGaussLobatto
x=cos(pi*(0:N)/N);
%TinhmatranLegendreVandermonde
P=zeros(N1,N1);
xold=2;
whilemax(abs(xxold))>eps
xold=x;
P(:,1)=1;
P(:,2)=x;
fork=2:N
P(:,k+1)=((2*k1)*x.*P(:,k)(k1)*P(:,k1))/k;
end
x=xold(x.*P(:,N1)P(:,N))./(N1*P(:,N1));
end
w=2./(N*N1*P(:,N1).^2);
Thngthng,ta cntnhtchphntrnon[a,b]nncnibin.Tch
phntrn[a,b]cahmf(x)ctnhnhhmintgausslobatto():
functionJ=intgausslobatto(f,n,a,b)
[t,w]=gausslobatto(n);
x=((ba)*t+a+b)/2;%Pt.(9)
fx=feval(f,x);
J=w*fx*(ba)/2;%Pt.(10)
clearall,clc
%tinhtichphanhamf(x)trendoan[a,b]
%n<=25;
f=inline((x.^3+1).*sin(x),x);
a=0;
b=1;
345
n=6;
J=intgausslobatto(f,n,a,b)
15.TCHPHNGAUSSKRONROD
Taxttchphn:
b
J = f(x)dx
a
TheocngthccuphngGausKrnodtac:
i =1
J = f(x)dx = w i f(x i )
Trongccntlxivcctrngstngnglwi.Ccgitrnaykhin=
41clutronghmkronrod:
function[x,w]=kronrod
%cacnutvatrongsotuongungtrongtichphanGaussKronrod
x(1)=0.9988590315882777;
x(2)=0.9931285991850949;
x(3)=0.9815078774502503;
x(4)=0.9639719272779138;
x(5)=0.9408226338317548;
x(6)=0.9122344282513259;
x(7)=0.8782768112522820;
x(8)=0.8391169718222188;
x(9)=0.7950414288375512;
x(10)=0.7463319064601508;
x(11)=0.6932376563347514;
x(12)=0.6360536807265150;
x(13)=0.5751404468197103;
x(14)=0.5108670019508271;
x(15)=0.4435931752387251;
x(16)=0.3737060887154196;
x(17)=0.3016278681149130;
x(18)=0.2277858511416451;
x(19)=0.1526054652409227;
x(20)=0.7652652113349733E01;
346
x(21)=0.0;
x(22)=0.7652652113349733E01;
x(23)=0.1526054652409227;
x(24)=0.2277858511416451;
x(25)=0.3016278681149130;
x(26)=0.3737060887154196;
x(27)=0.4435931752387251;
x(28)=0.5108670019508271;
x(29)=0.5751404468197103;
x(30)=0.6360536807265150;
x(31)=0.6932376563347514;
x(32)=0.7463319064601508;
x(33)=0.7950414288375512;
x(34)=0.8391169718222188;
x(35)=0.8782768112522820;
x(36)=0.9122344282513259;
x(37)=0.9408226338317548;
x(38)=0.9639719272779138;
x(39)=0.9815078774502503;
x(40)=0.9931285991850949;
x(41)=0.9988590315882777;
w(1)=0.3073583718520532E02;
w(2)=0.8600269855642942E02;
w(3)=0.1462616925697125E01;
w(4)=0.2038837346126652E01;
w(5)=0.2588213360495116E01;
w(6)=0.3128730677703280E01;
w(7)=0.3660016975820080E01;
w(8)=0.4166887332797369E01;
w(9)=0.4643482186749767E01;
w(10)=0.5094457392372869E01;
w(11)=0.5519510534828599E01;
w(12)=0.5911140088063957E01;
w(13)=0.6265323755478117E01;
w(14)=0.6583459713361842E01;
347
w(15)=0.6864867292852162E01;
w(16)=0.7105442355344407E01;
w(17)=0.7303069033278667E01;
w(18)=0.7458287540049919E01;
w(19)=0.7570449768455667E01;
w(20)=0.7637786767208074E01;
w(21)=0.7660071191799966E01;
w(22)=0.7637786767208074E01;
w(23)=0.7570449768455667E01;
w(24)=0.7458287540049919E01;
w(25)=0.7303069033278667E01;
w(26)=0.7105442355344407E01;
w(27)=0.6864867292852162E01;
w(28)=0.6583459713361842E01;
w(29)=0.6265323755478117E01;
w(30)=0.5911140088063957E01;
w(31)=0.5519510534828599E01;
w(32)=0.5094457392372869E01;
w(33)=0.4643482186749767E01;
w(34)=0.4166887332797369E01;
w(35)=0.3660016975820080E01;
w(36)=0.3128730677703280E01;
w(37)=0.2588213360495116E01;
w(38)=0.2038837346126652E01;
w(39)=0.1462616925697125E01;
w(40)=0.8600269855642942E02;
w(41)=0.3073583718520532E02;
Tadnghmintgkronrod()chuynonlytchphnt[11]sangon
[a,b]:
functionJ=intgkronrod(f,a,b)
[t,w]=kronrod;
x=((ba)*t+a+b)/2;)
fx=feval(f,x);
J=w*fx*(ba)/2;
348
tnhtchphntadngchngtrnhctgausskronrod.m:
clc,clearall
%tinhtichphanhamf(x)trendoan[a,b]
f=@f2;
a=0;
b=1;
J=intgkronrod(f,a,b)
16.TCHPHNGAUSSJACOBI
TchphnGaussJacobi,cngiltchphnMehler,dngtnhtch
phndng:
Taxttchphn:
b
J = (1 x) (1 + x) f(x)dx
a
TheocngthccuphngGausJacobitac:
i =1
J = f(x)dx = w i f(x i )
TrongxilnnghimcaathcJacobi.CccngthctnhathcJacobi
l:
P0( , ) (x) = 1
b1n
Vi: b1n=2i(i++)(2i++2)
b2n=(2i++1)(22)
b3n=(2i++2)(2i++1)(2i++)
b4n=2(i+1)(i+1)(2i++)
Cctrngswicxcnhbng:
(i + + 1)(i + + 1)
2 2i+++1 n!
wi =
2
(i + + + 1)
(1 xi2 ) [ Vn (xi )]
( , )
n
vi:
2 n n!
Vn = P (x)
( 1)n
Taxydnghmgaussjacobi()tmxivwi:
( , )
n
349
function[x,w]=gaussjacobi(n,alfa,beta)
%tinhcactrongsovahoanhdotrongtichphanGaussJacobi
p=[0.5*(alfa+beta+2)0.5*(alfabeta)];
a=1;
b=p;
fori=2:n+1
b1=2*i*(i+alfa+beta)*(2*i+alfa+beta2);
b2=(2*i+alfa+beta1)*(alfa^2beta^2)/b1;
b3=((2*i+alfa+beta2)*(2*i+alfa+beta1)*(2*i+alfa+beta))/b1;
b4=(2*(i+alfa1)*(i+beta1)*(2*i+alfa+beta))/b1;
s=[b3b2];
ifi==n+1
pn1=conv(s,b)[00b4*a];
break;
else
p=conv(s,b)[00b4*a];
end
a=b;
b=p;
end
x=roots(p);
w=zeros(n,1);
dv=polyder(p);
ifmod(n,2)==1
sign=1;
else
sign=1;
end
dv=dv*(2^n)*factorial(n)/sign;
pn1=pn1*(2^(n+1))*factorial(n+1)/sign;
fori=1:n
num=(2*n+alfa+beta+...
2)*gamma(n+alfa+1)*gamma(n+beta+1)*(2^(2*n+alfa+beta+1))*factorial(n);
den=(n+alfa+beta+1)*gamma(n+alfa+beta+1)*polyval(dv,...
x(i))*polyval(pn1,x(i));
w(i)=num/den;
350
end
Tiptheotaxydnghmintgaussjacobi()tnhtchphn:
functionJ=intgaussjacobi(f,n,alf,bta)
[t,w]=gaussjacobi(n,alf,bta);
fx=feval(f,t);
J=w*fx;
tnhtchphntadngchngtrnhctgaussjacobi.m:
clearal,clc
f=inline(exp(x).*sin(x),x);
n=6;%n<=40
alfa=1;
beta=0;
J=intgaussjacobi(f,n,alfa,beta)
17.TCHPHNRADAU
CuphngRadaudngtnhtchphn:
1
J = f(x)dx
(1)
(2)
TheocngthccuphngRadautac:
i=2
im(1)lmtmtnttrongsccntcacuphng.Cchonhcn
lilnghimcaathc:
Pn 1 (x) Pn (x)
(3)
1+ x
TrongP(x)lathcLegendre.Cctrngstngngctnhtheo:
1 xi
wi = 2
(4)
2
n [ Pn 1 (xi )]
vimcuic:
2
w1 = 2
n
Taxydnghmradau()tnhcchonhxivtrngswi:
351
function[x,w]=radau(n)
%TinhcachoanhdovatrongsotrongcauphuongRadau
tol=1e8;
%danhgiabandaucachoanhdolacanutChebyshevGaussRadau
x(1:n,1)=cos(2.0*pi*(0:n1)/(2*n1));
p=zeros(n,n+1);
xold(1:n,1)=2.0;
while(tol<max(abs(x(1:n,1)xold(1:n,1))))
xold=x;
p(1,1:n+1)=(1.0).^(0:n);
p(2:n,1)=1.0;
p(2:n,2)=x(2:n,1);
forj=2:n
p(2:n,j+1)=((2*j1)*x(2:n,1).*p(2:n,j)+(j+1)*p(2:n,j1))/j;
end
x(2:n,1)=xold(2:n,1)((1.0xold(2:n,1))/n)...
.*(p(2:n,n)+p(2:n,n+1))./(p(2:n,n)p(2:n,n+1));
end
w=zeros(n,1);
w(1)=2/n^2;
functionJ=intradau(f,n,a,b)
[t,w]=radau(n);
x=((ba)*t+a+b)/2;
fx=feval(f,x);
J=w*fx*(ba)/2;
tnhtchphntadngchngtrnhctradau.m:
clearal,clc
f=inline(x.*sin(x));
n=6;%n<=40
a=1;
352
b=3;
J=intradau(f,n,a,b)
18.TCHPHNCHEBYSHEVRADAU
CuphngChebyshevRadaudngtnhtchphn:
1
J = f(x)dx
(1)
(2)
TheocngthccuphngChebyshevRadautac:
i=2
J = f(x)dx = w i [ f(xi ) f( xi )]
Cchonhxivtrngstngngwichotrongbng:
0.3549416
0.6433097
0.7783202
xi
wi
0.1223363
0.1223363
0.1223363
Taxydnghmchebradau()chaccgitrxvw:
function[x,w]=chebradau
x(1)=0.3549416;
x(2)=0.6433097;
x(3)=0.7783202;
x(4)=0.9481574;
w(1)=0.1223363;
w(2)=0.1223363;
w(3)=0.1223363;
w(4)=0.1223363;
vhmintchebradau()tnhtchphn:
functionJ=intchebradau(f,a,b)
[t,w]=chebradau;
fx1=feval(f,t);
fx2=feval(f,t);
J=(w*fx1w*fx2);
0.9481574
0.1223363
353
tnhtchphncamthmcthtadngchngtrnhctchebradau.m:
clearal,clc
f=inline(exp(x).*sin(x),x);
J=intchebradau(f)
19.TCHPHNGAUSSRADAU
CngthccuphngGaussRadaucdng:
n 1
i=2
w1 =
(n + 1)2
1 xi
wi =
2
(n + 1) [ Pn +1 (xi )]
Ta xy dng hm gaussradau() tnh cc honh v trng s ca cu
phng:
function[x,w]=gaussradau(N)
%tinhcacnutvatrongsocuacauphuongGaussRadau
N1=N+1;
%dungcacnutChebyshevGaussRadaulamxapxidautien
x=cos(2*pi*(0:N)/(2*N+1));
P=zeros(N1,N1+1);
xold=2;
free=2:N1;
whilemax(abs(xxold))>eps
xold=x;
P(1,:)=(1).^(0:N1);
P(free,1)=1;
P(free,2)=x(free);
fork=2:N1
P(free,k+1)=((2*k1)*x(free).*P(free,k)(k1)*P(free,k1))/k;
end
354
N1)
P(free,
Tadnghmintgaussradau()tnhtchphncahmf(x)trnon[a,b]:
functionJ=intgaussradau(f,n,a,b)
[t,w]=gaussradau(n);
x=((ba)*t+a+b)/2;
fx=feval(f,x);
J=w*fx*(ba)/2;
tnhtchphncahmtadngchngtrnhctgaussradau.m:
clearall,clc
f=inline(exp(x).*sin(x),x);
n=6;
a=1;
b=3;
J=intgaussradau(f,n,a,b)
20.ATHCNISUYVTCHPHNS
Tmathcnisuy,cthlathcLagrange,athcNewton...
Tmtchphncaathcnisuy
Sauychngtasxydngchngtrnhctinterp.mtnhtchphndng
athcnisuyLagrange:
clearall,clc
x=[1.00001.20001.40001.60001.80002.0000];
y=[1.92211.97561.65170.85010.49842.4199];
l=lagrange(x,y);
355
n=length(l);
p=conv(l,[10]);
n=length(p);
fori=1:n1
q(i)=p(i)/(ni);
end
q(n)=p(n);
tp=polyval(q,x(length(x)))polyval(q,x(1));
21.TCHPHNKP
1. Khi nim chung: Ta kho st tch phn ca hm z = f(x, y) trn min
R = {(x,y|a x b,c(x) y d(x)} nhhnhv.Tacntnhtchphn:
b
J = f(x, y)dxdy =
R
d(x)
f(x,y)dy
dx
c(x)
d(x)
hx0,y2
hx1,y2
hx0,y1 hx1,y1
a
x0 hx1 x1 hx2 x2
Cngthcgnngcatchphnl:
i =1
j=1
c(x)
b
hxm xm
J [a,b,c(x),d(x)] = w i v jf(x i ,y i ,j )
vicctrngswi,vjtuthucvochtnhtchphnhmmtbin.
Taxydnghm int2simpson()tnhtchphnkpbngcngthc
Simpson.
functionJ=int2simpson(f,a,b,c,d,m,n)
% tich phan kep cua ham f(x,yen mien R = {(x,y)|a <= x <= b, c(x) <= y <=
d(x)}
356
%dungquytacSimpson
ifceil(m)~=floor(m)%berongcodinhcuacacdoantrenx
hx=m;
m=ceil((ba)/hx);
end
ifmod(m,2)~=0
m=m+1;
end
hx=(ba)/m;
i=1:m+1;
x=a+(i1)*hx;
ifisnumeric(c)
cx(i)=c;%neuclahangso
else
cx(i)=feval(c,x(i));%khiclahamcuacx
end
ifisnumeric(d)
dx(i)=d;%neudlahangso
else
dx(i)=feval(d,x(i));%khidlahamcuax
end
ifceil(n)~=floor(n)%berongcodinhtheoy
hy=n;
nx(i)=ceil((dx(i)cx(i))/hy);
ind=find(mod(nx(i),2)~=0);
nx(ind)=nx(ind)+1;
else%sokhoangcodinh
ifmod(n,2)~=0
n=n+1;
end
nx(i)=n;
end
fori=1:m+1
sx(i)=simpsonfxy(f,x(i),cx(i),dx(i),nx(i));
end
kodd=2:2:m;
357
keven=3:2:m1;%thesetofodd/evenindices
J=hx/3*(sx(1)+sx(m+1)+4*sum(sx(kodd))+2*sum(sx(keven)));
functionJf=simpsonfxy(f,x,c,d,n)
%tichphanmotbiencuaf(x,y)voiRy={c<=y<=d}
ifnargin<5
n=100;
end
ifabs(dc)<eps|n<=0
Jf=0;
return;
end
ifmod(n,2)~=0
n=n+1;
end
h=(dc)/n;
y=c+[0:n]*h;
fxy=feval(f,x,y);
fxy(find(fxy==inf))=realmax;
fxy(find(fxy==inf))=realmax;
kodd=2:2:n;
keven=3:2:n1;
Jf=h/3*(fxy(1)+fxy(n+1)+4*sum(fxy(kodd))+2*sum(fxy(keven)));
tnhthtchcahnhcutadngchngtrnhctint2simp.m:
clearall,clc
%Tinhthetichhinhcau
x=[1:0.05:1];
y=[0:0.05:1];
[X,Y]=meshgrid(x,y);
f=inline(sqrt(max(1x.*xy.*y,0)),x,y);
Z=f(X,Y);
mesh(x,y,Z);
a=1;
b=1;
c=0;
358
d=inline(sqrt(max(1x.*x,0)),x);
Vs1=int2simpson(f,a,b,c,d,100,100)%sodiemchotruoc
error1=Vs1pi/3
Vs2=int2simpson(f,a,b,c,d,0.01,0.01)%berongcacdoanchotruoc
error2=Vs2pi/3
359
(1)
y
(
a
)
=
Ngitachngminhrngbitonnycmtnghimduynhtnuf
thomniukinLipschitz:
f( x , y 1 ) f( x , y 2 ) L y 1 y 2
viLlmthngsdng.
Ngitacngchngminhrngnufy(ohmcaftheoy)llin
tcvbchnthfthomniukinLipschitz.
Mtcchtngquthn,ngitanhnghahphngtrnhbc1:
y1 = f1 ( x , y 1 , y 2 ,..., y n )
y2 = f2 ( x , y 1 , y 2 ,..., y n )
yn = fn ( x , y 1 , y 2 ,..., y n )
Taphitmnghimy1,y2,...,ynsaocho:
Y( x) = f( x , X )
Y(a ) =
vi:
y1
y2
Y = ..
..
yn
f1
f2
F = ..
..
fn
y1
y2
Y = ..
..
y
n
360
Nuphngtrnhviphncbccaohn(n),nghimsphthucvo
nhngstu.nhncmtnghimring,taphichoniukinu.
Bitonscgitrunuvigitrxochotachoy(xo),y(xo),y(xo),....
y(a ) = , y(a ) =
Khitu=yvv=ytanhnchphngtrnhviphncp1:
u = v
v
=
g
(
x
,
u
,
v
)
viiukinu:u(a)=vv(a)=
(1)
y(a ) =
v cn tm nghim ca n. Ta chia on [xo,x ] thnh n phn bi cc im
chia:
xo<x1<x2<...<xn=x
TheocngthckhaitrinTaylormthmlncnxitac:
( x i +1 x i ) 2
( x i +1 x i ) 3
y( x i +1 ) = y( x i ) + ( x i +1 x i )y ( x i ) +
y (x i ) +
y( x i ) +
2
6
Nu(xi+1xi)khbthtacthbquaccshng(xi+1xi)2vccs
hngbccao
y
y(xi+1)=y(xi)+(xi+1xi)y(xi)
Trnghpccmccchu:
yi+1
(xi1xi)=h=(xxo)/n
yi
thtanhnccngthcEulerngin:
yi+1=yi+hf(xi,yi)
(2)
x
V mt hnh hc ta thy (1) cho kt qu cng
xi xi+1
chnhxcnubchcngnh.
Taxydnghmeuler()thchinthuttontrn:
361
function[X,Y]=euler(fxy,xo,xf,yo,n)
%%Giaiphuongtrinhy(x)=f(x,y(x))hayy=f(x)
ifn<2
n=2;
end
h=(xfxo)/n;
X=zeros(n+1,1);
M=max(size(yo));%sophuongtrinh(socotcuamatranY)
Y=zeros(n+1,M);
%datdieukiendau
x=xo;
X(1)=x;
y=yo;
Y(1,:)=y;
fori=1:n
ifnargin(fxy)>1
k1=h*feval(fxy,x,y);
else
k1=h*feval(fxy,x);
end
y=y+k1;
x=x+h;
X(i+1)=x;
Y(i+1,:)=y;
end
functiondy=f1(t,y)
dy=zeros(3,1);
dy(1)=y(2)*y(3);
dy(2)=y(1)*y(3);
dy(3)=0.51*y(1)*y(2);
giiphngtrnhchobihmf1(x,y)tadngchngtrnhcteuler.m:
clearall,clc
a=0;
362
b=1;
y=@f1;
ya=[011];
m=200;
[x,y]=euler(y,a,b,ya,m)
plot(x,y);
3.PHNGPHPHEUN
y=f(t,y)
Tac:
t k +1
yt
t k +1
f(t,y)dt
tk
hay:
y(t k+1 ) = y(t k ) +
t k +1
f(t,y)dt
viy(t0)=y0
tk
Nutasdngquytctchphnhnhthangthtac:
h
2
Vphi(RHS)caphngtrnhnycyk+1lgitrchabittithiimtk.
giiquytvnnytathayyk+1RHSbngcngthcxpx:
y k+1 y k + hf(t k ,y k )
Nhvy:
h
function[X,Y]=heun(fxy,xo,xf,yo,n)
%Giaiphuongtrinhy(x)=f(x,y(x))hayy=f(x)
%dungthuattoanHeunvoinbuoctinh
ifn<2
n=2;
end
363
h=(xfxo)/n;
X=zeros(n+1,1);
M=max(size(yo));%sophuongtrinh(socotcuamatranY)
Y=zeros(n+1,M);
%datdieukiendau
x=xo;
X(1)=x;
y=yo;
Y(1,:)=y;
fori=1:n
ifnargin(fxy)>1
f1=feval(fxy,x,y);
f2=feval(fxy,x+h,y+h*f1);
else
f1=feval(fxy,x);
f2=feval(fxy,x+h);
end
y=y+h*(f1+f2)/2;
x=x+h;
X(i+1)=x;
Y(i+1,:)=y.;
end
giiphngtrnhtadngchngtrnhctheun.m:
clearall,clc
a=0;
b=1;
y=inline(2*x+y);
ya=0.5;
n=10;%solantinhchin=10
[x,y]=heun(y,a,b,ya,n)
plot(x,y);
4.PHNGPHPRUNGEKUTTA
364
McdphngphpHeuntthnphngphpEulernhngnvn
chachnhxciviccbitonthct.
XtbitonCauchy(1).Gistatmcgitrgnngyica
y(xi)vmuntnhyi+1cay(xi+1).TrchttavitcngthcTaylor:
h2
h m (m)
h m + 1 ( m + 1)
y( x i +1 ) = y( x i ) + hy( x i ) +
y( x i ) + +
y (x i ) +
y
(c) (11)
2
m!
m!
vic(xi,xi+1)v:
y(x i ) = f[x i , y( x i )]
d k 1
( k)
y ( x i ) = k 1 f [x i , y( x i )]
dx
Tavitli(11)didng:
h2
h m (m)
h m + 1 ( m + 1)
y i +1 y i = hy ( x i ) +
y (x i ) + +
y (x i ) +
y
(c) (12)
2
m!
m!
TakodikhaitrinTaylorktquchnhxchn.tnhyi,yiv.v.ta
cthdngphngphpRungeKuttabngccht:
y i + 1 y i = r1 k (1i ) + r2 k (2i ) + r3 k (3i ) + r4 k (4i )
(13)
trong:
k (1i ) = hf( x i , y i )
(i)
(i)
k 2 = hf( x i + ah , y i + k 1 )
(14)
(i)
(i)
(i)
k
=
hf
(
x
+
bh
,
y
+
k
+
k
)
3
i
i
1
2
.......
(15)
(i)
k 2 = hf( x i + ah , y i + k (1i ) )
v y i +1 y i = r1 k (1i ) + r2 k (2i )
(16)
Tac:
y(x)=f[x,y(x)]
y( x) = fx [x , y( x)] + fy [x , y( x)]
................
Dovphica(12)l:
h2
hf( x i , y i ) +
fx ( x i , y i ) + fy ( x i , y i ) y( x) +
2
Mtkhctheo(15)vtheocngthcTaylortac:
(17)
365
Dovphica(16)l:
(18)
Bygicho(17)v(18)khcnhaumtvcngbcpO(h3)tatmccc
hschabitkhicnbngccshngchahvchah2:
r1+r2=1
a.r1=1/2
.r2=1
Nhvy: =a,r1=(2a1)/2a,r2=1/2aviacchnbtk.
Nua=1/2thr1=0vr2=1.LcnytanhnccngthcEuler.Nu
a=1thr1=1/2vr2=1/2.LcnytanhnccngthcEulercitin.
MtcchtngtchngtanhnccngthcRungeKuttabc4.
Cngthcnyhaycdngtrongtnhtonthct:
k1=h.f(xi,yi)
k2=h.f(xi+h/2,yi+k1/2)
k3=h.f(xi+h/2,yi+k2/2)
k4=h.f(xi+h,yi+k3)
yi+1=yi+(k1+2k2+2k3+k4)/6
Taxydnghmrungekutta()thchincngthcRungeKuttabc4:
function[x,y]=rungekutta(f,a,b,y0,n)
%Phuong phap RungeKutta de giai phuong trinh y(x) = f(x,y(x)) hay y =
%f(x)
ifnargin<4|n<=0
n=100;
end
ifnargin<3
y0=0;
end
y(1,:)=y0(:);%
h=(ba)/n;
x=a+[0:n]*h;
ifnargin(f)>1
fork=1:n
366
f1=h*feval(f,x(k),y(k,:));
f1=f1(:);
f2=h*feval(f,x(k)+h/2,y(k,:)+f1/2);
f2=f2(:);
f3=h*feval(f,x(k)+h/2,y(k,:)+f2/2);
f3=f3(:);
f4=h*feval(f,x(k)+h,y(k,:)+f3);
f4=f4(:);
y(k+1,:)=y(k,:)+(f1+2*(f2+f3)+f4)/6;
end
else
fork=1:n
f1=h*feval(f,x(k));
f1=f1(:);
f2=h*feval(f,x(k)+h/2);
f2=f2(:);
f3=h*feval(f,x(k)+h/2);
f3=f3(:);
f4=h*feval(f,x(k)+h);
f4=f4(:);
y(k+1,:)=y(k,:)+(f1+2*(f2+f3)+f4)/6;
end
end
giiphngtrnhtadngchngtrnhctrungekutta.m:
clearall,clc
a=0;
b=1;
y=inline(x+y);
ya=0.5;
n=10;%solantinhchin=10
[x,y]=rungekutta(y,a,b,ya,n)
plot(x,y);
5.PHNGPHPRUNGEKUTTATHCHNGHI
367
Vnxcnhbctnhhlrtquantrng.Numuncchnh
xccaothbctnhhphinh.Tuynhinkhihnh,talitnthigiantnh
ton. Hn na bc hng s s khng thch hp trn ton b min tm
nghim. V d nu ng cong nghim ban u thay i nhanh ri sau
gnnhkhngithtaphidnghnhonuvhlnonsau.
ylchmccphngphpthchnghichimuth.Chngnhgisai
slmtrntimilntchphnvtnghiuchnhlncahsais
nmtronggiihnchophp.
(1)
E(h)=ym+1(x+h)ym(x+h)
Chng ta dng cng thc kt hp bc 4 v 5 m o hm c tnh bng
cngthcFehlenberg.DovycngthcRungeKuttathchnghicnc
gilcngthcRungeKuttaFehlenberg:
K 1 = hF(x,y)
i 1
K i = hF x + A i h, y + Bi ,jK j
j= 0
y 4 (x + h) = y(x) + Di K i (cngthcbc4)
i=1,2,..,6
(2)
(3)
(4)
i =1
6
i =1
Cc h s xut hin trong cc cng thc ny khng duy nht. Bng sau cho
cchstnhtheoCashvKarp:
i
Ai
Bi,j
Ci
Di
37
2825
378 27648
1
1
2
0
0
5
5
3
3
9
250 18575
10
40
40
621 48384
9
3
3
6
125 13525
10
5
10
5
594 55296
368
11
54
1631
55296
70
27
575
13824
2
175
512
35
27
44275
110592
277
14336
512
1
1771
4
253
4096
Saissl:
6
E(h)=y5(x+h)y4(x+h)= (Ci Di )K i
(5)
i =1
ChlE(h)lmtvect,thnhphnEi(h)biudinsaiscabinyi.Sai
se(h)tacnkimsotl:
e(h) = max E(h)
(6)
Tacngcthkimsotsaistrungbnhbnhphng:
1
e(h) =
n
E (h)
n
2
i
(7)
i =1
vinlsphngtrnhbc1.
Vic kim sot sai s t c bng cch thay i h sao cho sai s ti mi
bctnhiphcsaismongmun.SaiskhithchinthuttonRunge
KuttabcbnlO(h5)nn:
5
e(h1 ) h1
e(h 2 ) h 2
(8)
Gisltatnhnghimtibctnhvih1vcsaisle(h1).Tibc
tnhvih2tamunce(h2)=th:
1/ 5
h 2 = h1
e(h
)
1
dphng,taly:
(9)
1/ 5
h 2 = 0.9h1
(10)
e(h
)
1
Taxydnghmadaptrk()thchinthuttonny:
function[xsol,ysol]=adaptrk(f,xo,x1,y,n)
%TichphanRungeKuttabac5dunggiapphuongtrinhy=f(x,y)hayy=
%f(x).
%xo,x1doantimnghiem.
%ygiatridau,ndungtimhbandau
369
h=(x1xo)/n;
ifsize(y,1)>1;
y=y;%yphailavectohang
end
eTol=1.0e9;
n=length(y);
A=[01/53/103/517/8];
B=[00000
1/50000
3/409/40000
3/109/106/500
11/545/270/2735/270
1631/55296175/512575/1382444275/110592253/4096];
C=[37/3780250/621125/5940512/1771];
D=[2825/27648018575/4838413525/55296277/143361/4];
%nghiembandau
xsol=zeros(2,1);
ysol=zeros(2,n);
xsol(1)=xo;
ysol(1,:)=y;
stopper=0;
k=1;
forp=2:5000
%TinhKtu(2)
K=zeros(6,n);
ifnargin(f)>1
K(1,:)=h*feval(f,xo,y);
else
K(1,:)=h*feval(f,xo);
end
fori=2:6
BK=zeros(1,n);
forj=1:i1
BK=BK+B(i,j)*K(j,:);
end
ifnargin(f)>1
370
K(i,:)=h*feval(f,xo+A(i)*h,y+BK);
else
K(i,:)=h*feval(f,xo+A(i)*h);
end
end
%tinhsuthaydoicuaytheo(3)&(4)
dy=zeros(1,n);
E=zeros(1,n);
fori=1:6
dy=dy+C(i)*K(i,:);
E=E+(C(i)D(i))*K(i,:);
end
e=sqrt(sum(E.*E)/n);
%neusaisodatdengiatrichophep,chapnhanketqua
%kiemtrdieukienketthuc
ife<=eTol
y=y+dy;
xo=xo+h;
k=k+1;
xsol(k)=xo;
ysol(k,:)=y;
ifstopper==1;
break
end
end
%tinhlaihtheo(10)
ife~=0;
hnext=0.9*h*(eTol/e)^0.2;
else;
hnext=h;
end
if(h>0)==(xo+hnext>=x1)
hnext=x1xo;
stopper=1;
end
h=hnext;
371
end
tmnghimcaphngtrnhviphntadngchngtrnhctadaptrk.m:
clearall,clc
a=0;
b=1;
y=inline(x+y);
ya=0.5;
n=10;%solantinhchin=10
%y=@f4;
[u,v]=adaptrk(y,a,b,ya,n)
plot(u,v)
6.PHNGPHPBURLIRSCHSTR
1. Phng php im gia: Cng thc im gia ca tch phn s ca
y = f(x,y) l:
y(x + h) y(x h) =
(1)
y(x)
x
xh
x+h
x+ h
y(x)dx
xh
vbngdintchbndingcong.Xpximgiacadintchnyl
dintchcahnhchnhtcgchcho.
Bygitaxtuimcaphngphpimgiakhitmnghimca
phngtrnh y = f(x,y) tx=x0nx=x0+Hvicngthcimgia.
Tachiaontchphnthnhnonnhcdimionl h = H / n nh
hnhbnvtnh:
y1 = y 0 + hf0
y 2 = y 0 + 2hf1
372
y 3 = y1 + 2hf2
(2)
H
h
x2
x1
x3
xo
xn1 xn
y n = y n2 + 2hfn 1
Tadngkhinimyi=y(xi)vfi=f(xi,yi).Phngtrnhutintrong(2)
dngcngthcEulerthaychophngphpimgia.Ccphngtrnh
khclcccngthcimgia.Ktqucuicngltrungbnhcngcayn
trong(2)vtac:
(3)
2.NgoisuyRichardson:Tacththysaistrong(3)l:
E = c 1h 2 + c 2 h 4 + c 3 h 6 + L
gimbtsaistadngphngphpngoisuyRichardson.Cthtatnh
y(xo+H)vimtgitrnocahvrilpliqutrnhtnhvih/2.Gi
ktqulg(h)vg(h1)tacngoisuyRichardson:
4g(h1 ) g(h)
y(x o + H) =
3
Taxydnghm midpoint()kthpphngphpimgiavphng
phpngoisuyRichardson.utinphngphpimgiacdngcho
2tchphn.Sbctnhctnggpitrongcclnlpsau,milnlp
udngngoisuyRichardson.Chngtrnhdngkhisaisnhhnsais
chophp.
functiony=midpoint(f,x,x1,y,tol)
%Phuongphapdiemgiuadungchophuongtrinhy=f(x,y)hayy=f(x).
ifsize(y,1)>1;
y=y;
end%yphailavectohang
ifnargin<5
tol=1.0e6;
end
kmax=51;
n=length(y);
r=zeros(kmax,n);
%Batdaubang2buoctichphan
nsteps=2;
r(1,1:n)=mid(f,x,x1,y,nsteps);
rold=r(1,1:n);
373
fork=2:kmax
%Tanggapdoisobuocvatinhchinhketqua
%ngoaisuyRichardson
nsteps=2*k;
r(k,1:n)=mid(f,x,x1,y,nsteps);
r=richardson(r,k,n);
%kiemtrahoitu.
dr=r(1,1:n)rold;
e=sqrt(dot(dr,dr)/n);
ife<tol;y=r(1,1:n);
return;
end
rold=r(1,1:n);
end
error(Phuongphapdiemgiuakhonghoitu)
functiony=mid(f,x,xf,y,nsteps)
%Congthucdiemgiua
h=(xfx)/nsteps;
y0=y;
ifnargin(f)>1
y1=y0+h*feval(f,x,y0);
else
y1=y0+h*feval(f,x);
end
fori=1:nsteps1
x=x+h;
ifnargin(f)>1
y2=y0+2.0*h*feval(f,x,y1);
else
y2=y0+2.0*h*feval(f,x);
end
y0=y1;
y1=y2;
end
ifnargin(f)>1
374
y=0.5*(y1+y0+h*feval(f,x,y2));
else
y=0.5*(y1+y0+h*feval(f,x));
end
functionr=richardson(r,k,n)
%Richardsonextrapolation.
forj=k1:1:1
c=(k/(k1))^(2*(kj));
r(j,1:n)=(c*r(j+1,1:n)r(j,1:n))/(c1.0);
end
function[xout,yout]=burlischstoer(f,x,x1,y,H,tol)
%PhuongphapBulirschStoergiaiphuongtrinhy=F(x,y)hayy=f(x).
%[x,x1]lakhoangtimnghiem.
%H=dotangsaumoilantinh
ifsize(y,1)>1
y=y;
end%yphailavectohang
ifnargin<6
tol=1.0e8;
end
n=length(y);
xout=zeros(2,1);
yout=zeros(2,n);
xout(1)=x;
yout(1,:)=y;
k=1;
whilex<x1
375
k=k+1;
H=min(H,x1x);
y=midpoint(f,x,x+H,y,tol);
x=x+H;
xout(k)=x;
yout(k,:)=y;
end
giiphngtrnhtadngchngtrnhctburlischstoer.m:
clearall,clc
a=0;
b=1;
y=@f3;
ya=1;
H=.1;
[u,v]=burlischstoer(y,a,b,ya,H)
plot(u,v)
7.PHNGPHPCHUITAYLOR
PhngphpchuiTaylornginvtngvcchnhxccao.
CscaphngphpnylctchuiTaylorcaytheox:
1
1
1 (m)
E=
y(m +1) ()h m +1
x < < x + h
(m + 1)!
Dngxpxohm:
y(m) (x + h) y(m) (x)
y(m +1) ()
h
tac:
h m (m)
E=
y (x + h) y(m) (x)
(2)
(m + 1)!
Taxydnghmtaylor()giibitontrn:
376
function[xout,yout]=taylor(deriv,x,y,x1,h)
%TichphanchuoiTaylorbac4.
%x,y=cacgiatridau;ilavectohang.
%x1=giatricuoicuax
ifsize(y,1)>1;
y=y;
end
xout=zeros(2,1);
yout=zeros(2,length(y));
xout(1)=x;
yout(1,:)=y;
k=1;
whilex<x1
h=min(h,x1x);
d=feval(deriv,x,y);%Daohamcua[y]
hh=1;
forj=1:4%taochuoiTaylor
hh=hh*h/j;
y=y+d(j,:)*hh;
end
x=x+h;
k=k+1;
xout(k)=x;
yout(k,:)=y;
end
Tadngchngtrnhcttaylor.mgiiphngtrnh:
clearall,clc
y=@f5;
a=0;
b=2;
ya=[01];
h=0.2;
[x,y]=taylor(y,a,ya,b,h)
377
plot(x,y);
8.PHNGPHPDONHIUCHNH
1.PhngphpAdamBashfortMoulton:Nm1855,nhtonhcngi
AnhAdamsxutmtphngphpabcgiibitonCauchytheoyu
cucangBashforth,mtchuyngiakthutphobinhAnh.Ktquca
Adamssaunybqunlng.Minuthk20,nhtonhcNauykhi
tnhquocahtintchrixamttrivivntclnphtminhli
cng thc Adams. Sau ny vin s Krylov hon thin phng php
Adams. Phng php Adams Bashfort Moulton (ABM) gm hai bc.
Bcdutinlxpxf(x,y)bngmtathc(vdathcLagrange)bc4
qua4im:
vthaythathcnyvophngtrnhviphnccgitrdbo
yk+1:
h
h
Bcthhaillplicngvicvi4imccpnht:
c k = y k + l3 (t)dt = y k +
0
h
fk2 5fk 1 + 19fk + 9fk +1
24
TavitkhaitrinTaylorcayk+1lncntkvcayklncntk+1:
h2
h3
y k+1 = y k + hfk + fk + fk + L
2
3!
h2
h3
2
3!
vthaythccohmbc1,2,3bngccxpx
3
11
1
+
f
3f
fk
2 fk 3 +
k
2
k
1
h 3
1
2
6 + h 3f (4) + L
y k+1 = y k + hfk +
k
2
h
4
(1b)
(2a)
(2b)
378
2
3!
h
12
4
h fk3 + 3fk2 3fk1 + fk 3 (4)
h 5 (4)
fk + L
+
+ hfk + L +
4!
h3
2
120
h
251 5 (4)
= y k +
9fk3 + 37fk2 59fk1 + 55fk +
h fk + L
24
720
251 5 (4)
h fk
(3a)
pk+1 +
720
1 f + 3 f 3f + 11 f
k
k +1
h 2 3 k 2 2 k 1
1
6
L
+ h 3fk(4)
+
y k+1 = y k + hfk+1
+1
2
h
4
3
h f + 4fk1 5fk + 2fk+1 11 2 (4)
+ k 2
+ h fk+1 + L
2
3!
h
12
4
h fk2 + 3fk1 3fk + fk+1 3 (4)
h 5 (4)
+ hfk+1 + L +
fk+1 + L
4!
h3
2
120
h
19 5 (4)
= y k +
fk2 5fk1 + 19fk + 9fk+1
h fk+1 + L
24
720
19 5 (4)
h fk +1
(3b)
c k +1
720
(4)
Tccphngtrnhnyvgisrng fk(4)
+1 fk K tacthvitccsais
don/hiuchnh:
251 5 (4) 251 5
EP ,k +1 = y k +1 pk+1
h fk
Kh
(4a)
720
720
19 5 (4)
19
EC ,k +1 = y k +1 c k+1
h fk+1
Kh 5
(4b)
720
720
DoKchabitnntaphitmn.Tac;
270
270
270
EP ,k +1 EC ,k +1 = c k +1 pk+1
Kh 5
EP ,k+1
EC ,k+1
(5)
720
251
19
Dovytaccccngthcdngnhgisais:
251
EP ,k +1 = y k +1 pk+1
(6a)
( c k+1 pk+1 )
720
19
EC ,k +1 = y k +1 c k+1
(6b)
( c k +1 p k +1 )
270
Tmli,thuttonAdamsBashforthMoultongm:
h
9fk3 + 37fk2 59fk1 + 55fk
Don:
p k +1 = y k +
(7a)
24
379
Bini:
m k +1 = p k + 1 +
251
( c k pk )
720
(7b)
h
fk2 5fk1 + 19fk + 9f ( t k+1 ,m k+1 )
(7c)
24
19
y k + 1 = c k +1
(7d)
( c k +1 p k +1 )
270
Taxydnghmodeabm()thchinthuttonny:
function[t,y]=odeabm(f,to,tf,y0,n)
%PhuongphapAdamsBashforthMoulton
%degiaipty(t)=f(t,y(t))hayy(t)=f(t)
if(nargin<5)|(n<0)
n=10;
end
h=(tfto)/n;
t1=to+3*h;
[t,y]=rungekutta(f,to,t1,y0,3);%khoiganbangppRungeKutta
t=[t(1:3)t(4):h:tf];
fork=1:4
ifnargin(f)>1
F(k,:)=feval(f,t(k),y(k,:));
else
F(k,:)=feval(f,t(k));
end
end
p=y(4,:);
c=y(4,:);
KC22=251/270;
KC12=19/270;
h24=h/24;
h241=h24*[9375955];
h242=h24*[15199];
fork=4:n
p1=y(k,:)+h241*F;%Pt.(7a)
m1=p1+KC22*(cp);%Pt.(7b)
ifnargin(f)>1
Hiuchnh:
ck = yk +
380
c1=y(k,:)+h242*[F(2:4,:);feval(f,t(k+1),m1)];%Pt.(7c)
else
c1=y(k,:)+h242*[F(2:4,:);feval(f,t(k+1))];%Pt.(7c)
end
y(k+1,:)=c1KC12*(c1p1);%Pt.(7d)
p=p1;
c=c1;%capnhatcacgiatridudoan/hieuchinh
ifnargin(f)>1
F=[F(2:4,:);feval(f,t(k+1),y(k+1,:))];
else
F=[F(2:4,:);feval(f,t(k+1))];
end
end
giiphngtrnhtadngchngtrnhctodeabm.m:
clearall,clc
a=0;
b=1;
y=@f1;
ya=[011];
n=10;
[t,y]=odeabm(y,a,b,ya,n)
plot(t,y)
(8a)
3
112
m k +1 = p k + 1 +
(8b)
Bini:
( c k pk )
121
c k = 0.125 9y k y k2 + 3h fk 1 + 2fk + f ( t k +1 ,m k +1 ) (8c)
Hiuchnh:
( c k +1 pk +1 )
121
Taxydnghmhamming()thchinthuttonny:
function[t,y]=hamming(f,to,tf,y0,n)
y k + 1 = c k +1
(dd)
381
%PhuongphapHammingdegiaiphuongtrinhy(t)=f(t,y(t))hayy=f(t)
if(nargin<5)|(n<=0)
n=100;
end
h=(tfto)/n;
ts=to+3*h;
[t,y]=rungekutta(f,to,ts,y0,3);%KhoiganbangRungeKutta
t=[t(1:3)t(4):h:tf];
fork=2:4
ifnargin(f)>1
F(k1,:)=feval(f,t(k),y(k,:));
else
F(k1,:)=feval(f,t(k));
end
end
p=y(4,:);
c=y(4,:);
h34=h/3*4;
KC1=112/121;
KC2=9/121;
h312=3*h*[121];
fork=4:n
p1=y(k3,:)+h34*(2*(F(1,:)+F(3,:))F(2,:));%Pt.(8a)
m1=p1+KC1*(cp);%Pt.(8b)
ifnargin(f)>1
c1=(y(k2,:)+9*y(k,:)+h312*[F(2:3,:);
feval(f,t(k+1),m1)])/8;%Pt.(8c)
else
c1=(y(k2,:)+9*y(k,:)+h312*[F(2:3,:);
feval(f,t(k+1))])/8;Pt.(8c)
end
y(k+1,:)=c1KC2*(c1p1);%Pt.(8d)
p=p1;c=c1;%capnhatcacgiatridubao/hieuchinh
ifnargin(f)>1
F=[F(2:3,:);feval(f,t(k+1),y(k+1,:))];
else
382
F=[F(2:3,:);feval(f,t(k+1))];
end
end
giiphngtrnhtadngchngtrnhcthamming.m:
clearall,clc
a=0;
b=1;
y=@f1;
ya=[011];
n=10;
tic
[t,y]=hamming(y,a,b,ya,n);
toc
plot(t,y)
9.PHNGPHPMILNE
Qutrnhtnhtonnghimcthchinquababc:
Tnhgnngym+1theocngthc(don):
4h
y(1)
(1)
( 2ym2 ym 1 + 2ym )
m +1 = y m 3 +
3
Dng y(1)
m +1 tnh:
ym +1 = f(x m +1 ,y(1)
(2)
m +1 )
Dng ym +1 vatnhctnhgmngth2caym+1(hiuchnh)
h
y(2)
(3)
( ym1 + 4ym + ym+1 )
m +1 = y m 1 +
3
Taxydnghmmilne()thchinthuttontrn:
function[t,y]=milne(f,to,tf,y0,n)
h=(tfto)/n;
y(1,:)=y0;
ts=to+3*h;
[t,y]=rungekutta(f,to,ts,y0,3);
t=[t(1:3)t(4):h:tf];
fori=2:4
383
ifnargin(f)>1
F(i1,:)=feval(f,t(i),y(i,:));
else
F(i1,:)=feval(f,t(i));
end
end
fori=4:n
p=y(i3,:)+(4*h/3)*(2*F(1,:)F(2,:)+2*F(3,:));%Pt.(1)
ifnargin(f)>1
F(4,:)=f(t(i+1),p);%Pt.(2)
else
F(4,:)=f(t(i+1));
end
y(i+1,:)=y(i1,:)+(h/3)*(F(2,:)+4*F(3,:)+F(4,:));%Pt.(3)
F(1,:)=F(2,:);
F(2,:)=F(3,:);
ifnargin(f)>1
F(3,:)=f(t(i+1),y(i+1,:));
else
F(3,:)=f(t(i+1));
end
end
giiphngtrnhtadngchngtrnhctmilne.m:
clearall,clc
a=0;
b=1;
y=@f2;
ya=1;
n=10;
[t,y]=milne(y,a,b,ya,n);
plot(t,y)
10.BITONGITRBIN
1.Khinimchung:Taxtbitontmnghimcaphngtrnh:
384
Mtphngphpkhcgiibitongitrbinlphngphpsai
phn hu hn trong cc o hm c thay bng cc xp x bng sai phn
huhnticcntlicchu.Nhvytasnhnchphngtrnh
isiviccsaiphn.
(1)
y = f(x, y,y) y(a) = ,y(b) =
Tatmcchabitonvdngbitongitru:
(2)
thtacnghimcabiton.Nukhngtaphihiuchnhuvlmli.
Tuy nhin lm nh vy cha hay. Do nghim ca bi ton gi tr u ph
thucunngitrbintnhcy(b)lhmcau,nghal:
y(b)=(u)
Doulnghimcaphngtrnh:
r(u)=(u)=0
(3)
Trong (u) gi l s d bin(hiu s gia gi
tr tnh c v gi tr bin cho trc). Phng
trnh (3) c th gi bng cc phng php tm
nghim trong chng trc. Tuy nhin phng
php chia i cung i hi tnh ton lu cn
phngphpNewtonRaphsonihitmo
hmd/dt.Dovycngtasdngphngphp
Brent.Tmlithutongiibitongitrbin
gmccbc:
Mtgitru1vu2vynghimuca(3)
DngphngphpBrenttmnghimuca(3).Chlmibclp
i hi tnh (u) bng cch gii phng trnh vi phn nh l bi ton iu
kinu.
Khicu,giiphngtrnhviphnlnnatmnghim
Taxydnghmbvp2shoot()giiphngtrnhbc2:
function[t,x]=bvp2shoot(f,t0,tf,x0,xf,n,tol,kmax)
%Giaiphuongtrinh:[x1,x2]=f(t,x1,x2)voix1(t0)=x0,x1(tf)=xf
ifnargin<8
kmax=10;
end
ifnargin<7
tol=1e8;
end
ifnargin<6
n=100;
end
dx0(1)=(xfx0)/(tft0);%chogiatridaucuax(t0)
y0=[x0dx0(1)];
[t,x]=rungekutta(f,t0,tf,y0,n);%khoiganbgRK4
386
e(1)=x(end,1)xf;
dx0(2)=dx0(1)0.1*sign(e(1));
fork=2:kmax1
y1=[x0dx0(k)];
[t,x]=rungekutta(f,t0,tf,y1,n);
%saisogiuagiatricuoivadich
e(k)=x(end,1)xf;%x(tf)xf
ddx=dx0(k)dx0(k1);
ifabs(e(k))<tol|abs(ddx)<tol
break;
end
deddx=(e(k)e(k1))/ddx;
dx0(k+1)=dx0(k)e(k)/deddx;
end
giiphngtrnh:
y = 2y 2 + 4xyy viiukinbin:y(0)=0.25,y(1)=1/3
t: y = y1 , y = y 2 taaphngtrnhvhphngtrnhviphncp1:
y1 = y 2
y 2 = 2y1 + 4xy 2 y1
vbiudinnbnghmf7():
functiondx=f7(t,x)%Eq.(6.6.5)
dx(1)=x(2);
dx(2)=(2*x(1)+4*t*x(2))*x(1);
giiphngtrnhtadngchngtrnhctbvp2shoot.m:
clearall,clc
t0=0;
tf=1;
x0=1/4;
xf=1/3;%thoigiandau/cuoivacacvitri
n=100;
tol=1e8;
387
kmax=10;
y=@f7;
[t,x]=bvp2shoot(y,t0,tf,x0,xf,n,tol,kmax);
xo=1./(4t.*t);
err=norm(x(:,1)xo)/(n+1)
plot(t,x(:,1))
3.Phngphpsaiphnhuhn:Taxtphngtrnh:
y = f(x, y,y) y(a) = ,y(b) =
tngcaphngphpnylchiaon[a,b]thnhnonnhcbch
vxpxccohmbngccsaiphn:
y yi
y = i+1
2h
y 2y i + y i+1
y = i1
h2
Nhvy:
y 2y i + y i+1
y yi
y = i1
= f x i ,y i , i+1
i=1,2,3,...
2
h
2h
function[t,x]=bvp2fdf(a1,a0,u,t0,tf,x0,xf,n)
%Giaipt:x+a1*x+a0*x=uwithx(t0)=x0,x(tf)=xf
%bangppsaiphanhuuhan
h=(tft0)/n;
h2=2*h*h;
t=t0+[0:n]*h;
if~isnumeric(a1)
a1=a1(t(2:n));
else
length(a1)==1
a1=a1*ones(n1,1);
end
if~isnumeric(a0)
a0=a0(t(2:n));
elselength(a0)==1
388
a0=a0*ones(n1,1);
end
if~isnumeric(u)
u=u(t(2:n));
elseiflength(u)==1
u=u*ones(n1,1);
else
u=u(:);
end
A=zeros(n1,n1);
b=h2*u;
ha=h*a1(1);
A(1,1:2)=[4+h2*a0(1)2+ha];
b(1)=b(1)+(ha2)*x0;
form=2:n2
ha=h*a1(m);
A(m,m1:m+1)=[2ha4+h2*a0(m)2+ha];
end
ha=h*a1(n1);
A(n1,n2:n1)=[2ha4+h2*a0(n1)];
b(n1)=b(n1)(ha+2)*xf;
x=[x0trid(A,b)xf];
functionx=trid(A,b)
%giaihepttrdiagonal
n=size(A,2);
form=2:n
tmp=A(m,m1)/A(m1,m1);
A(m,m)=A(m,m)A(m1,m)*tmp;
A(m,m1)=0;
b(m,:)=b(m,:)b(m1,:)*tmp;
end
x(n,:)=b(n,:)/A(n,n);
form=n1:1:1
x(m,:)=(b(m,:)A(m,m+1)*x(m+1))/A(m,m);
end
389
giiphngtrnh:
2
2
y + y 2 = 0
x
x
viy(1)=5vy(2)=3tadngchngtrnhctbvp2fdf.m:
clear,clc
x0=1;%toadobiendau
y0=5;%giatribiendau
xf=2;%toadobiencuoi
yf=3;%giatribiencuoi
n=100;%sobuoctinh
a1=inline(2./x,x);
a0=inline(2./x./x,x);
u=0;%vephaicuaphupngtrinh
[x,y]=bvp2fdf(a1,a0,u,x0,xf,y0,yf,n);
plot(x,y)
11.PHNGPHPLPPICARD
VicgiibitonCauchy:
y = f(t,y) , y(t o ) = y o
(1)
hontontngngvivictmnghimy(t)caphngtrnhtchphn:
t1
y(t) = y o + f [ z,y(z)] dz
(2)
to
y n +1 = y o + f [ z, y(z)] dz
(3)
to
Trongngintachnnghimgnngutinl:
yo(x)=yo
Taxydnghmpicard()thchinthuttontrn:
functiong=picard(f,y0,maxiter)
symsxy
g=subs(f,y0);
390
g=int(g,x);
fori=1:maxiter
g=subs(f,g);
g=int(g,x);
end
g=sort(g);
12.PHNGPHPGILL
Phngphp GillcngtngtnhphngphpRungeKutta,gi
trnghimtiyn+1ctnhbng:
1
y n +1 = y n + k1 + (2 2)k 2 + (2 + 2)k 4 + k 4
6
Vi:
k1 = hf(x n ,y n )
1
1
k 2 = hf x n + h, y n + k1
2
2
1
1
2
k 3 = hf x n + h, y n + 1 + 2 k1 + 1
k2
2
2
2
2
2
k 4 = hf x n + h,y n
k2 + 1 +
k3
2
2
Taxydnghmgill()thchinthuttontrn:
function[x,y]=gill(f,a,b,y0,n)
%PhuongphapGilldegiaiphuongtrinhy(x)=f(x,y(x))
ifnargin<4|n<=0
391
n=100;
end
ifnargin<3
y0=0;
end
y(1,:)=y0(:);
h=(ba)/n;
x=a+[0:n]*h;
ifnargin(f)>1
fork=1:n
k1=h*feval(f,x(k),y(k,:));
k1=k1(:);
k2=h*feval(f,x(k)+h/2,y(k,:)+k1/2);
k2=k2(:);
k3=h*feval(f,x(k)+h/2,y(k,:)+(sqrt(2)1)*k1/2+(1sqrt(2)/2)*k2);
k3=k3(:);
k4=h*feval(f,x(k)+h,y(k,:)sqrt(2)/2*k2+(1+sqrt(2)/2)*k3);
k4=k4(:);
y(k+1,:)=y(k,:)+(k1+(2sqrt(2))*k2+(2+sqrt(2))*k3+k4)/6;
end
else
fork=1:n
f1=h*feval(f,x(k));
f1=f1(:);
f2=h*feval(f,x(k)+h/2);
f2=f2(:);
f3=h*feval(f,x(k)+h/2);
f3=f3(:);
f4=h*feval(f,x(k)+h);
f4=f4(:);
y(k+1,:)=y(k,:)+(f1+(2sqrt(2))*f2+(2+sqrt(2))*f3+f4)/6;
end
end
giiphngtrnhtadngchngtrnhctgill.m:
392
clearall,clc
a=0;
b=1;
y=inline(x+y);
ya=0.5;
n=10;%solantinhchin=10
[t,u]=gill(y,a,b,ya,n);
plot(t,u);
[l,v]=rungekutta(y,a,b,ya,n);
holdon
plot(l,v,.r)
13.PHNGPHPRUNGEKUTTAFEHLBERG
1
1
k 2 = hf t i + h,y i + k1
4
4
3
3
9
k 3 = hf t i + h, y i + k1 + k 2
8
32
32
12
1932
7200
7296
k 4 = hf t i + h,y i +
k1
k2 +
k3
13
2197
2197
2197
439
3680
845
k 5 = hf t i + h,y i +
k1 8k 2 +
k3
k 4
216
513
4104
1
8
3544
1859
11
k 5 = hf t i + h,y i k1 + 2k 2
k3 +
k 4 k 5
2
27
2565
4104
40
XpxnghimtheophngphpRungeKuttabc4:
393
25
1408
2197
1
k1 +
k3 +
k4 k5
216
2565
4104
5
VnghimtthndngphngphpRungeKuttabc5:
16
6656
28561
9
2
z i +1 = y i +
k1 +
k3 +
k4 k5 + k6
135
12825
56430
50
55
Bctnhtiucxcnhbngshvisl:
y i +1 = y i +
4
h
h
=
s=
0.840896
2 z y
z
y
i +1
i +1
i +1
i +1
Taxydnghmrkf()thchinthuttontrn:
function[t,y]=rkf(f,t0,tf,x0,parms)
%timnghiemcuaphuongtrinhy(t)=f(t,y),y(t0)=x0
%dungphuongphapRungeKuttaFehlbergbac4,bac5
neqn=length(x0);
hmin=parms(1);
hmax=parms(2);
tol=parms(3);
t(1)=t0;
y(1:neqn,1)=x0;
count=0;
h=hmax;
i=2;
while(t0<tf)
ifnargin(f)>1
k1=h*feval(f,t0,x0);
k2=h*feval(f,t0+h/4,x0+k1/4);
k3=h*feval(f,t0+3*h/8,x0+3*k1/32+9*k2/32);
k4=h*feval(f,t0+12*h/13,x0+1932*k1/2197...
7200*k2/2197+7296*k3/2197);
k5=h*feval(f,t0+h,x0+439*k1/2168*k2+...
3680*k3/513845*k4/4104);
k6=h*feval(f,t0+h/2,x08*k1/27+2*k2...
3544*k3/2565+1859*k4/410411*k5/40);
else
k1=h*feval(f,t0);
k2=h*feval(f,t0+h/4);
394
k3=h*feval(f,t0+3*h/8);
k4=h*feval(f,t0+12*h/13);
k5=h*feval(f,t0+h);
k6=h*feval(f,t0+h/2);
end
r=max(abs(k1/360128*k3/42752197*k4/75240+...
k5/50+2*k6/55)/h);
q=0.84*(tol/r)^(1/4);
if(r<tol)
x0=x0+16*k1/135+6656*k3/12825+28561*k4/56430...
9*k5/50+2*k6/55;
t0=t0+h;
t(i)=t0;
y(1:neqn,i)=x0;
i=i+1;
end;
h=min(max(q,0.1),4.0)*h;
if(h>hmax)
h=hmax;
end;
if(t0+h>tf)
h=tft0;
elseif(h<hmin)
disp(Cangiamkichthuocbuoctinh);
return;
end;
end;
giiphngtrnhtadngchngtrnhctrkf.m:
clearall,clc
a=0;
b=1;
y=@f2;
ya=0.5;
p=[1e51e31e8];%[hminhmaxtol]
395
[t,y]=rkf(y,a,b,ya,p)
plot(t,y);
396
CHNG 8: TI U HO
1.KHINIMCHUNGVTIUHO
Tiuholthutngthngcdngcctiuhohaycci
homthm.Thngthngtachcntmcctiumthml.Victm
ccicaf(x)thchinmtcchnginbngcchtmcctiucahm
f(x) .Hmflhmgitrhayhmitng,cncgicctiu.Binx
lbincthhiuchnhtdo.
Ccthuttoncctiuholccththutlpihimtgitrban
ucabinx.Nuf(x)cnhiucctiuaphng,vicchngitrus
xcnhcctiunoctnh.Takhngccchnobomltmc
cctiutoncc.
Trongchngnychngtaslnltxtccthuttontmcctiu
khngrngbucvcrngbuc.
2.PHNGPHPTITDINVNG
Taxtbitontmcctiucahmmtbinf(x).imcctiuc
xc nh theo iu kin df/dx = 0. Do c th c nhiu im cc tiu nn ta
phivyimcctiu(xcnhlncnchaimcctiu)trc.Ththut
vyimcctiukhngin:choimux0vtnhgitrcahmang
i xung ti cc im tip theo x1, x2, x3,... cho n ti xn hm tng li th
dng.imcctiubvytrongkhong(xn2,xn).Khong(xi+1,xi)khngnn
chnlhngsvnhvycnnhiubctnh.Hplnhtlnntngkch
thcbctnhtccctiunhanhhn,ngayckhicctiubvy
trong mt on kh rng. Ta chn kch thc tng theo dng hng s:
h i+1 = ch i vi c > 1 . ta xy dng hm goldbracket() vy im cc tiu ca
hm:
function[a,b]=goldbracket(func,x1,h)
%vaydiemcuctieucuaf(x).
c=1.618033989;
370
f1=feval(func,x1);
x2=x1+h;
f2=feval(func,x2);
iff2>f1
h=h;
x2=x1+h;
f2=feval(func,x2);
iff2>f1
a=x2;
b=x1h;
return
end
end
fori=1:100
h=c*h;
x3=x2+h;
f3=feval(func,x3);
iff3>f2
a=x1;
b=x3;
return
end
x1=x2;
f1=f2;
x2=x3;
f2=f3;
end
error(Goldbracketkhongtimthaydiemcuctieu)
Titdinvnglmtbinthcaphngphpchiaidngkhitm
nghimcaphngtrnhf(x)=0.Gisimcctiubvytrongkhong
(a, b) c di h. thu nh khong (a, b) ta tnh gi tr ca hm ti
x1 = b rh v x 2 = a + rh nhhnhv.Nuf1=f(x1)lnhnf2=f(x2)nhhnh
a th cc tiu nm trong khong (x1, b) nu ngc li cc tiu nm trong
khong(a,x2).
371
Gisf1 >f2 ,tata=x1vvx1=
x2vckhong(a,b)minhhnhb.
2rhh
thc hin bc thu gn tip theo ta li
rh
tnhgitrcahmtix2=a+rhvlp
rh
li qu trnh. Qu trnh lm vic ch nu
x1
x2
a
b
hnhavhnhbtngt, nghalhng
h
s r khng i khi xc nh x1 v x2 c
a
haihnh.Thnhatathy:
x 2 x1 = 2rh h
rh
Cngmtkhongcchthnhbtac:
x1a=hrh
rh
Cnbngcckhongnytac:
x2 b
a
x1
2rhh=hrh
h
Thayh=rhvkhh:
2r1=r(1r)
b
Giiphngtrnhnytanhnctlvng:
5 1
r=
= 0.618033989...
2
Chlmilnthugnkhongchaimcctiuthkhong(a,b)gimt
lvir.iunylmslntnhlnhnphngphpchiai.Tuynhin
phngphptlvngchihitnhgitrhmmtlntrongkhiphng
phpchiaicntnhgitrhm2ln.Slntnhxcnhbng:
b a rn =
ln
ba
= 2.078087 n
hay: n =
ln
ba
h=ba=0.382
Taxydnghmgolden()thchinthuttonny:
function[xmin,ymin]=golden(f,a,b,delta,epsilon)
%avabladoantimcuctieu
%deltasaisocuax
%epsilonsaisocuay
r1=(sqrt(5)1)/2;
r2=r1^2;
h=ba;
372
fa=f(a);
fb=f(b);
x1=a+r2*h;
x2=a+r1*h;
f1=f(x1);
f2=f(x2);
k=1;
while(abs(fbfa)>epsilon)|(h>delta)
k=k+1;
if(f1<f2)
b=x2;
fb=f2;
x2=x1;
f2=f1;
h=ba;
x1=a+r2*h;
f1=f(x1);
else
a=x1;
fa=f1;
x1=x2;
f1=f2;
h=ba;
x2=a+r1*h;
f2=f(x2);
end
end
dp=abs(ba);
dy=abs(fbfa);
p=a;
yp=fa;
if(fb<fa)
p=b;
yp=fb;
end
xmin=p;
373
ymin=yp;
tmcctiucahmtadngchngtrnhctgolden.m:
clearall,clc
f=inline(1.6*x^3+3*x^22*x);
x=0;
delta=1e8;
epsilon=1e10;
[a,b]=goldbracket(f,x,0.2);
[xmin,ymin]=golden(f,a,b,delta,epsilon)
3.PHNGPHPXPXBCHAI
tngcaphngphpnyl:
Qua3im:
{[(x0 ,f(x0 )] , [(x1 ,f(x1 )] , [(x2 ,f(x2 )]} x0<x1<x2
tatmcathcnisuyp2(x)vimcohmbngzero:
f0 (x12 x 22 ) + f1 (x 22 x02 ) + f2 (x02 x12 )
x = x3 =
2 f0 (x1 x 2 ) + f1 (x 2 x 0 ) + f2 (x0 x1 )
(1)
cbit,nuccimtmctrcyphnbuvikhongcchh(
nghalx2x1=x1x0=h)th(1)trthnh:
f0 (x12 x 22 ) + f1 (x 22 x 02 ) + f2 (x02 x12 )
3f0 4f1 + f2
x3 =
= x0 + h
(2)
2( f0 + 2f1 f2 )
2 f0 (x1 x 2 ) + f1 (x 2 x0 ) + f2 (x0 x1 )
Ta cp nht 3 im theo cch ny cho n khi
x 2 x0 0 hay
immitutheof(x3)<f(x1)haykhng
Taxydnghmoptquad()thchinthuttonny.
function[xo,fo]=optquad(f,x0,tolx,tolfun,maxiter)
%Timcuctieucuaf(x)bangphuongphapxapxibac2
iflength(x0)>2
x012=x0(1:3);
else
iflength(x0)==2
a=x0(1);
b=x0(2);
else
a=x010;
b=x0+10;
end
x012=[a(a+b)/2b];
end
f012=f(x012);
[xo,fo]=optquad0(f,x012,f012,tolx,tolfun,maxiter);
function[xo,fo]=optquad0(f,x012,f012,tolx,tolfun,k)
x0=x012(1);
x1=x012(2);
x2=x012(3);
375
f0=f012(1);
f1=f012(2);
f2=f012(3);
nd=[f0f2f1f0f2f1]*[x1*x1x2*x2x0*x0;x1x2x0];
x3=nd(1)/2/nd(2);
f3=feval(f,x3);%Pt.(1)
ifk<=0|abs(x3x1)<tolx|abs(f3f1)<tolfun
xo=x3;
fo=f3;
ifk==0
fprintf(Daycothexemladiemcuctieu)
end
else
ifx3<x1
iff3<f1
x012=[x0x3x1];
f012=[f0f3f1];
else
x012=[x3x1x2];
f012=[f3f1f2];
end
else
iff3<=f1
x012=[x1x3x2];
f012=[f1f3f2];
else
x012=[x0x1x3];
f012=[f0f1f3];
end
end
[xo,fo]=optquad0(f,x012,f012,tolx,tolfun,k1);
end
tmimcctiutadngchngtrnhctoptquad.m:
clearall,clc
376
%f=inline((x.^24).^2/81);
a=0;
b=3;
delta=1e8;
epsilon=1e10;
maxiter=100;
[xmin,ymin]=optquad(f,[ab],delta,epsilon,maxiter)
4.PHNGPHPNELDERMEAD
PhngphpNelderMeadcthdngtmcctiucahmnhiu
bin m phng php tit din vng hay phng php xp x bc 2 khng
dngc.ThuttonNelderMeadgmccbcnhsau:
Bc1:Cho3imutina,b,cvif(a)<f(b)<f(c)
Bc2:Nu3imvccgitrtngngcahmgnnhauthta
coialimcctiuvktthcqutrnhtnh
Bc 3: Nu khng ta coi
a
im cc tiu nm i din vi
c2
c
1
im c trn ng ab(xem hnh
r
e
v)vly:
s
2
s1 m
c
e=m+2(mc)
vi
b
m=(a+b)/2
vnuf(e)<f(b)thly:
m=(a+b)/2
r=m+(mc)
r=(m+e)/2=2mc
e=m+2(mc) s1=(c+m)/2
v nuf(r) < f(c) th ly r lm gi
c1=(c+a)/2
s2=(m+r)/2
tr mi ca c; nu f(r) f(b) th
c2=(r+a)/2
ly:
s=(c+m)/2
vnuf(s)<f(c)thlyslmgitrmicac;nukhngbccimb,cv
dngmvc1=(a+c)/2lmimbvcmivchorngcctiunmquanh
ima.
Bc4:Trvbc1
Taxydnghmneldermead()thchinthuttonny:
function[xo,fo]=neldermead(f,x0,tolx,tolfun,maxiter)
n=length(x0);
377
ifn==1%truonghopham1bien
[xo,fo]=optquad(f,x0,tolx,tolfun);
return
end
S=eye(n);
fori=1:n
i1=i+1;
ifi1>n
i1=1;
end
abc=[x0;x0+S(i,:);x0+S(i1,:)];
fabc=[feval(f,abc(1,:));feval(f,abc(2,:));feval(f,abc(3,:))];
[x0,fo]=neldermead0(f,abc,fabc,tolx,tolfun,maxiter);
ifn<3,
break;
end
end
xo=x0;
function[xo,fo]=neldermead0(f,abc,fabc,tolx,tolfun,k)
[fabc,I]=sort(fabc);
a=abc(I(1),:);
b=abc(I(2),:);
c=abc(I(3),:);
fa=fabc(1);
fb=fabc(2);
fc=fabc(3);
fba=fbfa;
fcb=fcfb;
ifk<=0|abs(fba)+abs(fcb)<tolfun|abs(ba)+abs(cb)<tolx
xo=a;
fo=fa;
ifk==0
fprintf(Xemdayladiemcuctieu)
end
else
378
m=(a+b)/2;
e=3*m2*c;
fe=feval(f,e);
iffe<fb
c=e;
fc=fe;
else
r=(m+e)/2;
fr=feval(f,r);
iffr<fc
c=r;
fc=fr;
end
iffr>=fb
s=(c+m)/2;
fs=feval(f,s);
iffs<fc
c=s;
fc=fs;
else
b=m;
c=(a+c)/2;
fb=feval(f,b);
fc=feval(f,c);
end
end
end
[xo,fo]=neldermead0(f,[a;b;c],[fafbfc],tolx,tolfun,k1);
end
clearall,clc
f=inline(x(1)*x(1)x(1)*x(2)4*x(1)+x(2)*x(2)x(2));
x0=[00];
379
b=1;
delta=1e8;
epsilon=1e10;
maxiter=100;
[xmin,ymin]=neldermead(f,x0,delta,epsilon,maxiter)
5.PHNGPHPDCLNNHT
g([ x ]) = f([ x ]) =
x
x
x
2
n
1
vikchthcbctnhktilnlpthkchiuchnhsaochogitr
hmcctiutheohngtm.Thuttongmccbcsau:
Tilnlpthk=0,tmgitrhmf(x0)viimkhiux0
Tilnlpthk,tmktheohngg(x)
k 1 = f ( x k1 g k1 / g k1 )
(1)
Tnhgitrxk:
x k = x k 1 k 1g k1 / g k1
(2)
function[xo,fo]=steepest(f,x0,tolx,tolfun,alpha0,maxiter)
ifnargin<6
maxiter=100;
end
ifnargin<5
alpha0=10;%kichthuockhoigan
end
ifnargin<4
tolfun=1e8;
end%|f(x)|<tolfunmongmuon
ifnargin<3
tolx=1e6;
end%|x(k)x(k1)|<tolxmongmuon
x=x0;
380
fx0=feval(f,x0);
fx=fx0;
alpha=alpha0;
kmax1=25;
warning=0;
fork=1:maxiter
g=grad(f,x);
g=g/norm(g);%gradientlavectohang
alpha=alpha*2;%dethuditheohuonggradientam
fx1=feval(f,xalpha*2*g);
fork1=1:kmax1%timbuoctoiuu
fx2=fx1;
fx1=feval(f,xalpha*g);
iffx0>fx1+tolfun&fx1<fx2tolfun%fx0>fx1<fx2
den=4*fx12*fx02*fx2;
num=denfx0+fx2;%
alpha=alpha*num/den;Pt.(1)
x=xalpha*g;
fx=feval(f,x);%Pt.(2)
break;
else
alpha=alpha/2;
end
end
ifk1>=kmax1
warning=warning+1;%kgtimduocbuoctoiuu
else
warning=0;
end
ifwarning>=2|(norm(xx0)<tolx&abs(fxfx0)<tolfun)
break;
end
x0=x;
fx0=fx;
end
xo=x;fo=fx;
381
ifk==maxiter
fprintf(Daylaketquatotnhatsau%dlanlap,maxiter)
end
functiong=grad(func,x)
%Tinhgradientcuahamf(x).
h=1.0e6;
n=length(x);
g=zeros(1,n);
f0=feval(func,x);
fori=1:n
temp=x(i);
x(i)=temp+h;
f1=feval(func,x);
x(i)=temp;
g(1,i)=(f1f0)/h;
end
tmcctiucahmtadngchngtrnhctsteepest.m:
clearall,clc
f=inline(x(1)*x(1)x(1)*x(2)4*x(1)+x(2)*x(2)x(2));
x0=[0.50.5];
tolx=1e4;
tolfun=1e9;
alpha0=1;
maxiter=100;
[xo,fo]=steepest(f,x0,tolx,tolfun,alpha0,maxiter)
6.PHNGPHPNEWTON
Victmimcctiucahmf(x)tngngvivicxcnhx
chogradientg(x)cahmf(x)bngzero.Nghimcag(x)=0cthtmc
bngcchdngphngphpNewtonchohphngtrnhphituyn.Hm
newtons(x)dngtmnghimcaphngtrnhg(x)=0l:
function[x,fx,xx]=newtons(f,x0,tolx,maxiter)
382
h=1e4;
tolfun=eps;
EPS=1e6;
fx=feval(f,x0);
nf=length(fx);
nx=length(x0);
ifnf~=nx
error(Kichthuoccuagvax0khongtuongthich!);
end
ifnargin<4
maxiter=100;
end
ifnargin<3
tolx=EPS;
end
xx(1,:)=x0(:).;
fork=1:maxiter
dx=jacob(f,xx(k,:),h)\fx(:);%[dfdx]1*fx
xx(k+1,:)=xx(k,:)+dx.;
fx=feval(f,xx(k+1,:));
fxn=norm(fx);
iffxn<tolfun|norm(dx)<tolx
break;
end
end
x=xx(k+1,:);
ifk==maxiter
fprintf(Ketquatotnhatsau%dlanlap\n,maxiter)
end
functiong=jacob(f,x,h)%Jacobiancuaf(x)
ifnargin<3
h=1e4;
end
h2=2*h;
n=length(x);
383
x=x(:).;
I=eye(n);
forn=1:n
g(:,n)=(feval(f,x+I(n,:)*h)feval(f,xI(n,:)*h))/h2;
end
tmcctiucahmbngphngphpNewtonstadngchngtrnh
ctnewtons.m:
clearall,clc
f=inline(x(1).^2x(1)*x(2)4*x(1)+x(2).^2x(2));
g=inline([(2*x(1)x(2)4)(2*x(2)x(1)1)]);
x0=[0.10.1];
tolx=1e4;
maxiter=100;
[xo,fo]=newtons(g,x0,tolx,maxiter)
7.PHNGPHPGRADIENTLINHP
1.Khinimchung:Mttrongccphngphpgiibitntmcctiuca
hmnhiubinltmcc tiutheomtbinlintipngnimcc
tiu.Chinthutchungl:
chnim[x0]
lpvii=1,2,3,...
chnvect[vi]
cctiuhof([x])dctheong[xi1]theohng[vi].Coi[xi]
lcctiu.Nu [ xi ] [ xi1 ] < thktthclp
ktthc
2.Gradientlinhp:Takhosthmbc2:
1
1 T
T
f ([ x ]) = c bi xi + A i ,jxi x j = c [ b] [ x ] + [ x ] [ A ][ x ]
2 i j
2
i
(1)
ohmcahmtheoxichota:
f
= bi + A i ,jx j
x i
j
Vitdidngvecttac:
f = [ b ] + [ A ][ x ]
(2)
384
viflgradientcaf.
[x]=[x0]+s[u]
vislkhongcchdichuyn.Thaybiuthcnyvo(2)tacgradientdc
theo[u]:
(3)
[v]T[u]=0hay[v]T[A][u]=0
thhngca[u]v[v]llinhp.iunychothykhitamuncctiu
hof(x)theohng[v],tacndichuyntheohng[u]khnglmhng
cctiutrc.Vihmbchainbinclptacthxydngnhng
lin hp. Cc phng php gradient lin hp khc nhau dng cc k thut
khcnhautmhnglinhp.
3.PhngphpPowell:PhngphpPowelllphngphpbczero,ch
ihitnhf([x]).Thuttongmccbc:
chnim[x0]
chn vec t [vi], thng ly [vi] = [ei] vi [ei] l vec t n v theo
hng[xi]
vngtrn
lpvii=1,2,...
tm cc tiu ca f([x]) dc theo ng i qua [xi1] theo
hng[vi];coi[xi]lcctiu
ktthclp
[vn+1]=[x0][xn];tmcctiucaf([x])dctheongiqua[x0]
theohng[vn+1];coi[xn+1]lcctiu
nu [ x n +1 ] [ x n ] < thktthcvnglp
lp
[vi+1]=[v]
ktthcvngtrn
Taxydnghmpowell()thchinthuttontrn:
function[xmin,fmin,ncyc]=powell(h,tol)
%PhuongphapPowelldetimcuctieucuahamf(x1,x2,...,xn).
385
globalxfuncv
ifnargin<2;
tol=1.0e6;
end
ifnargin<1
h=0.1;
end
ifsize(x,2)>1
x=x;
end
n=length(x);
df=zeros(n,1);
u=eye(n);
xold=x;
fold=feval(func,xold);
fori=1:n
v=u(1:n,i);
[a,b]=goldbracket(@fline,0.0,h);
[s,fmin]=golden(@fline,a,b);
df(i)=foldfmin;
fold=fmin;
x=x+s*v;
end
v=xxold;
[a,b]=goldbracket(@fline,0.0,h);
[s,fMin]=golden(@fline,a,b);
x=x+s*v;
ifsqrt(dot(xxold,xxold)/n)<tol
xmin=x;
ncyc=j;
return
end
imax=1;
dfmax=df(1);
fori=2:n
ifdf(i)>dfmax
386
imax=i;
dfmax=df(i);
end
end
fori=imax:n1
u(1:n,i)=u(1:n,i+1);
end
u(1:n,n)=v;
end
error(PhuongphapPowellkhonghoitu)
functionz=fiine(s)%ftheohuongcuav
globalxfuncv
z=feval(func,x+s*v);
functiony=f(x)
y=100.0*(x(2)x(1).^2).^2+(1.0x(1)).^2;
tmimcctiutadngchngtrnhctpowell.m:
clearall,clc
globalxfunc
func=@f;
x=[1.0;1.0];
[xmin,fmin,numcycles]=powell
fminsearch(func,x)
3.PhngphpFletcherReeves:PhngphpPowellcnnngcctiu
ho.Tacthchcndngmtngviphngphpbc1.Phngphp
ny c 2 phng n: thut ton Fletcher Reeves(FR) v thut ton Polak
Ribiere(PR).Thuttontmttnhsau:
cho[x0],tnhf([x0])
khignx(n)=xk;tnh[g0]=f([x0]);s(k)=g(xk)
lpk=0,1,2,...
[xk+1]=[xk]+k[sk]
387
[g
(
=
T
] [g k ] )[g k+1 ]
g k +1 ] [ g k +1 ]
[
(PR)
k
(FR) hay k =
T
T
[g k ] [g k ]
[g k ] [g k ]
[ s k+1 ] = [g k +1 ] + k [ s k ]
k +1
cpnht[xk]
chonkhihit
Taxydnghmconjugate()thchinthuttontrn:
function[xo,fo]=conjugate(f,x0,tolx,tolfun,alpha0,maxiter,KC)
%KC=1:PhuongphapgradientlienhopPolakRibiere
%KC=2:PhuongphapgradientlienhopFletcherReeves
ifnargin<7
KC=0;
end
ifnargin<6
maxiter=100;
end
ifnargin<5
alpha0=10;
end
ifnargin<4
tolfun=1e8;
end
ifnargin<3
tolx=1e6;
end
n=length(x0);
nmax1=20;
warning=0;
h=1e4;
x=x0;
fx=feval(f,x0);
fx0=fx;
fork=1:maxiter
xk0=x;
fk0=fx;
388
alpha=alpha0;
g=grad(f,x);
s=g;
forn=1:n
alpha=alpha0;
fx1=feval(f,x+alpha*2*s);
forn1=1:nmax1
fx2=fx1;
fx1=feval(f,x+alpha*s);
if(fx0>fx1+tolfun)&(fx1<fx2tolfun)%fx0>fx1<fx2
den=4*fx12*fx02*fx2;
num=denfx0+fx2;
alpha=alpha*num/den;
x=x+alpha*s;
fx=feval(f,x);
break;
elseifn1==nmax1/2
alpha=alpha0;
fx1=feval(f,x+alpha*2*s);
else
alpha=alpha/2;
end
end
x0=x;
fx0=fx;
ifn<n
g1=grad(f,x,h);
ifKC<=1
s=g1+(g1g)*g1/(g*g+1e5)*s;
else
s=g1+g1*g1/(g*g+1e5)*s;
end
g=g1;
end
ifn1>=nmax1
warning=warning+1;%kgtimduockichthuoctoiuu
389
else
warning=0;
end
end
if(warning>=2)|((norm(xxk0)<tolx)&(abs(fxfk0)<tolfun))
break;
end
end
xo=x;
fo=fx;
ifk==maxiter
fprintf(Giatritotnhatsau%dlanlap,maxiter)
end
8.PHNGPHPMPHNGQUTRNH
E
KT
p(E) = e
(1)
Chlnhitcao,ngcongphnbxcsutphngtrongmtphm
viErng,nglhthngcthtrngthinnglngcaocngngang
bngtrngthinnglngthp.Trongkhinhitthpngcong
390
phnbxcsutcaonhitthpvthpnhitcao,nglhthng
ckhnngmcnnglngthpnhiuhnnhngvncmtchinh
trngthinnglngcaoncththotkhitrngthinnglngcc
tiuaphng.
tngcathuttonSAgmccbcsau:
Chogitrbanu[xo],bindi[l],bintrn[u],slnlpccai,
kmax,hsttq>0(ttnhanhhaychm)vsaistngifcadao
nggitrcahm.
Cho[x]=[xo];[xo]=[x];[fo]=f([x])
Lptk=1nkmax
toravectngunhinN1:[U]=[1,+1]
k
100
k max
[x]=[x1]vnuf([x])<[fo]th[x]=[xo]v[fo]=f([xo])
khngth:
to s ngu nhin z trong on [0, 1] v cho [x] = [x1] ch
trongtrnghpz<p
Vi[xo]gnviimcctiumtaangtmtacthdngnnh
gi tr u v dng cc quy tc tm cc tiu a phng khc tm
imcctiucahmf([x])
Da trn thut ton ny ta xy dng hm simannealing(). Hm ny c hai
phncsbclpthayikhinhitgim.Mtphnckchthcca
bctnh[x]torabivectngunhin[y]cccgitrnmtrongon[
1,1]vibin[x]ccngkchthcvnhn1([y])vihiu([u][l]).Quytc
nghcho:
y
(1 + )
1
g =
sign(y) y 1
(2)
thchintronghminvmu()vitngtheoquylut:
= 10
k
100
k max
(3)
functionx=muinv(y,mu)%luatmunghichdaoPt.(2)
x=(((1+mu).^abs(y)1)/mu).*sign(y);
391
Phncnlilxcsutcavicdngbc[x].Tngt(1)tac:
q
p=e
k
f
k max f ([ x ]) f
f > 0
(4)
Taxydnghmsimannealing()thchinthuttontrn:
function[xo,fo]=simannealing(f,x0,l,u,kmax,q,tolfun)
%PhuongphapSAdetimcuctieucuahamf(x)l<=x<=u
n=length(x0);
x=x0;
fx=feval(f,x);
xo=x;
fo=fx;
ifnargin<7
tolfun=1e10;
end
ifnargin<6
q=1;
end%hesotat
ifnargin<5
kmax=100;
end%solanlapmax
fork=0:kmax
Ti=(k/kmax)^q;
mu=10^(Ti*100);%Pt.(3)
dx=muinv(2*rand(size(x))1,mu).*(ul);
x1=x+dx;
x1=(x1<l).*l+(l<=x1).*(x1<=u).*x1+(u<x1).*u;
fx1=feval(f,x1);
df=fx1fx;
if(df<0)|(rand<exp(Ti*df/(abs(f(x)+eps))/tolfun))%Pt.(4)
x=x1;
fx=fx1;
end
iffx<fo
xo=x;
fo=fx1;
392
end
end
tmcctiucahmtadngchngtrnhctsimannealing.m:
clear,clc
f=inline(x(1)^416*x(1)^25*x(1)+x(2)^416*x(2)^25*x(2),x);
l=[55];
u=[55];%bienduoi/tren
%x0=[0.51];
x0=[00];
kmax=500;
q=1;
tolfun=1e10;
[xmin,fmin]=simannealing(f,x0,l,u,kmax,q,tolfun)
[xmin1,fmin1]=neldermead(f,x0,1e5,1e8,kmax)
[xmin2,fmin2]=fminsearch(f,x0)
Trong chng trnh trn, ta dng thm cc thut ton khc so snh. Kt
qulthuttonSActhtmccctiutoncc.Tuynhinkhngphi
khi no thut ton cng thnh cng. S thnh cng ca thut ton ny ph
thucgitruvmaymn,trongkhiccthuttonkhcsthnhcngch
phthucgitru.
9.THUTTONDITRUYN
Thuttonditruyn(geneticalgorithmGA)lmtkthuttmngu
nhincnhhng,mphngschnlctnhinccccthsngst
thch nghi nht. Cng nh thut ton SA, GA cho php tm c cc tiu
tonccngayckhihmitngcnhiucctrgmccimun,cc
cctiuaphng,cccciaphng.Thuttonditruynlaigmcc
bc:khign,chnlc,vtqua,tbin.Thuttongmccbcsau:
Cho gi tr u [xo] = [xo1, xo2,...,xoN] (N l kch thc ca bin), bin
di[l]=[l1,...,lN],bintrn[u]=[u1,...,uN],kchthccaqunthNp,
vec t Nb = [Nb1,..., NbN] gm s bit cc gn cho mi th hin ca mi
binxi,xcsutsngstPc,xcsuttbinPm,tlhc(01,th
393
hinhcnhanhhaychm),slnlpccikmax.Chlkchthc
ca[xo],[u],[l]ulN.
Khitongunhinscthbanucaqunth.
Cho[xo]=[xo],fo=f([xo])vxydngtheocchngunhinmngccc
thbanu[X1]chaNptrngthi(trongvngchophpbobibin
trn[u]vbindi[l])baogmctrngthibanu[xo]bngcch
t:
(1)
[X1(1)]=[xo],[X1(k)]=[l]+rand.([u][l])k=2,..,Np
Sau m ho mi s ca mng qun th ny thnh mt chui nh
phnbng:
m 1
m
P1 n,1 + N bi : N bi =biudinnhphncaX1(n,m)viNbmbit
i =1
i =1
X (n,m) l(m)
= ( 2 Nbm 1) 1
(2)
u(m) l(m)
vin=1,...,Npvm=1,...,N
sao cho ton th mng qun th tr thnh mng m mi hng l mt
N
nhinscthcbiudinbngchuinhphn N bi bit.
i =1
Lptk=1nkmax:
giimmiscamngthnhsthpphnbng:
m 1
m
i =1
i =1
viNbmbit
u(m) l(m)
+ l(m)
= Pk (n,.)
(3)
( 2Nbm 1)
n=1,...,N;m=1,...,N
vtnhgitrf(n)cahmivimihngXk(n,:)=[x(n)]
tngngviminhimscthvtmcctiufmin=f(nb)
tngngviXk(n,:)=[x(nb)]
nufmin=f(nb)<fothtfo=f(nb)v[xo]=[x(nb)]
binigitrcahmthnhgitrthchhpbng:
N
(4)
nu Max n=1p {f(n)} 0 ,ktthcqutrnhv[xo]lgitrttnht.
N
Nukhng,tonhiunhinscthhnquanhimttnht
[x(nb)]chothhsau,tadngquytcchnlc:
394
f1 (n b ) f1 (n)
(5)
{[ x(n b )] [ x(n)]}
f1 (n b )
ccqunthmi[Xk+1]cXk+1(n,:)=[x(n)]vmhon
xydngmngPk+1mitheo(2)
xotrnchshngcamngPk+1
vixcsuttntiPc,thayiphncuibtutvibitngu
nhin ca cc s trong 2 cp nhim sc th ngu nhin(hng c
Pk+1)viccnhimscthkhccmatrn Pk +1
vixcsuttbinPm,nghchomtbtngunhinca mi
hngbiudinbinhimscth(hngca Pk +1 )toramng
Pk+1
Luthuttonnhsau:
Khign
nhgi
Nugitr
hmcaccnhimsc
Ktthc
thbngnhau
Chnlc
Vtqua
tbin
Taxydnghmgenetic()thchinthuttontrn:
function[xo,fo]=genetic(f,x0,l,u)
[ x(n)] = [ x(n)] +
395
%ThuattoanGeneticAlgorithmtimcuctieucuahamf(x)tgdoanl<=x<=u
N=length(x0);
kmax=100;%solanlap(thehe)
eta=1;%tilehoc(0<eta<1)
Pm=0.01;%xacsuatdotbien
Pc=0.5;end%xacsuattontai
Nb=8*ones(1,N);
Np=10;%sonhiemsacthe
%khoigan
NNb=sum(Nb);
xo=x0(:);
l=l(:);
u=u(:);
fo=feval(f,xo);
X(1,:)=xo;
forn=2:Np
X(n,:)=l+rand(size(x0)).*(ul);%Pt.(1)
end
P=genencode(X,Nb,l,u);%Pt.(2)
fork=1:kmax
X=gendecode(P,Nb,l,u);%Pt.(3)
forn=1:Np
fX(n)=feval(f,X(n,:));
end
[fxb,nb]=min(fX);
iffxb<fo
fo=fxb;
xo=X(nb,:);
end
fX1=max(fX)fX;%Pt.(4)
fXm=fX1(nb);
iffXm<eps
return;
end%ketthucneutatcacacnhiemsacthenhunhau
%Chonlocthehtieptheo
forn=1:Np
396
X(n,:)=X(n,:)+eta*(fXmfX1(n))/fXm*(X(nb,:)X(n,:));%Pt.(5)
end
P=genencode(X,Nb,l,u);
is=shuffle([1:Np]);
forn=1:2:Np1
ifrand<Pc
P(is(n:n+1),:)=crossover(P(is(n:n+1),:),Nb);
end
end
%Dotbien
P=mutation(P,Nb,Pm);
end
functionX=gendecode(P,Nb,l,u)
%giaima
Np=size(P,1);
N=length(Nb);
forn=1:Np
b2=0;
form=1:N
b1=b2+1;
b2=b1+Nb(m)1;%Pt.(3)
X(n,m)=bin2dec(P(n,b1:b2))*(u(m)l(m))/(2^Nb(m)1)+l(m);
end
end
functionP=genencode(X,Nb,l,u)
Np=size(X,1);
N=length(Nb);
forn=1:Np
b2=0;
form=1:N
b1=b2+1;
b2=b2+Nb(m);
Xnm=(2^Nb(m)1)*(X(n,m)l(m))/(u(m)l(m));%Pt.(2)
P(n,b1:b2)=dec2bin(Xnm,Nb(m));
397
end
end
functionchrms=crossover(chrms2,Nb)
Nbb=length(Nb);
b2=0;
form=1:Nbb
b1=b2+1;
bi=b1+mod(floor(rand*Nb(m)),Nb(m));
b2=b2+Nb(m);
tmp=chrms2(1,bi:b2);
chrms(1,bi:b2)=chrms(2,bi:b2);
chrms(2,bi:b2)=tmp;
end
functionP=mutation(P,Nb,Pm)
Nbb=length(Nb);
forn=1:size(P,1)
b2=0;
form=1:Nbb
ifrand<Pm
b1=b2+1;
bi=b1+mod(floor(rand*Nb(m)),Nb(m));
b2=b2+Nb(m);
P(n,bi)=~P(n,bi);
end
end
end
functionis=shuffle(is)
N=length(is);
forn=N:1:2
in=ceil(rand*(n1));
tmp=is(in);
is(in)=is(n);
is(n)=tmp;
end
398
tmcctiucahmtadngchngtrnhctgenetic.m:
clearall,clc
f=inline(x(1).^2+2*x(2).^2);
l=[55];
u=[55];%bienduoi/tren
x0=[00];
[xmin,fmin]=genetic(f,x0,l,u)
10.THUTTONFIBONACCI
Trongthuttontlvng,hailntnhgitrcahmcthchin
tilnlputinvsauchtnhgitrhmmtlntrongcclnlptip
theo.Gitrcarlhngstrongmionconvvictmimcctiukt
thctionconthkc a k b k < hay f(b k f(a k ) < .Phngphptm
theothuttonFibonaccikhcphngphptlvngchrkhngphil
hngstrnmioncon.Ngoirasoncon(sbclp)cxcnh
trc.ThuttontmFibonaccidatrndysFibonaccicxcnhbng
phngtrnh:
fo=0
f1=1
fn=fn1+fn2vin=2,3,...
NhvydysFibonaccil:0,1,1,2,3,5,8,13,21,34,55,...
Gistachmf(x)ccctiutrnon[a,b].Nhtrongphng
phptlvng,0.5<ro<1cchnsaochochaiimbntrongcovdo
s c dng trong on con tip theo v nh vy ch cn tnh gi tr ca
hmmtln.Nuf(co)<f(do)thcctiunmtrongon[ao,do]vtathay
a1 = a o v b1 = do vtiptctmtrongkhongmi [a1 ,b1 ] = [a o ,do ] .Nuf(co)
>f(do)thcctiunmtrongon[co,bo]vtathaya1=covb1=bovtip
tctmtrongkhongmi [a1 ,b1 ] = [ c o ,bo ] nhhnhv.
ao eo co
do
bo
ao
co
do
eo bo
399
Nuf(co)<f(do)vchmuntnhgitrcahmmtlntrongon[ao,bo]ta
schnr1(0.5<r1<1)trongoncon [a1 ,b1 ] = [a o , bo ] . Takhiub1=dov
doco[ao,do]nntac:
doco=b1d1
(1)
Tsrocchnsaochodoao=ro(boao)vcoao=(1ro)(boao)vthay
th:
doco=(doao)(coao)
doco=ro(boao)(1ro)(boao)
doco=(2ro1)(boao)
(2)
vr1cchnsaocho:
b1d1=(1r1)(b1a1)
(3)
Thay(2)v(3)vo(1)tac:
(2ro1)(boao)=(1r1)(b1a1)
(4)
Nhvyon[a,b]bcongnbnghsrov(b1a1)=ro(boao)v:
(2ro1)(boao)=(1r1)ro(boao)
(5)
Rtgntac:
(2ro1)=(1r1)ro
(6)
T(6)tatnhcr1:
1 ro
r1 =
(7)
ro
f
Trong(7),thay ro = n 1 tac:
fn
f
1 n 1
f f
f
fn
= n n 1 = n 2
r1 =
fn 1
fn 1
fn 1
fn
TartrarngthuttontmFibonaccicthbtubng:
f
f
ro = n 1
r1 = n2
fn
fn 1
v:
f
rk = n 1k ,k=1,2,...,n3
fn k
Bccuicngl:
f 1
rn3 = 2 =
f3 2
400
(8)
Ccimbntrongckvdkcxcnhbng:
(9)
c k = a k + 1 + n 1k (bk a k )
f
nk
(10)
d k = a k +1 + n1k (b k a k )
fn k
Taxydnghmfibonacci()thchinthuttontrn:
function[x,y]=fibonacci(f,a,b,n)
%PhuongphapFibonaccidetimcuctieucua
%hamftrong(a,b)voinbuoctinh
fn2=1;
fn1=1;
fn=fn1+fn2;
fori=3:n
fn2=fn1;
fn1=fn;
fn=fn1+fn2;
end
l=(ba)*fn2/fn;
x1=a+l;
x2=bl;
f1=feval(f,x1);
f2=feval(f,x2);
fibn=fn;
ll1=ba;
401
forj=3:n
llj=ll1*fn2/fibn;
fn=fn1;
fn1=fn2;
fn2=fnfn1;
iff2>f1
b=x2;
l=(ba)*fn2/fn;
x2=x1;
x1=a+l;
f2=f1;
f1=feval(f,x1);
else
a=x1;
l=(ba)*fn2/fn;
x1=x2;
x2=bl;
f1=f2;
f2=feval(f,x2);
end
end
x=x1;y=f1;
tmcctiucahmtrongon(a,b)tadngchngtrnhctfibonacci.m:
clearall,clc
f=inline(1.6*x^23*x+2);
a=0.;
b=1;
n=50;
[x,y]=fibonacci(f,a,b,n)
402
Phngtrnhviphnohmring(PDE)lmtlpccphngtrnh
vi phn c s bin c lp ln hn 1. Trong chng ny ta s kho st cc
phng trnh vi phn o hm ring cp 2 vi hai bin c lp x v y, c
dngtngqut:
2u
2u
2u
u u
A(x,y) 2 + B(x,y)
(1)
+ C(x, y) 2 = f x,y,u, ,
x
xy
y
x y
vixoxxf,yoyyfvcciukinbin:
u(x,y o ) = b yo (x)
u(x,y f ) = b yf (x)
PDEelliptic:
PDEparabolic: B2 4AC = 0
2.PHNGTRNHELLIPTIC
TaxtphngtrnhHelmholz:
2 u(x,y) 2 u(x,y)
2 u(x,y) + g(x, y) =
+
+ g(x,y)u(x,y) = f(x,y) (1)
x 2
y 2
(2)
u(xo ,y) = b xo (y)
u(xf ,y) = b xf (y)
vixj=xo+jx,yj=yo+jy
(3.a)
x 2 x j ,yi
x 2
403
u i+1,j 2u i ,j + u i1,j
2 u(x,y)
viui,j=u(xj,yi)
y 2 x ,y
x 2
j
(3.b)
Nhvytimiimbntrong(xj,xi)vi1iMy1v1jMxitnhn
cphngtrnhsaiphn:
u i ,j+1 2u i ,j + u i ,j1 u i+1,j 2u i ,j + u i1,j
+
= g i ,ju i ,j = fi ,j
(4)
x 2
y 2
Trong:
fi,j=f(xj,yi)
gi,j=g(xj,yi)
ui,j=u(xj,yi)
Ccphngtrnhnyspxplitheocchnothnhhphngtrnhvi
(My1)(Mx1)bin u1,1 ,u1,2 ,...,u1,Mx 1 ,u 2 ,1 ,...,u 2 ,Mx 1 ,...,u My 1,2 ,...,u My 1,Mx 1 .
ddngtavitliphngtrnhviukinbindidng:
(5a)
u i ,o = b xo (y i )
(5b)
u i ,Mx = b xf (y i )
u o ,j = b yo (x j )
u My ,j = b yf (x j )
Trong:
y 2
x 2 y 2
x 2
ry =
rx =
rxy =
(6)
2( x 2 + y 2 )
2( x 2 + y 2 )
2( x 2 + y 2 )
Bygitakhosttipccdngiukinbin.CcbitonPDEc2loi
iukinbin:iukinbinNeumannviukinbinDirichlet.iukin
binNeumannmtbng:
u(x,y)
(7)
= bxo (y)
x x=xo
Thayohmbc1bintri(x=xo)bngxpx3im:
u i ,1 u i ,1
= bxo (y i )
u i ,1 u i ,1 2bxo (y i )x i=1,2,...,My1
2 x
Thaythrngbucnyvo(5a)ccimbintac:
(8)
(9)
Nuiukinbintrnbindi(y=yo)cnglkiuNeumanntasvitcc
phngtrnhtngtvij=1,2,...,Mx1:
u 0 ,j = 2rx u1,j + ry (u 0 ,j+1 + u 0 ,j1 ) + rxy g 0 ,j u 0 ,j f0 ,j 2by0 (x j )y
(10)
vbsungchogcditri(xo,yo):
404
by (x0 )
bx (y 0 )
+2 0
u 0 ,0 = 2(ry u 0 ,1 + rx u1,0 ) + rxy g 0 ,0 u 0 ,0 f0 ,0 2 0
(11)
x
y
iukinbinDirichletchogitrhmtrnbinnncththaytrctipvo
phngtrnh.Tacthlygitrtrungbnhcaccgitrbinlmgitr
ucaui,j.Taxydnghmpoisson()thchinthuttonny:
function[u,x,y]=poisson(f,g,bx0,bxf,by0,byf,D,Mx,My,tol,maxiter)
%giaia(u_xx+u_yy+g(x,y)u=f(x,y)
%trenmienD=[x0,xf,y0,yf]={(x,y)|x0<=x<=xf,y0<=y<=yf}
%voidieukienbien:
%u(x0,y)=bx0(y),u(xf,y)=bxf(y)
%u(x,y0)=by0(x),u(x,yf)=byf(x)
%Mxsodoancontrentrucx
%Mysodoancontrentrucy
%tol:saisochophep
%maxiter:solanlap
x0=D(1);
xf=D(2);
y0=D(3);
yf=D(4);
dx=(xfx0)/Mx;
x=x0+[0:Mx]*dx;
dy=(yfy0)/My;
y=y0+[0:My]*dy;
Mx1=Mx+1;
My1=My+1;
%dieukienbien
form=1:My1
u(m,[1Mx1])=[bx0(y(m))bxf(y(m))];
end
forn=1:Mx1
u([1My1],n)=[by0(x(n));byf(x(n))];
end
sumbv=sum(sum([u(2:My,[1Mx1])u([1My1],2:Mx)]));
u(2:My,2:Mx)=sumbv/(2*(Mx+My2));
fori=1:My
405
forj=1:Mx
F(i,j)=f(x(j),y(i));
G(i,j)=g(x(j),y(i));
end
end
dx2=dx*dx;
dy2=dy*dy;
dxy2=2*(dx2+dy2);
rx=dx2/dxy2;
ry=dy2/dxy2;
rxy=rx*dy2;
foritr=1:maxiter
forj=2:Mx
fori=2:My
u(i,j)=ry*(u(i,j+1)+u(i,j1))+rx*(u(i+1,j)+u(i1,j))...
+rxy*(G(i,j)*u(i,j)F(i,j));%Pt.(5a)
end
end
ifitr>1&max(max(abs(uu0)))<tol
break;
end
u0=u;
end
TagiiphngtrnhLaplace:
2 u(x,y) 2 u(x, y)
2 u(x, y) =
+
= 0
x 2
y 2
trongmin0x4,0y4viiukinbin:
u(0,y) = e y cosy
u(4,y) = e x cos4 e 4cosy
u(x,0) = cosxe x
(vd1)
(vd2)
(vd3)
Tamunnhncu(x,y),mtphnbnhittrnmttmvungmi
cnh di 4 n v. Ta dng chng trnh ctpoisson.m gi hm poisson()
giibitonny.
clearall,clc
406
f=inline(0,x,y);
g=inline(0,x,y);
x0=0;
xf=4;
Mx=20;
y0=0;
yf=4;
My=20;
bx0=inline(exp(y)cos(y),y);%(vd.2a)
bxf=inline(exp(y)*cos(4)exp(4)*cos(y),y);%(vd.2b)
by0=inline(cos(x)exp(x),x);%(vd.3a)
byf=inline(exp(4)*cos(x)exp(x)*cos(4),x);%(vd.3b)
D=[x0xfy0yf];
maxiter=500;
tol=1e4;
[U,x,y]=poisson(f,g,bx0,bxf,by0,byf,D,Mx,My,tol,maxiter);
clf
mesh(x,y,U)
axis([0404100100])
3.PHNGTRNHPARABOLIC
1. Dng phng trnh: Mt phng trnh vi phn o hm ring dng
paraboliclphngtrnhmtsphnbnhitimxtithiimt
camtthanh:
2 u(x,t) u(x,t)
(1)
A
=
x 2
t
phng trnh c th gii c ta phi cho iu kin bin u(0, t) = b0(t),
u(xf ,t) = bxf (t) viukinuu(x,0)=i0(x)
2.PhngphpEulertintngminh:pdngphngphpsaiphn
hu hn, ta chia min khng gian [0, xf] thnh M on, mi on di
x = xf / M vchiathigianTthnhNphn,miphnlt=T/N.Sauta
thayohmbc2vtrivohmbcvphica(1)bngccxpx
3imvnhnc:
u k 2u ik + u ik1 u ik+1 u ik
A i +1
=
(2)
x 2
t
407
Cngthcnycthgignvothuttonsau,gilthuttonEultin
tngminh:
t
(3)
x
i=1,2,...,M1
tmiukinnnhcathutton,tathaynghimth:
ji
P
u = e
(4)
viPlsnguynkhczerovophngtrnh(3)vc:
j
j
= r e + e P + (1 2r) = 1 2r 1 cos
(5)
P
Dotaphic||1vibitonkhngcngunnniukinnnhl:
t 1
r=A 2
(6)
x
2
Taxydnghmfwdeuler()thchinthuttontrn
function[u,x,t]=fwdeuler(a,xf,T,it0,bx0,bxf,M,N)
%giaiau_xx=u_tvoi0<=x<=xf,0<=t<=T
%dieukiendau:u(x,0)=it0(x)
ieukienbien:u(0,t)=bx0(t),u(xf,t)=bxf(t)
%Msodoancontheox
%Nsodiemtheot
dx=xf/M;
x=[0:M]*dx;
dt=T/N;
t=[0:N]*dt;
fori=1:M+1
u(i,1)=it0(x(i));
end
forn=1:N+1
u([1M+1],n)=[bx0(t(n));bxf(t(n))];
end
r=a*dt/dx/dx
r1=12*r;
fork=1:N
fori=2:M
u(i,k+1)=r*(u(i+1,k)+u(i1,k))+r1*u(i,k);%Pt.(3)
k
i
408
end
end
3. Phng php Euler li n: Ta kho st mt thut ton khc gi l thut
tonEulerli,nsinhradothaythlixpxohmiviohmbc
1trnvphica(1):
u ik+1 2u ik + u ik1 u ik u ik 1
A
=
(7)
x 2
t
t
ru ik1 + (1 + 2r)u ik ru ik+1 = u ik 1 r = A 2
(8)
x
k
c hai u cho trc t iu kin bin kiu
Nu cc gi tr u 0k v u M
Dirichletnnphngtrnh(8)atihphngtrnh:
k
k 1
k
1 + 2r
r
0
0
0
0 u1 u1 + ru 0
k
k 1
u
u
r
1
2r
r
0
0
0
2
2
k
k 1
r
r
1 + 2r
0
0
u3
u3
(9)
M
M
M
M
M M
M
M
k
k 1
+
L
0
0
1
2r
r
u
u
M2
M 2
0
r
0
0
1 + 2r u k u k1 + ru k
L
M
M1 M 1
u
iukinbinNeumann
= b0 (t) cavophngtrnhbngcch
x x=0
xpx:
u1k u k1
(10)
= b0 (k)
2 x
vghpnviphngtrnhcn u 0k :
ru k1 + (1 + 2r)u 0k ru1k = u 0k 1
ccphngtrnh:
(1 + 2r)u 0k 2ru1k = u 0k 1 2rb0 (k)x
Ktqutacchphngtrnh:
(11)
(12)
409
1 + 2r
0
0
r
1 + 2r
0
r
r
0
1 + 2r
r
r
0
1 + 2r
r
0
M
M
M
M
0
0
0
0
0
0
0
0
L
L
L
L
M
L
L
0 u 0k u 0k 2rb0 (k)x
0
0 u1k
u1k1
k
k 1
0
0 u2
u2
k
0
0 u3 =
u k3 1
(13
0 M
r
M
k
k 1
1 + 2r
r u 0
uM
2
k
k
1
k
1 + 2r u 0 u M 1 + ru M
r
0
iukinnnhcanghiml:
re
hay: =
+ (1 + 2r) re =
P
1 + 2r 1 cos
P
Taxydnghmbackeuler()thchinthuttonny:
function[u,x,t]=backeuler(a,xf,T,it0,bx0,bxf,M,N)
%Giaiau_xx=u_tvoi0<=x<=xf,0<=t<=T
%Dieukiendau:u(x,0)=it0(x)
%ieukienbien:u(0,t)=bx0(t),u(xf,t)=bxf(t)
%Msokhoangcontrentrucx
%Nsokhoangtheot
dx=xf/M;
x=[0:M]*dx;
dt=T/N;
t=[0:N]*dt;
fori=1:M+1
u(i,1)=it0(x(i));
end
forn=1:N+1
u([1M+1],n)=[bx0(t(n));bxf(t(n))];
end
r=a*dt/dx/dx;
r2=1+2*r;
fori=1:M1
(14)
410
A(i,i)=r2;%Pt.(9)
ifi>1
A(i1,i)=r;
A(i,i1)=r;end
end
fork=2:N+1
b=[r*u(1,k);zeros(M3,1);r*u(M+1,k)]+u(2:M,k1);%Pt.(9)
u(2:M,k)=trid(A,b);
end
4.Phngphp CrankNicholson:Trong(7),xpxohmvtrily
thiimk,trongkhixpxohmvphi.cithin,talyohm
vtriltrongbnhcaxpxohmtihaiimlkvk+1vc:
A u ik++11 2u ik+1 + u ik+11 u ik+1 2u ik + u ik1 u ik+1 u ik
+
(15)
=
x 2
x 2
2
t
vnhncphngphpCrankNicholson:
t
k +1
r
2(1
r)
r
0
0
0
u2
0
2(1 + r)
0
0 u k3 +1
r
r
M
M
M
M
M M
M
0
k +1
0
0
2(1
r)
r
L
+
u M 1
0
0
0
2(1 + r) u k +1
L
r
M
k
2(1 r)
r
0
0
0
0 u1
k
r
2(1
r)
r
0
0
0
u2
0
r
2(1 r)
r
0
0 u k3
=
M
M
M
M
M
M
0
0
0
2(1 r)
r u k
L
M 1
0
0
0
r
2(1 r) u k
L
411
r(u 0k +1 + u 0k )
+
M
2r [ bM (k + 1) + bM (k)]
iukinnnhcxcnhbng:
2 1 + r 1 cos = 2 1 r 1 cos
P
P
1 r 1 cos
P
1
hay: =
1 + r 1 cos
P
Taxydnghmcranknicholson()thchinthuttontrn:
function[u,x,t]=cranknicholson(a,xf,T,it0,bx0,bxf,M,N)
%Giaiau_xx=u_tvoi0<=x<=xf,0<=t<=T
%Dieukiendau:u(x,0)=it0(x)
%Dieukienbien:u(0,t)=bx0(t),u(xf,t)=bxf(t)
%Msokhoangcontrentrucx
%Nsokhoangtheot
dx=xf/M;
x=[0:M]*dx;
dt=T/N;
t=[0:N]*dt;
fori=1:M+1
u(i,1)=it0(x(i));
end
forn=1:N+1
u([1M+1],n)=[bx0(t(n));bxf(t(n))];
end
r=a*dt/dx/dx;
r1=2*(1r);
r2=2*(1+r);
fori=1:M1
(17)
(18)
412
A(i,i)=r2;%Pt.(17)
ifi>1
A(i1,i)=r;
A(i,i1)=r;
end
end
fork=2:N+1
b=[r*u(1,k);zeros(M3,1);r*u(M+1,k)]...
+r*(u(1:M1,k1)+u(3:M+1,k1))+r1*u(2:M,k1);
u(2:M,k)=trid(A,b);%Pt.(17)
end
giiphngtrnh:
2 u(x,t) u(x,t)
=
0 x 1, 0 t 0.1
x 2
t
viiukinu:
Nhvyvix=xf/M=1/20vt=T/N=1/100tac:
t
0.001
r = A 2 = 1.
= 0.4
x
0.052
Tadngchngtrnhctheat.mtmnghimca(vd1):
clearall,clc
a=1;%cacthongsocua(vd1)
it0=inline(sin(pi*x),x);%dieukiendau
bx0=inline(0);
bxf=inline(0);%dieukienbien
xf=1;
M=25;
T=0.1;
N=100;
[u1,x,t]=fwdeuler(a,xf,T,it0,bx0,bxf,M,N);
figure(1),clf,mesh(t,x,u1)
[u2,x,t]=backeuler(a,xf,T,it0,bx0,bxf,M,N);
figure(2),clf,mesh(t,x,u2)
[u3,x,t]=cranknicholson(a,xf,T,it0,bx0,bxf,M,N);
(vd1)
(vd2)
(vd3)
413
figure(3),clf,mesh(t,x,u3)
4.PDEparabolic2chiu:Taxtbitonphngtrnhviphnohmring
parabolichaichiumtsphnbnhitu(x,y,t):
2 u(x,y,t) 2 u(x,y,t) u(x, y,t)
A
(19)
+
=
2
2
x
y
t
phngtrnhcthgiictacnchoiukinbin:
u(x0 ,y,t) = bx0 (y,t)
u(xf ,y,t) = b xf (y,t)
viukinuu(x,y,0)=i0(x,y)
Tathayohmbc1theotvphibngsaiphn3imtiimgia
(tk+1+tk)/2nhphngphpCrankNicholson.Tacngthaythmttrong
ccohmbchaiuxxvuyybngxpx3imtithiimtkvohm
kiatitk+1vc:
u ik,j+1 2u ik,j + u ik,j1 u ik,j+1 2u ik,j + u ik,j1 u ik,j+1 u ik,j
(20)
=
2
2
x
x
t
Tavitphngtrnhtithiimtiptheotk+1:
u ik,j++11 2u ik,j+1 + u ik,j+11 u ik,j+1 2u ik,j + u ik,j1 u ik,j+ 2 u ik,j+1
A
(21)
=
2
2
x
x
t
vi0jMx1
(22a)
(22b)
vi0iMy1
t
v: rx = A 2
x
x x0
x = f
Mx
y 2
y y0
y = f
My
ry = A
t =
Taxydnghmheat2D()thchinthuttonny:
function[u,x,y,t]=heat2D(a,D,T,ixy0,bxyt,Mx,My,N)
%Giaiau_t=c(u_xx+u_yy)voiD(1)<=x<=D(2),D(3)<=y<=D(4),0<=t
%<=T
414
%Dieukiendau:u(x,y,0)=ixy0(x,y)
%Dieukienbien:u(x,y,t)=bxyt(x,y,t)voi(x,y)cB
%Mx/Mycacdoancodoctheotrucx/y
%Ncackhoangthoigian
dx=(D(2)D(1))/Mx;
x=D(1)+[0:Mx]*dx;
dy=(D(4)D(3))/My;
y=D(3)+[0:My]*dy;
dt=T/N;
t=[0:N]*dt;
%Khoigan
forj=1:Mx+1
fori=1:My+1
u(i,j)=ixy0(x(j),y(i));
end
end
rx=a*dt/(dx*dx);
rx1=1+2*rx;
rx2=12*rx;
ry=a*dt/(dy*dy);
ry1=1+2*ry;
ry2=12*ry;
forj=1:Mx1%Pt.(22a)
Ay(j,j)=ry1;
ifj>1
Ay(j1,j)=ry;
Ay(j,j1)=ry;
end
end
fori=1:My1%Pt.(22b)
Ax(i,i)=rx1;
ifi>1
Ax(i1,i)=rx;
Ax(i,i1)=rx;
end
end
415
fork=1:N
u_1=u;
t=k*dt;
fori=1:My+1%Dieukienbien
u(i,1)=feval(bxyt,x(1),y(i),t);
u(i,Mx+1)=feval(bxyt,x(Mx+1),y(i),t);
end
forj=1:Mx+1
u(1,j)=feval(bxyt,x(j),y(1),t);
u(My+1,j)=feval(bxyt,x(j),y(My+1),t);
end
ifmod(k,2)==0
fori=2:My
jj=2:Mx;
bx=[ry*u(i,1)zeros(1,Mx3)ry*u(i,My+1)]...
+rx*(u_1(i1,jj)+u_1(i+1,jj))+rx2*u_1(i,jj);
u(i,jj)=trid(Ay,bx);%Pt.(22a)
end
else
forj=2:Mx
ii=2:My;
by=[rx*u(1,j);zeros(My3,1);rx*u(Mx+1,j)]...
+ry*(u_1(ii,j1)+u_1(ii,j+1))+ry2*u_1(ii,j);
u(ii,j)=trid(Ax,by);%Pt.(22b)
end
end
end
Taxtphngtrnh:
2
2 u(x,y,t) u(x,y,t)
4 u(x,y,t)
+
10
=
2
2
x
y
t
(vd1)
trongmin:0x4,0y4vtrongkhongthiggian0t5000
iukinu:
u(x,y,0)=0
(vd2a)
viukinbin:
eycosxexcosytix=0,x=4;y=0,y=4
(vd2b)
416
Chngtrnhchngtrnhctheat2D.mdnggiiphngtrnhl:
clear,clc,clf
a=1e4;
it0=inline(0,x,y);%(vd2a)
bxyt=inline(exp(y)*cos(x)exp(x)*cos(y),x,y,t);%(vd.2b)
D=[0404];
T=5000;
Mx=40;
My=40;
N=50;
[u,x,y,t]=heat2D(a,D,T,it0,bxyt,Mx,My,N);
mesh(x,y,u)
4.PHNGTRNHHYPERBOLIC
1. Dng phng trnh: Phng trnh truyn sng mt chiu l PDE dng
hyperbolic:
2 u(x,t) 2 u(x,t)
(1)
A
=
x 2
t 2
0xxf,0tT
iukinbin:
u
= i0 (x)
t t =0
phicchotrcphngtrnhcthgiic
2. Phng php sai phn tng minh: Tng t nh khi gii PDE dng
parabolic,tathayohmbchaihaivca(1)bngsaiphn3im:
u k 2u ik + u ik1 u ik +1 2u ik + u ik 1
A i +1
=
(2)
x 2
t 2
T
x
x = f
t =
N
M
vccphngphpsaiphntngminh:
u ik +1 = r ( u ik+1 + u ik1 ) + 2(1 r)u ik u ik1
(3)
u(x,0)=i0(x),
vi: r = A
t 2
x 2
417
(4)
Nhvy,taxpxiukinuvohmbngsaiphn:
u1i u i1
= i0 (xi )
2 t
vrtra u i1 avo(3):
(5)
1
u1i = r ( u 0i+1 + u 0i1 ) + (1 r)u 0i + i0 (xi )t
(6)
2
Tadng(6)cngviiukinuc u1i vrithayvo(3).Chl:
r1bomnnh
chnhxccanghimtngkhirtngchoxgim
Hplnhtllyr=1.iukinnnhcthnhncbngcchthay(4)
vo(3):
1
= 2rcos + 2(1 r)
P
hay: 2 + 2 r 1 cos 1 + 1 = 0
P
Nhvy:
1
t 2
r
r = A 2 1
x
1 cos
P
Taxydnghmwave()thchinthuttontrn:
function[u,x,t]=wave(a,xf,T,it0,i1t0,bx0,bxf,M,N)
%giaiau_xx=u_ttvoi0<=x<=xf,0<=t<=T
%dieukiendau:u(x,0)=it0(x),u_t(x,0)=i1t0(x)
%dieukienbien:u(0,t)=bx0(t),u(xf,t)=bxf(t)
%Mkhoangchiatheox
%Nkhoangchiateot
dx=xf/M;
x=[0:M]*dx;
dt=T/N;
t=[0:N]*dt;
418
fori=1:M+1
u(i,1)=it0(x(i));
end
fork=1:N+1
u([1M+1],k)=[bx0(t(k));bxf(t(k))];
end
r=a*(dt/dx)^2;
r1=r/2;
r2=2*(1r);
u(2:M,2)=r1*u(1:M1,1)+(1r)*u(2:M,1)+r1*u(3:M+1,1)...
+dt*i1t0(x(2:M));%Pt.(6)
fork=3:N+1
u(2:M,k)=r*u(1:M1,k1)+r2*u(2:M,k1)+r*u(3:M+1,k1)...
u(2:M,k2);%Pt.(3)
end
Taxtphngtrnh:
2 u(x,t) 2 u(x,t)
x 2
t 2
0x2,0t2
iukinuviukinbin:
u
u(x,0)=x(1x)
=0
t t =0
u(0,t) = 0
u(1,t)=0
Tadngchngtrnhctwave.mgiiphngtrnhny:
clearall,clc
a=1;
it0=inline(x.*(1x),x);
i1t0=inline(0);%(vd2a)
bx0t=inline(0);
bxft=inline(0);%(vd2b)
xf=1;
M=20;
T=2;
N=50;
(vd1)
(vd2a)
(vd2b)
419
[u,x,t]=wave(a,xf,T,it0,i1t0,bx0t,bxft,M,N);
figure(1),clf
mesh(t,x,u)
figure(2),clf
forn=1:N%hinhdong
plot(x,u(:,n)),axis([0xf0.30.3]),pause(0.2)
end
4.PDEhyperbolic2chiu:PhngtrnhtruynsnghaichiulPDEdng
hyperbolic:
2 u(x,y,t) 2 u(x,y,t) 2 u(x,y,t)
(8)
A
+
=
2
2
2
x
y
t
0xxf,0yyf,0tT
iukinbin:
u(x,0,t) = b y0 (x,t)
viubin:
u(x,y)
= i0 (x, y)
t
t =0
Tngtnhhmmtbin,tathayohmbc2bngxpx3im:
u ik,j+1 2u ik,j + u ik,j1 u ik+1,j 2u ik,j + u ik1,j u ik,j+1 2u ik,j + u ik,j1
(9)
+
=
2
2
2
x
y
t
y
x
T
x = f y = f t =
Mx
N
My
u(x,y,0) = i 0 (x,y)
vnhninphngphptngminh:
(10)
vi:
t 2
t 2
r
A
=
y
y 2
x 2
V u i,j1 = u(xi ,y i , t) khngchotrcnntakhngthdngtrctip u1i,j t
rx = A
(10)vik=0:
(11)
Nhvy,taxpxiukinuvohmbngsaiphn:
420
u1i ,j u i,j1
= i0 (x j ,y i )
2 t
vrtra u i,j1 avo(11):
1
u1i ,j = rx u i0,j+1 + u 0i ,j1 + ry u 0i+1,j + u 0i1,j
+ 2(1 rx ry )u i0,j + i0 (x j ,y i )t
(12)
(13)
iukinnnh:
4At 2
r= 2
1
x + y 2
Taxydnghmwave2D()thchinthuttontrn:
function[u,x,y,t]=wave2D(a,D,T,it0,i1t0,bxyt,Mx,My,N)
%giaia(u_xx+u_yy)=u_ttvoiD(1)<=x<=D(2),D(3)<=y<=D(4),0<=t
%<=T
%dieukiendau:u(x,y,0)=it0(x,y),u_t(x,y,0)=i1t0(x,y)
%dieukienbien:u(x,y,t)=bxyt(x,y,t)voi(x,y)trenbien
%Mx/Mysokhoangchiatrentrucx/y
%Nsokhoangchaitheot
dx=(D(2)D(1))/Mx;
x=D(1)+[0:Mx]*dx;
dy=(D(4)D(3))/My;
y=D(3)+[0:My]*dy;
dt=T/N;t=[0:N]*dt;
%khoigan
u=zeros(My+1,Mx+1);
ut=zeros(My+1,Mx+1);
forj=2:Mx
fori=2:My
u(i,j)=it0(x(j),y(i));
ut(i,j)=i1t0(x(j),y(i));
end
end
adt2=a*dt*dt;
rx=adt2/(dx*dx);
ry=adt2/(dy*dy);
421
rxy1=1rxry;
rxy2=rxy1*2;
u_1=u;
fork=0:N
t=k*dt;
fori=1:My+1%dieukienbien
u(i,[1Mx+1])=[bxyt(x(1),y(i),t)bxyt(x(Mx+1),y(i),t)];
end
forj=1:Mx+1
u([1My+1],j)=[bxyt(x(j),y(1),t);bxyt(x(j),y(My+1),t)];
end
ifk==0
fori=2:My
forj=2:Mx%Pt.(13)
u(i,j)=0.5*(rx*(u_1(i,j1)+u_1(i,j+1))...
+ry*(u_1(i1,j)+u_1(i+1,j)))+rxy1*u(i,j)+dt*ut(i,j);
end
end
else
fori=2:My
forj=2:Mx
u(i,j)=rx*(u_1(i,j1)+u_1(i,j+1))...
+ry*(u_1(i1,j)+u_1(i+1,j))+rxy2*u(i,j)u_2(i,j);
end
end
end
u_2=u_1;
u_1=u;
mesh(x,y,u),axis([0202.1.1])
pause(0.1);
end
Taxtphngtrnh:
1 2 u(x,y,t) 2 u(x,y,t) 2 u(x,t)
=
4
x 2
y 2
t 2
(vd1)
0x2,0y2,0t2
422
iukinuviukinbin:
u(0,y,t)=0u(2,y,t)=0 u(x,0,t)=0u(x,2,t)=0
(vd2)
y
x
u
(vd3)
=0
u(x,y,0) = 0.1sin sin
t t =0
2
2
Tadngchngtrnhctwave2D.mgiiphngtrnhny:
clearall,clc
it0=inline(0.1*sin(pi*x)*sin(pi*y/2),x,y);%(vd3)
i1t0=inline(0,x,y);
bxyt=inline(0,x,y,t);%(vd2)
a=.25;
D=[0202];
T=2;
Mx=40;
My=40;
N=40;
[u,x,y,t]=wave2D(a,D,T,it0,i1t0,bxyt,Mx,My,N);
5.PHNGPHPPHNTHUHN(FEM)GIIPDE
PhngphpFEMdngtmnghimscaPDEviiukinbin.
TaxtmtPDEdngelliptic:
2 u(x,y) 2 u(x,y)
+
+ g(x,y)u(x, y) = f(x,y)
(1)
x 2
y 2
trongminDbaobibinBvtrnbinccciukin:
u(x,y)=b(x,y) trnB
(2)
CcbcdngFEMgiiphngtrnhgm:
)ChiaminDthnhNsmincon{S1,S2,...,SNs}cdnghnhtamgic
)MtvtrcaNnntvnhschngbtutccnttrnbin:
n=1,2,...,Nbvccntbntrong:n=Nb+1,Nb+2,...,Nn
)Xcnhcchmnisuy,hnhdngvcs:
(3a)
chomiminSs
(3b)
423
ivittccccmincons=1:Nsvccntn=1:Nnsaochonbng1
chntnvbngzeroticcntkhc.LcnghimxpxcaPDE
lthptuyntnhcacchmcsn(x,y):
Nn
i =1
Nn
Nb
= c n n (x, y) +
i =1
i = N b +1
c n n (x,y)
= [ c1 ] [ 1 ] + [ c 2 ] [ 2 ]
T
(4)
Trong:
[1 ] = 1
[2 ] = N
2 L N b
[c1 ] = c1
[c 2 ] = c N
N b +2 L N n
b +1
c 2 L c N b
(5a)
T
c N b +2 L c N n (5b)
b +1
Vimimincon,nghimnycthvitdidng:
Nn
Nn
i =1
i =1
(6)
)tccgitrcahsntbintrong[c1]bngccgitrbintng
ngviiukinbin
) Xc nh tr s ca h s nt bn trong trong [c2] bng cch gii h
phngtrnh:
[A2][c2]=[d]
(7)
trong:
Ns
[ A1 ] =
s =1
T
T
Ns
{g(x ,y )
s
2 ,s
1,s
} S
s
(8)
s =1
1,s = 1,s 2 ,s L N b ,s
T
Ns
[ A2 ] =
s =1
T
T
2 ,s 2 ,s + 2 ,s 2 ,s S s
x
y
y
x
424
Ns
{g(x ,y )
s
2 ,s
2 ,s
} S
s
(9)
(10)
s =1
2 ,s = Nb +1,s Nb + 2 ,s L N n ,s
T
Ns
s =1
(xs,ys)ltrongtmcaminconSs
FEMdatrnnguyntclnghimca(1)cthnhncbngcch
cctiuhohm:
J=
u(x,y) + u(x,y)
y
(11)
(12)
(13)
[ A1 ][ c1 ] + [ A 2 ][ c 2 ] + f(xs ,y s ) 2 ,s S = 0
(14)
Viu(x,y)=[c]T[(x,y)]tac:
J=
[c ]T [] [][ c ] + [c ]T [ ] [ ]T [c ]
x
x
y
y
{
R
iukinhmnycctiutheo[c]l:
d
J=
[2 ] []T [c ] + []T [c ]
d [c2 ]
x
x
y
{
R
Ns
s =1
functionp=fembasisftn(N,S)
%p(i,s,1:3):cachesocuamoihamcosophi(i)
%cuamientamgiac(miencon)thus
%N(n,1:2):x&ytoadocuanutthun
425
%S(s,1:3):nutthuscuamiencontamgiacthus
Nn=size(N,1);%tongsonut
Ns=size(S,1);%tongsocacnutcuamiencontamgiac
forn=1:Nn
fors=1:Ns
fori=1:3
A(i,1:3)=[1N(S(s,i),1:2)];
b(i)=(S(s,i)==n);%hamcosothunbang1chionutthun
end
pnt=A\b;
fori=1:3\
p(n,s,i)=pnt(i);
end
end
end
xcnhccvecths[c]canghim(4)nh(7)vccathc
nghim s (x, y) nh(6)ivimimincons=1,2,...,Nstaxydnghm
femcoef():
function[U,c]=femcoef(f,g,p,c,N,S,Ni)
%p(i,s,1:3):cachesocuahamcosophi(i)cuamienconthun
%c=[.11.00.]voicacgiatribienva0voicacnutbentrong
%N(n,1:2):x&ytoajdocuanutthun
%S(s,1:3):nutthuscuamienconthus
%Ni:sonutbentrong
%U(s,1:3):cachesocuap1+p2(s)x+p3(s)ycuamoimiencon
Nn=size(N,1);%tongsonutbangNb+Ni
Ns=size(S,1);%tongsomiencon
d=zeros(Ni,1);
Nb=NnNi;
fori=Nb+1:Nn
forn=1:N_n
fors=1:Ns
xy=(N(S(s,1),:)+N(S(s,2),:)+N(S(s,3),:))/3;%trongtam
%phi(i,x)*phi(n,x)+phi(i,y)*phi(n,y)g(x,y)*phi(i)*phi(n)
426
pvctr=[p([in],s,1)p([in],s,2)p([in],s,3)];
tmpg(s)=sum(p(i,s,2:3).*p(n,s,2:3))...
g(xy(1),xy(2))*pvctr(1,:)*[1xy]*pvctr(2,:)*[1xy];
dS(s)=det([N(S(s,1),:)1;N(S(s,2),:)1;N(S(s,3),:)1])/2;
%dientichmiencon
ifn==1
tmpf(s)=f(xy(1),xy(2))*pvctr(1,:)*[1xy];
end
end
A12(iNb,n)=tmpg*abs(dS);%Pt.(8),(9)
end
d(iNb)=tmpf*abs(dS);%Pt.(10)
end
d=dA12(1:Ni,1:Nb)*c(1:Nb);%Pt(10)
c(Nb+1:Nn)=A12(1:Ni,Nb+1:Nn)\d;%Pt.(7)
fors=1:Ns
forj=1:3
U(s,j)=c*p(:,s,j);%Pt.(6)
end
end
TrckhidngFEMgiimtPDEtaxemthhmcs(hmhnhdng)
n(x,y)ivimintn=1,2,...,Nncnhnghaivittcccmin
conhnhtamgicsaochonbng1chtintnvbng0ticcntkhc
c to bi hm fembasisfth() hot ng nh th no. Ta s v hm hnh
dngcamincchiathnh4tamgicnhhnhsau:
1
n=2
Tocant: Sntmimincon
S1
n=1
N=[11;
S=[125;
n=5
S4
11;235;
S2
0
11;345;
S
3
11;145];
00.5];
n=4
n=3
1
1
0
427
Nn
(15)
n =1
ctrscntimintn.Tachychngtrnhctshowbasic.m:
clearall,clc
N=[11;11;11;11;0.20.5];%danhsachcacnuttrenhinh1
Nn=size(N,1);%sonut
S=[125;235;345;145];%danhsachcamiencontrenhinh1
Ns=size(S,1);%somiencon
figure(1),clf
fors=1:Ns
nodes=[S(s,:)S(s,1)];
fori=1:3
plot([N(nodes(i),1)N(nodes(i+1),1)],...
[N(nodes(i),2)N(nodes(i+1),2)])
holdon
end
end
ins=[12345];%danhsachcacnutmacachamcosoduocve
foritr=1:5
in=ins(itr);
ifitr==1
fori=1:length(xi)
forj=1:length(yi)
Z(j,i)=0;
fors=1:Ns
ifinpolygon(xi(i),yi(j),N(S(s,:),1),N(S(s,:),2))>0
Z(j,i)=p(in,s,1)+p(in,s,2)*xi(i)+p(in,s,3)*yi(j);
break;
end
end
428
end
end
subplot(321),mesh(xi,yi,Z)%hamcosocuanut1
else
c1=zeros(size(c));
c1(in)=1;
subplot(320+itr)
trimesh(S,N(:,1),N(:,2),c1)%hamcosocuacacnut25
end
end
c=[01230];%cacgiatritaicacnut
subplot(326)
trimesh(S,N(:,1),N(:,2),c)%hamtonghopohinhf
1
0.5
0.5
0
1
0
-1 -1
0
1
-1 -1
0.5
0.5
0
1
-1 -1
0
1
0.5
0
1
0
-1 -1
0
1
-1 -1
0
-1 -1
c=[01230];
p=fembasisftn(N,S);
x0=1;
xf=1;
y0=1;
yf=1;%cacmien
figure(2),clf
Mx=50;
429
My=50;
dx=(xfx0)/Mx;
dy=(yfy0)/My;
xi=x0+[0:Mx]*dx;
yi=y0+[0:My]*dy;
Vd:GiiphngtrnhLaplace:
2 u(x, y) 2 u(x,y)
2 u(x, y) =
+
= f(x,y)
x 2
y 2
trnmin 1 x 1; 1 y 1vi:
f(x,y)= +1
0
vi(x,y)=(0.5,0.5)
vi(x,y)=(0.5,0.5)
(1)
(2)
ccchkhc
viukinbinlu(x,y)=0timiimtrnbin.
430
giibitonnybngFEM,taxcnh12imtrnbinv19imbn
trong,nhschngvchiaminchnhtthnh36minconhnhtamgic
nhhnhvtrn.Tiptheotaxydngchngtrnh ctlaplace.mgiibi
ton
clearall,clc
N=[10;11;1/21;01;1/21;11;10;11;1/21;01;
1/21;11;1/21/4;5/87/16;3/45/8;1/25/8;
1/45/8;3/87/16;00;1/21/4;5/87/16;3/45/8;
1/25/8;1/45/8;3/87/16;9/1617/32;7/1617/32;
1/27/16;9/1617/32;7/1617/32;1/27/16];%nut
Nb=12;%sonuttrenbien
S=[11112;11119;101119;4519;5719;567;1215;2315;
31517;3417;41719;131719;11319;11315;7822;8922;
92224;91024;101924;192024;71920;72022;131418;
141516;161718;202125;212223;232425;142628;
162627;182728;212931;232930;253031;
262728;293031];%miencontamgiac
fexemp=(norm([xy]+[0.50.5])<0.01)(norm([xy][0.50.5])<0.01);
f=inline(fexemp,x,y);%(Pt.2)
g=inline(0,x,y);
Nn=size(N,1);%tongsonut
Ni=NnNb;%sonutbentrong
c=zeros(1,Nn);%giatritrenbien
p=fembasisftn(N,S);
[U,c]=femcoef(f,g,p,c,N,S,Ni);
%dothiluoitamgiac
figure(1);
clf;
trimesh(S,N(:,1),N(:,2),c);
%dothiluoichunhat
Ns=size(S,1);%tongsomiencontamgiac
x0=1;
xf=1;
y0=1;
yf=1;
431
Mx=16;
dx=(xfx0)/Mx;
xi=x0+[0:Mx]*dx;
My=16;
dy=(yfy0)/My;
yi=y0+[0:My]*dy;
fori=1:length(xi)
forj=1:length(yi)
fors=1:Ns
ifinpolygon(xi(i),yi(j),N(S(s,:),1),N(S(s,:),2))>0
Z(i,j)=U(s,:)*[1xi(i)yi(j)];%Pt.(4.5b)
break;
end
end
end
end
figure(2);
clf;
mesh(xi,yi,Z)
%desosanh
bx0=inline(0);
bxf=inline(0);
by0=inline(0);
byf=inline(0);
D=[x0xfy0yf];
[U,x,y]=poisson(f,g,bx0,bxf,by0,byf,D,Mx,My,1e6,50);
figure(3)
clf;
mesh(x,y,U)
6.GUICAMATLABGIIPDE
1.CcphngtrnhcthgiicbngPDETOOL:CngcPDETOOL
caMATLABcthdnggiiccloiphngtrnhsau:
a.Phngtrnhelliptic:Tasgiiphngtrnhelliptic
(cu) + au = f
(1)
viiukinbn:
432
hu = r
r
ncu+qu=g
Dirichlet
(2)
Neumann
r
trnbin,trong n lvectphptuyn.
Trongtrnghpulilngvhng,phngtrnh(1)trthnh:
2 u(x, y) 2 u(x,y)
(3)
c
+
+ au(x, y) = f(x,y)
2
y 2
x
vnuiukinbiniviphnbinbntriliukinbinNeumann
u(x,y)
dng
= bx0 (y) th(2)cthvitthnh:
x x=x0
r u(x,y) r u(x,y) r
ex +
e y + qu(x,y)
e x c
x
y
(4)
u(x, y)
= c
+ qu(x,y) = g(x,y)
x
r r
vvectphptuyncabinphil n = e x
b.Phngtrnhparabolic:Taxgiiphngtrnh:
u
(cu) + au + d
= f
(5)
t
trnminvtrongkhongthigian0tT,viiukinbnging(2)v
iukinuu(t0)
c.Phngtrnhhyperbolic:
2u
(cu) + au + d 2 = f
(6)
t
trnminvtrongkhongthigian0tT,viiukinbnging(2)v
iukinuu(t0),u(t0)
d.Phngtrnhgitrring:
u
(cu) + au =
(7)
t
trnminvimtgitrringchabitviukinbintngt(2).
CngcPDETOOLcngcthdnggiihphngtrnhdng:
(c11u1 ) (c12u 2 ) + a11u1 + a12 u 2 = f1
(8)
(9)
h
u = r
h
22 2
2
21
hayiukinNeumanntngqut:
433
r
r
n(c11u1 ) + n(c12u 2 ) + q 11u1 + q 12 u 2 = g 1
r
r
n(c 21u1 ) + n(c 22u 2 ) + q 21u1 + q 22 u 2 = g 2
hayiukinbinhnhp:
f1
c11 c12
a11 a12
c=
a=
f =
c 21 c 22
a 21 a 22
f2
h11
h=
h 21
h12
h 22
r1
r =
r2
q 11 q12
q=
q
q
21
22
(10)
u1
u =
u2
g 1
g =
g 2
2.SdngPDETOOL:PDETOOLgiiphngtrnhviphnohmring
bng cch dng phng php FEM. gii phng trnh ta theo cc bc
sau:
) Nhp lnh pdetool vo ca s lnh MATLAB. Ca s PDE toolbox
xuthin.Tacthbt/tttuchnGridbngcchbmvo Gridtrn
menu Option.Tacngcthhiuchnhphmvitrcxvybngcch
chnAxesLimittrongnemuOption
)Tiptheotatolibngcchdngmenu Meshhayicon.tinh
chnhlitabmvoRefineMeshhayicon
) Tip theo ta m t dng phng trnh v cc thng s ca n bng
cch dng menu PDE. Mun th, ta m menu PDE hay chn icon PDE
vchnPDESpecificationvchoccthamscaphngtrnh.
)giiphngtrnhtadngmenu Solvehaychnicon=.Tachn
menu con Parameters nhp iu kin u v khong thi gian tm
nghim
)Numunvktqu,tadngmenuPlot
3.Mtsvd:
a.Vd1:GiiphngtrnhLaplace:
2 u(x,y) 2 u(x, y)
2 u(x, y) =
+
= 0
(vd1.1)
x 2
y 2
trongmin0x4,0y4vicciukinbin:
u(4,y)=eycos4e4cosy
(vd1.2)
u(0,y)=eycosy
u(x,4)=e4cosxexcos4
(vd1.3)
u(x,0)=cosxex
giiphngtrnhtathchinccbcsau:
McngcPDETOOL.VomenuOption|AxesLimithiuchnh
li phm vi gi tr ca x v y l [0 5] ri chn Apply v Close. Chn
Option|AxesEqual
Bmvoiconvhnhvung.Khivxong,nuchangkch
thctabmpvoitngbygictnlR1hiuchnhli
thnhLeft:0,Bottom:0,Height:4,Width:4.
Bmvoiconthngbincaitngcmu.Trnmi
onbintachoiukinbintheo(vd1.2)v(vd1.3).ghiiukin
binchoonnotabmpchutlnon.iukinbincho
liukinbinDirrichlet.Trnbintri,taghiiukinbin:
h=1,r=exp(y)cos(y)
trnbinphi:
h=1,r=eycos4e4cosy
trnbindi:
h=1,r=cosxex
vtrnbintrn:
h=1,r=e4cosxexcos4
435
BmpchutvoiconPDEvchnphngtrnhdngellipticv
ccthngstheo(vd1.1):c=1,a=0,f=0
Bmpchutvoicontolivsautinhchnhn.
Bmpchutvoicon=giiphngtrnh.
VomenuPlot|Parameterschncchvvsauvraktqu
b.Vd2:Giiphngtrnhparabolic:
2
2 u(x,y,t) u(x,y,t)
4 u(x,y,t)
+
10
=
2
2
x
y
t
(vd2.1)
trongmin0x4,0y4v0t5000vicciukinuviu
bin:
u(x,y,0)=0
(vd2.2a)
y
x
(vd2.2b)
VomenuPlot|Parameterschncchvvsauvraktqu
c.Vd3:Giiphngtrnhhyperbolic:
1 2 u(x,y,t) 2 u(x,y,t) 2 u(x,y,t)
=
2
x 2
y 2
4
t
(vd3.1)
trongmin0x2,0y2v0t2vicciukinbinzeroviu
kinu:
u(0,y,t)=0
u(2,y,t)=0
u(x,0,t)=0
u(0,2,t)=0
(vd3.2)
u(x,y,0)=0.1sin(x)sin(y/2)
u/t(x,y,0)=0vit=0
(vd3.3)
giiphngtrnhtatheoccbcsau:
McngcPDETOOL.VomenuOption|AxesLimithiuchnh
li phm vi gi tr ca x v y l [0 2] ri chn Apply v Close. Chn
Option|AxesEqual
Bmvoiconvhnhvung.Khivxong,nuchangkch
thctabmpvoitngbygictnlR1hiuchnhli
thnhLeft:0,Bottom:0,Height:2,Width:2.
Bmvoiconthngbincaitngcmu.Trnmi
onbintachoiukinbintheo(vd3.2).ghiiukinbincho
onnotabmpchutlnon.iukinbincholiu
kinbinDirrichlet.Trnbintri,taghiiukinbin:
h=1,r=0
trnbinphi:
h=1,r=0
trnbindi:
h=1,r=0
vtrnbintrn:
h=1,r=0
BmpchutvoiconPDEvchnphngtrnhdngparabolic
vccthngstheo(vd2.1):c=1/4,a=0,f=0,d=1.TrongmenuSolve
|ParameterstaghiTime:0:0.1:2,u(t0)=0.1*sin(pi*x).*sin(pi*y/2).
Bmpchutvoicontolivsautinhchnhn.
Bmpchutvoicon=giiphngtrnh.
VomenuPlot|Parameterschncchvvsauvraktqu
437
khingMATLAB
click vo icon ca Simulink trn MATLAB toolbar hay nh lnh
SimulinktrongcasMATLAB.
LcnytrnmnhnhxuthincasSimulinkLibraryBrowser,trong
cccthvincckhicaSimulink.
2.Tomtmhnhmi:tomtmhnhmi,clickvoicontrncas
Simulink Library Browser hay chn menu File | New | Model trn ca s
MATLAB.
3.Thayimtmhnhc:TacthclickvoicontrncasSimulink
LibraryBrowserhaychnOpentrncasMATLAB.Filechamhnhs
mvtacththayiccthngscngnhbnthnmhnh.
5.Chnnhiuitng:Tacthchnnhiuitngcnglcbngcch
dng phm Shift v chut hay v mt ng bao quanh cc i tng
bngcchbmchutkothnhhnhchnhtvthkhihnhchnht
baolyccitngcnchn.
7.Cckhi:KhilccphntmSimulinkdngtomhnh.Tacth
mhnhhobtkmththngnghcnobngcchtomilinhgia
cckhitheocchthchhp.Khitomtmhnhtacnthyrngcckhi
ca Simulink c 2 loi c bn: khinhn thy v khikhng nhn thy.Cc
khikhngnhnthycngvaitrquantrngtrongvicmphngmt
hthng.Nutathmhayloibmt khikhngnhnthyc ta thay
ithuctnhcamhnh.Cckhinhnthyc,ngcli,khngng
438
vaitrquantrngtrongmhnhho.Chngchgiptaxydngmhnh
mt cch trc quan bng ho. Mt vi khi ca Simulink c th l thy
c trong mt s trng hp v li khng thy c trong mt s trng
hpkhc.Cckhinhvycgilcckhinhnthyciukin.
8.Copycckhitmtcassangmtcaskhc:Khitaxydngmt
mhnhtathngphicopycckhitthvinkhicaSimulinksangca
smhnh.lmvicnytatheoccbcsau:
mcasthvinkhi
kokhitamundngtcasthvinvocasmhnhvth
TacthcopycckhibngcchdnglnhCopy&Pastetrongmenu
Editquaccbcsau:
chnkhitamuncopy
chnCopytmenuEdit
lmchocascncopytihotng
chnPastetmenuEdit
Simulink gn mt tn cho mi bn copy. Nu n l khi u tin trong m
hnhthtncangingnhtrongthvinSimulink.Nunlbnth2
hayth3thsaunscchs1hay2v.v.Trncasmhnhcli.
hinthlinytcasMATLABnhvo:
set_param(<modelname>,showgrid,on)
thayikhongcchlinhlnh:
set_param(<modelname>,gridspacing,<numberofpixels>)
Vd:thayilithnh20pixels,nhlnh:
set_param(<modelname>,gridspacing,20)
nhnbnmtkhitagiphmCtrlvkokhitimtvtrkhcvth.
10.DeletingBlocks:Munxomthaynhiukhitachnkhivnhn
phmDel.
11.Thayihngcakhi:Tacthxoayhngcakhibngvomenu
Formatri:
o
chnFlipBlockquaykhi180 .
o
chnRotateBlockquaykhi90 .
12.nhlikchthccakhi:thayikchthccakhitaacon
tr chut vo mt gc ca khi ri bm v ko cho n kch thc mong
munrith.
13.Xltnkhi:Mikhictn,philduynhtvphichatnhtmt
kt.Mcnhtnkhinmdikhi.Vitnkhitacththchincc
thaotcsauy:
Thayitnkhibngcchbmchutvotncvnhplitn
mi. Nu mun thay i font ch dng cho tn khi hy chn khi v vo
menuFormatvchnFont.
Thayivtrttnkhitdilntrnhayngclibngcch
kotnkhitivtrmongmun.
KhngchohinthtnkhibngcchvomenuFormatvchnHide
NameshayShowNames
14.Hinthccthngsbndikhi:TacthbtSimulinkhinthmt
hay nhiu thng s bn di khi. lm iu ny ta nhp vo mt dng
votrngAttributesformatstringhpthoiBlockProperties.
15.Ctcckhi:ctkhikhistabmphmShiftvkokhinv
trmi.
16.Nhpvxutccvect:Huhtcckhichpnhnilnguvol
vec t hay v hng v bin i thnh i lng u ra l vec t hay v
hng.Tacthxcnhuvononhnilngvectbngcchchn
440
Mrnguvo:khidngkhivinhiuuvotacthtrnln
ccilngvectvilngvhng.Khinyccuvovhng
cmrngthnhvectvisphntnhcauvovect,ccphnt
uctrsnhnhau
Mrngthngs:tacthctccthngsivikhicvec
thothnhilngvecthayilngvhng.Khitactccthng
s vec t, mi mt phn t thng s c kt hp vi phn t tng ng
trongvectuvo.Khitactccthngsvect,Simulinkpdngm
rngvhngbinichngthnhvectckchthcphhp.
18.Gnutinchokhi:Tacthgnutinchokhikhngnhn
thytrongmhnh.Khicutincaohncnhgitrckhic
utinnhhn.Tacthgnutinbngcchdnglnhtngtc
haydngchngtrnh.dngchngtrnhtadnglnh:
set_param(b,Priority,n)
Trongblkhivnlmtsnguyn,scngthp,utincngcao.
gn u tin bng lnh ta nhp u tin vo trng Priority trong
hpthoiBlockPrioritiescakhi.
19.SdngDropShadows:TacththmDropShadowvokhichn
bngcchchnShowDropShadowtmenuFormat
21.Thayimtthvinc:Khitammtthvin,ntngkhov
ta khng th thay i cc thnh phn ca n c. Mun m kho ta chn
UnlocktmenuEdit.
22.Copymtkhitthvinvomhnh:Tacthcopymtkhitth
vinvomhnhbngcopyhaypastehaykonvthvocasmhnh.
tcontrchutlncngracakhiutin,contrcdngdu+
nhnvgichut
kocontrchutticngvocakhithhai
thchut
vnggpkhc,nhnphmShiftkhiv.
25.Chnkhivomtng:Tacthchnmtkhivomtngbng
cchkovthkhilnngni.Khimtachnvochcmtu
vovmtura.
442
28.Ghich:Ghichlonvnbncungcpthngtinvmhnh.Tac
ththmghichvobtktrngnocamhnh.tomtghich,nhn
pchutvovngtrngcamhnh.Khinytrnmnhnhxuthinmt
hnhchnhtcconnhytrong.Tacthnhvnbnghichvokhung
ny.Khimundichuynphnghichnmtvtrkhc,tabmchutvo
vkonvtrmirithchut.samtghich,bmchutvon
hinthkhungvnbnvbtusa.
29.Cckiudliu:Simulinkchpnhncckiudliusau:
double
sthcvichnhxcgpi
single
sthcvichnhxcn
int8
snguyncdu8bit
uint8
snguynkhngdu8bit
int16
snguyncdu16bit
uint16
snguynkhgdu16bit
int32
snguyncdu32bit
uint32
snguynkhngdu32bit
31.Mtcckiudliudngchothamskhi:Khinhpvothamsca
mtkhi,kiudliucancngidngmtbnglnhtype(value)
vitypeltncakiudliuvvaluelgitrcathams.
Vd:single(1.0)
dliulsthcctrl1
int8(2)
dliulsnguynctrl2
int32(3+2i)
dliulsphc,phnthcvphnolsnguyn
32bit
32.Totnhiuckiudliucmt:Tacthemvomhnhmt
tnhiuckiudliucmtbngmttrongccphngphpsauy:
nptnhiuckiudliumongmuntMATLAB
tomtkhihngvtthngscanckiudliumongmun.
sdngkhibinikiudliu
443
34.Tnhiuphc:Mcnh,ccgitrcatnhiuSimulinklsthc.Tuy
nhinccmhnhc thtovxlcctn hiulsphc.Tacth a
mttnhiulsphcvomhnhbngmttrongccphngphpsau:
nptnhiuphctMATLAB
tomtkhihngtrongmhnhvchongitrphc.
tomttnhiuthctngngviphnthcvphnocatnhiu
phc v kt hp cc phn ny thnh tn hiu phc bng cch s dng khi
binitnhiuthcothnhtnhiuphc.
Ta c th x l tn hiu phc nh cc khi chp nhn tn hiu phc.
PhnlncckhicaSimulinkchpnhntnhiuvolsphc.
copykhihthngcontthvinSignal&Systemvomhnh
mkhihthngconbngcchclickplnn
trongcaskhiconrng,tohthngcon.Sdngcckhiinport
biudinuvovcckhioutportbiudinura.
36.Tohthngconbngcchnhmcckhic:Numhnhcata
c mt s khi m ta mun nhm thnh khi h thng con th ta c th
nhm
cckhinythnhkhihthngconbngsau:
baocckhivngnigiachngbngmtngtnt(bm
chutvkotgcnyngckiacacckhi)rithchut
chnCreateSubsystemtmenuEdit
inporthayoutportthchhptrongkhihthngconvchnHideNamet
menuFormat
38.Mphngmtphngtrnh:PhngtrnhdngbiniCelcius
thnhFahrenheitl:
TF=(9/5)TC+32
Trchttakhostcckhicntomhnh:
khiramptrongthvinSourcesinputtnhiunhit
khiConstanttrongthvinSourcestohngs32
khiGaintrongthvinMathtorahs9/5
khiSumtrongthvinMathcnghaiilng
khiScopetrongthvinSinkshinthktqu.
Tiptaacckhivocasmhnh,gnccgitrthngschoGain
v Constant bng cch nhp p ln chng m khi. Sau ta ni cc
khi.KhiRampanhitCelciusvmhnh.Mkhinyvthayi
gi tr khi gn Initial output v 0. Khi Gain nhn nhit ny vi h s
9/5.KhiSumcnggitr32viktquvaranhitFahrenheit.Khi
Scope xem kt qu. S m phng nh sau. By gi Start t menu
Simulationchysimulation.Simulationchy10giy,tngngvinhit
Celciusbinit0n10o.
39.Mphngmthphngtrnhtuyntnh:Taxthphngtrnhtuyn
tnhchain:
z 1 + z 2 = 1
z 1 + z 2 = 1
mphngtadngcckhi:
haikhiAlgebricConstrainttrongthvinMathgiiphngtrnh
haikhiSumtrongthvinMathtophptnh
haikhiDisplaytrongthvinSinkhinthgitrnghim
445
khiConstanttrongthvinSourcestogitr1
40.Mphngmtphngtrnhbccao:Taxtphngtrnh:
x2+3x+1=0
mphngtadngcckhi:
khiAlgebricConstrainttrongthvinMathgiiphngtrnh
khiDisplaytrongthvinSinkhinthtrscanghim
khiConstanttrongthvinSourcestogitr1
khiSumtrongthvinMathtophpcng
2
khiMathFunctiontrongthvinMathtohmx
khiGaintrongthvinMathtohs3
Smphngnhsau
446
x( t ) = 2 x( t ) + u( t )
viu(t)lmtsnghnhchnhtcbinbng1vtns1rad/s.m
phnghtadngcckhi:
khiGaintrongthvinMathtohs2
khiSumtrongthvinMathtophptnh
khiScopetrongthvinSinkxemktqu
khiSignalGeneratortrongthvinSourcestongun
khiIntegratortrongthvinContinuoustchphn
Smphngnhsau:
42.Mphnghphngtrnhviphnbccao:Taxthmtbiphng
trnhviphnbchaisau:
d2x
dx
+3
+ 2 x( t ) = 4 u( t)
2
dt
dt
Trongu(t)lhmbcnhy,x(0)=0vx(0)=0.BiniLaplacecah
chota:
p X(p)+3pX(p)+2X(p)=4U(p)
Hmtruyncahl:
4
T( p) = 2
p + 3p + 2
Tamphnghbngccphnt:
khiSteptrongthvinSourcestohmbcnhyu(t)
khiTransferFcntrongthvinContinuoustohmtruyn
khiScopetrongthvinSinkxemktqu
Smphngnhsau:
447
43.Mphnghciukinukhckhng:
a.Phngtrnhviphncp1:Taxthmtbiphngtrnh:
dx
+ x( t) = 0
dt
iukinucahlx(0)=1.Tacntmx(t)trongon0t10s.Doiu
kinukhckhngnntabiniphngtrnhvdngkhnggiantrng
thi.
dx = Ax + B
dt
y = Cx + Du
Trongxlbintrngthi,ultnhiuvo,yltnhiura.
Chny(t)=x(t)tac:
dx
= x( t )
dt
y(t)=x(t)
NhvyA=1;C=1;u(t)=0;B=0vD=0.Smphnggmccphn
t:
khiStateSpacetrongthvinContinuous
khiScopetrongthvinSink
Smphngnhsau:
b.Phngtrnhviphncpcao:Taxthmtbiphngtrnh:
d2x
dx
+
3
+ 2 x( t ) = 4 u( t)
dt 2
dt
Trongu(t)lhmnv,x(0)=1vx(0)=2.
448
dx1
. Nh
dt
2
dx 2 d 2 x 1 d x
vyiukinul:x1(0)=1vx2(0)=2.Ngoira
=
=
dt
dt
dt
dx 2
+ 3x 2 ( t ) + 2x1 ( t ) = 4u( t )
dt
Phngtrnhcphaicavhaiphngtrnhcp1:
dx1 =x ( t )
2
dt
dx 2
= 3x 2 ( t ) 2x1 ( t ) + 4 u( t)
dt
dx 2
dt
Vitdidngmatrntac:
dx1
1 x1 ( t ) 0
dt 0
=
dx 2 2 3 x ( t ) + 4 u( t )
2
dt
x1 ( t )
y( t ) = [1 0 ]
x 2 ( t )
Thnytasuyraccmatrncahkhnggiantrngthil:
1
0
0
A=
B
=
4 C = [1 0] D = 0
2 3
Smphnggmcckhisau:
khiStateSpacetrongthvinContinuous
khiScopetrongthvinSink
Smphngnhsau
44.Mphnghchobiskhi:Xtmthccutrcskhinh
sau:
449
1
+
k
s2 + s
Tamphnghbngccphnt:
khiSteptrongthvinSources
khiGaintrongthvinMath
khiTransferFcntrongthvinContinuous
Smphngnhsau
45.Mhnhhohphituyn:
a.Hchobiphngtrnhviphncpcao:TaxtphngtrnhValder
Pol:
y (1 y 2 )y + y = 0
iukinuy(0)=2vy(0)=0
Taty=y1vy=y2vcchphngtrnhviphncp1:
y1 = y 2
y2 = (1 y 12 ) y 2 y 1
Hphngtrnhcmphngbngccphntsau:
khihmFcntrongthvinFunctions&Tablestohm
khiProducttrongthvinMathtophpnhn
haikhiIntegratortrongthvinContinous
khiSumtrongthvinMath
khiMuxtrongthvinSignal&Systemstrntnhiu
khiScopetrongthvinSinkxemktqu.
Smphngnhsau:
450
a
sin(
a
)
0
.
2
a
1
2
2
viiukinula1(0)=a2(0)=1.3
Tamphnghbngccphnt:
haikhiIntegratortrongthvinContinous
khiFcntrongthvinFunctions&Tables
khiGaintrongthvinMath
haikhiScopetrongthvinSink
khiSumtrongthvinMath
Smphngnhsau:
451
inhthnghinhnhvcchthngdintrongphnlpmhnh
inhthnghinhnhvcchthngtrnntrongphnlpmhnh
inttccchthngtrongmhnh
inmimhnhmtkhungoverlay
48.Duytquamhnh:CasModelBrowserchophpta:
duytquamhnhcphnlp
mcchthngtrongccmhnh
xcnhnidungcckhitrongmtmhnh
hin th Model Browser, chn n t menu View. Ca s xut hin
cchialm2phn.PhatrilBrowser.Cutrccycamhnhhinth
bnphi.Midu+tngngvimththngcon.
2.SYMBOLICMATLABTOOLBOX
1. Khi nim chung: Symbolic Math Toolboxes kt hp tnh ton bng ch
vomitrngMATLAB.Cctoolboxnybsungcctinchsvth
vicckiutnhtontonhckhcnhau.
Tinch
Nidung
Calculus
o hm, tch phn, gii hn, tng v chui
Taylor
LinearAlgebra
nghcho,nhthc,gitrring,phntchv
dngchnhtccamatrn.
Simplification
phngphprtgnccbiuthcis
SolutionofEquations
gii bng ch v bng s cc phng trnh i
svviphn
VariablePrecision
nhgichnhxccaccbiuthcis
Arithmetic
452
Transform
biniLaplace,Fourriervz
Special
Mathematical cc hm ton hc c bit ca cc ng dng
Function
tonhckinhin
nglctnhtonnmdicctoolboxlnhnMaple,mththng
tnhtoncphttrinutintrngihcWaterloo,Canadavsau
ti Eidgenroessiche Technische Hochschule Zurich, Thu s. Maple c
thngmihovhtrcacngtyWaterlooMaple.
2.KhingTOOLBOX:
a.Ccitngch:Trongphnnychngtasxemxtcchtov
dng cc i tng ch. Chng ta cng s xem xt cc bin ch mc nh.
SymbolicMathToolboxnhnghamtkiudliuMATLABmigili
tngchhaysym.Bntrong,mtitngchlmtcutrcslium
nlubiudinchuicckt. SymbolicMathToolboxdngccitng
chbiudinccbinch,ccbiuthcch,ccmatrnch.
b. To cc bin v cc biu thc ch: Lnh sym cho php ta xy dng
ccbinvccbiuthcch.Vdlnh:
x=sym(x)
a=sym(alpha)
toraccbinchlxvavixlxvalalpha.
rho=sym((1+sqrt(5))/2)
Bygitacththchinccphptonkhcnhauvirho.Vd:
f=rho^2rho1
f=
(1/2+1/2*5^(1/2))^23/21/2*5^(1/2)
Tartgnbiuthc:
453
simplify(f)
ans=
0
Bygigistamungiiphngtrnhbc2 f = ax 2 + bx + c .Phtbiu:
f=sym(a*x^2+b*x+c)
a=sym(a)
b=sym(b)
c=sym(c)
x=sym(x)
haynginl:
symsabcx
2.Binigiasvch:
a.Toccbinthcvphc:Lnhsymchophptamtccthuctnh
tonhccaccbinchbngcchdngtuchnreal.Phtbiu:
x=sym(x,real);
y=sym(y,real);
hayhiuquhn:
symsxyreal
454
z=x+i*y
torabinchxvycthuctnhlsthc.cbit:
f=x^2+y^2
thcslskhngm.Nhvyzlbinphcvcclnh:
conj(x)
conj(z)
expand(z*conj(z))
choktqu:
returnthecomplexconjugatesofthevariables
x
xi*y
x^2+y^2
symsxunreal
hay:
x=sym(x,unreal)
Lnhclearxkhngxothuctnhsrealcax.
b.Tocchmtrutng:Nutamuntomthmtrtng(ngha
lmthmkhngxcnh)f(x)cndnglnh:
f=sym(f(x))
Khinyfhotngnhlf(x)vcthxlbngcclnhtoolbox.Vd
tnhviphnbc1tavit:
df=(subs(f,x,x+h)f)/h
455
hay
symsxh
df=(subs(f,x,x+h)f)/h
trv:
df=
(f(x+h)f(x))/h
ngdngnycahmsymsrthuchtrongbiniFourrier,Laplacev
z.
c.DngsymtruycpcchmcaMaple:Tacthtruycphmgiai
thak!caMaplekhidngsym.
kfac=sym(k!)
tnh6!hayk!tavit:
symskn
subs(kfac,k,6)
ans=
720
subs(kfac,k,n)
ans=
n!
haynutnh12!tacngcthvit:
prod(1:12)
d.Vdtomatrnch:Mtmatrnvnglmatrnmhngsauc
cbngcchdchccphntcahngtrci1ln.Tatomtmatrn
vngAbngccphnta,bvc:
symsabc
A=[abc;bca;cab]
456
ktqu:
A=
[a,b,c]
[b,c,a]
[c,a,b]
DoAlmatrnvngtngmihngvctnhnhau:
sum(A(1,:))
ans=
a+b+c
sum(A(1,:))==sum(A(:,2))
ans=
1
BygitathayA(2,3)bngbetavbbngalpha:
symsalphabeta
A(2,3)=beta;
A=subs(A,b,alpha)
A=
[a,alpha,c]
[alpha,c,beta]
[c,a,alpha]
Hmtonhc
LnhMATLAB
f=xn
f=x^n
g=sin(at+b)
g=sin(a*t+b)
h=Jv(z)
h=besselj(nu,z)
457
Nutatmohmcacchmnynhngkhngmtbinclp
(nghalohmtheobinno)thktqul:
f=nxn1
g=acos(at+b)
h=Jv(z)(v/z)Jv+1(z).
Nhvyccbinclplx,tvz.MATLABhiuccbinclpl
ccchthngvnmcuibngchcinhx,y,z.Khikhngthycc
chciny,MATLABstmchgnnhtvcoilbinclp.Ccbin
khcnhn,a,bvvccoilhnghaythngs.Tuynhintacthly
ohmcaftheonbngcchvitrbinclpra.Tadngcclnhsau
toracchm:
symsabnnutxz
f=x^n;
g=sin(a*t+b);
ohmhmftavit:
diff(f);
ans=
x^n*n/x
Trongvdtrnxlbinclp.Numuntnhohmcaftheontacn
vit:
diff(f,n)
ans=
x^n*log(x)
4.Tocchmtonhcbngch:
a.Dngccbiuthcch:Cclnh:
symsxyz
r=sqrt(x^2+y^2+z^2)
t=atan(y/x)
f=sin(x*y)/(x*y)
458
toraccbiuthcchr,tvf.Tacthdngcclnhdiff,int,subshaycc
lnhSymbolicMathToolboxkhcxlccbiuthcnhvy.
b.ToccMfile:Mfilechophptadngcchmtngquthn.Vd
tamuntorahmsinc=sin(x)/xtasvitmtMfilecnidungnhsau:
functionz=sinc(x)
ifisequal(x,sym(0))
z=1;
else
z=sin(x)/x;
end
Tacthmrngccvdnhvychocchmvbinkhcnhau.
5.Tnhton:
a.ohm:Tatobiuthcch:
symsax
f=sin(a*x)
Vyth:
df=diff(f)
tnhohmcahmf(x)theox.Ktqul:
df=
cos(a*x)*a
tnhohmcaftheoatavit:
dfa=diff(f,a)
ktqu:
dfa=
459
cos(a*x)*x
Hmtonhc
f=xn
f=nxn1
g=sin(at+b)
g=acos(at+b)
LnhMATLAB
f=x^n
diff(f)haydiff(f,x)
g=sin(a*t+b)
diff(g)haydiff(g,t)
tnhohmbc2caftheoxvatavit:
diff(f,2)
ans=
sin(a*x)*a^2
diff(f,x,2)
ans=
sin(a*x)*x^2
Hmdiffcthdngislmatrn.Trongtrnghpnyohmc
thchintrntngphnt.Vd:
symsax
A=[cos(a*x),sin(a*x);sin(a*x),cos(a*x)]
ktqu:
A=
[cos(a*x), sin(a*x)]
[sin(a*x), cos(a*x)]
lnh:
dy=diff(A)
choktqu:
dy=
[sin(a*x)*a,
cos(a*x)*a]
sin(a*x)*a]
[cos(a*x)*a,
460
TakhostbinittoEuclid(x,y,z)sangtocu(r,,)thchin
bngcccngthc:
x=rcoscos
y=rcossin
z=rsin
tnhmatrnJacobiJcaphpbininytadnghm jacobian.nh
nghatonhccaJl:
( x , y , z )
J=
(r , , )
dvittadngktlthaychovfthaycho.Cclnh
symsrlf
x=r*cos(l)*cos(f);
y=r*cos(l)*sin(f);
z=r*sin(l);
J=jacobian([x;y;z],[rlf])
chotaktqu:
J=
[cos(l)*cos(f), r*sin(l)*cos(f),r*cos(l)*sin(f)]
[cos(l)*sin(f),
r*sin(l)*sin(f), r*cos(l)*cos(f)]
r*cos(l),
0]
[sin(l),
vlnh:
detJ=simple(det(J))
cho:
detJ=
cos(l)*r^2
Chlisthnhtcahmjacobianphilvectctvisthhai
lvecthng.HnnadonhthccamatrnJacobianlbiuthclng
gickhphctpnntadnglnhsimplethaythvrtgn.
Bngsautnghphmdiffvhmjacobian
461
Tonttonhc
f=exp(ax+b)
df
dx
df
da
d2f
d 2a
r=u2+v2
t=arctan(v/u)
J=
( r , t )
( u , v )
LnhMATLAB
symsabx
f=exp(a*x+b)
diff(x)hay
diff(f,x)
diff(f,a)
diff(f,a,2)
symsrtuv
r=u^2+v^2
t=atan(v/u)
J=jacobian([r;t],[u,v])
b.Giihn:ohmcamthmlgiihnsauynuntnti:
f ( x + h ) f ( x)
f ( x) = lim
h 0
h
Symbolic Math Toolbox cho php gii hn ca mt hm mt cch trc tip
hn.Lnh:
symshnx
dc=limit((cos(x+h)cos(x))/h,h,0)
choktqu:
dc=
sin(x)
v:
limit((1+x/n)^n,n,inf)
cho:
ans=
exp(x)
462
limit(1/x,x,0)
cho:
ans=
NaN
Lnh:
limit(1/x,x,0,left)
cho:
ans=
inf
Lnh:
limit(1/x,x,0,right)
cho:
ans=
inf
Nhvylimit(f)tngngvilimit(f,x,0).Bngsauchoccgiihn:
463
Hmtonhc
LnhMATLAB
lim f( x)
limit(f)
x 0
lim f( x)
limit(f,x,a)haylimit(f,a)
lim f( x)
limit(f,x,a,left)
lim f( x)
limit(f,x,a,right)
x a
x a
x+a
Hmtonhc
LnhMATLAB
n +1
x
int(x^n)hay
n
x dx = n + 1
int(x^n,x)
int(sin(2*x),0,pi/2)hay
2
int(sin(2*x),x,0,pi/2)
sin( 2x)dx = 1
0
g=cos(at+b)
1
g( t)dt = a sin(at + b)
g=cos(a*t+b)
int(g)hay
int(g,t)
KhiMATLABkhngtmctchphnnvitlilnhnhpvo.Vd:
symsx
f=exp((k*x)^2);
int(f,x);
ezplot(f)
tnhtchphnbtnhcahm.tnhtchphnxcnhtavit:
symsx
f=exp((k*x)^2);
a=int(f,x,0,1);
a=double(a)
464
d.Tnhtng:Tacthtnhtngbiuthcchkhichngtntibng
cchdnglnhsymcum.Vdchui:
1
1
1 + 2 + 2 +
2
3
chotngl2/6cnchui:
1+x2+x3+...
chotngl1/(1x).Cctngctnhnhsau:
symsxk
s1=symsum(1/k^2,1,inf)
s2=symsum(x^k,k,0,inf)
e.ChuiTaylor:Chohmf(x).Phtbiu:
T=taylor(f,8)
choktqu:
T=
1/9+2/81*x^2+5/1458*x^4+49/131220*x^6
lkhaitrinTaylorcaf(x)lncnx=0(khaitrinMacLaurin)ccha8s
hngkhc0.Phtbiu:
symsx
g=exp(x*sin(x))
t=taylor(g,12,2)
torakhaitrinTaylorcaf(x)tix=2vchan12shngkhc0.Tav
cc hm ny ln cng mt th thy c kh nng xp x ca chui
Taylorvihmthcg:
xd=1:0.05:3;
yd=subs(g,x,xd);
ezplot(t,[1,3]);
holdon;
plot(xd,yd,r.)
465
title(XapxiTaylor);
legend(Ham,Taylor)
Xap xi Taylor
Ham
Taylor
6
1
1
1.5
2
2.5
3
x
Tiptadnglnhpretty(T)inktqudidngccbiuthctonhc
dc.
6.Rtgnbiuthc:Taxt3biuthckhcnhau:
symsx
f=x^36*x^2+11*x6
g=(x1)*(x2)*(x3)
h=x*(x*(x6)+11)6
Thchincclnhpretty(f),pretty(g),pretty(h)tanhnc:
f=x36x2+11x6
g=(x1)(x2)(x3)
h=x(x(x6)+11)6
SymbolicMathToolboxcungcpmtshmdngbiniccbiu
thc i s v lng gic thnh cc biu thc n gin hn. Chng gm:
collect,expand,horner,factor,simplify,vsimple.
a.collect:Phtbiu:
collect(f)
xemfnhmtathcgmccbinchxvgpttccchcngbcca
x.isth2cachrbinnhgpnucnhiuintrongbiuthc.Sau
ylmtsvd:
f
collect(f)
(x1)(x2)(x3)
x^36*x^2+11*x6
x*(x*(x6)+11)6
x^36*x^2+11*x6
(1+x)*t+x*t
2*x*t+t
b.expand:Phtbiu:
expand(f)
khaitrinbiuthc.Sauylmtsvd:
f
expand(f)
a*(x+y)
a*x+a*y
(x1)*(x2)*(x3) x^36*x^2+11*x6
x*(x*(x6)+11)6 x^36*x^2+11*x6
exp(a+b)
exp(a)+exp(b)
cos(x+y)
cos(x)*cos(y)sin(x)*sin(y)
cos(3*acos(x))
4*x^33*x
c.horner:Phtbiu:
horner(f)
binimtathcthnhdngHornerhaybiudinlngnhau.Vd:
f
horner(f)
x^36*x^2+11*x6 6+(11+(6+x)*x)*x
1.1+2.2*x+3.3*x^2
11/10+(11/5+33/10*x)*x
d.factor:Nuflathchshut,phtbiu:
467
factor(f)
biudinfnhltchcaccathccbcthphnvihshut.V
d:
f
factor(f)
x^36*x^2+11*x6 (x1)*(x2)*(x3)
x^36*x^2+11*x5 x^36*x^2+11*x5
x^6+1
(x^2+1)*(x^4x^2+1)
ylmtvdkhcvphntchathcxn+1thnhthas:
symsx;
n=1:9;
x=x(ones(size(n)));
p=x.^n+1;
f=factor(p);
[p;f].
trvmatrnviccathcctthnhtvccthasctth2:
x+1]
[x+1,
x^2+1]
[x^2+1,
[x^3+1, (x+1)*(x^2x+1)]
[x^4+1,x^4+1]
[x^5+1,(x+1)*(x^4x^3+x^2x+1)]
[x^6+1,(x^2+1)*(x^4x^2+1)]
[x^7+1,(x+1)*(1x+x^2x^3+x^4x^5+x^6)]
[x^8+1,x^8+1]
[x^9+1,(x+1)*(x^2x+1)*(x^6x^3+1)]
Hmfactorcthphntchccitngchcchasnguynthnhtha
s.Vd:
one=1
forn=1:11
N(n,:)=sym(one(1,ones(1,n)));
end
[Nfactor(N)]
468
choktqu:
[1,1]
[11,(11)]
[111,(3)*(37)]
[1111,(11)*(101)]
[11111,(41)*(271)]
[111111,3)*(7)*(11)*(13)*(37)]
[1111111,(239)*(4649)]
[11111111,(11)*(73)*(101)*(137)]
[111111111,(3)^2*(37)*(333667)]
[1111111111,(11)*(41)*(271)*(9091)]
[11111111111,(513239)*(21649)]
f
simplify(f)
x*(x*(x6)+11)6
x^36*x^2+11*x6
(1x^2)/(1x)
x+1
(1/a^3+6/a^2+12/a+8)^(1/3)
((2*a+1)^3/a^3)^(1/3)
symsxypositivelog(x*y)
log(x)+log(y)
exp(x)*exp(y)
exp(x+y)
cos(x)^2+sin(x)^2
1
symsx
simple(cos(x)^2+sin(x)^2)
Trongmtstrnghp,tapdngsimple2lnnhnchiuqurt
gncaohn.Vd:
469
symsa
f=(1/a^3+6/a^2+12/a+8)^(1/3);
simple(simple(f))
chota:
1/a+2
Trongkhilnh:
symsa
simple(f)
chota:
(2*a+1)/a
Hmsimplecbitchiuqutrnccbiuthclnggic.Sauylmt
svd:
f
simple(f)
cos(x)^2+sin(x)^2
1
2*cos(x)^2sin(x)^2
3*cos(x)^21
cos(x)^2sin(x)^2
cos(2*x)
cos(x)+(sin(x)^2)^(1/2)
cos(x)+i*sin(x)
cos(x)+i*sin(x)
exp(i*x)
cos(3*acos(x))
4*x^33*x
7.Thays:Taxtvdgiiphngtrnhbchaiax2+bx+c=0.Cclnh
thchinnhimvnyl:
symsabcx
s=solve(a*x^2+b*x+c);
Bygitamuntnhcthgitrcaxvia=1,b=2,c=4thdngcc
lnh:
a=1;
b=2;
c=4;
470
x=subs(s)
Lnhsubscthkthpvilnhdoubletnhtrscamtbiuthcch.
Gistac:
symst
M=(1t^2)*exp(1/2*t^2);
P=(1t^2)*sech(t);
vmunxemtrnthPvMkhcnhaunhthno.Tadngcclnh:
ezplot(M);
holdon;
ezplot(P)
T=6:0.05:6;
MT=double(subs(M,t,T));
PT=double(subs(P,t,T));
plot(T,MT,b,T,PT,r.)
title()
legend(M,P)
xlabel(t);
grid
torathnhiumu.
8.Giiphngtrnh:
a.Giiccphngtrnhis:NuSlbiuthcchth:
solve(S)
tmgitrcabinkttrongSS=0.Vd:
symsabcx
S=a*x^2+b*x+c;
solve(S)
471
chota:
ans=
[1/2/a*(b+(b^24*a*c)^(1/2))]
[1/2/a*(b(b^24*a*c)^(1/2))]
ylvectchmccphntcanl2nghimcaphngtrnh.
Nutamuntmnghimvimtbincmt,taphichrbin
nhmtthngsph.VdnutamungiiStheobthphivit:
b=solve(S,b)
vnhncktqu:
b=
(a*x^2+c)/x
Ch rng v d ny gi thit phng trnh c dng f(x) = 0. Nu ta mun
giiphngtrnhcdngf(x)=q(x)taphisdngchui.cbitlnh:
s=solve(cos(2*x)+sin(x)=1)
cho4nghim:
s=
[0]
[pi]
[1/6*pi]
[5/6*pi]
Phngtrnhx^32*x^2=x1giptahiucchgiiphngtrnh.nhvo
lnh:
s=solve(x^32*x^2=x1)
chotaktqu:
s=
[1/6*(28+84*i*3^(1/2))^(1/3)+14/3/(28+84*i*3^(1/2))^(1/3)+2/3]
[1/12*(28+84*i*3^(1/2))^(1/3)7/3/(28+84*i*3^(1/2))^(1/3)
+2/3+1/2*i*3^(1/2)*(1/6*(28+84*i*3^(1/2))^(1/3)
14/3/(28+84*i*3^(1/2))^(1/3))]
472
[1/12*(28+84*i*3^(1/2))^(1/3)7/3/(28+84*i*3^(1/2))^(1/3)
+2/31/2*i*3^(1/2)*(1/6*(28+84*i*3^(1/2))^(1/3)
14/3/(28+84*i*3^(1/2))^(1/3))]
Tatnhgitrscanghim:
double(s)
ans=
2.24697960371747+0.00000000000000i
0.80193773580484+0.00000000000000i
0.554958132087370.00000000000000i
Nchothyttcccnghimcaphngtrnhlsthc.iunykhng
ng.Dnglnhvpaxcnhchnhxc:
vpa(s,10)
tora:
ans=
[2.246979604+.1e9*i]
[.8019377357+.3e9*i]
[.5549581323.5e9*i]
iu ny ngha l phn o ca s rt nh nhng khc 0. Ta xem mt v d
khc:
symsx
s=solve(tan(x)+sin(x)2);
Ktqulmtvect41.Nhtrn,tadnglnhdouble:
X=double(s)
X=
0.88628729156094
1.89793604072796
2.07662070137841
2.07662070137841
473
b.Hphngtrnhis:Bygitaxthphngtrnh.Gistac
hphngtrnh:
x 2 y 2 = 0
y
x
2
vtacntmxvy.Trchttatoraccitngcnthit:
symsxyalpha
Cnhiucchbiudinnghim.Mttrongcccchlvit:
[x,y]=solve(x^2*y^2,x(y/2)alpha)
vccktqu:
x=
[0]
[0]
[alpha]
[alpha]
y=
[2*alpha]
[2*alpha]
[0]
[0]
Sauvitvectnghim:
v=[x,y]
chota:
v=
[0,2*alpha]
[0,2*alpha]
[alpha,0]
[alpha,0]
Taxttipphngtrnh:
474
eqs1=x^2*y^2=1,x1/2*yalpha
[x,y]=solve(eqs1)
toraccnghim:
x=
[1/2*alpha+1/2*(alpha^2+2)^(1/2)]
[1/2*alpha1/2*(alpha^2+2)^(1/2)]
[1/2*alpha+1/2*(alpha^22)^(1/2)]
[1/2*alpha1/2*(alpha^22)^(1/2)]
y=
[alpha+(alpha^2+2)^(1/2)]
[alpha(alpha^2+2)^(1/2)]
[alpha+(alpha^22)^(1/2)]
[alpha(alpha^22)^(1/2)]
Cchgnccnghimnhtrnchthchhpvihctphngtrnh.Vih
cnhiuphngtrnh, solvetoramtcutrcmcctrngcanlcc
nghim.Takhosthphngtrnh:
u 2 + v 2 = a 2
u + v = 1
2
a 2a = 3
Lnh:
S=solve(u^2v^2=a^2,u+v=1,a^22*a=3)
Choktqu:
S=
a:[2x1sym]
u:[2x1sym]
v:[2x1sym]
CcnghimlcctrngcaS.l:
S.a
Tora:
ans=
[1]
475
[3]
Tng t ta tm c nghim u v v. Cu trc S by gi c th c x l
bngtrngvchstruycpnccphnringbitcanghim.Vd
nutamunkimtranghimth2,tacthdngphtbiusau:
s2=[S.a(2),S.u(2),S.v(2)]
trchthnhphnt2camitrng.
s2=
[3,5,4]
Phtbiu:
M=[S.a,S.u,S.v]
ToramatrnnghimM:
M=
[1,1,0]
[3,5,4]
mmihnglmtnghimcah.
Nuhphngtrnhltuyntnhtacthdngmatrngiih.Vd:
clearuvxy
symsuvxy
S=solve(x+2*yu,4*x+5*yv);
sol=[S.x;S.y]
v:
A=[12;45];
b=[u;v];
z=A\b
cho:
sol=
[5/3*u+2/3*v]
[4/3*u1/3*v]
z=
[5/3*u+2/3*v]
[4/3*u1/3*v]
476
Nhvytaccngmtnghimchodphngphpgiikhcnhau.
c. Gii phng trnh vi phn: Hm dsolve tnh nghim bng ch ca
phng trnh vi phn thng. Cc phng trnh c m t bng cc biu
thcchchaccchciDchccohm.KhiuD2,D3,...,Dntng
ng vi o hm cp 1,cp 2,..,cp n. Nh vy D2y trong Symbolic Math
d2 y
Toolboxl 2 .BinphthuclbincxlbiDvbinclpmc
dx
nhlt.NhvytnccbinktkhngccD.Cthdngbinc
lp khc bng cch ch ra n nh l thng s cui cng trong lnh dsolve.
iukinucthmtnhlmtphngtrnhph.Nuiukinu
khng c, nghim s cha cc hng s tch phn C1, C2 v.v. C php ca
dsolvecmttrongbngsau:
Cphp
Phmvi
y=dsolve(Dyt=y0*y)
Mtphngtrnh,mtnghim
[u,v]=dsolve(Du=v,Dv=u)
Haiphngtrnh,hainghim
S=dsolve(Df=g,Dg=h,Dh=f) Baphngtrnh,ralcutrc
S.f,S.g,S.h
nghim
Vd1:Tadnglnh:
dsolve(Dy=1+y^2)
vcktqu:
ans=
tan(tC1)
mtiukinu,tadng:
y=dsolve(Dy=1+y^2,y(0)=1)
vc:
y=
tan(t+1/4*pi)
Ch l y trong vng lm vic ca MATLAB nhng bin c lp t th
khng. Nh vy lnh diff(y, t) gy ra li. t t vo vng lm vic ca
MATLABphidngsymst
477
Vd2:Ccphngtrnhphituyncthcnhiunghim,thmchngay
ckhichoiukinu.
x=dsolve((Dx)^2+x^2=1,x(0)=0)
choktqu:
x=
[sin(t)]
[sin(t)]
Vd3:ylmtphngtrnhbc2vi2iukinu.Lnh:
y=simplify(dsolve(D2y=cos(2*x)y,y(0)=1,Dy(0)=0,x))
tora:
y=
2/3*cos(x)^2+1/3+4/3*cos(x)
giiphngtrnh:
d3u
=u
dx 3
u(0) = 1, u(0) = 1, u(0) =
tadngcclnhsau:
u=dsolve(D3u=u,u(0)=1,Du(0)=1,D2u(0)=pi,x)
y=3f+4g
g=4f+3g
giihtadnglnh:
S=dsolve(Df=3*f+4*g,Dg=4*f+3*g)
NghimctnhvtrvdidngcutrcS:
S=
f:[1x1sym]
g:[1x1sym]
478
Tacthxcnhgitrcafvgbnglnh:
f=S.f
f=
exp(3*t)*(cos(4*t)*C1+sin(4*t)*C2)
g=S.g
g=
exp(3*t)*(sin(4*t)*C1cos(4*t)*C2)
Nutachociukinuthvit:
[f,g]=dsolve(Df=3*f+4*g,Dg=4*f+3*g,f(0)=0,g(0)=1)
f=
exp(3*t)*sin(4*t)
g=
exp(3*t)*cos(4*t)
BngsaumtmtvivdvcphpcaSymbolicMathToolbox.
Phngtrnhviphn
LnhMATLAB
dy
y=dsolve(Dy+4*y=exp(t),y(0)=1)
+ 4 y( t ) = e t
dt
y(0) = 1
d2 y
y=dsolve(D2y+4*y=exp(2*x),y(0)=0,
+ 4 y( x) = e 2 x
2
y(pi)=0,x)
dx
y(0) = 0 , y( ) = 0
d2 y
y=dsolve(D2y=x*y,y(0)=0,
xy
(
x
)
=
y(3)=besselk(1/3,2*sqrt(3))/pi,x)
dx 2
1
y(0) = 0 , y( 3) = K 1 ( 2 3 )
3
(phngtrnhAiry)
9.BiniFouriervFourierngc:
479
a.BiniFourier:BiniFourierdngbiniphngtrnhvi
phnthnhphngtrnhis.Cphp:
F=fourier(f)
F=fourier(f,v)
F=fourier(f,v,u)
TacthxemccbiniFouriertrongbngsau:
BiniFourier
LnhMATLAB
2
f=exp(x^2)
f ( x) = e x
fourier(f)cho:
2
F[f ]( w) = f( x)e iwxdx = e w / 4
pi^(1/2)*exp(1/4*w^2)
g( w ) = e w
F[g ]( t ) =
f( x) = xe
g( w)e
|x|
F[f ]( u) =
iwt
dt =
1 + t2
f( x)e
ixu
dx =
4i
(1 + u 2 )2 u
g=exp(abs(w))
fourier(g)cho
2/(1+t^2)
f=x*exp(abs(x))
f=x*exp(abs(x))cho
4*i/(1+u^2)^2*u
f=ifourier(F)
f=ifourier(F,u)
f=ifourier(F,v,u)
BiniFourierngc
LnhMATLAB
w2
symsareal
4a 2
f( w) = e
f=exp(w^2/(4*a^2))
a ( ax ) 2 F=ifourier(f)
F 1[f ]( x) = f( w)e iwxdw =
e
F=simple(F)cho
|x|
g( x ) = e
ha*exp(x^2*a^2)/pi^(1/2)
g=exp(abs(x))
480
F 1[g ]( t ) =
g(x)e
itx
dx =
1 + t2
f( w) = 2e |w| 1
1
F [f ]( t ) = f( w)e iwtdw =
2 ( t )(1 t 2 )
(1 + t )
ifourier(g)cho
1/(1+t^2)/pi
f=2*exp(abs(w))1
simple(ifourier(f,t))cho
(2pi*Dirac(t)pi*Dirac(t)*t^2)/
(pi+pi*t^2)
10.BiniLaplacevLaplacengc:
laplace(F)
laplace(F,t)
laplace(F,w,z)
BiniLaplace
LnhMATLAB
4
f( t) = t
f=t^4
laplace(f)cho
24
L[f ] = F( t )e stdt = 5
24/s^5
s
0
1
g=1/sqrt(s)
g( s ) =
s
laplace(g)cho
1/(s^(1/2))*pi^(1/2)
L[g ]( t ) = g(s)e st ds =
s
0
at
f( t) = e
f=exp(a*t)
laplace(f)cho
1
L[f ]( x) = f( t )e txdt =
1/(x+a)
x+a
0
b.BiniLaplacengc:Khicnhcahm,tacthtmlihmgc
bngbiniLaplacengc.Cphp:
F=ilaplace(L)
F=ilaplace(L,y)
F=ilaplace(L,y,x)
481
BiniLaplacengc
LnhMATLAB
1
f=1/s^2
2
s
ilaplace(f)cho
c + i
1
t
L1[f ] =
f(s)e stds = t
2 i c i
1
g=1/(ta)
g( t ) =
ta
ilaplace(g)cho
c + i
1
x*exp(a*x)
L 1[g ] =
g( t )e xtdt = xe ax
2 i c i
1
f=1/(u^2a^2)
f( u) = 2
2
u a
ilaplace(f)cho
c + i
1
1
1
L 1[f ] =
g( u)e xudu =
1/(2*a*exp(a*x)) 1/(2*a*exp(
ax
ax
2 i c i
2ae
2ae
a*x))
f ( s) =
3.POWERSYSTEMBLOCKSET
1. Khi nim chung: Power System Blockset c thit k cung cp cho
chng ta cng c hiu qu v tin li m phng nhanh v d cc mch
in,cchthngin.Thvincanchaccphntcbncamch
innhmybinp,ngdy,ccmyinvccthitbintcng
sut.Giaodinhocungcpccthnhphncahthngin.Ccthnh
phn ny dc lu trong th vin powerlib. m th vin ny t ca s
MATLABtanhlnh powerlib.KhinyMATLABmmtcaschacc
khihthngconkhcnhau.Cchthngconnybaogm:
ElectricalSources
Elements
PowerElectronics
Machines
Connectors
Measuremets
Extras
Demos
Tacthmcchthngconnytoracccaschacckhim
tacncopyvomhnh.Mimtthnhphncbiudinbngmticon
cbit.
482
2.Mhnhhomtmchinngin:PowerSystemBlocksetchophpta
xydngvmphngmtmchinchaccphnttuyntnhcngnh
R
phituyn.Taxtmtmchinnhhnhv:
e= 2 .220sin(314+10)V
R=10
L
E
L=0.1H
C=100F
mphngmchinnytadngcckhi:
C
ngun,intr,inkhng,indungvdng
co.oinptadngkhiVmet.Nchotrstcthicainp.
thy c gi tr hiu dng ta dng khi RMS. Cc bc thc hin nh
sau:
Tmenu Filecacaspowerlibchn Newrichn Modelscha
mchinvgilctcircuit.mdl
nhpvobin,phasevtnstheoccgitrchotrongs.Chl
binlgitrmaxcainp.
Dokhiintrkhngcnncopykhi Series RLCBranchvtgi
trintrnhchovtLlvcngvClzero.
ThchintngtviphntLvC.
LykhioinptronghthngconMeasurement
xeminp,dngkhiScopecaSimulinkchun.MSimulinkv
Smphng(lutrongctcircuit.mdl)nhsau:
483
Bygitacthbtumphngtmenusimulation.tavomenu
ny,chnccthngschoquatrnhmphngvbmntstart.
ddngchovicphntchtrngthixclpcamchinchng
ta, th vin powerlib cung cp giao din ho(GUI). Copy khi giao din
Powerguivocasctcircuit.mdlvnhnpvoiconmn.Midng
coilngracxcnhbngmichuitngngvitncan.
Ccbintrngthichinthtngngviccgitrxclpcadng
invinp.Tnccbinchatncckhi,btubngtipungIl
hay Uc_. Du quy c c s dng vi dng in v in p v cc bin
trngthicxcnhbnghngcacckhi:
dng in in cm chy theo hng mi tn tng ng vi du
dng
inptrntCbnginpratriinpvo
ChnmenuTool|SteadyStateVoltagesandCurrentsxemcctrsxc
lpcadnginvinp.
[A,B,C,D,x0,states,inputs,outputs]=power2sys(ctcircuit);
484
Hm power2systrvmhnhkhnggiantrngthicamchtrong4
ma trn A, B, C, D, x0 l vec t cc iu kin u m ta va hin th vi
Powergui.Tncaccbintrngthi,ccilngvovccilngra
ctrvtrong3matrnchui.
Mtkhimhnhtrngthibit,ncthphntchctrongvng
tn s. V d cc mode ca mch ny c th tm t cc gi tr ring ca ma
trnA(dnglnhMATLABeig(A)):
eig(A)
ans=
1.0e+002*
0.5000+3.1225i
0.50003.1225i
freq=0:1500;
w=2*pi*freq;
[bien,pha,w]=bode(A,B,C,D);
semilogy(w,mag1(:,2));
semilogy(w,mag1(:,2));
3.Mhnhhoqutrnhqu:Mttrongnhngphmvingdngca
PowerSystemBlocksetlsimulationqutrnhqutrongccmchin.
iunycthlmccvicudaockhvmchint.Taxtqu
trnh qu khi ng mt mch RL vo ngun in xoay chiu. S m
phng(lutrongcttransient.mdl)nhsau:
485
Trcqutrnhqu,cudao(cmphngbngphntbreaker)
trngthim.Saukhongthigian1.5chuk,cudaong,nimchRL
vongune= 2 sin314t.
4.Mhnhhongdydi:ngdydilngdycthngsri.
N c m phng bng khi Distributed Parameter Line. N c xy
dngtrncsxtqutrnhtruynsngtrnngdy.Taxtmtng
dydi1000kmcmhnh(lutrongctlongline.mdl)nhsau:
Khisdngmhnhtaphikhaibointr,indungvincm
cangdytrnmtnvdi,sphavchiudicangdy.
5.Mhnhhongdybngcconhnh:Mcchcamhnhny
l thc hin ng dy 1 pha vi thng s c tp trung trn tng on.
Khi PI Section Line thc hin ng dy truyn ti mt pha vi thng s
486
tptrungtrntngon.ivingdytruynti,intr,incm
vindungphnbutrnsutchiudi.Mtmhnhxpxngdy
thng s phn b c c bng cch ni nhiu on pi ging nhau. Khng
gingnhngdythngsricstrngthilvhn,mhnhtuyn
tnhcconcshuhncctrngthichophpmhnhkhnggian
trngthicdngrtrapngtns.Soncdngphthuc
votnscbiudin.Xpxttnhtthchintheophngtrnh:
Nv
fmax =
8l
Trong:
N:sonpi
v:tctruynsng(km/s=1/L(H/km)C(F/km)
l:chiudingdy(km)
Taxtngdytrnkhngdi100kmctctruynsng300000km/s,
tnslnnhtbiudinckhidng1onl375Hz.Mhnhngin
nydngtronghthngtruyntinnglng.Taxydngmhnh(lu
trongctpiline7_7.mdl)nhsau:
Tanhpintr,incmvindungtrnmtnvdivo3utin
cahpthoi.Nhpdivsonpimongmunvo2cui.
6.Mhnhhomyin:Ccmyinnmtrongthvin Machines.Cc
myincmphngdatrnccphngtrnhcbncanvc
chiathnh2dng:myintronghnvtngivmyintrongh
nvSI.taxtqutrnhmmybngintrmtngcinmtchiu.
Smphng(lutrongctdcmachine.mdl)nhsau:
487
7.Giithiuvintcngsut: PowerSystemBlocksetcthitk
simulationccthitbintcngsut.Chngtakhostmtmchinc
thyristor cung cp cho mt mch RL. S m phng (lu trong
ctthyristor.mdl)nhsau:
.
8. M hnh ho mch in 3 pha: Ta m hnh ho mt mch in 3 pha c
ngun i xng nhng ti khng i xng. S m phng (lu trong
ctthreephases.mdl)nhsau:
488
inpccngunctrhiudngl231V.TiphathnhtlR=1,
L=1H,phathhaiR=15,L=2Hvphath3lR=10,L=1HvC=
1F.
Rs>0,Rs>Rm,Lm0,LsLm
489
intrcadyqunphidngvlnhnintrhcm.incmh
cmphikhc0nhngintrhcmcthbng0.Dyquncthth
ni,nghalkhngnivitngtrhayphncnlicamch.
10. M hnh nhnh RLC ni song song: Phn t ny thc hin nhnh RLC
nisongsong.KhiParallelRLCBranchthchinintr,incmvin
dung ni song song. b mt phn t R,L hay C ta phi t cc thng s
tngnglInf,Infv0.Tacthdnggitrmchoccthngs.c
p ng tn ca b lc tn s bc 7 660Hz ta dng mch nh trong file
ctpararlc.mdl.
Tngtrcamch:
V(s) RLCs 2 + Ls + R
Z(s) =
=
I(s)
LCs 2 + RCs
c p ng tn ca tng tr ta phi xc nh m hnh khng giantrng
thi(matrnABCD)cahthng(lutrongctpararlcm.m)
[A,B,C,D]=power2sys(ctpararlc);
freq=logspace(1,4,500);
w=2*pi*freq;
[Z,phaseZ]=bode(A,B,C,D,1,w);
subplot(2,1,1)
loglog(freq,Z)
grid
title(Bolocsonghaibac11)
xlabel(Tanso,Hz)
ylabel(TongtroZ)
490
subplot(2,1,2)
semilogx(freq,phaseZ)
xlabel(Tanso,Hz)
ylabel(PhaZ)
grid
11.MhnhtiRLCnisongsong:PhntnythchintiRLCnisong
song.Khi ParallelRLCLoadthchintituyntnhnhthpnisong
song ca cc phn t R, L v C. xc nh tham s ta nhp in p nh
mcvtnsnhmcvo2mcutin.Nhpcngsuttcdng,cng
sutphnkhngtrncundyvcngsutphnkhngtrntinvo3
mccui.Cccngsutphnkhngphidng.Titnsmt,tisc
tngtrhngvcngsuttlvibnhphnginptvo.Tatmcc
gi tr xc lp ca in p v dng in ti trong mch trong file
ctloadrclp.mdl.
12.MhnhnhnhRLCninitip:PhntnythchinnhnhRLCni
nitip. Khi SeriesRLCBranchthchinintr,incmvindung
ninitip.loitrR,LhayCtachochngbng0,0hayInf.Ccgitr
ny c th t l s m. Ta xt mt m hnh nh trong file ctserierlc.mdl.
Tngtrcanhnhl:
V(s) LCs 2 + RCs + 1
Z(s) =
=
I(s)
Cs
nhn c p ng tn s ca tng tr ta phi xy dng m hnh
khnggiantrngthicahthng:
491
[A,B,C,D]=power2sys(ctserierlc);
freq=logspace(1,4,500);
w=2*pi*freq;
[Y,phaseY]=bode(A,B,C,D,1,w);
Z=1./Y;
phaseZ=phaseY;
subplot(2,1,1)
loglog(freq,Z)
grid
title(Bolocsongbac5)
xlabel(Tanso,Hz)
ylabel(TongtroZ)
subplot(2,1,2)
semilogx(freq,phaseZ)
xlabel(Tanso,Hz)
ylabel(PhaZ)
grid
12.MhnhtiRLCninitip:PhntnythchintiRLCninitip
tuyntnh.
Khi Series RLC Load thc hin ti RLC ni ni tip tuyn tnh. Ta
nhpgitrinpvtnsnhmcvo2ucahpthoi.Nhpcng
suttcdng,cngsutphnkhngtrnincmvcngsuttcdngtrn
in dung vo 3 cui.Cc cng sut phn khng phi c tr s dng. Ti
tn s m t, ti c tng tr xc nh hng v cng sut ca n t l vi
492
bnhphnginptvo.Tatmgitrxclpcainpvdngin
catitrongfilectloadrlcs.mdl.
4.NGDNGMATLABTRONGIUKHINTNG
1.Ccdngmhnhhthng:xydngmhnhcahthng,MATLAB
cung cp mt s lnh. M hnh h thng m t bng hm truyn c xy
dngnhlnh tf(ts,ms)vitslathctsvmslathcmus.Hm
zpk(z, p, k) vi z l vec t im khng, p l vec t im cc v k l h s
khuychitonnmhnhimkhngimcc.Hm ss(a,b,c,d)via,
b,c,dlccmatrntonnmhnhkhnggiantrngthi.
V d: Ta to ra mt s m hnh nh cc lnh MATLAB sau(lu trong
ctspacestate.m):
clc
ts=[12];
ms=[154];
sys1=tf(ts,ms)
sys2=zpk([611],[51],3)
sys3=ss([12;34],[11;01],[01;12;31],0)
Ktqul:
Transferfunction:
s+2
s^2+5s+4
Zero/pole/gain:
3(s+6)(s1)^2
(s+5)(s1)
a=
x1x2
x112
x234
b=
u1u2
x111
493
x201
c=
x1x2
y101
y212
y331
d=
u1u2
y100
y200
y300
Continuoustimemodel.
2.imccvimzerocahmtruyn:binihthngchobihm
truynthnhhchobiimcc,imzerovhskhuchidnghm
tf2zp.Tacngcthdnghmpole(sys)tmimcccahthngsysv
dunghmzero(sys)tmimkhngcahthngsys
TadngcclnhMATLABsau(lutrongctzp2tf.m):
z=[6;5;0];
k=1;
p=[3+4*i;34*i;2;1];
[ts,ms]=zp2tf(z,p,k)
K t qu l :
ts=
0111300
ms=
19458750
sys=zpk([611],[51],3)
axisequal
494
pzmap(sys)
sgrid
r=[0.00.25*i;0+0.25*i;2];
p=[0+2*i;02*i;1];
k=2;
[ts,ms]=residue(r,p,k)
K t qu l :
ts=
2091
ms=
1144
4.Binihmtruynthnhkhnggiantrngthi:Chophngtrnhvi
phn:
d n 1y
dy
dn y
a n n + a n 1 n 1 + L + a1
+ a 0 y = u( t )
dx
dx
dx
tx1=y;x2=y;x3=yv.vtachphngtrnhtrngthi:
x=Ax+Bu
y=Cx+Du
gilphngtrnhkhnggiantrngthi
Numthiukhintngchobihmtruyntacthbiniv
khnggiantrngthibnglnhtf2ss.
Vd:Chohmtruyn:
s2 + 7s + 2
H(s) = 3
s + 9s 2 + 26s + 24
Ta bin h v dng khng giantrng thi bng cc lnh MATLAB sau(lu
trongcttf2ss.m):
495
ts=[172];
ms=[192624];
[a,b,c,d]=tf2ss(ts,ms)
Ktqul:
a=
92624
100
010
b=
1
0
0
c=
172
d=
0
a=[010;001;123];
b=[10;0;0];
c=[100];
d=[0];
[ts,ms]=ss2tf(a,b,c,d,1)
K t qu l :
ts=
010.0030.0020.00
ms=
1.003.002.001.00
Nhvyhmtruynl:
496
G(s) =
10(s 2 + 3s + 2)
s 3 + 3s 2 + 2 s + 1
&
0
1 x 2 + 1 u( t )
x 2 = 0
x& 3 6 11 6 x 3 1
y=[110]x
Choiukinu x(0)=[10.50.5].Tm x(t),y(t)viu(t)lhmnv.Ta
dngcclnhMATLABsau(lutrongctlsim.m):
a=[010;001;6116];
b=[1;1;1];
c=[110];
d=0;
x0=[10.50.5];
t=0:0.05:4;
u=ones(1,length(t));
[y,x]=lsim(a,b,c,d,u,t,x0);
plot(t,x,t,y)
Doiukinunnnghimyxutphtt1.5
Khiu(t)lsin2ttatnhpngnhsau(lutrongctlsim1.m):
a=[010;001;6116];
b=[1;1;1];
c=[110];
d=0;
x0=[10.50.5];
t=0:0.05:4;
u=sin(2*pi*t);
[y,x]=lsim(a,b,c,d,u,t,x0);
plot(t,x,t,y)
497
7. Bin i s khi: Mt s khi iu khin thng rt phc tp. V
vytathngphibininvdngnginbnglnhconnect.
Vd:Xtskhisau:
1
4
1
+
+
1
0.5
s+3
s+4
- s+2
1
2
5
4
3
22
5 7
Xcnhphngtrnhtrngthivhmtruyncatonbs:
Gi ni v di l t s v mu s ca hm truyn ca khi th i. Ta c cc
lnh(lutrongctconnect.m):
n1=1;d1=1;
n2=.5;d2=1;
n3=4;d3=[14];
n4=1;d4=[12];
n5=1;d5=[13];
n6=2;d6=1;
n7=5;d7=1;
n8=1;d8=1;
nblocks=8;
blkbuild;
q=[10000
21678
32000
43000
54000
63000
74000
85000];
iu=[1];
iy=[5];
498
[A,B,C,D]=connect(a,b,c,d,q,iu,iy)
Ktqul:
A=
8.02.50.5
4.02.00
01.03.0
B=
0.5
0
0
C=
001
D=
0
[ts,ms]=ss2tf(A,B,C,D,1)
ts=
0002.0
ms=
1.013.056.080.0
Hmtruyncahl:
C(s)
1
= 3
2
R(s) s + 13s + 56s + 80
u1
sys1
y1
sys1
y
u
u2
sys2
y2
sys2
a
b
z1
v1
y1
u1
sys1
u1
sys1
y
u
499
c
d
y2
u2
u2
sys2
z2
sys2
v2
v2
a.Ghptheohng:Ghptheohng(hnha)cnghalghpuraca
cc h thng con c u vo khc nhau. Hm sys(sys1, sys2) thc hin vic
ghpny.TaccclnhMATLABsau(lutrongctrow.m):
clc
sys1=tf(1,[10])
sys2=ss(1,2,3,4)
sys=[sys1,sys2]
b.Ghptheoct:Ghptheoct(hnhb)cnghalghpuracah
thng con c chung u vo. Ta c cc lnh MATLAB sau(lu trong
ctcolumn.m):
clc
sys1=tf(1,[10])
sys2=ss(1,2,3,4)
sys=[sys1;sys2]
clc
sys1=tf(1,[10])
sys2=ss(1,2,3,4)
sys=append(sys1,sys2)
dng ghp song song cc h thng con. Cc lnh MATLAB (lu trong
ctparallel.m)nhsau:
500
clc
sys1=tf(1,[10])
sys2=ss(1,2,3,4)
sys=parallel(sys1,sys2)
e.Ghptunt:Tadngcchghpnhtrnhnhe.Hm seriesdng
ghp tun t cc h thng con. Cc lnh MATLAB(lu trong ctseries.m)
nhsau:
clc
sys1=tf(1,[10])
sys2=ss(1,2,3,4)
sys=series(sys1,sys2)
f.Ghpcphnhi:Tadngcchghpnhhnhf.Hmfeedbackdng
ghp c phn hi cc h thng con. Cc lnh MATLAB (lu trong
ctfeedback.m)nhsau:
clc
sys1=tf(1,[10])
sys2=ss(1,2,3,4)
sys=feedback(sys1,sys2)
g.Sdnghmconnect:Hmconnecttoramhnhkhnggiantrng
thitcchthngcon.Cphpcahm:
sysc=connect(sys,Q,inputs,outputs)
Mththngthngcchodidngcckhi.Ngayckhiskhng
phctp,victmcmhnhkhnggiantrngthicahthngkhkh.
tmcmhnhkhnggiantrngthi,trchttadnghmappend:
sys=append(sys1,sys2,...,sysN)
m t mi h thng con sysj h thng dng ng cho. Tip n dng
lnh:
sysc=connect(sys,Q,inputs,outputs)
sys2
sys1
u1 2 x& = Ax + Bu 2
y1
10 1 +
u2 y = Cx + Du 3
y2
uc
1 s+5
- 3
4
2(s + 1) 4
s+2
sys3
Tacnniura1v4vouvo3(u2)vura3(y2)vouvo4nn
matrnQl:
Q = [3 1 -4
430];
Sc2uvotcchthngkhclucvu1(uvo1v2casys)v
2uraancchthngkhcly1vy2(ura2v3casys).Nh
vymatrninputsvoutputsl:
inputs=[12];
outputs=[23];
Cc l nh MATLAB th c hi n vi c bi n
nh sau:
clc
A=[9.020117.7791
1.69433.2138];
B=[.5112.5362
.0021.8470];
C=[3.28972.4544
13.500918.0745];
D=[.5476.1410
is
(l u trong ctconnectsys.m)
502
.6459.2958];
sys1=tf(10,[15],inputname,uc)
sys2=ss(A,B,C,D,inputname,{u1u2},...
outputname,{y1y2})
sys3=zpk(1,2,2)
sys=append(sys1,sys2,sys3)
Q=[314
430];
inputs=[12];
outputs=[23];
sysc=connect(sys,Q,inputs,outputs)
9.pngcahthngbchai:Dngchuncahmtruyncahthng
bchail:
1
G(s) = 2
s + 2n s + 2n
Trongnltnstnhinvlhsttcahthng.torahm
truynnykhibitnvtadnglnh.
Vd:Tmhmtruynvmatrntrngthicahthngbchaibitn=2.4
rad/sv=0.4.CclnhMATLAB(lutrongctord2.m)nhsau:
[ts,ms]=ord2(2.4,0.4)
[a,b,c,d]=ord2(2.4,0.4)
pngthctcahlmtdaongttdncdng:
1
c( t ) = 1 e n t sin( n t + )
Trong = 1 2 v = tan 1 ( / )
Tagitrlthigiandpngtt10%gitrcuin90%gitrcui;
thi gian t n nh l tp; nhanh o bng tr v tp; thi gian tt l ts.
Thigiantnnhcxcnhbngcchchoohmcac(t)bng0.
tp =
(4.1)
1 2
Gitrnh(percentovershootp.o)khikchthchlbcnhyl:
p.o = e
1 2
100
(4.2)
503
G(s) = 2
s + 2n s + 2n
khin=5v=0.6.CclnhMATLAB(lutrongctstep.m)nhsau:
clc
ts=25;
ms=[1625];
sys=tf(ts,ms)
t=0:0.02:2;
c=step(sys,t);
plot(t,c)
xlabel(t(s));
ylabel(c(t));
Vd2:Chohcsnhhnhv:
d
C(s)
R(s)
s(s + 1)
1+es
clc
po=40;
z=log(100/po)/sqrt(pi^2+(log(100/po))^2)%theo(42)
zn=0.27999799333504
tp=0.8;
wn=pi/(tp*sqrt(1z^2))%theo(41)
ts=wn^2;
ms=[12*z*wnwn^2];
sys=tf(ts,ms);
504
t=0:0.02:4;
c=step(sys,t);
plot(t,c)
Tskhitac:
C(s)
d
= 2
Phngtrnhctnhl:
s2+(de+1)s+d=s2+2ns+ 2n
Vi 2n =wn=0.28vz==4.0906tacd=16.733ve=0.077
Khi c mt hm truyn ta c th xc nh h s tt v tn s t nhin n
bnglnhdamp.
Vd3:Chohchmtruyn:
2 s 2 + 5s + 1
H(s) = 2
s + 2s + 3
Tm h s tt v tn s t nhin n. Cc lnh MATLAB (lu trong
ctdamp.m)nhsau:
h=tf([251],[123]);
damp(h)
Ktqul:
EigenvalueDampingFreq.(rad/s)
1.00e+000+1.41e+000i5.77e0011.73e+000
1.00e+0001.41e+000i5.77e0011.73e+000
10.pngtrongminthigiancahthng:
a.pgitrbanu:pnggitrbanumtphnngcah
khikhngckchthchduvonhngtnticcgitrbanucavect
trng thi x0. Phn ng c gi l chuyn ng t do ca h. p ng
ny c xc nh bng hm initial. Ta c cc lnh MATLAB tm p ng
banucamththng(lutrongctinitial.m)nhsau:
clc
a=[0.55720.7814;0.78140];
c=[1.96916.4493];
505
x0=[1;0]
sys=ss(a,[],c,[]);
initial(sys,x0)
b.pngxungDirac:Tatmpngcahthngvixungnhhm
impulse.CclnhMATLAB(lutrongctimpulse.m)nhsau:
clc
a=[0.55720.7814;0.78140];
b=[11;02];
c=[1.96916.4493];
sys=ss(a,b,c,0);
impulse(sys)
Hnhbntrilpngcaknhthnhtvhnhbnphilpngca
knhth2.
c.pngivihmbcnhy:tmpngcahthngivi
hm bc nhy ta dng hm step. Cc lnhMATLAB (lu trong ctstep2.m)
nhsau:
clc
a=[0.55720.7814;0.78140];
b=[11;02];
c=[1.96916.4493];
sys=ss(a,b,c,0);
step(sys)
d. p ng vi tn hiu bt k: tm p ng ca h thng i vi
hmbtktadnghmlsim.CclnhMATLAB(lutrongctlsim.m)nh
sau:
clc
[u,t]=gensig(square,4,10,0.1);
H=[tf([251],[123]);tf([11],[115])]
lsim(H,u,t)
506
Tadnghmgensigtomtxunghnhvung,trong4chukvlymu
sau0.1strong10chuk.
11.pngtrongmintnscahthng:Chomthmtruyncamt
hthng,thaysbngjtachmtruynttnscahthng.rng
bngcahthng Bltnsmtibincaggimi1/2.Tns
ngvigitrmaxcaG()gilrvctrsl:
r = n 1 2 2
vctnhtnbinphacamththngtadnglnhfreqs.
Vd:Chohmtruyncamththngl:
4
G(s) = 2
s + 2s + 4
Tm c tnh tn binpha ca h thng bng cc lnh MATLAB(lu trong
ctfreqs.m):
w=0:0.01:3;
ms=[124];
ts=[4];
freqs(ts,ms,w);
Tacngcthtothnhsau(lutrongctfreqplot.m):
ts=[4];
ms=[124];
w=0:0.01:3;
g=freqs(ts,ms,w);
mag=abs(g);
pha=angle(g);
subplot(2,1,1);
loglog(w,mag);
gridon;
subplot(2,1,2);
semilogx(w,pha);
gridon
507
ts=[123214];
ms=[12323];
[h,w]=freqz(b,a,64);
[tsm,msm]=invfreqz(h,w,4,5)
Tacngcthxydngctnhtnthco
Vd:Chohmtruyn:
10
G(s) = 3
s + 4.5s 2 + 9s + 10
Tm c tnh tn thc o ca h bng cc lnh MATLAB (lu trong
ctfreqsplot.m):
ts=[10];
ms=[14.5910];
w=[1:0.01:3];
h=freqs(ts,ms,w);
t=real(h);
a=imag(h);
subplot(2,1,1);
plot(w,t)
subplot(2,1,2);
plot(w,a)
vthBodecahthngtadnghmbode.ththnhtnht
lctnhbintnlogarit,cchiatheodB.ththhailctnhpha
tnlogaritchiatheo.
Ccdngcalnhbodegm:
bode(sys)
bode(sys,w)
[bien,pha,w]=bode(sys)
v th Bode ca mt h thng ta dng cc lnh MATLAB(lu trong
ctbode.m)nhsau:
508
clc
g=tf([10.17.5],[10.12900]);
figure(1)
bode(g)
figure(2)
bode(g,{0.1,100})
gd=c2d(g,0.5)
figure(3)
bode(g,r,gd,b)
Hm marginchobitdtrnnhcahthng.Dtrbingmlhs
khuychiFrmnutathmvohmtruyntcahhthhknva
tcgiihnnnh.Dtr phapmcnhnghalkhongcch
gcpharti180.Hmchobitgmtitnsophawcgvpmtitns
ctphawcp.Hm allmarginctcdngrnghnhm margin.Ccktqu
trvcaallmargingm:
GMFrequency:gitrtnsmtithphactngthngnm
ngang180
GainMargin: d tr bin gi tr o ca bin ti tn s
GMFrequency
PMFrequency:gitrtnsmtithbinctngthngnm
ngang0dB(ngvihskhuychi1)
PhaseMargin:dtrphakhongcchgc(>0)tvtrPMFrequency
n180.
DelayMargin:dtrthigiantrgitrthigiantrmnuvtqu,
hthngsmtnnh.
DMFrequency:gitrtnsngviDelayMargin.
Stable:=1khimachvngknnnh;bng0trongcctrnghpkhc.
Ccilngnycthcctthtobimargin.xcnh
dtrnnhcamththngcthtadngcclnhMATLAB(lutrong
ctmatgin6_32.m)nhsau:
clc
sys=zpk([],[111],4)
margin(sys)
509
allmargin(sys)
Ktquhthngnnh.NcDelayMargin=0.3s.Bygitagnchosys
mtkhongthigiantrlstabil.DelayMargin+0.01,nghalvtquthi
giantrnnh0.01s.Ktqutnhtoanmica allmarginsthngbotnh
khng n nh ca h thng. Cc lnh MATLAB (lu trong
ctnewstabil6_33.m)nhsau:
clc
sys=zpk([],[111],4)
margin(sys)
stabil=allmargin(sys)
sys.ioDelay=stabil.DelayMargin+0.01;
newstabil=allmargin(sys)
MtkhnngkhcmtctnhtnslthNyquist.Nbiu
din cc gi tr thc v o thuc hm truyn t phc ca mch vng h
F0(j)trongditns=0trnhtophc.ngcongdoccim
tothnhcgilquobinphaF0(j).Trncstiuchunnnh
Nyquisttacthrtraktlunvtnhnnhcahkn(cphnhinv
m)tthNyquist.vthNyquisttadnghm Nyquist.Taccc
lnhMATLAB(lutrongctnyquist6_34.m)nhsau:
clc
H=tf([251],[123])
nyquist(H)
12.Tnhnnh:Tiuchunnnhnirnghsnnhnuccnghim
caphngtrnhctnhcphnthcm.Phngtrnhctnhlathc
mu s ca hm truyn. Do vy ch cn tnh nghim ca a thc c tnh
bnglnhrootsltacthxcdnhhnnhhaykhng.
Vd:Xttnhnnhcahcphngtrnhctnhl:
s4+10s3+35s2+50s+24
CclnhMATLABl:
a=[110355024];
510
roots(a)
ans=
4.0000
3.0000
2.0000
1.0000
Nhvyhnnh.
13.nhy:nhycahthngcobngtsphntrmsthayi
cahmtruyntheosthayiphntrmcathngsb.Vdnhyca
hmtruynT(s)theobcxcnhbng:
T(s) / T(s) T(s) T(s)
=
S Tb =
b b
b / b
Khibgnn0tac:
T(s) b
S Tb =
b T(s)
nhytnhlgitrcaSkhit0.nhyngctnhbngcchthay
sbngjvvngStheo.BincaS(j)osaiscahthng.
Vd:Khosthiukhinnhhnhvsau:
Thitb
Bb
b
K
R(s)
C(s)
(s + 1)
Sensor
Trongbctrnhmcl4vhctrnhmcl0,5.TmnhyT(s)
theob,vmodulhmnhytheovihaigitrblK=2vK=0.5.Tm
nhyT(s)theoh,vmodulcahmnhytheohviK=2vK=0.5.
Hmtruyncahthngl:
Kb
(Ts) = 2
s + 1 + Kbh
Vib=4vh=0.5tacB=1+2K.
nhycaT(s)theobkhib=4vh=0.5l:
511
s+1
s+1
T(s) b
=
=
b T(s) s + 1 + Kbh s + 1 + 2K
Kbh
2K
T(s) h
S Th =
=
=
b T(s) s + 1 + Kbh s + 1 + 2K
CclnhMATLAB(lutrongctsensibility.m)nhsau:
k1=1;
k2=0.5;
ts=[11];
ms1=[11+2*k1];
ms2=[11+2*k2];
w=0:0.01:15;
stb1=abs(freqs(ts,ms1,w));
stb2=abs(freqs(ts,ms2,w));
subplot(2,1,1);
plot(w,stb1,w,stb2);
title(DonhaycuaTtheob);
ts1=2*k1;
ts2=2*k2;
stb1=abs(freqs(ts1,ms1,w));
stb2=abs(freqs(ts2,ms2,w));
subplot(212);
plot(w,stb1,w,stb2);
title(DonhaycuaTtheoh);
nhycahthngtheobgimkhihskhuchicavnghKtng
trong khi nhy theo h tng khi K tng. R rng l nhy theo b tng
nhanhbnngoiB.
14.Saisxclp:Khosthnhhnhv:
R(s)
G(s)
C(s)
H(s)
Hmtruyncahknl:
C(s)
G(s)
=
R(s) 1 + H(s)G(s)
S Tb =
512
Saiscahknl:
E(s)=R(s)H(s)C(s)=
R ( s)
1 + H(s)G(s)
Sdngnhlgitrcuitac:
sR(s)
e ss = lim
s 1 + G( s)H( s)
uvobcnhynv:
1
1
=
e ss =
1 + lim G(s)H(s) 1 + K p
s
uvotngtuyntnhnv:
1
1
e ss =
1 + lim sG(s)H(s) K v
s
uvoparabolnv:
1
1
e ss =
1 + lim s 2 G(s)H(s) K a
s
TacthdngSymbolicMathtnhccgiihntrn.
15.Phntchvthitkquonghim:Phngphpkinhintham
shokhuiukhincavngiuhnhlphngphpquonghim.
Qu o nghim l qu o im cc, hp thnh bi cc iu cc ca h
thng,phthucvohskhuychiphnhikvacbiuditrnmt
phngphcviphnthcRe()= trntrchonhxvphnoIm()=
trn trc tung y. v c qu o nghim ca h thng ta dung hm
rlocus.Taxththngsau:
u
y
Gc
G0
GM
k
Cphpcarlocusl
rlocus(sys[,k])
[r,k]=rlocus(sys)
r=rlocus(sys,k)
MhnhsystronglnhtrnlhmtruyntcahthnghGoGcGM
cxcnhbnglnhMATLAB:
sys=sysM*sysO*sysC
513
mchachskhuychiphnhik,lthamstuchnsckhai
boring.iucnghalsyscghpnibiccmhnhringl.Khi
gi rlocus(sys[, k]) m khng yu tr bin v ta nhn c th qu o
nghim ca sys. Nu ta khng khai bo cc h s khuych i trong vec t
thamstuchnk,MATLABstngquytnhgitrthchhp.Saukhi
dngrlocusvquoimcctatmccgitrlinquannimccbt
knmtnquobngcchnhpchutvomtimtrnquo.Lc
lnh rlocusfind c thc hin. Ta dng cc lnh MATLAB sau (lu trong
ctrlocus.m)vquonghimcamththng:
clc
sys=zpk([],[0.11j1+j],1)
rlocus(sys)
[r,k]=rlocus(sys)
sgrid
514