数值积分102dxex(一)目录第一章数值积分计算的重述......................................................................................11.1引言...................................................................................................................11.2问题重述...........................................................................................................2第二章复化梯形公式................................................................................................32.1复化梯形公式的算法描述..............................................................................32.2复化梯形公式在C语言中的实现.................................................................32.3测试结果..........................................................................................................4第三章复化simpson公式........................................................................................63.1复化simpson公式的算法描述......................................................................63.2复化simpson公式在C语言中的实现..........................................................63.3测试结果..........................................................................................................7第四章复化cotes公式............................................................................................84.1复化cotes公式的算法描述...........................................................................84.2复化cotes公式在C语言中的实现...............................................................94.3测试结果........................................................................................................10第五章Romberg积分法...........................................................................................115.1Romberg积分法的算法描述.........................................................................115.2Romberg积分法在C中的实现....................................................................125.3测试结果........................................................................................................13第六章结果对比分析和体会..................................................................................144参考文献......................................................................................................................16附录..............................................................................................................................16数值积分102dxex(一)第1页数值积分102dxex(一)第一章数值积分计算的重述1.1引言数值积分是积分计算的重要方法,是数值逼近的重要内容,是函数插值的最直接应用,也是工程技术计算中常常遇到的一个问题。在应用上,人们常要求算出具体数值,因此数值积分就成了数值分析的一个重要内容。在更为复杂的计算问题中,数值积分也常常是一个基本组成部分。在微积分理论中,我们知道了牛顿-莱布尼茨(Newton-Leibniz)公式()()()bafxdxFbFa其中()Fx是被积函数()fx的某个原函数。但是随着学习的深入,我们发现一个问题:对很多实际问题,上述公式却无能为力。这主要是因为:它们或是被积函数没有解析形式的原函数,或是只知道被积函数在一些点上的值,而不知道函数的形式,对此,牛顿—莱布尼茨(Newton-Leibniz)公式就无能为力了。此外,即使被积函数存在原函数,但因找原函数很复杂,人们也不愿花费太多的时间在求原函数上,这些都促使人们寻找定积分近似计算方法的研究,特别是有了计算机后,人们希望这种定积分近似计算方法能在计算机上实现,并保证计算结果的精度,具有这种特性的定积分近似计算方法称为数值积分。由定积分知识,定积分只与被积函数和积分区间有关,而在对被积函数做插值逼近时,多项式的次数越高,对被积函数的光滑程度要求也越高,且会出现Runge现象。如7n时,Newton-Cotes公式就是不稳定的。因而,人们把目标转向积分区间,类似分段插值,把积分区间分割成若干小区间,在每个小区间上使用次数较低的Newton-Cotes公式,然后把每个小区间上的结果加起来作为函数在整个区间上积分的近似,这就是复化的基本思想。本文主要数值积分102dxex(一)第2页研究的公式有:复化梯形公式﹑复化Simpson公式﹑复化Cotes公式﹑Romberg积分法。1.2问题重述本文主要介绍微积分方程的复化解法。通过运用复化梯形公式、复化Simpose公式、复化cotes公式和Romberg积分法这四种积分法方法,解出微分方程的近似解。并进行误差分析和结果比较。当积分区间[a,b]的长度较大,而节点个数n+1固定时,直接使用Newton-Cotes公式的余项将会较大,而如果增加节点个数,即n+1增加时,公式的舍入误差又很难得到控制,为提高公式的精度,又使算法简单易行,往往使用复化方法。即将积分区间[a,b]分成若干个子区间,然后在每个小区间上使用低阶Newton-Cotes公式,最后将每个小区间上的积分的近似值相加。将定积分的积分区间[ab]分割为n等份各节点为khaxk,k=0,1,…nnabh在子区间],[1kkxx(k=0,1,1…..n-1)上使用NewtonCotes公式将子区间分割为l等份,节点为1,...2,,kkkkkxllhxlhxlhxx记为121,...,,kllklklkkxxxxx在子区间上作f(x)的l阶Newton-Cotes求积公式)()()()()(0)(0)(1)(1liklililiklilikkkabxfChxfCxxIxdxf由积分的区间可加性,可得101)()()(nkxxabkkdxxfxdxf复化求积公式niknkiinkkIxfChI)(1010)1(10)(1数值积分102dxex(一)第3页第二章复化梯形公式2.1复化梯形公式的算法描述复化求积公式niknkiinkkIxfChI)(1010)1(10)(1当L=1时可得复化梯形公式:)()()(1010)1(iknkiiabxfChTnxdxf=)]()([21110kknkxfxfh复化梯形公式=)]()(2)([210bfxfafnabknk2.2复化梯形公式在C语言中的实现复化梯形公式运用的程序如下:T0=(a-b)*(f_x(a)+f_x(b))/2;//n=1时的cotes公式即梯形公式for(i=1;i=100;i++){//计算sum_num、xishu、s_point(startpoint)、d_pointsum_num=pow(2,i-1);xishu=double(a-b)/sum_num;s_point=double(b)+double(a-b)/pow(2,i);d_point=double(a-b)/pow(2,i-1);for(j=1;j=sum_num;j++){add_T=add_T+f_x(s_point+(j-1)*d_point);}add_T=add_T*xishu;数值积分102dxex(一)第4页T1=(T0+add_T)/2;err_T=(T1-T0)/3;//outputprintf(%d%d%10.8f%10.8f,i,pow(2,i),T1,err_T);printf(\n);if(err_T=0)err_T=(-1)*err_T;if(err_T=E)break;else{T0=T1;T1=0;add_T=0;err_T=0;}}在这个函数中我们将复化梯形公式和积分过程都用计算机语言表示出来。首先我们给出复化梯形公式,进行迭代,直到精确度达到设定要求,算出最后结果。2.3测试结果用复化梯形有效数字四位求得的结果如下:数值积分102dxex(一)第5页用复化梯形有效数字七位求得的结果如下:由以上结果可以看出取两个不同的精度相对误差比较小,但计算次数大大的数值积分102dxex(一)第6页增加,复化梯形公式计算次数多。第三章复化simpson公式3.1复化simpson公式的算法描述复化求积公式niknkiinkkIxfChI)(1010)1(10)(1当L=2时可得复化梯形公式:)(2)()(1010)(iknkiiabxfChSnxdxf=)]()(4)([6112110kkknkxfxfxfh复化simpson公式=)]()()(4)([61022110bfxfxfafnabknkknk3.2复化simpson公式在C语言中的实现复化梯形公式运用的程序如下:T0=(a-b)*(f_x(a)+4*f_x((a+b)/2)+f_x(b))/6;//n=2的cotes公式即simpson公式for(i=1;i=100;i++){