复化梯形求积公式.doc

上传人:新** 文档编号:547969707 上传时间:2023-01-05 格式:DOC 页数:6 大小:315.13KB
返回 下载 相关 举报
复化梯形求积公式.doc_第1页
第1页 / 共6页
复化梯形求积公式.doc_第2页
第2页 / 共6页
复化梯形求积公式.doc_第3页
第3页 / 共6页
复化梯形求积公式.doc_第4页
第4页 / 共6页
复化梯形求积公式.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《复化梯形求积公式.doc》由会员分享,可在线阅读,更多相关《复化梯形求积公式.doc(6页珍藏版)》请在金锄头文库上搜索。

1、第二章 1.1复合梯形求积公式 复合梯形求积公式是复合求积法的一种,在本章中,将从其原理、概念等方面对它做一个详细介绍。在本章的最后,会对复合梯形求积法进行程序设计,使得可以从不同的方面对这种方法有更深的理解。1.1.1 复合梯形求积公式的理论当积分区间a,b的长度较大,而节点个数固定时,直接使用Newton-Cotes公式的余项将会较大。但是如果增加节点个数,即增加时,公式的舍入误差又很难得到控制。为了提高公式的精度,又使算法简单易行,往往使用复化方法。即将积分区间分成若干子区间,然后在每个小区间上使用低阶Newton-Cotes公,最后将每个小区间上的积分的近似值相加,这就叫做复合求积法。

2、而复合梯形求积公式就是复合求积法的一种。1.1.2复合求积公式的原理 将区间划分为n等分,分点在每个子区间上采用梯形公式,则得 记, (1.1)称为复合梯形公式,其余项可由得 由于且 所以使 于是复合梯形公式的余项为 可以看出误差是阶,且由式立即得到,当时,则 即复合梯形公式是收敛的.事实上只要设,则可得收敛性,只要把改写成为 当时,上式右端括号内的两个和式均收敛到积分,所以复合梯形公式(1.1)收敛.此外,的求积系数为正,由定理可知复合梯形公式是稳定的。1.2 复合梯形求积公式的实例如果在区间(a,b)上直接应用梯形公式则可得:若在区间(,b)中,增加一个结点,则把区间(分成两个小区间与,在

3、两个小区间上分别应用梯形公式,然后相加就会得出新的求积公式T2:(其中) 继续增加结点,把区间分成4等分,在每个小区间上分别应用梯形公式后再相加,就会得出新的求积公式: 其中同理,把区间(a,b)分成8等分时,可得求积公式T8: 上面我们将区间分成等分,是为了在计算后面的数值时,充分利用到前面的数据。在一般情况下,若把区间(分成n等分,记结点为,在每一个小区间xk,xk1上应用梯形公式,则有: 就可导出复合梯形公式 利用梯形公式的余项公式(5.2.3),可得复合梯形公式的截断误差为: 例1 利用复合梯形公式计算积分:该积分的精确值是。此时,下面分别用T1、T2、T4、T8进行计算。函数f(x)

4、4/(1x2)在各结点上的值可列表如下:01/82/83/84/84.000003.938463.764703.506853.200005/86/87/812.876402.560002.265492.00000 T8与准确值之间的误差为:即T8只有三位有效数字。如果要求误差不超过,就必须对函数f(x)4/(1x2)的二阶导数在区间0,1上的最大值作出估计。因为:,可见在区间0,1上是单调增函数,(0)8,(1)0,因此,M8,则Tn的截断误差为:R(Tn)若要求,即,则817。由这个例题可以看出,梯形公式的精确度比较低,收敛也比较慢,因此,梯形公式并不直接用来计算积分,而是为其它的积分法(如

5、龙贝格积分法)提供初始数据,在那里,由梯形公式得出的这些不够准确的近似值,将被一些简单的运算加工后变得非常准确。1.3复合梯形求积公式算法的程序设计一 实验内容 用复合梯形公式计算函数在区间0,0.6上的弧长s.二 算法原理 对于积分数值方法的基本思想是用被积函数在某些节点处所对应的函数值做线性组合 来做近似。我们可以从不同角度来构造就求积公式,常用的方法是利用插值多项式 来获得求积公式(称之为差值型求积)。 Newton-Cotes公式是在等距节点下的特殊插值型求积公式,但做实际计算时,往往出现数值不稳定,精度难以保证,所以采用复合求积法。低级复合求积法是把积分区间分成若干小区间,分别在每一

6、个小区间上用基本公式(如低阶的N-C公式:梯形,Simpson,cotes公式等)做近似,然后求和,从而导出求定积分的数值公式。 一般在a,b上n等分,取步长,节点,每个小区间,上用梯形公式,根据积分区间的可加性的复合梯形求积公式为然后计算可得答案三 变量说明a:存放区间下限b:存放区间上限fx:存放被积分函数h:存放节点步长n:存放复合梯形公式的节点等分次数s:存放弧长四 源程序代码 #includestdio.h#includemath.hmain ()int n=8,k;double a=0,b=0.6;double x,s;double h=(b-a)/8;double f9;double s1=0;for(k=0;k=8;k+)x=a+k*h; fk=sqrt(1+(2*x-3*x*x)*(2*x-3*x*x);for(k=1;k=7;k+)s1=s1+fk;s=h/2*(f0+2*s1+f8);printf(%fn,s);五 输出结果 0.619092

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号