CHNG6:TÍNHGNĐÚNGĐOHÀMVÀTÍCH
PHÂNXÁCĐNH
§1.ĐOHÀMROMBERG
ĐohàmtheophngphápRomberglàmtphngphápngoisuy
đxácđnhđohàmvimtđchínhxáccao.TaxétkhaitrinTaylorca
hàmf(x)ti(x+h)và(xh):
⋅⋅⋅++
′′′
+
′′
+
′
+=+ )x(f
!4
h
)x(f
!3
h
)x(f
2
h
)x(fh)x(f)hx(f
)4(
432
(1)
⋅⋅⋅−+
′′′
−
′′
+
′
−=− )x(f
!4
h
)x(f
!3
h
)x(f
2
h
)x(fh)x(f)hx(f
)4(
432
(2)
Tr(1)cho(2)tacó:
⋅⋅⋅++
′′′
+
′
=−−+ )x(f
!5
h2
)x(f
!3
h2
)x(fh2)hx(f)hx(f
)5(
53
(3)
Nhvyrútra:
⋅⋅⋅−−
′′′
−
−−+
=
′
)x(f
!5
h
)x(f
!3
h
h2
)hx(
f
)hx(
f
)x(f
)5(
42
(4)
haytacóthvitli:
[]
⋅⋅⋅++++−−+=
′
6
6
4
4
2
2
hahaha)hx(f)hx(f
h2
1
)x(f (5)
trongđócáchsaiphthucfvàx.
Tađt:
[
)hx(f)hx(f
h2
1
)h( −−+=ϕ
]
(6)
Nhvyt(5)và(6)tacó:
⋅
⋅
⋅
−
−
−
−
′
=ϕ=
6
6
4
4
2
2
hahaha)x(
f
)h()1,1(D (7)
⋅⋅⋅−−−−
′
=
⎟
⎠
⎞
⎜
⎝
⎛
ϕ=
64
h
a
16
h
a
4
h
a)x(f
2
h
)1,2(D
6
6
4
4
2
2
(8)
vàtngquátvihi=h/2
i1
tacó:
⋅
⋅
⋅
−
−
−
−
′
=ϕ=
6
i6
4
i4
2
i2i
hahaha)x(
f
)h()1,i(D (9)
TatorasaiphânD(1,1)4D(2,1)vàcó:
⋅⋅⋅−−−
′
−=
⎟
⎠
⎞
⎜
⎝
⎛
ϕ−ϕ
6
6
4
4
ha
16
15
ha
4
3
)x(f3
2
h
4)h( (10)
Chiahaivca(10)cho3tanhnđc:
⋅⋅⋅+++
′
=
−
=
6
6
4
4
ha
16
5
ha
4
1
)x(f
4
)1,1(D)1,2(D4
)2,2(D (11)
TrongkhiD(1,1)vàD(2,1)saikhácf′(x)phthucvàoh
2
thìD(2,2)saikhác
f′(x)phthucvàoh
4
.Bâygitalichiađôibchvànhnđc:
158
⋅⋅⋅+
⎟
⎠
⎞
⎜
⎝
⎛
+
⎟
⎠
⎞
⎜
⎝
⎛
+
′
=
6
6
4
4
2
h
a
16
5
2
h
a
4
1
)x(f)2,3(D (12)
vàkhshngcóh
4
bngcáchtora:
6
6
ha
64
15
)x(f15)2,3(D16)3,2(D +⋅⋅⋅+
′
−=− (13)
Chiahaivca(13)cho15tacó:
⋅⋅⋅−−
′
=
−
=
6
6
ha
64
1
)x(f
15
)2,2(D)2,3(D16
)3,3(D (14)
Vilntínhnàysaiscađohàmchcònphthucvàoh
6
.Litiptcchia
đôibchvàtínhD(4,4)thìsaisphthuch
8
.Sđtínhđohàmtheo
phngphápRomberglà:
D(1,1)
D(2,1) D(2,2)
D(3,1) D(3,2) D(3,3)
D(4,1)
D(4,2) D(4,3) D(4,4)
............
trongđómigiátrsaulàgiátrngoisuycagiátrtrcđóhàngtrên.
Vi2≤j≤i≤ntacó:
14
)1j,1i(D)1j,i(D4
)j,i(D
1j
1j
−
−−−−
=
−
−
vàgiátrkhiđulà:
[]
)hx(f)hx(f
h2
1
)h()j,i(D
ii
i
i
−−+=ϕ=
vihi=h/2
i1
.
Chúngtangnglikhihiugiahailnngoisuyđtđchínhxác
yêucu.
Víd:Tìmđohàmcahàmf(x)=x
2
+arctan(x)tix=2vibctínhh=
0.5.Trchínhxáccađohàmlà4.2
201843569.4)]75.1(f)25.2(f[
25.02
1
)1,2(D
207496266.4)]5.1(f)5.2(f[
5.02
1
)1,1(D
=−
×
=
=−
×
=
200458976.4)]875.1(f)125.2(f[
125.02
1
)1,3(D =−
×
=
19995935.4
14
)1,1(D)1,2(D4
)2,2(D =
−
−
=
200458976.4
14
)1,2(D)1,3(D4
)2,3(D =
−
−
=
159
200492284.4
14
)2,2(D)2,3(D4
)3,3(D
2
2
=
−
−
=
Chngtrìnhtínhđohàmnhdiđây.Dùngchngtrìnhtínhđo
hàmcahàmchotrongfunctionvibch=0.25tixo=0tanhnđcgiá
trđohàmlà1.000000001.
Chngtrình61
//Daoham_Romberg;
#include<conio.h>
#include<stdio.h>
#include<math.h>
#definemax11
floath;
voidmain()
{
floatd[max];
intj,k,n;
floatx,p;
floaty(float),dy(float);
clrscr();
printf(Chodiemcantimdaohamx=);
scanf(%f,&x);
printf(TinhdaohamtheophuongphapRomberg\n);
printf(cuahamf(x)=th(x)taix=%4.2f\n,x);
n=10;
h=0.2;
d[0]=dy(x);
for(k=2;k<=n;k++)
{
h=h/2;
d[k]=dy(x);
p=1.0;
for(j=k1;j>=1;j)
{
p=4*p;
160
d[j]=(p*d[j+1]d[j])/(p1);
}
}
printf(y=%10.5f\n,d[1]);
getch();
}
floaty(floatx)
{
floata=(exp(x)exp(x))/(exp(x)+exp(x));
return(a);
}
floatdy(floatx)
{
floatb=(y(x+h)y(xh))/(2*h);
return(b);
}
§2.KHÁINIMVTÍCHPHÂNS
Mcđíchcatínhtíchphânxácđnhlàđánhgiáđnhlngbiuthc:
∫
=
b
a
dx)x(fJ
trongđóf(x)làhàmliêntctrongkhong[a,b]
vàcóthbiudinbiđngcongy=f(x).Nh
vytíchphânxácđnhJlàdintíchSABba,gii
hnbiđngcongf(x),trchoành,cácđng
thng x = a và x = b. Nu ta chiađon [a, b]
thànhnphnbicácđimx
ithìJlàgii
hncatngdintíchcáchìnhchnhtf(xi).(xi+1xi)khisđimchiatinti
∝,nghĩalà:
y
B
A
x
b
a
)xx)(x(flimJ
n
0i
i1ii
n
∑
=
+
∞→
−=
Nucácđimchiaxicáchđu,thì(xi+1xi)=h.Khiđtf(xo)=fo,f(x1)=f1
, tacótng:
∑
=
=
n
0i
in
fhS
161
Khinrtln,SntintiJ.Tuynhiênsaislàmtrònliđctíchlu.
Dovycnphitìmphngpháptínhchínhxáchn.Dođóngitaítkhi
dùngphngpháphìnhchnhtnhvanêu.
§3.PHNGPHÁPHÌNHTHANG
Trongphngpháphìnhthang,thayvìchiadintíchSABbathànhcác
hìnhchnht,talidùnghìnhthang.Vídnuchiathành3đonnhhình
vthì:
S3=t1+t2+t3
trongđótilàcácdintíchnguyênt.Midintíchnàylàmthìnhthang:
ti=[f(xi)+f(xi1)]/(2h)
=h(fifi1)/2
Nhvy:
S3=h[(fo+f1)+(f1+f2)+(f2+f3)]/2
=h[fo+2f1+2f2+f3]/2
Mtcáchtngquátchúngtacó:
()
n1n20n
ff2f2f
n
a
b
S ++⋅⋅⋅++
−
=
−
hay:
⎟
⎠
⎞
⎜
⎝
⎛
++
−
=
∑
−
=
1n
1i
in0n
f2ff
n
a
b
S
Mtcáchkháctacóthvit:
}2/]h)1k(a[f2/)kha(hf{dx)x(fdx)x(f
1n
0k
1n
1k
h)1k(a
kha
b
a
++++≈=
∑∑
∫∫
−
=
−
=
++
+
hay:
}2/)b(f]h)1n(a[f)ha(f2/)a(f{hdx)x(f
b
a
+−++⋅⋅⋅+++=
∫
Chngtrìnhtínhtíchphântheophngpháphìnhthangnhsau:
Chngtrình62
//tinhtichphanbangphuongphaphinh_thang;
#include<conio.h>
#include<stdio.h>
#include<math.h>
floatf(floatx)
{
floata=exp(x)*sin(x);
162
return(a);
};
voidmain()
{
inti,n;
floata,b,x,y,h,s,tp;
clrscr();
printf(Tinhtichphantheophuongphaphinhthang\n);
printf(Chocanduoia=);
scanf(%f,&a);
printf(Chocantrenb=);
scanf(%f,&b);
printf(Chosobuocn
=);
scanf(%d,&n);
h=(ba)/n;
x=a;
s=(f(a)+f(b))/2;
for(i=1;i<=n;i++)
{
x=x+h;
s=s+f(x);
}
tp=s*h;
printf(Giatricuatichphanla:%10.6f\n,tp);
getch();
}
Dùng chng trình này tính tích phân ca hàm cho trong function
trong
khong[0,1]vi20đimchiatacóJ=0.261084.
§4.CÔNGTHCSIMPSON
Khácviphngpháphìnhthang,tachiađon[a,b]thành2nphn
đunhaubicácđimchiax
i:
a=xo<x1<x2< <x2n=b
xi=a+ih;h=(ba)/2nvii=0,..,2n
Doyi=f(xi)nêntacó:
163
∫∫∫∫
−
+++=
x
x
x
x
b
a
x
x
n2
2n2
4
2
2
0
fdx fdxfdxdx)x(f
Đtínhtíchphânnàytathayhàmf(x)vphibngđathcnisuy
Newtontinbc2:
0
2
002
y
!2
)1t(t
ytyP ∆
−
+∆+=
vàvitíchphânthnhttacó:
∫∫
=
2
0
2
0
x
x
2
x
x
dx)x(Pdx)x(f
Đibinx=x0+ththìdx=hdt,vix0thìt=0vàvix2thìt=2nên:
()
210
0
2
00
2t
0t
0
2
23
0
2
0
2
0
0
2
00
x
x
2
yy4y
3
h
y
2
4
3
8
2
1
y2y2h
y
2
t
3
t
2
1
y
2
t
tyh
dty
!2
)1t(t
ytyhdx)x(P
2
0
++=
⎥
⎦
⎤
⎢
⎣
⎡
∆
⎟
⎠
⎞
⎜
⎝
⎛
−+∆+=
⎥
⎦
⎤
⎢
⎣
⎡
∆
⎟
⎠
⎞
⎜
⎝
⎛
−+∆+=
⎥
⎦
⎤
⎢
⎣
⎡
∆
−
+∆+=
=
=
∫∫
Đivicáctíchphânsautacũngcóktqutngt:
[]
2i21i2i2
x
x
yy4y
3
h
dx)x(f
2i2
i2
++
++=
∫
+
Cngcáctíchphântrêntacó:
()(
[]
n22n2421n2310
b
a
yyyy2yyy4y
3
h
dx)x(f ++⋅⋅⋅++++⋅⋅⋅+++=
−−
∫
)
ChngtrìnhdùngthuttoánSimpsonnhsau:
Chngtrình63
//PhuongphapSimpson;
#include<conio.h>
#include<stdio.h>
#include<math.h>
floaty(floatx)
{
floata=4/(1+x*x);
164
return(a);
}
voidmain()
{
inti,n;
floata,b,e,x,h,x2,y2,x4,y4,tp;
clrscr();
printf(TinhtichphantheophuongphapSimpson\n);
printf(Chocanduoia=);
scanf(%f,&a);
printf(Chocantrenb=);
scanf(%f,&b);
printf(Chosodiemtinhn
=);
scanf(%d,&n);
h=(ba)/n;
x2=a+h;
x4=a+h/2;
y4=y(x4);
y2=y(x2);
for(i=1;i<=n2;i++)
{
x2+=h;
x4+=h;
y4+=y(x4);
y2+=y(x2);
}
y2=2*y2;
y4=4*(y4+y(x4+h));
tp=h*(y4+y2+y(a)+y(b))/6;
printf(Giatricuatichphanla:%10.8f\n,tp);
getch();
}
Dùng chngtrìnhnày
tính tíchphân ca hàm trong functiontrong
đon[0,1]vi20khongchiachotaktquJ=3.14159265.
165