You are on page 1of 37

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

You might also like