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 . Chng trình tính đohàmnhdiđây.Dùngchng trình tính đo hàmcahàmchotrongfunctionvibch=0.25tixo=0tanhnđcgiá trđohàmlà1.000000001. Chng trình 61 //Daoham_Romberg; #include<conio.h> #include<stdio.h> #include<math.h> #definemax11 floath; voidmain() { . Khinrtln,SntintiJ.Tuynhiênsaislàmtrònliđctíchlu. Dovycnphitìmphng pháp tính chínhxáchn.Dođóngitaítkhi dùngphng pháp hìnhchnhtnhvanêu. §3.PHNGPHÁPHÌNHTHANG Trongphng pháp hìnhthang,thayvìchiadintíchSABbathànhcác hìnhchnht,talidùnghìnhthang.Vídnuchiathành3đonnhhình vthì: . }2/)b(f]h)1n(a[f)ha(f2/)a(f{hdx)x(f b a +−++⋅⋅⋅+++= ∫ Chng trình tính tíchphântheophng pháp hìnhthangnhsau: Chng trình 62 //tinhtichphanbangphuongphaphinh_thang; #include<conio.h> #include<stdio.h> #include<math.h> floatf(floatx) {