第26 页 共 52 页
从而得
?ba732n?1h12n?1232n?13f(x)dx?h[f(a)??f(xk?)??f(xk?h)??f(x0?h)
9090k?0490k?0490k?0414n?17 ??f(xk)?f(b)
90k?090这个公式即为n=4的复化柯特斯公式,记作Cn。 例题6:用4阶复化牛顿-柯特斯公式来计算积分:
14?42 ?, 要求误差不超过。 0.5?10xdxdx?001?x211源程序及运行结果见附录8。我们将结果列表如下:
表六:复化牛顿-柯特斯(n=4)公式 积分 积分值 迭代次数 所达到的精度 4?01?x2dx 1?10xdx 123.141592661142563 0.6666492622208842 3 0.5?10?4 7 0.5?10?4 由结果我们可以看出,复化柯特斯公式比同阶的单步牛顿-柯特斯公式的精度确实是有所提高。
3.4 Romberg积分的算法思想及程序设计
Romberg求积法是在复化梯形求积公式的基础上,,应用Richardson——外推法构造的一种算法。复化梯形求积公式的误差可以表示为:
R(f,Tn)?a2h2?a4h4?a6h6??
其中,a2,a4,a6,?都是与h无关的常数,把区间[a,b]n等分,然后用复化梯形求
第27 页 共 52 页
积公式求得近似值Tn记为T0(h),再把[a,b]2n等分,仍用复化梯形求积公式求得
h?h?近似值T2n记为T0(),如此等等。这样可以得到一个序列?T0()?,从而可以应用
2?2??h??h?richardson外推法得到外推一次的序列?T1()?,外推两次的序列?T2()?,??
?2??2?现在把Richardson外推法用到式R(f,Tn)?a2h2?a4h4?a6h6??上,取q?m=1并注意到p1?2,得到外推m次的计算公式为:
(k) Tm1,212m(k)(k?1)Tm?()Tm?1(k?1)k?14mTm?1?Tm?12??,k?0,1,2,? m12m4?11?()2
下面我们就利用以上外推公式编程解决问题。 例题7:用Romberg积分公式来计算积分:
?
源程序及运行结果见附录9。我们将所得结果列表比较如下:
表七:Romberg积分法 Romberg积分法 4?01?x2dx 14dx, 要求误差不超过0.5?10?5。 201?x1积分值 3.141592 计算函数值的个数 所达到的精度 6 0.5?10?5
上面的三个积分,用Romberg方法只需分别计算6个,11个,和5个点的函数值就可达到精度要求,因为每一次计算出的函数点的值都会被下一次的计算用到,大大节省了计算量。
第28 页 共 52 页
3.5 综合实验
对于我们在序言部分所提到的那些不能用或者很难求出原函数的积分都可以用上述的方法来求出他们符合要求精度的数值解,当然,这还要我们根据题目所给的要求选择恰当的积分方法,才能既不费劲又能准确地求出所要求的精度的积分值。下面我们就通过几个例子,说明各类积分的特点。
我们知道,梯形积分是通过梯形的面积来估计积分值的,一般情况下,他的精度不及抛物线积分法和其他的方法,但是当一个函数本身并不光滑时,“再好”的积分法则也未必管用。
例题8:分别用步长为0.3和0.15的梯形积分法和抛物线积分法求积分:
0?x?1?x?3? f(x)???x 1?x?2
?x2?x?3?的值。源程序见附录10,积分结果与精确解比较如下:
表八:梯形法则的特点 步长 0.3 0.15
在两种步长积分之下,抛物线积分并没有表现出优势,反而梯形积分的精确度要更好一些。这一例题充分体现出梯形积分在函数光滑度较差时能够表现出独特的优越性。
例题9:分别用复化梯形,复化抛物线和n=4的复化柯特斯公式计算积分 I??xdx
0112梯形积分值 4.950000 4.275000 误差 0.450000 0.725000 抛物线积分值 5.400000 4.050000 误差 0.900000 0.450000 精确解 4.500000 要求精度达到0.5?10?4。
源程序见附录11,结果列表比较如下:
第29 页 共 52 页
表九:复化梯形、抛物线及牛顿-柯特斯(n=4)公式比较
积分I??xdx 0112方法 变步长复化梯形公式 变步长复化抛物线公式 变步长复化牛顿-柯特斯公式
结果 迭代次数 精度 9 7 7 0.5?10?40.6666488815499521 0.6666468462030955 0.6666492622208842 我们可以看出n=4的牛顿-柯特斯公式精度与复化抛物型公式精度差不多,但是复化柯特斯公式的计算复杂度明显地比复化抛物线公式要高,因此,我们对于变步长复化抛物线公式的选用还是较多的。但是对于某些积分,如上例中的
I??xdx如果对于精度有进一步的要求,两种方法收敛于真解的速度都显得很
0112慢,因此,我们要引入加速收敛的Romberg积分。
例题10:分别用复化梯形,复化抛物线和n=4的复化柯特斯公式计算积分 ?xdx,?xdx,?2x?sinxdx 要求精度达到0.5?10?5。
000112112?源程序见附录12,结果列表比较如下:
表十:三种方法的比较
第30 页 共 52 页
复化梯形积分法 4?01?x2dx 1积分值 3.141592 0.666664 0.999999 计算函数值的个数 所达到的精度 257 1025 257 计算函数值的个数 所达到的精度 17 1025 33 计算函数值的个数 所达到的精度 6 11 5 0.5?10?5 0.5?10?5 ?10xdx x?sinxdx 12??20复化抛物线积分法 4?01?x2dx 1积分值 3.141592 0.666664 1.000000 0.5?10?5 ?10xdx x?sinxdx 12??20Romberg积分法 4?01?x2dx 1积分值 3.141592 0.666664 0.999999 ?10xdx x?sinxdx 12??20上面的三个积分,用Romberg方法只需分别计算6个,11个,和5个点的函数值就可达到精度要求,而用复化抛物线公式则分别需要计算17个,1025个,和33个点的函数值,用复化梯形公式则要计算257个,1025个和257个点的函数值才能达到同样的精度要求,所以,Romberg方法明显地优于复化梯形方法和复化抛物线法。Romberg积分也就成为数值积分在高精度要求时常常选用的一种方法。
在实验的程序中,所编函数已被做成程序包,因此,实验中的函数是直接调用程序包中函数,调用格式,各函数名以及使用格式详见附录13。程序包源程序详见附录14。
4 结论
由以上理论部分和数据试验部分我们基本可以看出几种几分方法的优缺点 和适用范围。