第二章
1.1
复合梯形求积公式
复合梯形求积公式是复合求积法的一种,在本章中,将从其原理、概念等方面对它做一个详细介绍。在本章的最后,会对复合梯形求积法进行程序设计,使得可以从不同的方面对这种方法有更深的理解。
1.1.1 复合梯形求积公式的理论
当积分区间[a,b]的长度较大,而节点个数n?1固定时,直接使用Newton-Cotes公式的余项将会较大。但是如果增加节点个数,即n?1增加时,公式的舍入误差又很难得到控制。为了提高公式的精度,又使算法简单易行,往往使用复化方法。
b?分成若干子区间,然后在每个小区间上使用低阶即将积分区间?a,Newton-Cotes公,最后将每个小区间上的积分的近似值相加,这就叫做复合求
积法。而复合梯形求积公式就是复合求积法的一种。
1.1.2复合求积公式的原理
将区间?a,b?划分为n等分,分点xk?a?kh,h?b?a,k?0,1,?,n, n在每个子区间?xk,xk?1??k?0,1,?,n?1,?上采用梯形公式,则得
I??f(x)dx???ak?0bn?1xk?1xkhn?1f(x)dx???f(xk)?f(xk?1)??Rn(f)2k?0
记
n?1hn?1hTn???f?xk??f?xk?1????f?a??2?f?xk??f?xb??, (1.1)
2k?02k?1称为复合梯形公式,其余项可由
3?b?a?R[f]??12f''(?),??(a,b).
得
?h3''?Rn?f??I?Tn????f??k??,?k??xkxk?1?k?0?12?n?1
由于f(x)?C2?a,b?, 且
1n?1'' minf??k???f??k??max,
0?k?n?10?k?n?1nk?0''所以????a,b?使
1n?1'' f?????f??k?
nk?0''于是复合梯形公式的余项为
b?a2''hf??? 12 Rn?f???可以看出误差是h2阶,且由
Rn?f???b?a2''hf??? 12式立即得到,当f(x)?C2?a,b?时,则
limTn??f?x?dx,
n??ab即复合梯形公式是收敛的.事实上只要设f?x??C?a,b?,则可得收敛性,只要把Tn改写成为
1?b?an?1b?anTn??f?xk??f?xk?? ??2?nk?0nk?1
当n??时,上式右端括号内的两个和式均收敛到积分?f?x?dx,所以复合梯形
ab公式(1.1)
收敛.此外,Tn的求积系数为正,由定理可知复合梯形公式是稳定的。
1.2 复合梯形求积公式的实例
如果在区间(a,b)上直接应用梯形公式则可得?h1?b?a?:
T1?h?f?a??f?b???b?a?f?a??f?b?? 22若在区间(a,b)中,增加一个结点c??a?b?,则把区间(?a,b?分成两个
2小区间?a,c?与?c,b?,在两个小区间上分别应用梯形公式,然后相加就会得出新的求积公式T2:(其中h2?h1??b?a?) 22h2h2?f?a??f?c????f?c??f?b?? T2?22b?aa?b[f(a)?2f()?f(b)]2?22=
继续增加结点,把区间?a,b?分成4等分,?a,x1?,?x1,x2?,?x2,x3?,?x3,b?,在每个小区间上分别应用梯形公式后再相加,就会得出新的求积公式:
T4?
h4?f?a??f?x1???h4?f?x1??f?x2???h4?f?x2??f?x3???h4?f?x3??f?b?? 2222b?a?3a?b??a?b??a?3b???f?a??2?f?f?f????????f?b?? ?2?4?2??4????4???其中h?h2??b?a??
?424???其中xk?a?kh4,?k?0,1,...,4?
同理,把区间(a,b)分成8等分时,可得求积公式T8:
T8?b?a?7a?b??6a?2b??5a?3b??4a?4b??f?a??2?f?f?f?f??????????2?8?8??8??8???8??2a?6b?f????8??a?7b??f????f?b???8??k
?3a?5b?f????8? 上面我们将区间?a,b?分成2等分,是为了在计算后面的数值时,充分利用到前面的数据。在一般情况下,若把区间?a,b?(分成n等分,记结点为
x,k?a?kh,,?k?0,1,2,...,n?,h??b?a?/n在每一个小区间[xk,xk-1]上应用梯形公
式,则有:
?f?x?dx???f?x?dxak?0xkbn?1xk?1
??k?n?1h?f?xk??f?xk?1?? 2n?1?hf?a??2?f?x??f?x??
?kb2?k?1?就可导出复合梯形公式
n?1b?a?Tn?f?a??2?f?xk??f?xb?? ?2n?k?1利用梯形公式的余项公式(5.2.3),可得复合梯形公式的截断误差为:
3??b?aR?Tn????b?a?h2f''?????31212nf''???, ???a,b?
例1 利用复合梯形公式计算积分:
4dx2?1?x01
该积分的精确值是??3.141592654。此时a?0,b?1,下面分别用T1、T2、T4、T8进行计算。函数f(x)=4/(1+x2)在各结点上的值可列表如下:
xk 0 4.00000 5/8 2.87640 1/8 3.93846 6/8 2.56000 2/8 3.76470 7/8 2.26549 3/8 3.50685 1 2.00000 4/8 3.20000 f?xk? xk f?xk? T1?0.5?f?0??f?1???3 T2?1??f?0??2f1?f?1???3.1000
42?? T4?18??f?0??2?f?1/4??f?2/4??f?3/4???f?1???3.13117
T8?1??f?0??2f1?f2?f3?f4168888
?f5?f6?f7?f?1???3.13198888 8
?????????????????6
??T8?0.26?102?0.5?103,T与准确值之间的误差为:即T8只有三位有效数字。 如果要求误差不超过10,就必须对函数f(x)=4/(1+x2)的二阶导数在区
间[0,1]上的最大值作出估计。因为:
y'??8x?1?x?22,y''?8x2?1?1?x??23?,y'''?32x?2?x?2?1?x?24?0
maxy\y\y\y\可见在区间[0,1]上是单调增函数,(0)=-8,(1)=0,因此,M=x?[0,1](b?a)3(1?0)32M?8?223n2 =8,则Tn的截断误差为:R(Tn)=12n=12n226?10?622若要求3n≤10,即n?3,则n?817。
由这个例题可以看出,梯形公式的精确度比较低,收敛也比较慢,因此,梯形公式并不直接用来计算积分,而是为其它的积分法(如龙贝格积分法)提供初始数据,在那里,由梯形公式得出的这些不够准确的近似值,将被一些简单的运算加工后变得非常准确。
1.3复合梯形求积公式算法的程序设计
一 实验内容
用复合梯形公式计算函数
f(x)?x2?x3
在区间[0,0.6]上的弧长s. 二 算法原理 对于积分
I??f?x?dx
ab数值方法的基本思想是用被积函数f?x?在某些节点xk处所对应的函数值做线性组合
In??Akf?xk?
k?0n来做近似。我们可以从不同角度来构造就求积公式,常用的方法是利用插值多项式
Ln?f?x?
来获得求积公式(称之为差值型求积)。
Newton-Cotes公式是在等距节点下的特殊插值型求积公式,但做实际计算时,往往出现数值不稳定,精度难以保证,所以采用复合求积法。低级复合求积法是把积分区间?a,b?分成若干小区间,分别在每一个小区间上用基本公式(如低阶的N-C公式:梯形,Simpson,cotes公式等)做近似,然后求和,从而导出求定积分的数值公式。
b?a 一般在[a,b]上n等分,取步长h?,节点xk?a?kh,每个小区间
n[xi,xi?1]上用梯形公式
hf(x)dx?[f(xi)?f(xi?1)],, ?xi2根据积分区间的可加性的复合梯形求积公式为
xi?1n?1hn?1hTn??[f(xi)?f(xi?1)]?[f(a)?2?f(xk)?f(b)],
2k?02k?1然后计算可得答案
三 变量说明
a:存放区间下限 b:存放区间上限
f[x]:存放被积分函数
f?x??x2?x3
h:存放节点步长
n:存放复合梯形公式的节点等分次数 s:存放弧长 四 源程序代码 #include\#include\main () {
int n=8,k;
double a=0,b=0.6; double x,s;
double h=(b-a)/8; double f[9]; double s1=0;
for(k=0;k<=8;k++) {
x=a+k*h;
f[k]=sqrt(1+(2*x-3*x*x)*(2*x-3*x*x));
}
for(k=1;k<=7;k++) {
s1=s1+f[k]; }
s=h/2*(f[0]+2*s1+f[8]); printf(\}
五 输出结果 0.619092