Está en la página 1de 541

CHNG 1: MATLAB C BN

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

backspace CtrlH xokttrcchconnhyng

)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

2. Nhp xut d liu t dng lnh: MATLAB khng i hi phi khai bo


bin trc khi dng. MATLAB phn bit ch hoa v ch thng. Cc s
liuavomitrnglmviccaMATLABclulisutphinlm
vicchonkhigplnhclearall.MATLABchophptanhpsliutdng
lnh.Khinhpmatrntbnphmtaphituntheoccquynhsau:

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

nhphn *.matvfileASCII *.dat.luccmatrnA,B,Cdidngfile


nhphntadnglnh:

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)

Lnh fminsearch tng t hm fminbnd dng tm cc tiu a


phngcahmnhiubin.Tachm3binlutrongfilethree_var.mnh
sau:

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)

Lnh fzero dng tm im zero ca hm mt bin. V d tm gi tr


khngcahmlncngitr0.2tavit:

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.

b. Ch s: Phn t hng i ct j ca ma trn mn c k hiu l A(i, j).


Tuynhintacngcththamchiutiphntcamngnhmtchs,v
dA(k)vik=i+(j1)m.Cchnythngdngthamchiuvecthng
hayct.Trongtrnghpmatrnythncxemlmatrnmtct
di to t cc ct ca ma trn banu. Nh vy vitA(5) c ngha l tham
chiuphntA(2,2).

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

e.break:phtbiu breakktthcvnglp forhay whilemkhng


quantmniukinktthcvnglpthomnhaycha.

2.HOTRONGMATLAB
1.Cclnhv:MATLABcungcpmtlothmvbiudinccvects
liucngnhgiithchvinccngcongny.

plot ha2Dvisliu2trcvhngvtuyntnh

plot3
ha3Dvisliu2trcvhngvtuyntnh

polar
hotronghtocc

loglog
hovicctrclogarit

semilogx hovitrcxlogaritvtrcytuyntnh

semilogy hovitrcylogaritvtrcxtuyntnh

plotyy
hovitrcycnhnbntrivbnphi

2. To hnh v: Hm plot c cc dng khc nhau ph thuc vo cc i s


avo.Vdnuylmtvectthplot(y)toramtngthngquanh
giaccgitrcayvchscan.Nutac2vectxvyth plot(x,y)
torathquanhgiaxvy.

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.

8. V vi hai trc y: Lnh plotyy cho php to mt th c hai trc y. Ta


cngcthdngplotyychogitrtrnhaitrcyckiukhcnhaunhm
tinsosnh.Taxtchngtrnhct1_11.m:

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

Tham s HorizontalAlignment v VerticalAlignment nh v vn bn so vi


cctox,y,zcho.

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)

b.Mtdliutrntrc:Tadngcchm xlabelv ylabelmt


ccdliutrntrc.Taxtchngtrnhct1_18.m:

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])

Mc nh,phm vi gi tr ca trc y l t 0 n 30. xem nhit trong


khongt15n30tathayiphmvigitrcatrcy:

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))

xp chng mt s liu ln mt th thanh trn, c trc th 2


cngvtrnhtrcthnhttavit:

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

f. th pie: th pie hin th theo t l phn trm ca mt phn t


camtvecthaymtmatrnsovitngccphnt.Cclnh pie v pie3
torath2Dv3D.taxtchngtrnhct1_21.m:

X=[19.3 22.1 51.6;

34.2 70.3 82.4;

61.4 82.9 90.8;


20

50.5 54.9 59.1;

29.4 36.3 47.0];

x=sum(X);

explode=zeros(size(x));

[c,offset]=max(x);

explode(offset)=1;

h=pie(x,explode)

%A=[136];
%pie3(A)

Khi tng cc phn t trong i s th nht bng hay ln hn 1, pie v pie3


chunhoccgitr.Nhvychovectx,miphncdintch xi / sum( xi )
vixilmtphntcax.Gitrcchunhomtphnnguynca
mivng.Khitngccphnttrongisthnhtnhhn1, piev pie3
khngchunhoccphntcavectx.Chngvmtphnpie.

x=[.19.22.41];

pie(x)

g.Lmhnhchuynng:Tacthtorahnhchuynngbng2cch

tovlunhiuhnhkhcnhauvlnlthinthchng

v v xo lin tc mt i tng trn mn hnh,mi ln v li c s


thayi.
Vicchthnhttathchinhnhchuynngqua3bc:

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)

ngn hm plot a t l cc trc v axis normal mi khi n c gi. Hm


getframekhngistrliccimnhcatrchinhnhhnhhinc.
Mikhunghnhgmccsliutrongmtvectct.Hmgetframe(gcf)chp
tonbphntrongcamtcashinhnh.Saukhitorahnhnhtac
thchychngmtslnnhtnhvd30lnnhhmmovie(M,30).
Mtphngphpnatohnhchuynnglvvxo,nghal
vmtitnghorithayivtrcanbngcchthayitox,
yvzmtlngnhnhmtvnglp.Tacthtoracchiungkhc
nhaunhcccchxohnhkhcnhau.Chnggm:

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:

a.Cclnhcbn:Lnh meshv surftoralivmt3Dtmatrn


sliu.Gimatrnsliulzmmiphntcanz(i,j)xcnhtung
camtth mesh(z)toramtlicmuthhinmtzcn surf(z)tora
mtmtcmuz.

b. th cc hm hai bin: Bc th nht th hin hm 2 bin


z=f(x,y)ltomatrnxvychacctotrongminxcnhcahm.
Hmmeshgridsbinivngxcnhbi2vectxvythnhmatrnx
vy.Sautadngmatrnnynhgihm.
Takhosthm sin(r)/r.tnhhmtrongkhong8v8theoxvy
tachcnchuynmtvectischomeshgrid:

[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)})

Cchm contour(z,n)v contour(z,v)chophptachrslngmc


contourhaymtmccontourcnvnovizlmatrnsliu,nls
ng contour v v l vec t cc mc contour. MATLAB khng phn bit
gia vec t mt phn t hay i lng v hng. Nh vy nu v l vec t
mtphntmtmtcontournmtmchm contour scoinls
lngngcontourchkhngphilmccontour.Nghal, contour(z,v)
cngnhcontour(z,n).hinthmtngngmctacnchovlmt
24

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)

a. Hm compass: Ta xt v d v hng v tc gi. Cc vec t xc


nhhng(gctnhbng)vtcgi(km/h)l:

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

d. Hm quiver3: Hm quiver3 hin th cc vec t c cc thnh phn


(u,v,w)tiim(x,y,z).Vdtabiudinquocamtvtcnmi
theot.Phngtrnhcachuynngl:
at 2
z( t) = v 0 t +

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.

Khung th 2 c gc tri pha di ti im c to ng vi 10%


chiungangv60%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);

Chui k t Fahrenhaeit c t vo ng v tr dn tri ca c


Positionghitrongonchngtrnhtrn.onlnhsaudngEdit vit
chuikt68.0vovtrbncnhcaFahrenheit.Chuiktcvtr
dnphitrong(PositionBox).

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. T ng cp nht gi tr ln GUI: hon thin v d GUI ta thc


hinchngtrnhvinhimvtnhquyitKsangCvtng
in kt qu vo cc bn cnh chui Celcius. on m sau phc v mc
chcallback(hontrgitr)cluvofile ct1_38.mvcnidungnh
sau:
f=get(edit_f,String);
f=str2num(f);
c=(f32)*5/9;
31

c=num2str(c);
set(text_c2,String,c);

onmtrnnhngitrdolnhuicontroleditcvodidngchui
(string)vsau:
binitdngstringsangdngs
tnhquyitnhitfahrenheitsangnhitcelcius
binitssangstring
xutktqudidngstringraGUInhtext_c2

3.Nhpsliutthanhtrt:Ngoicchnhpsliutbnphm,tacth
nhpsliutthanhtrt.Tamuntoramtgiaodinnhsau:

Trong giao din ny, con trt s lm thay i gi tr nhit ua vo v


nhitquyitnhtheoCcngsthayitngng.Cclnhtora
giaodinny(ct1_37.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.,,,
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);

th gi tr ca bin choice c a ti Value. Sau Callback gi tip


ct1_45.mxemktqugitrongchoice.Filect1_45.mnhsau:

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

Bng cch thay Popupmenu bng Radiobutton uicontrol ta c


phngnRadiobutton.Giaodinscdng:

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

Ta dng hai Frame vi cc Tag l frmmot v frame2. Cc thuc tnh


khcchpnhngitrmcnh.
Edit Text th nht c cc thuc tnh FontName: Arial, FontSize: demi,
FntWeight:demi,String:Fahrenheit,Tag:editmotcnccthuctnhkhcl
mcnh.
Edit Text th hai c cc thuc tnh FontName: Arial, FontSize: demi,
FntWeight: demi, String: trng, Tag: edithai cn cc thuc tnh khc l
mcnh.
Edit Text th ba c cc thuc tnh FontName: Arial, FontSize: demi,
FntWeight:demi,String:Celcius,Tag:editbacnccthuctnhkhclmc
nh.
Edit Text th t c cc thuc tnh FontName: Arial, FontSize: demi,
FntWeight: demi, String: trng, Tag: editbon cn cc thuc tnh khc l
mcnh.
Sau khi thit k xong, lu n vi tn ct3_18.fig. MATLAB to thm
ct1_53.m.Bygitacnvitmchon.Nhimvcaonmlkhitanhp
nhit Fahrenheit vo Edit text th hai th trong Edit Text th 4 phi
xuthingitrnhitCelciustngng.Dovynidungcact1_53.ml:

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

Edit Text th nht c thuc tnh FontSize: 12, FntWeight: bold v


String:Fahrenheit.

EditTextthhaicthuctnhFontSize:12,FntWeight:boldvString
trng.
EditTextth3cthuctnhFontSize:12,FntWeight:boldvString
trng.
Popupmenu c thuc tnh FontSize: 12, FontWeight: bold. ghi vo
thuctnhStringtabmpchutvoiconcanvvit3dng:Kelvine,
CelciusvRankine.

File c lu vi tn ct1_55.fig. Vn cn li l vit m trong file


ct1_55.m.McnthchinnhngitrtSlider,xemPopupmenunoc
chnhinthnhittngng.Filect1_55.mnhsau:

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:

Ta dng ba Radiobutton thay cho Listbox. Radiobutton th nht c


thuc tnh FontSize: 12, FntWeight: bold v String: Rankine. Radiobutton
th 2 c thuc tnh FontSize: 12, FntWeight: bold v String: Celcius.
Radibutton th 3 c thuc tnh FontSize: 12, FntWeight: bold v String:
Kelvine. Cc phn t khc v thuc tnh ca chng vn nh c. Layout c
thuctnhName:ct1_57.LuGUIvitnct1_57.fig.

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

C ng nh ph ng n dng Radiobutton, ta dng ba Checkbox.


Checkbox th nh t c thu c tnh FontSize: 12, F ntWeight: bold v String:
Rankine.
Checkbox th hai c thu c tnh FontSize: 12, F ntWeight: bold v String: Celcius.
Checkbox th ba c thu c tnh FontSize: 12, F ntWeight: bold v String: Kelvine.
Cc ph n t khc khng co g thay
i. Ta l u file v i tn ct1_58.fig. Ti p theo
ta vi t m l nh cho ct1_58.m:
function varargout = ct1_58(varargin)
if nargin = = 0
fig = openfig(mfilename,'reuse');
set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));
handles = guihandles(fig);
guidata(fig, handles);
51

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

Ta dng m t Axes, b n Pushbutton


t o nn giao di n n y. Khi nh n Plot,
th c a h m y = tsin(t)
c v . Khi nh n Grid on,
th
c chia l
i. Khi
nh n Grod off, l i b xo. Nh n Close
ng
th .
Layout c thu c tnh Name: ct1_59, HandleVisibility: callback.

Cc Pushbutton u c thuc tnh FontSize: 12, FntWeight: bold v cc


Stringlcctnlnh.GUIcluvitnfilelct1_59.fig.Tiptheotason
tholnhchoct1_59.m:

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);

) GUI c dng ho: Ta xy dng mt GUI dng menu. Giao din


caGUInhsau:

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.

( Ma trn Hermite l mt ma trn vung c cc phn t l s phc


bngchuynvlinhpcan,nghalphnthngictjbngsphc
T

lin hp ca phn t hng j ct i A = A . V d ma trn


2 + j
3
[A] =
lmatrnHermite.
2
j
1

(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:

[ x]T[ A][ x] > 0

(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

= k 2 + 2kx1 + k 2 = 2(k 2 + kx1 )


Nhvy:

[ 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

[ U ] ([ U ]T [ A]) [ U ]([ U]T [ 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

tnh ma trn ba ng cho theo php bin i Householder ta dng


chngtrnhcthousetrans.m:

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

r11l 31 r12 l 31 + r22 l 32 r13l 31 + r23l 32 + r33

BygitathchinphpkhGaussiviphngtrnhtrn.utinta
chnhngthnhtlmtrvthchinphpbini:

hng2l21hng1(kha21)hng2

hng3l31hng1(kha31)hng3
ktqutac:
r13
r11 r12

[ A1 ] = 0 r22 r23

0 r22 l 32 r23l 32 + r33


Sautalyhngthhailmtrvthchinbini:

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

[ A ] = l 21 l 21r12 + l 22 l 21r13 + l 22r23

l 31 l 31r12 + l 32 l 31r13 + l 32r23 + l 33


Nhvy:
a11=1.r11+0.0+0.0=r11;
a12=r12;a13=r13

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

rij = a ij l ik rkj (j=itin)


k =1
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]:

[ Q] [Q] = ([H1 ] [Hn2 ][Hn1 ]) [H1 ] [Hn2 ][Hn1 ]

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

phn tch mt ma trn ta dng chng trnh chng trnh


ctqrgamschmidt.m:

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.

Trc ht ta kho st mt gi tr ring i c GM(i) < AM(i). Nu


GM(i)=pi,AM(i)=mithtacntmmipivectclptuyntnhkt
hpvigitrringny.Ccvectnyctotccvectringvc
gilvectringtngquthoca[A].Gilgitrringv[x]lvect
ringtngng.k1vectringtngqutho{[x1],...,[xk]}ctoranh
sau:

[ A ][ x 1 ] = [ x 1 ]

[ A ][ x 2 ] = [ x 2 ] + [ x 1 ]

[ A ][ x k ] = [ x k ] + [ x k1 ]

{[x1],..., [xk]} to thnh chui cc vec t c vec t [x1] ng u. Chui ny


tngngvikhiJordann.

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

Cho ma trn vung [A] cp n. Cc phn t ca hng th i l ai,1,


ai,2,,ai,n.Ccphntcactthjla1,j,a2,j ,,an,j.Taxemhngthilmt
vec t, k hiu l Ai* v ct th j cng l mt vec t, k hiu l A*j. Vi mi
phpth:
i1 i 2 L i n
p=

(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;

tnh gi tr ring c tr tuyt i b nht ta dng chng trnh


ctinveigpower.m:

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;

tnh gi tr ring ca ma trn gn vi s ta dng chng trnh


ctshiftpower.m:

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

Ccathc P0 ( ), P1 ( ),...,Pn ( ) tonndySturmccctnhchtsau:

Slnidutrongdy P0 (a), P1 (a),...,Pn (a) bngsnghimca Pn ( )

nhhn

Numtphnt Pi (a) cadylzero,ducanngcviduca


Pi1 (a) .
Taxydnghmsturmseq()toradySturm:

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

Tip theo ta xy dng hm countevals() m s ln i du ca dy


Sturm:

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

tm gi tr ring ca mt ma trn i xng bng cch bin i


Householdertadngchngtrnhcthouseholdereig.m:

clearall,clc
globalcd
a=[1234;2765;3690;4503];
[eval,evec]=symmateig(a)
n=size(a,1);

28.TMGITRRINGBNGPHNGPHPQUT

tm cc gi tr ring khc ca ma trn ta dng phng php qut.


Chophngtrnhthunnhtdidngmatrn:

[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)

Nhvyvect [ Y0 ] khngtrngphngvi [ X 1 ] vnutadngphplp


cngsutvivectbanu [ Y0 ] nshittigitrringlnth2.

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);

tnh gi tr ring v vec t ring ca ma trn ta dng chng trnh


ctsweeping.m:

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)

Nhn trc v sau ma trn [A] vi R pq v R pq to nn bin i ng


dng:
T

A(1) = R pq A R pq

(4)
Chlphpbiningdngkhnglmthayigitrringnnbtk
matrnnocctcclnlp:

A(k+1) = R (k) A(k) R (k)


T

(5)

= R (k) R (k1) L R A R L R (k1) R (k)


ccnggitrring.Hnna,nunlmatrnngcho,ccgitrring
s nm trn ng cho chnh v ma trn c nhn vo bn phi ca ma
trn[A]lmatrn[V]:

(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

v pp = a ppc 2 + a qq s 2 + 2a pq sc = a ppc 2 + a qq s 2 + a pq sin 2

v qq = a pps 2 + a qq c 2 2a pq sc = a pps 2 + a qq c 2 a pq sin 2

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:

[ L]1 [ A ] ([ L]1 ) [ Z ] = [ L ]1 [ L ][ L]T ([ L ]1 ) [ Z ]


T

Do [ L] [ L ] = [ L] ([ L] )T = [ E] nn:

(12)

[ H][ Z ] = [ Z ]
ldngchuncabitontmgitrringvvectringvi:

(13)

[ H] = [ L]1 [ A ]([ L]1 )T


Tmligiibiton(10)tatheoccbcsau:

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);

tm gi tr ring ca mt ma trn i xng bng cch bin i


Householdertadngchngtrnhcthouseholder.m:

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

([ A ]) v(0) = v(n) + i v(i) = 0


i =0

(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

v j+1 = v j+1 V V v j+1


j = v j+1
v j+1 = v j+1 j
[ V ] = V,v j+1

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

CHNG 3: H PHNG TRNH I S TUYN TNH

1.KHINIMCHUNG

Trong chng ny chng ta s xt cc phng php s gii cc


phngtrnhistuyntnhdng:
a11x1 + a12 x 2 + + a1n x n = b1
a x + a x + + a x = b
21 1
22 2
2n n
2

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:

J = 0.5 e = 0.5 [ A ][ x ] [ b ] = 0.5 [ A ][ x ] [ b] [ A ][ x ] [ b ] (9)


TatmcctiucaJbngcchchoohmtheoxca(9)bngkhng.
1

T
J = [ A ] [ A ][ x ] [ b ] = 0
(10)

[ x ]0 = [ A ]T [ A ] [ A ]T [ b]
x

136

Ch l ma trn [A] c s hng ln hn s ct cho nn khng nghch o


c.Nghimsaisbnhphngbnhttmcnhdnglnh pinvhay
phpchiatri(ctover.m):

A=[1;2];
b=[2.1;3.9];
x=pinv(A)*b
x=A\b
x=(A*A)^1*A*b

tin dng ta vit hm pttt() gii h phng trnh trong c 3


trnghptrn

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

Ta vit hm band3sol() dng gii h phng trnh c ma trn [A] dng


ngcho:

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.

Cc phng php lp c chia thnh hai loi: phng php lp tnh


vphngphplpng.
151


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

vi sai s trong s liu. N cho bit chnh xc ca kt qu t php


nghchomatrnvnghimcahphngtrnhistuyntnh).
PhngphpsdcctiuMINRES(MinimumResidual)vphng
phpLQixngSYMMLQ(SymmetricLQ)
PhngphpgradientlinhpdngchohthngCGNE(Conjugate
Gradient on Normal Equations) v CGNR(Conjugate Gradient on
NormalEquationsminimizingtheResidual):Ccphngphpnyda
trnvicpdngphngphpCGvomttronghaidnghphng
trnhistuyntnh.

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

x (nk +1) = n + ij x (j k +1) + nn x (nk )


j=1

Thng thng phng php Gauss Seidel hi t nhanh hn phng


php Jacobi nhng tnh ton phc tp hn. D d hiu phng php ny
chngtaxtmtvdcth:

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.3 0.2 x 1 0.1x 3


x = 1.4 0.2 x 0.2 x
1
2
3
Lyx1(o)=1.2;x2(o)=0;x3(o)=0
SdngphngphplpGaussSeideltac:
x(1)
1 = 1.2 0.1 0 0.1 0 = 1.2
(1)

x 2 = 1.3 0.2 1.2 0.1 0 = 1.06


(1)
x 3 = 1.4 0.2 1.2 0.2 1.06 = 0.948

x(2)
1 = 1.2 0.1 1.06 0.1 0.948 = 0.9992
(2)

x 2 = 1.3 0.2 0.9992 0.1 0.948 = 1.00536


(2)
x 3 = 1.4 0.2 0.9992 0.2 1.00536 = 0.999098

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

Nh vy php lp Jacobi cng nh php lp Gauss Seidel l trng hp


ring ca php lp Richardson vi = 1, P = D hay P = D + L. Ngi ta
chngminhlphplpRichardsonhitkhi:
2Re( i )

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.

Ta kho st ma trn [A] bc n. Ta chia [A] thnh 3 phn: phn ng


chochnh[D],phnbndingchochnh[L]vphnbntrnng
chochnh[U].

a11 a12 L a1n a11 0 L 0


a
a 22 L a 2n 0 a 22 L 0
21
=

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

Khi cho gi tr ca tham s , thng chn trong khong 0 < < 2,


nghimcahphngtrnhtuyntnh,khichogitrbanu[X0]ctnh
bngcngthclp:

[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

Khi ma trn h s [A] khng i xng ta khng dng c phng


phpCG.Vvytacnbinihphngtrnhdngcphngphp
CG.Xthphngtrnh:

[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

tachn R% saocho R 0 R% 0 .ngiintachn R% = [ R 0 ]

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

Phng php gn nh cc tiu ho s d (quasi minimal residual


QMR)cFreudvNachtigalara.Thuttoncthcaphngphp
gmccbc:

Chox0,tnhR0=BAx0

v% (1) = R 0 ,giih M1y = v% 1


187

% (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

* d(1) = 1p(1) , s(1) = 1p%


khngth

* d(i) = i p(i) + (i1 i )2 d(i1)

* s(i) = i p% + (i1 i )2 s(i1)


188

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

w(i) = w(i) ( w(i) v(k) ) v(k)

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

v(i+1) = w/h i+1,i


dngbiniJ1,,Ji1cho(h1,,hi+1,i)
cpnhtx,m
end
Taxydnghmgmres()thchinthuttontrn:
functionx=gmres(a,b,x,restart,maxiter,tol)
%GiaihephuongtrinhbangthuattoanGMINRES
n=size(a,1);
M=ones(n,1);
M=diag(M);
M=1.2*M;
r=M\(ba*x);
error=norm(r);
if(error<tol)
return
end
192

[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

Full Orthogonalisation Method (FOM) l phng php trc giao ho


matrnhs[A].Taxthphngtrnh[A][X]=[B]vimatrn[A]khng
suybin.tai,n+1=bivaj=(ai1,..,ain,ai,n+1)tasinh:
n

a
j=1

i ,j

x j + a i ,n +1 = 0

(1)

H(n+1)vectgm {a i }i=1 van+1clptuyntnh.Tapdngqutrnh


n

trcgiaohochody {a i }i=1 bngcchtu1=a1,v1=u1/ u1 .Nichung


n +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)

Gi s vec t un+1 c cc thnh phn (z1, z2,, zn+1). Nu zn+1 = 0 th t iu


kinun+1trcgiaoviaitac:
n

a
j=1

Do

i ,j

zj = 0
n +1

u n +1 = z = z i2 > 0
2

2
i

i =1

i =1

Nn phng trnh a i ,jz j = 0 c nghim khng tm thng. iu ny mu


j=1

thunviiukindet(A) 0.Nhvyzn+1 0.Tiukinun+1trcgiao


viaitac:
n

(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

xu. Trc ht ta cn ch l bi ton bnh phng b nht [A][X] = [B]


tngngvihphngtrnhtuyntnhdng:
[ E ] [ A ] [ R ] [ B]

(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

v = A T u i+1 i+1v i , i+1 = v 2 , v i+1 = v i+1


i = % i2 + i2+1
c i = % i i
si = i+1 i
i+1 = si i+1
% i+1 = c i i+1
i = c i% i
% i+1 = si % i
xi = xi1 + (i i )w i
w i+1 = v i+1 (i+1 i )w i
Taxydnghmlsqr()thchinthuttontrn:

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

[Qk ] T[Qk ] = [E]

200

vi [ L k ] l ma trn tam gic v [ Q k ] l ma trn trc giao. Thut ton


SYMMLQgmccbcsau:

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

Tnh hi t ca phng php lp ph thuc vo tnh cht ca ph


ngha l ca cc gi tr ring ca ma trn [A]. ci thin tnh cht ny
ngitathngbinihphngtrnhtuyntnhbngmtphpbini
tuyntnhthchhp.Qutrnhnycgilthtrc(preconditioner).V
dnumatrn[M]xpxmatrnhs[A]theomtcchno,hc
bini

[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

Tip theo ta xy dng hm qrgivens() thc hin vic tm nghim ca h


phngtrnhbngthuttonphntchQRnhphpquayGivens:

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

Ta thy Pn(x) l mt a thc bc n v cc Li(x) l cc a thc bc n v


thomniukinPn(xi)=f(xi)=yi.TaginlathcnisuyLagrange.
Vin=1tacbng

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

fi ,i+1 (xi+1 ) = di h i + c i h i + bi h i + a i = y i+1

(4)

fi,i+1 (xi ) = bi

(5)

fi,i+1 (xi+1 ) = 3di h i2 + 2c i h i + bi

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:

fi,i+1 (x i ) = k i L i (x) + k i+1L i+1 (x)


Trong:
218

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

Khi ni suy bng a thc Newton hay Lagrange, ngha l thay hm


thcbngathcxpx,ckhongcchcchuthsaisgiaathcni
suyvhmthccxuhngtngtihaimtnisuy.Tathyriuny
khichychngtrnhcttestintp.m.
Dovytannchnccimmcnisuy
hai mt dy hn gia. Mt trong nhng cch
chn phn b cc im mc l hnh chiu ln
trc x ca cc im cch u trn ng trn
1
tmtiimgiacaonnisuy.Nhvyvi 1 x1
onnisuy[1,1]tac:
2n + 1 2k

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))

= xT n(x) + 0.5 cos((n + 1)arccos(x) cos((n 1)arccos(x)

= xT n(x) + 0.5T n +1(x) 0.5T n 1(x)


nn:

Tn +1(x) = 2xT n(x) T n 1(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

tm a thc Chebyshev dng xp x hm f(x) =

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

f(x) Tm + n (x) = f(x0 ) + f (x0 )(x x0 )


f(x0 )
f (m + n) (x0 )
2
+
(x x0 ) + L +
(x x0 )m + n
2!
(m + n)!

(2)

= a 0 + a1(x x0 ) + a 2(x x0 )2 + L + a m + n(x x0 )m + n


ngintacoix0=0.TacntnhcchscaDn(x)vQm(x)saocho:
Q (x)

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:

X(k) = x[n]e j2nk/N

(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.

DFT v DFS c cng bn cht nhng khc nhau v phm vi thi


gian/tns.Cthltnhiux[n]vDFTX[k]cankodihuhntrn
phmvithigian/tns{0nN1}v{0kN1}.Tnhiux[n]c

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.

Ta xem xt hiu qa ny bng cch thc hin on lnh trong


ctcompdftfft.m.

%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),.)

Ta c nhiu ph DFT cho cng mt tn hiu tng t, tu thuc vo


kchthcDFT,chuklymu,khonglymuvmzero.Sosnhph
khigimchuklymuTt0.1sn0.05s
231

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

= X(0) + 2 Real X(k)e j2 kt / NT + X(N / 2)cos(/T)


N
k =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);

xp x mt dy s liu bng hm a thc ta dng chng trnh


ctpolynomfit.m:

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

f( x) = a 0 + a i cos( ix) + bi sin(ix)

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

Theo iu kin o hm trit tiu ta c h phng trnh i vi cc h s


dng:

a 0 y i

n
cosxi
sinx i

cos2xi cos xisinxi a1 = yicosxi


cosxi
sinxi cos xi sinxi
sin 2xi b1 yisinxi

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);

6.Hmhut:Khiquanhy=f(x)c dngng congbohohaydng


arctan,tanv.vtadnghmxpxlhmhutdngngin:
ax
y=

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

CHNG 5: CC PHNG TRNH PHI TUYN


1.KHINIMCHUNG
Nuphngtrnhishaysiuvitkhphctpthtkhitmc
nghim ng. Bi vy vic tm nghim gn ng v c lng sai s l rt
cnthit.

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.

Bc gii s b c 3 nhim v: vy nghim, tch nghim v thu hp


khongchanghim.

Vy nghim l tm xem cc nghim ca phng trnhc th nm trn


nhngonnocatrcx.Tchnghimltmcckhongchanghimsao
cho trong mi khong ch c ng mt nghim. Thu hp khong cha
nghimllmchokhongchanghimcngnhcngtt.Saubcsbta
ckhongchanghimnh.xcnhkhongchanghimtacth
dngphngphpth.Ngoiratacngcthtmnghimbngphng
phptmtngdn.tngcaphngphpnylnyf1(x).f2(x)<0thct
nhtmtnghimcaphngtrnhtrongon[x1,x2].Nuon[x1,x2]
nh th trong on s c mt nghim duy nht. Nh vy ta c th pht
hinranghimbngcchtnhtrcahmtrncconxvxemchngc
idukhng.
Taxydnghmrootsearch()tmkhongchanghim.

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

Khi pht hin thy khong cha nghim, hm tr v gi tr bin ca on.


Nukhngcnghim,x1=x2=NaN.Tagirootsearch()nhiulnpht
hinhtcconchanghim.Vivdtmkhongchanghimcahm
f(x)=x310x2+5tadngchngtrnhctrootsearch.m

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

2. Nu f((a + b)/2) 0 th chn


a
b1
[a,(a+b)/2] hay [(a + b)/2, b] m gi tr hm
haiutriduvkhiul[a1,b1].ivi
[a1,b1]talitinhnhnh[a,b].
Taxydnghmbisection()thchinthuttontrn

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

tnh li nghim ca hm cho trong v d trn ta dng chng trnh


ctnewraph.m

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

tnh nghim ca hm f(x) = x3 10x2 + 5 ta dng chng trnh


ctsecant.m

clearall,clc
f=inline(x.^310*x.^2+5);
[x,ss,xx]=secant(f,0.5,1,1e4,50)

7.PHNGPHPBRENT

Phng php Brent kt hp phng php chia i cung v phng


php ni suy bc hai to ra mt phng php tm nghim ca phng
trnhf(x)=0rthiuqu.Phngphpnydngkhiohmcaf(x)kh
tnh hay khng th tnh c. Gi s ta cn tm nghim trong on [x1, x2].
Qutrnhtmnghimbtubngvicchiaion[x1,x2]bngimx3.

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)

(f1 f2 )(f2 f3 )(f3 f1 )


thayicanghiml:
x (f f )(f f + f ) + f2 x1 (f2 f3 ) + f1x 2 (f3 f1 )
x = x x 3 = f3 3 1 2 2 3 1

(2)

(f1 f2 )(f2 f3 )(f3 f1 )


Taxydnghmbrent()thchinthuttontrn

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;

tm nghim ca phng trnh x|cos(x)| 1 = 0 ta dng chng trnh


ctbrent.m

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.

Khi phng php lp c kt hp vi phng php Aitken ta c


phngphpSteffensen.Btulptx0,haibclpcdngtnh:

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

Khi tm nghim ca phng trnh i s tuyn tnh hay phng trnh


siuvitf(x)=0tacthdngmthmc4thngsxpxhmf(x)

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:

f(pk )(pk pk1 ) = f(pk ) f(pk1 )


Mrngchohphngtrnhtacthvit:

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]

(1 + [ V]T [ A]1 [ U])[ A]1


1

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

.................................

Bcn1 k=n1 P=P(xo)=(...((aox+a1)x+a2x)+...+an1)x

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!

(x x0 )Pn 1 (x0 ) + Pn (x0 ) = Pn (x 0 ) +

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

Pn1(x)bo b1b2b3... bn1 bn=Pn(xo)


Taxydnghmgenhorner()thchinthuttontrn

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)

G(x) (n 1) nH(x) G 2 (x)


NhvythuttontmimzerocaathctngquttheoLaguerrel:

chogitrbanucanghimcaathclx

tnhPn(x), Pn (x) v Pn(x)

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

tm nghim ca mt a thc theo thut ton Laguerre ta dng chng


trnhctpolyroots.m

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
=

Phng trnh ny c th gii d dng nh phng php Newton. Tht vy


vimtphngtrnhphituyntaccngthclp:
xi+1=xif(xi)/f(xi)
hay f(xi)(xi+1xi)=f(xi)
Vimthchaiphngtrnh,cngthclptrthnh:
J(Xi)(Xi+1Xi)=F(Xi)
vi Xi={ri,si}Tv Xi+1={ri+1,si+1}T
f(ri ,si )
F(X i ) =


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

Phng php ny c Karl Heinrich Grffe, Germinal Pierre


DandelinvNikolaiIvanovichLobachevskyara.Ncmtnhcim
lccktqutrunggianctrsrtln.
Xtphngtrnh:

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

Phng trnh ny c th gii d dng nh phng php Newton. Tht vy


vimtphngtrnhphituyntaccngthclp:
xi+1=xif(xi)/f(xi)
hay f(xi)(xi+1xi)=f(xi)
Vimthchaiphngtrnh,cngthclptrthnh:
J(Xi)(Xi+1Xi)=F(Xi)
vi Xi={ri,si}Tv Xi+1={ri+1,si+1}T
f(ri ,si )
F(X i ) =


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

dng c cng thc ny ta cn tnh c cc o hm

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

Phng php ny c Karl Heinrich Grffe, Germinal Pierre


DandelinvNikolaiIvanovichLobachevskyara.Ncmtnhcim
lccktqutrunggianctrsrtln.
Xtphngtrnh:

(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

( 1)n P(x)P( x) = a 02 (x 2 x12 )(x 2 x 22 ) (x 2 x n2 )


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
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

CHNG 6: O HM V TCH PHN S


1.TNHOHMBCNHTBNGPHNGPHPROMBERG
o hm theo phng php Romberg l mt phng php ngoi suy
xcnhohmvimtchnhxccao.TaxtkhaitrinTaylorca
hmf(x)ti(x+h)v(xh):
h2
h3
h4
f( x + h) = f( x) + hf ( x) + f ( x) + f ( x) + f ( 4 ) ( x) +
(1)
2
3!
4!
h2
h3
h4 (4)

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)

f(x h) = f(x) hf (x) +


f (x)
f (x) +
f (x)
(2)
2
3!
4!
T(1)v(2)tac:
f(x + h) 2f(x) + f(x h)
D(2)
c2 (x, h) =
h2

(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!

(c 2 + c1 + c 0 + c 1 + c 2)f0 + h(2c 2 + c1 + c 1 2c 2 )f0


1

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

trong f(x) l hm lin tc trong khong


[a,b]vcthbiudinbingcongy=
f(x). Nh vy tch phn xc nh J l din
tchSABba,giihnbingcongf(x),trc
honh,ccngthngx=avx=b.Tch
phn ny thng c tnh gn ng bng
cngthc:

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

Pn 1 (x) = f(xi )Li (x)


i =1

Nhvy,xpxtchphn(1)l:
b

J= f(x)dx = Pn1 (x)dx =


a

x1

i =1

i =1

xn

x2 x3

f(x ) L (x)dx = A f(x )


b

(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

a f(x)dx = 3 y0 + 4 ( y1 + y3 + + y2n1 ) + 2 ( y2 + y4 + + y2n2 ) + y 2n (13)


=

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

TrongJilgitrxpxca f(x)dx ccbngcchtnhtheoquytc


a

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

R 3,1 R 3,2 R 3,3

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

= h (th) [ f2n sin(tx 2n )f2n sin(tx 2n )] + (th)C 2n + (th)C 2n 1 +

2 4
th S2n
45

Trong:

a=x0,b=xn,t=
n

C 2n = f2i cos(tx 2i ) 0.5 f2n cos(tx 2n ) + f0cos(tx0 )


i =0

326

C 2n 1 = f2i1cos(tx 2i1 )
i =0
n

S2n 1 = f2i1 sin(tx 2i1 )


i =1

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

tnhtchphn J = f(x)dx tacthdngcngthcHardy:


a

x7

f(x)dx = 0.01h ( 28f

+ 162f2 + 220f4 + 162f6 + 28f7 )

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

tnhtchphn J = f(x)dx tacthdngcngthcDurant:


a

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

tnhtchphn J = f(x)dx tacthdngcngthcShovelton:


a

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

tnhtchphn J = f(x)dx tacthdngcngthcWeddle:


a

x7

f(x)dx = 0.3h ( f

+ 5f2 + f3 + 6f4 + f5 + 5f6 + f7 )

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

w1f(t1 ) + w 2 f(t 2 ) = w1 + w 1dt = 2

f(t)=1

(3a)

w1f(t1 ) + w 2 f(t 2 ) = w1t1 + w 2 t 2 tdt = 0

(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

w1f(t1 ) + w 2 f(t 2 ) = w t + w t t 3dt = 0


3
1 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

Khi tnh tch phn trn on [a, b] ta phi bin i n v on [1, 1]


bngccht:
(b a)t + a + b
ba
x=

dx =
dt

(9)

2
2

336

Nh vy ta c th vit li cng thc tch phn Gauss Legendre trn


on[a,b]l:
b
+1
ba
f[x(t)]dt
J = f(x)dx =

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

Th tc tm n nt v cc trng s tng ng ca cng thc tch phn


GaussHermitecthchintronghmgausshermite():

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:

(n + 1)L n +1 (t) = (2n + 1 t)L n (t) nL n 1 (t)

(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

0.538657 0.756916 0.922669


0.142009 0.0554546 0.010169

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

Trong tch phn ny cc im cn trn v di u l nt ca cu


phng.CngthccuphngGaussLobattocdng:

n 1

i=2

f(x)dx = w1f(1) + w 2f(1) + wif(xi )

Ngoi hai im nt x = 1 v x = 1, cc im nt khc c trng s c xc


nhbng:
2
wi =

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)

tnh tch phn ca hm ta dng chng trnh chng trnh


ctintgausslobatto.m:

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

P1( , ) (x) = 0.5 [ 2( + 1) + ( + + 2)(x 1)]

(b 2n + b 3n x)Pn( 1, ) (x) b 4n Pn( 2, ) (x)


P (x) =

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

J = f(x)dx = w1f( 1) + w i f(xi )

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;

Tip theo ta xy dng hm intradau(), tnh tch phn. Trong hm ta i


cnlytchphntrongkhong[1,1]thnhtchphntrongkhong:

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

f(x)dx = w1f(1) + w 2f(1) + wif(xi )

Ngoi hai im nt x = 1, cc im nt khc l nghim ca a thc Pn(x) +


Pn+1(x),viP(x)lathcLegendre.Cctrngscxcnhbng:
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

x(free) = xold(free) ((1xold(free))/N1).*(P(free,


N1+1))..../(P(free,N1)P(free,N1+1));
endP=P(1:N1,1:N1);
w=zeros(N1,1);
w(1)=2/N1^2;
w(free)=(1x(free))./(N1*P(free,N1)).^2;

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

Khi hm c cho di dng bng s, tnh tnh phn ca hm ta


thchinccbcsau:

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

CHNG 7: CC PHNG TRNH VI PHN THNG


1.BITONCAUCHY

Mt phng trnh vi phn cp 1 c th vit di dng gii c


y = f(x,y) m ta c th tm c hm y t o hm ca n. Tn ti v s
nghimthomnphngtrnhtrn.Minghimphthucvomthngs
tu.Khichotrcgitrbanucaylyotigitruxotanhnc
mt nghim ring ca phng trnh. Bi ton Cauchy (hay bi ton c iu
kin u) tm li nh sau: cho x sao cho b x a, tm y(x) tho mn iu
kin:
y ( x) = f( x , y)

(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),....

Mt phng trnh vi phn bc n c th a v thnh mt h phng


trnhviphncp1.Vdnutacphngtrnhviphncp2:
y = f( x , y , y)

y(a ) = , y(a ) =
Khitu=yvv=ytanhnchphngtrnhviphncp1:
u = v

v
=
g
(
x
,
u
,
v
)

viiukinu:u(a)=vv(a)=

Cc phng php gii phng trnh vi phn c trnh by trong


chngnylccphngphprirc:on[a,b]cchiathnhnon
nhbngnhaucgilccbctchphnh=(ba)/n.
2.PHNGPHPEULER
Gistacphngtrnhviphn:
y ( x) = f( x , y)

(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

Phng php Heun cn c gi l phng php hnh thang hay


phngphp.Chophngtrnh:

y=f(t,y)
Tac:
t k +1

yt

= y(t k+1 ) y(t k ) =

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

y k+1 = y k + f(t k ,y k ) f(t k +1 , y k+1 )

2
Vphi(RHS)caphngtrnhnycyk+1lgitrchabittithiimtk.
giiquytvnnytathayyk+1RHSbngcngthcxpx:

y k+1 y k + hf(t k ,y k )
Nhvy:
h

y k +1 = y k + f(t k ,y k ) + f [(t k +1 , y k + hf(t k ,y k )]


2
ychnhlcngthcHeun.
Taxydnghmheun()thchinthuttontrn:

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
.......

vtacnxcnhcchsa,b,..; ,,,...; r1,r2,..saochovphica(13)


khcvivphica(12)mtvcngbcpcaonhtcthcivih.
KhidngcngthcRungeKuttabchaitac:
k (1i ) = hf( x i , y i )

(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

k (1i ) = hf( x i , y i ) = hyi


k (2i ) = h[f( x i , y i ) + ahfx ( x i , y i ) + k (1i ) fy ( x i , y i ) + ]

Dovphica(16)l:

h(r1 + r2 )f( x i , y i ) + h 2 [ar2 fx ( x i , y i ) + r2 yi fy ( x i , y i )] +

(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.

Phng php Runge Kutta thch nghi cn gi l phng php tch


phnkthp.Cccngthcnyithnhcp:mtcngthctchphnbcm
vmtcngthctchphnbcm+1.tngldnghaicngthcnyci
thinnghimtrongon[x,x+h].Giktqulym(x+h)vym+1(x+h)tacsai
sivicngthcbcml:

(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 5 (x + h) = y(x) + CiK i (cngthcbc5)

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) + 2hf [ x,y(x)]

y l cng thc bc 2, ging nh cng thc


Euler. Ta xem xt phng php ny v y l c
s ca phng php Burlisch Str dng tm
nghim c chnh xc cao. Hnh bn minh ho
cng thc im gia i vi phng trnh n
dng y = f(x,y) .Sthayiytrnhaiphac
xcnhbng:

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:

y(xo + H) = 0.5 [ y n + (y n 1 + hfn )]

(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

3. Thut ton Burlisch Str: Phng php im gia c nhc im l


nghim nm ti im gia ca khong tm nghim khng c tinh chnh
bngphngphpngoisuyRichardson.Khuytimnyckhcphc
trongphngphpBurlischStr.tngcaphngphpnylpdng
phngphpimgiatrntngon.Taxydnghm burlischstoer()
thchinthuttonny:

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)

y(x + h) y(x) + y(x)h + y(x)h 2 + y(x)h 3 + L +


y (x)h m (1)
2!
3!
m!
Dophngtrnh(1)dontrcyti(x+h)tccthngtinctix,n
cnglcngthctchphn.Shngcuitrong(1)lbccatchphn.Nh
vy(1)ltchphnbcm.Saisl:
1

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:

{( t k3 ,fk3 ) , ( t k2 ,fk2 ) , ( t k1 ,fk1 ) , ( t k ,fk )}

vthaythathcnyvophngtrnhviphnccgitrdbo
yk+1:
h
h

9fk 3 + 37fk 2 59fk 1 + 55fk


pk +1 = y k + l 3 (t)dt = y k +
(1a)
24
0

Bcthhaillplicngvicvi4imccpnht:

{( t k 2 ,fk2 ) , ( t k 1 ,fk1 ) , ( t k ,fk ) , ( t k+1 ,fk+1 )}


vnhngitrhiuchnh:
fk+1 = f(t k+1 ,pk+1 )
h

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

y k = y k+1 hfk+1 + fk+1 fk+1 + L


2
3!
2
h
h3

y k+1 = y k + hfk+1 fk+1 + fk+1 + L

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

h 3 fk3 + 4fk2 5fk1 + 2fk 11 2 (4)


+ h fk + L

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)

2. Phng php Hamming: Thut ton Hamming cng nh thut ton


AdamsBashforthMoultonnhngcccngthcdbo/hiuchnhl:
4h
p k +1 = y k 3 +
2fk2 fk1 + 2fk
Don:

(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

y = f(x, y,y) y(a) = ,y(b) =

y l bi ton tm nghim ca phng trnh vi


phn khi bit iu kin bin v c gi l bi
ton gi tr bin hai im. Trong bi ton gi tr
u ta c th bt u tm nghim im c cc
gi tr u cho v tip tc cho cc thi im
sau. K thut ny khng p dng c cho bi
ton gi tr bin v khng c iu kin u
ccbincnghimduynht.Mtcchkhc
phc kh khn ny l cho cc gi tr cn thiu.
Nghim tm c d nhin s khng tho mn
iu kin cc bin. Tuy nhin ta c th cn c
vo thay i iu kin u trc khi tch
phn li. Phng php ny cng ging nh bn
bia. Trc ht ta bn ri xem c trng ch hay
khng, hiu chnh v bn li. Do vy phng
phpnygilphngphpbn.

Mtphngphpkhcgiibitongitrbinlphngphpsai
phn hu hn trong cc o hm c thay bng cc xp x bng sai phn
huhnticcntlicchu.Nhvytasnhnchphngtrnh
isiviccsaiphn.

C hai phng php ny c mt vn chung: chng lm tng s


phngtrnhphituynnuphngtrnhviphnlphituyn.Ccphng
trnhnycgiibngphngphplpnnrttnthigiantnhton.V
vyvicgiibitonbinphituynrtkh.Ngoira,iviphngphp
lp, vic chn gi tr u rt quan trng. N quyt nh tnh hi t ca
phngphplp.
2.Phngphpshooting:Taxtbitonbinlphngtrnhviphncp2
viiukinutix=avx=b.Taxtphngtrnh:

(1)
y = f(x, y,y) y(a) = ,y(b) =
Tatmcchabitonvdngbitongitru:

y = f(x, y,y) y(a) = ,y(a) = u

(2)

Cha kho thnh cng l tm ra gi tr ng u. ta c th thc hin vic ny


bngphngphpthvsai:chomtgitruvgiibitongitru
bngcchitanb.Nunghimgingviiukinbinmty(b)=
385

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

Phng trnh bny sec a n hphng trnh i vi xi, yi. Ta xy dng


hmbvp2fdf():

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

Ni dung ca phng trnh Picard l thay cho vic tm nghim ng ca


phngtrnh(2)tatmnghimgnngtheocngthc:
t1

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);

gii phng trnh ta dng chng trnh


ctpicard.m:
clearall,clc
symsxy
%f=1+y^2;%Phuongtrinhy=1+y^2
%y0=0;%dieukiendau
f=yx;
y0=2;
g=picard(f,y0,4)

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

Mt phng php bo m chnh xc ca nghim ca phng


trnhviphnlgibitonhailnvibctnhlhv0.5hrisosnhkt
quticcntngvih.Tuynhiniunyihitngslntnhvphi
tnhlikhigitrticcntkhcnhaunhiu.DngphngphpRunge
KuttaFehlbergcthtrnhckhkhnny.Ncthtcxcnh
liukchthcbctnhhthchhpcha.Timibctnh,haixpx
khc nhau ca nghim c tnh v so snh vi nhau. Nu chng sai khc
trongphmvisaischotrcthnghimcchpnhn.Nusaikhccn
lnhnsaischophpthbchcgimvtalitmnghimvihmi.
MibctnhtheophngphpRungeKuttaFehlbergihi6gitr:
k1 = hf(t i , y i )

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.

Cc bin c th b rng buc bng cc ng thc hay bt ng thc.


Phnlnccphngphpltmcctiukhngrngbuc,nghalkhngc
hnchnoivibinx.Ccbitonnybaogmtmcctiucahm,
tmimtnhimcgradienttrittiu.Ccbitontmcctiucrng
buckhhnvthuttonkhphctp.

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:

xp x hm i tng f(x) bng mt hm bc 2 p2(x) qua 3 im cho


trc

cp nht 3 im ny bng cch thay mt trong 3 im bng cc tiu


cahmp2(x)

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

f(x 2 ) f(x 0 ) 0 vcctiulx3.Quytccpnht3iml:

Trongtrnghp x0 < x 3 < x1 tadng (x0 , x 3 , x1 ) hay (x 3 , x1 , x 2 ) lm3

immitutheof(x3)<f(x1)haykhng

Trongtrnghp x1 < x 3 < x 2 tadng (x1 , x 3 , x 2 )hay (x0 , x1 , x 3 ) lm3


immitutheof(x3)f(x1)haykhng.
Qutrnhtmcctiucmttrnhnhsau:
374


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

tm cc tiu ca hm z = f(x,y) = x12 x1x 2 4x1 + x 22 x 2 ln cn [0 0] ta


dngchngtrnhctneldermead.m:

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

Phng php ny tm im cc tiu ca hm n bin theo hng


gradientm:
f(x) f(x)
f(x)
L

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)

Nuxk xk1vf(xk) f(xk1)thcoilcctiu,nukhngthquayv


bc2.

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.

By gi ta kho st s thay i gradient khi ta di chuyn t [x0] theo


hngcavect[u]dctheong:

[x]=[x0]+s[u]
vislkhongcchdichuyn.Thaybiuthcnyvo(2)tacgradientdc
theo[u]:

f [x0 ]+s[u] = [ b ] + [ A ] ([ x0 ] + s [ u ]) = f [x0 ] + s [ A ][ u ]


Nhvysthayigradientls[A][u].Nutadichuyntheohngvung
gcvivect[v],nghal

(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

Tt c cc phng php tm im cc tiu m ta xt n nay ch lm


vicchiuqukhiimbanuclcchngnviimcctiu.
im cc tiu tm c l mt trong nhiu im cc tiu c th c v ta
khngchcltmcimcctiutoncc.Vnllmsaolplith
tctmcttcccimcctiutccimukhcnhauvara
im cc tiu ton cc. y l mt bi ton kh v khng c mt phng
php no xc nh c cc im u thch hp tm c tt c cc
imcctiu.Mtslachnthvdatrnstngtgiasvcc
tiuho.lqutrnhgianhitkhikimloilnnnhitcaohnnhit
nngchyvsauhnhitttccnguyntbkchthchmnh
cthtrvtrngthinnglngthp,tothnhmttinhthduynhtc
cutrchnhchnht.Lmnguinhanhscthtoraskhngngnht
v lm bin dngcu trc tinh th ging nh khi tmcc tiu ton cc qu
nhanh.Phngphpmphngqutrnh(simulatedannealingSA)cth
thchinbngcchdngphnbxcsutBoltzmanncamcnnglngE
tinhitT,cmtbng:

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

bin i vec t [U] bng lut nghch o vi = 10


tora[x]vly[x1]=[x]+[x]
nu[f]=f([x1])f([x])<0

[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

X k (n,m) = biu din thp phn ca P1 n,1 + N bi : N bi

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

f1 (n) = Max n=1p {f(n)} f(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

Thut ton tm Fibonacci gm (n 2) ln tnh. on con th (k+1) c c


f
bng cch gim di ca on th k bng h s rk = n 1k . Sau (n 2) ln
fn k
tnh,dicabccuicngl:
fn 1 fn 2 fn 3 f3 f3
f
1

(bo a o ) = 2 (bo a o ) = (bo a o )


L
fn fn 1 fn 2 f4 f3
fn
fn
1
Nusaischotrcl,nghal (bo a o ) < vcndngnlnlpvinl
fn
snguynnhnhtsaocho:
b ao
fn > o

(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

CHNG 9: PHNG TRNH VI PHN O HM RING


1.KHINIMCHUNG

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)

u(xo ,y) = bxo (y)


u(xf ,y) = bxf (y)
(2)
CcPDEcphnthnh3loi:
B2 4AC < 0

PDEelliptic:

PDEparabolic: B2 4AC = 0

PDEhyperbolic: B2 4AC > 0


Ccphngtrnhnygnmtcchtngngvitrngthicnbng,trng
thitruynnhit,hthngdaong

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

trnmin D = {(x,y) : xo x xf ,y o y y f } viiukinbindng:


u(x,y o ) = b yo (x)
u(x, y f ) = b yf (x)

(2)
u(xo ,y) = b xo (y)
u(xf ,y) = b xf (y)

Phng trnh (1) c gi l phng trnh Poisson nu g(x, y) = 0 v gi l


phngtrnhLaplacenug(x,y)=0vf(x,y)=0.dngphngphpsai
phntachiaminthnhMxon,miondix=(xfxo)/Mxdctheotrc
xvthnhMyon,miondiy=(yfyo)/Mydctheotrcyvthayo
hmbc2bngxpx3im:
u i ,j+1 2u i ,j + u i ,j1
2 u(x,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:

u i ,j = ry (u i ,j+1 + u i ,j1 ) + rx (u i+1,j + u i1,j ) + rxy (g i ,ju i ,j fi ,j )

(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:

u i ,0 = ry (u i ,1 + u i ,1 ) + rx (u i+1,0 + u i1,0 ) + rxy (g i ,0 u i ,0 fi ,0 )

= ry u i ,1 + u i ,1 2bx0 (y i )x + rx (u i+1,0 + u i1,0 ) + rxy (g i ,0 u i ,0 fi ,0 )

= 2ry u i ,1 + rx (u i+1,0 + u i1,0 ) + rxy g i ,0 u i ,0 fi ,0 2bx0 (y i )x

(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

u(x,4) = e 4 cosxe xcos4

(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

u ik+1 = r(u ik+1 + u ik1 ) + (1 2r)u ik r = A 2

(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

ru ik++11 + (1 + 2r)u ik+1 ru ik+11 = ru ik+1 + (1 2r)u ik + ru ik1 r = A 2 (16)


x
ViiukinbinDirichlettix0viukinbinNeumanntixMtach
phngtrnh:
k +1
2(1 + r)
0
0
0
0 u1
r

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:

u(x,0)=sinx u(0,t)=0 u(1,t)=0

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)

u(x, y 0 ,t) = b y0 (x,t)


u(x,y f ,t) = b yf (x,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

Cng thc ny, c Peaceman v Rachford a ra, l phng php n v


tonnhphngtrnh:

vi0jMx1

(22a)

(22b)

ry u ik+1,j1 + u ik++1,j1 + (1 + 2ry )u ik,j+1 = rx u ik,j1 u ik,j+1 + (1 2rx )u ik,j

rx u ik,j+21 + u ik,j++21 + (1 + 2rx )u ik,j+ 2 = ry u ik+1,j1 u ik++1,j1 + (1 2ry )u ik,j+1

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(0,t)=b0(t), u(xf ,t) = b xf (t)


viubin:

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

V u i1 = u(xi , t) khngchotrcnntakhngthdngtrctip u1i t(3)


vik=0:

u1i = r ( u i0+1 + u i01 ) + 2(1 r)u i0 u i1

(4)
Nhvy,taxpxiukinuvohmbngsaiphn:
u1i u i1

= i0 (xi )
2 t
vrtra u i1 avo(3):

(5)

u1i = r ( u 0i+1 + u 0i1 ) + 2(1 r)u i0 u1i 2i0 (xi )t

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(0,y,t) = bx0 (y,t)


u(xf , y,t) = b xf (y,t)

u(x,y f ,t) = b yf (x,t)

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:

u ik,j+1 = rx u ik,j+1 + u ik,j1 + 2(1 r x ry )u ik,j + ry u ik+1,j + u ik1,j u ik,j1

(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:

u1i ,j = rx u 0i ,j+1 + u 0i ,j1 + 2(1 rx ry )u i0,j + ry u i0+1,j + u 0i1,j u i,j1

(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:

n (x, y) = {n ,s s = 1,...,Ns } (x,y) D

(3a)

n ,s (x, y) = pn ,s (1) + pn ,s (2)x + pn ,s (3)y

chomiminSs

(3b)

423

ivittccccmincons=1:Nsvccntn=1:Nnsaochonbng1
chntnvbngzeroticcntkhc.LcnghimxpxcaPDE
lthptuyntnhcacchmcsn(x,y):

Nn

u(x,y) = [ c ] [ (x,y)] = c n n (x, y)


T

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

s (x, y) = c n n ,s (x, y) = c n pn ,s (1) + pn ,s (x) + pn ,s (3)y

(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


2,s 1,s + 2,s 1,s S s


x
y
y

x

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

1,s = p1,s (2) p2 ,s (2) L pN b ,s (2)


x
T

1,s = p1,s (3) p2 ,s (3) L pN b ,s (3)


y

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

2 ,s = pNb +1,s (2) pNb + 2 ,s (2) L pN n ,s (2)


x
T

2 ,s = pNb +1,s (3) pNb + 2 ,s (3) L pN n ,s (3)


y

Ns

[d] = [ A1 ][c1 ] f(xs , ys )2 ,s S

s =1

(xs,ys)ltrongtmcaminconSs
FEMdatrnnguyntclnghimca(1)cthnhncbngcch
cctiuhohm:
J=

u(x,y) + u(x,y)
y

g(x, y)u 2 (x,y) + 2f(x,y)u(x,y)} dxdy

(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

g(x,y) [ c ] [ ][ ] [ c ] + 2f(x, y) [ c ] [ ] dxdy


T

iukinhmnycctiutheo[c]l:
d

J=

[2 ] []T [c ] + []T [c ]
d [c2 ]
x
x
y

{
R

g(x,y) [ 2 ][ ] [ c ] + 2f(x,y) [ 2 ] dxdy = 0


T

Ns

s =1

xydnghmcs n ,s (x,y) thsivimintn=1,2,...,Nnv


mimincons=1,2,...,Nstaxydnghmfembasisftn():

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

theo hai cch. Trc ht ta to cc hm c s bng cch dng hm


fembasisftn() v v mt hm trong s bng cch dng lnh MATLAB
mesh()nhhnha.Thhai,khngtorahmcs,tadnglnhMATLAB
trimesh()vcchmhnhdngchoccntn=2,3,4v5nhhnhbe.
Hnhflthcathptuyntnhcacchmcs:

Nn

u(x,y) = [ c ] [ (x,y)] = c n n (x, y)


T

(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)

(c 21u1 ) (c 22u 2 ) + a 21u1 + a 22 u 2 = f2


trnminviiukinbinDirichlet:
h11 h12 u1 r1

(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

Numunchocchnhgnvoli,tachn Snaptrongmenu Option.


Numuntlxchcatrcxvtbngnhauhnhtrnnhnkhng
ginghnhelliptachnAxesEqualtrongmenuOption.
) v min ta dng menu Draw hay cc icon trn thanh cng c
ngayphadiccmenu.
)tiukinbintadngmenu Boundaryhayicon.Tabm
lntngonbintiukinchon.
434

)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)

u(x,y,t)=e cosxe cosyvix=0,x=4,y=0,y=4


giiphngtrnhtatheoccbcsau:
McngcPDETOOL.VomenuOption|AxesLimithiuchnh
li phm vi gi tr ca x v y l [0 4] ri chn Apply v Close. Chn
Option|AxesEqual
Bmvoiconvhnhvung.Khivxong,nuchangkch
thctabmpvoitngbygictnlR1hiuchnhli
thnhLeft:0,Bottom:0,Height:4,Width:4.
Bmvoiconthngbincaitngcmu.Trnmi
onbintachoiukinbintheo(vd2.2b).ghiiukinbincho
onnotabmpchutlnon.iukinbincholiu
kinbinDirrichlet.Trnbintri,taghiiukinbin:
h=1,r=exp(y)cos(y)
trnbinphi:
h=1,r=eycos4e4cosy
trnbindi:
h=1,r=cosxex
vtrnbintrn:
h=1,r=e4cosxexcos4
BmpchutvoiconPDEvchnphngtrnhdngparabolic
v cc thng s theo (vd2.1): c = 1e4, a = 0, f = 0, d = 1. Trong menu
Solve|ParameterstaghiTime:0:100:5000,u(t0)=0(iukinu).
Bmpchutvoicontolivsautinhchnhn.
Bmpchutvoicon=giiphngtrnh.
436

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

CHNG 10: CC CNG C KHC CA MATLAB


1.SIMULINK
1.KhingSinulink:khingSimulinktatheoccbcsau:

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.

4. Chn mt i tng: chn mt i tng, click ln n. Khi ny i


tngscmthnhchnhtcccgclcchtbaoquanh.

5.Chnnhiuitng:Tacthchnnhiuitngcnglcbngcch
dng phm Shift v chut hay v mt ng bao quanh cc i tng
bngcchbmchutkothnhhnhchnhtvthkhihnhchnht
baolyccitngcnchn.

6. Chn tt c cc i tng: chn tt c cc i tng trong ca s ta


chnmenuEdit|SelectAll.

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.

9. M t thng s ca khi: m t thng s ca khi ta dng hp thoi


Block Properties. hin th hp thoi ny ta chn khi v chn Block
PropertiestmenuEdit.Tacthnhppchutlnkhihinthhp
thoiny.HpthoiBlockPropertiesgm:
Description:Mtngngnvmcchcakhi.
Priority:thchinquynutincakhisovicckhikhctrong
mhnh.
Tag:trngvnbnclucngvikhi
Openfunction:cchmMATLABcgikhimkhiny
439

Attributes format string: Thng s ny s m t thng s no c


hinthdiiconcakhi.

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

mc Wide Vector Lines t menu Format. Khi tu chn ny c chn, cc


ngnhnvectcvmhnccngmangsliuvhng.Nu
tathyimhnhsaukhichnWideVectorLinestaphicpnhthnhv
bngcchchnUpdateDiagramtmenuEdit.KhingliSimulinkcng
cpnhts.

17. M rng v hng cc u vo v cc thng s: M rng v hng l


bin i i lng v hng thnh vec t vi s phn t khng thay i.
Simulinkpdngmrngvhngchoccilngvovthngsi
vihuhtcckhi.

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

20. Tomt thvin: to mt th vin,chn Library t menu conNew


ca menu File. Simulink s hin th mt ca s mi, c tn l Library :
untitled.
441

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.

23. V ng ni gia cc khi: ni cng ra ca mt khi vi cng vo


camtkhikhctalmnhsau:

tcontrchutlncngracakhiutin,contrcdngdu+
nhnvgichut
kocontrchutticngvocakhithhai
thchut
vnggpkhc,nhnphmShiftkhiv.

24. V ng nhnh: ng nhnh l ng ni t mt ng c v


mangtnhiucanticngvocamtkhi.
thmngnhnhtalmnhsau:
acontrchuttingcnphnnhnh
nhnphmchutngthinhnphmCtrl
kocontrchutticngvotiptheovthchutvaphmCtrl.
TuynhintacthdngphmphichutthayvdngphmCtrlvphm
trichut.

25.Chnkhivomtng:Tacthchnmtkhivomtngbng
cchkovthkhilnngni.Khimtachnvochcmtu
vovmtura.

26. Nhn ca tn hiu: Ta c th gn nhn cho tn hiu ghi ch cho m


hnh. Nhn c th nm trn hay di ng ni nm ngang, bn phi hay
bntringnithngng.
27.Sdngnhntnhiu:tonhntnhiu,bmpchutlnng
ni v ghi nhn. di chuyn nhn, sa mt nhn, click ln nhn ri nh
nhnmisaukhixanhnc

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

30. Cc kiu d liu ca cc khi: Cc khi u chp nhn kiu d liu


double.

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

33. Hin th cc kiu d liu ca cng: hin th kiu d liu ca cng


trongmhnh,tachnPortDataTypestmenuFormat.

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.

35. To mt h thng con bng cch thm khi h thng con: to mt


khi h thng con trc khi thm cc khi trong n ta phi thm khi h
thngconvomhnhrithmcckhitonnhthngconnyvokhi
hthngconbngcchsau:

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

37. Gn nhn cho cc cng ca h thng con: Simulink gn nhn cho cc


cngcahthngcon.Nhnltncacckhiinportvoutportnikhih
thng con vi cc khi bn ngoi qua cc cng ny. Ta c th du cc nhn
ny bng cch chn khi h thng con ri chn Hide Port Labels t menu
Format. Ta cng c th du mt hay nhiu nhn bng cch chn cc khi
444

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

41. M phng h thng lin tc n gin: Ta m hnh ho h m t bi


phngtrnhviphn

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 )

Ta cng dng h khng giantrng thi. Ta t x1 = x , x2 =

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

b. H m t bng h phng trnh vi phn: Ta xt h m t bng h


phngtrnhviphnsau:
a1 = a 2

a
sin(
a
)
0
.
2
a
1
2
2

viiukinula1(0)=a2(0)=1.3
Tamphnghbngccphnt:
haikhiIntegratortrongthvinContinous
khiFcntrongthvinFunctions&Tables
khiGaintrongthvinMath
haikhiScopetrongthvinSink
khiSumtrongthvinMath
Smphngnhsau:

451

46.Lumhnh:Tacthlumhnhbngcchchn Savehay Saveast


menuFile.Tadng Savekhimmhnhc,savluli. Saveasdngkhi
m hnh c ten l untitled ngha l cha c t tn. Simulink s lu m
hnhbngmtfilectnvphnmrngl.mdl.

47.Inskhi:Tacthinskhibngcchchn Printtmenu File.


KhinyhpthoiPrintsxuthin.Nchophpta:
chinhthnghinhnh

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.

Gi s ta mun ta mun dng bin ch biu din t l vng


1+ 5
=
.Tadnglnh:
2

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)

gn biu thc ch ax2 + bx + c cho bin f. Tuy nhin trong trng hp ny


SymbolicMathToolboxkhngtoraccbintngngviccshnga,b,
cvxtrongbiuthc.thchinccphptonbngch(vdtchphn,
ohm,thaythv.v)trnftaphitoccbinmtcchrrng,nghal
cnvit:

a=sym(a)
b=sym(b)
c=sym(c)
x=sym(x)

haynginl:

symsabcx

Ni chung l ta c th dng sym hay syms to cc bin ch nhng nn


dngsymstitkimthigian.

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

Lnh conj l ton t to s phc lin hp. xa thuc tnh real ca x ta


dnglnh:

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]

T v d ny ta thy dng cc i tng ch cng tng t nh dng s


trongMATLAB.
e.Binchmcnh:Khidngcchmtonhc,vicchnccbinc
lpthngrtrrng.Vdxembngsau:

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

minh ho 2 trong s cc gii hn quan trng ca ton hc: o hm(trong


trnghpcosx)vhmm.Trongkhinhiugiihn:
lim f( x)
x a

l hai pha(ngha l kt qu nh nhau cho d x tin ti bn phi hay bn


tricaa)licnhnghmgiihnphivtrikhcnhau.Do3giihn:
1
1
1
lim , lim , lim
x0 x
x 0 x
x +0 x
cho3ktqukhcnhau:khngxcnh,v+
Trong trng hp khng tn ti gii hn Symbolic Math Toolbox tr v kt
quNaN.Vd:

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

c. Tch phn: Nu f l mt biu thc ch th int(f) tm mt biu thc


khc F sao cho diff(F) = f. Nh vy int(f) cho ta tch phn bt nh ca f.
Tngtnhohm int(f,v)lytchphntheobinclpv.Tacbng
sau:

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

C 3 biu thc ny l cc dng biu din ton hc khc nhau ca cng mt


hmtonhclathcbc3theox.Mimtdngthchhpvimt
dngtnhton.Dngthnhtfldngchungnhtthngcdngbiu
dinathc.Nnginlmtthptuyntnhcaccsmcax.Dng
th2,hmg,ldngphntchthnhthas.Nbiudinnghimcaa
thc.Tuynhinkhngphaiathcnocngcnghim,nghalcthphn
tchthnhthas.Dngth2ldngHornercaathc.Nrttindng
tnhtrscaathctimtgitrnocax.
466


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)]

e. simplify: Hm simplify l mt hm mnh, dng rt gn cc biu


thc.Sauylmtsvd:

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

f .simple: Hm simple a ra dng ngn nht c th c ca mt biu


thc.Hmnycnhiudng,midngtrvktqukhcnhau.Dng:
simple(f)
hinthdngngnnht.Vd:

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)

Tuy nhin ta vn kh hnh dung c s sai khc gia hai ng cong. V


vy tt hn chng ta kt hp subs, double li trong chng trnh
ctcompsubs.m:

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)

d.Hphngtrnhviphn:Hm dsolve cthxlhphngtrnhvi


phn,chaykhngciukinu.Vdtachphngtrnh:

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

b. Bin i Fourier ngc: Khi bit hm nh Fourier dng bin i


Fourierngctatmchmgc.Cphp:

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:

a. Bin i Laplace: Bin i Laplace dng bin i phng trnh vi


phnthnhphngtrnhis.Cphp:

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

Mthvin ElectricalSourcescopy ACVoltageSourceBlockvo


casctcircuit.mdl
Mhpthoi ACVoltageSourceBlockbngcchnhpplnn

nhpvobin,phasevtnstheoccgitrchotrongs.Chl
binlgitrmaxcainp.
Dokhiintrkhngcnncopykhi Series RLCBranchvtgi

trintrnhchovtLlvcngvClzero.
ThchintngtviphntLvC.

LykhioinptronghthngconMeasurement

xeminp,dngkhiScopecaSimulinkchun.MSimulinkv

copy khi Scope vo m hnh ctcircuit.mdl. Nu khi Scope c ni trc


tipviuracathitboinpnshinthinptheoV.
honthnhmchin,tacnniccphntvinhau

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.

Bygichnmenu Tool| InitialValueofStateVariables hinth


ccgitrkhiucaccbintrngthi.Ccgitrkhiunyct
btusimulationtrngthixclp.
Tiptheotatnhccbiudincakhnggiantrngthicamhnh
ctcircuitbnghmpower2sys.NhpdnglnhsauyvocasMATLAB:

[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

H thng ny c dao ng tt dn v phn thc m. Nu ta dng Control


System Toolbox, ta c th v th Bode. Cc lnh MATLAB(lu trong
ctcircuitm.m)nhsau:

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.

9. M hnh in khng h cm: Phn t in khng h cm thc hin mi


linhtgia2hay3dyqun.KhiMutualInductancethchinlinht
gia3dyqunringbit.Tamtintrvincmcatngdyqun
trnmcvothnhtcahpthoivintr,incmhcmtrnmc
vocuicng.Mhnhinnhsau(lutrongctmutualinduc.mdl):

Nu mc vo ca dy qun th 3 b b trng, ngha l ch c h cm


gia2dyqun.CcuvocakhiMutualInductancelcngcctnhti
mtthiim.
Dosimulationnncn:

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

thy c s phn b im khng v im cc ca h thng trn


mt phng phc ta dng hm pzmap. Trc ca thi c chia li bng
lnhsgrid.Ccimkhngbiuthbngvngtrnvimccbiuthbng
du.TaxtcclnhMATLABsau(lutrongctpzmap.m):
clc

sys=zpk([611],[51],3)
axisequal
494

pzmap(sys)
sgrid

3. Khai trin hm truyn thnh tng cc phn thc n gin: Cho hm


truyn,tacthkhaitrinnthnhtngccphnthcnginbnglnh
residue.Hm residuechovectctccphndr,vectctccimccp
vphnnguynk.Ngcli,cr,p,ktacthtmhmtruynbngcclnh
MATLABsau(lutrongctresidue1.m):

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

5. Bin i khng gian trng thi thnh hm truyn: bin i h cho


di dng khng gian trng thi thnh hm truyn ta dng lnh ss2tf. Ta
xtcclnhsau(lutrongctss2tf.m)

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

6. Nghim ca phng trnh trng thi: tm nghim ca phng trnh


trngthitadnglnhlsim.
Vd:Chophngtrnhtrngthicamthtuyntnh
1
0 x1 1
x& 1 0

&

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

8. Ghp ni cc s khi: ghp ni to nn mt h thng t nhiu h


thngcontacthsdngmtskhnngnhsau:

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]

c. Ghp theo ng cho: Khi ghp theo ng cho(hnh c), ta c h


thngmibomcchlycchthngconbanu.ghptadnglnh
append.CclnhMATLAB(lutrongctdiag.m)nhsau:

clc
sys1=tf(1,[10])
sys2=ss(1,2,3,4)
sys=append(sys1,sys2)

d. Ghp song song: Ta dng cch ghp nh trn hnh d. Hm parallel

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)

ni cc h thng con v rt ra m hnh khng gian trng thi sysc ca


tonbhthng.MatrnQchracchnicchthngcontrns.Mi
uvocasyscmthng,trongphntutincamihngls
501

u vo. cc phn t tip theo ca mi hng m t u vo ca h thng


clytu.Vduvo7lytura2,15v6tronguvoca
15mthhngtngngcaQl[72156].Hngnokhngphnt
ththms0.Tatmmhnhkhnggiantrngthicassau:

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

pngvikchthchbcnhytmcnhhm step cnpngvi


kchthchxungtmcnhhmimpulse
Vd1:Tmpngcakhubchaichmtruyn:
2n

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

Tm d v e p.o bng 40% v tp = 0.8s. Cc lnh MATLAB (lu trong


ctstep1.m)nhsau:

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

R(s) s + (de + 1)s + d

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

Ngc li khi c c tnh tn bin pha ta c th tm li c hm truyn


bnglnhinvfreqs.
Vd:Tmhmtruyncahthng(lutrongctinvfreqz.m):

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

trc quan ta c th dng cng c thit k bng cch nhp lnh


sisotoolvocaslnhMATLAB.

514

También podría gustarte