收藏 分销(赏)

复化梯形求积公式.doc

上传人:pc****0 文档编号:7237105 上传时间:2024-12-28 格式:DOC 页数:6 大小:315.11KB 下载积分:10 金币
下载 相关 举报
复化梯形求积公式.doc_第1页
第1页 / 共6页
复化梯形求积公式.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
第二章 1.1复合梯形求积公式 复合梯形求积公式是复合求积法的一种,在本章中,将从其原理、概念等方面对它做一个详细介绍。在本章的最后,会对复合梯形求积法进行程序设计,使得可以从不同的方面对这种方法有更深的理解。 1.1.1 复合梯形求积公式的理论 当积分区间[a,b]的长度较大,而节点个数固定时,直接使用Newton-Cotes公式的余项将会较大。但是如果增加节点个数,即增加时,公式的舍入误差又很难得到控制。为了提高公式的精度,又使算法简单易行,往往使用复化方法。 即将积分区间分成若干子区间,然后在每个小区间上使用低阶Newton-Cotes公,最后将每个小区间上的积分的近似值相加,这就叫做复合求积法。而复合梯形求积公式就是复合求积法的一种。 1.1.2复合求积公式的原理 将区间划分为n等分,分点 在每个子区间上采用梯形公式,则得 记 , (1.1) 称为复合梯形公式,其余项可由 得 由于 且 所以使 于是复合梯形公式的余项为 可以看出误差是阶,且由 式立即得到,当时,则 即复合梯形公式是收敛的.事实上只要设,则可得收敛性,只要把改写成为 当时,上式右端括号内的两个和式均收敛到积分,所以复合梯形公式(1.1) 收敛.此外,的求积系数为正,由定理可知复合梯形公式是稳定的。 1.2 复合梯形求积公式的实例 如果在区间(a,b)上直接应用梯形公式则可得: 若在区间(,b)中,增加一个结点,则把区间(分成两个小区间与,在两个小区间上分别应用梯形公式,然后相加就会得出新的求积公式T2:(其中) = 继续增加结点,把区间分成4等分,在每个小区间上分别应用梯形公式后再相加,就会得出新的求积公式: 其中 同理,把区间(a,b)分成8等分时,可得求积公式T8: 上面我们将区间分成等分,是为了在计算后面的数值时,充分利用到前面的数据。在一般情况下,若把区间(分成n等分,记结点为,在每一个小区间[xk,xk-1]上应用梯形公式,则有: 就可导出复合梯形公式 利用梯形公式的余项公式(5.2.3),可得复合梯形公式的截断误差为: 例1 利用复合梯形公式计算积分: 该积分的精确值是。此时,下面分别用T1、T2、T4、T8进行计算。函数f(x)=4/(1+x2)在各结点上的值可列表如下: 0 1/8 2/8 3/8 4/8 4.00000 3.93846 3.76470 3.50685 3.20000 5/8 6/8 7/8 1 2.87640 2.56000 2.26549 2.00000 T8与准确值之间的误差为:即T8只有三位有效数字。 如果要求误差不超过,就必须对函数f(x)=4/(1+x2)的二阶导数在区间[0,1]上的最大值作出估计。因为: ,, 可见在区间[0,1]上是单调增函数,(0)=-8,(1)=0,因此,M==8,则Tn的截断误差为:R(Tn)== 若要求≤,即,则817。 由这个例题可以看出,梯形公式的精确度比较低,收敛也比较慢,因此,梯形公式并不直接用来计算积分,而是为其它的积分法(如龙贝格积分法)提供初始数据,在那里,由梯形公式得出的这些不够准确的近似值,将被一些简单的运算加工后变得非常准确。 1.3复合梯形求积公式算法的程序设计 一 实验内容 用复合梯形公式计算函数 在区间[0,0.6]上的弧长s. 二 算法原理 对于积分 数值方法的基本思想是用被积函数在某些节点处所对应的函数值做线性组合 来做近似。我们可以从不同角度来构造就求积公式,常用的方法是利用插值多项式 来获得求积公式(称之为差值型求积)。 Newton-Cotes公式是在等距节点下的特殊插值型求积公式,但做实际计算时,往往出现数值不稳定,精度难以保证,所以采用复合求积法。低级复合求积法是把积分区间分成若干小区间,分别在每一个小区间上用基本公式(如低阶的N-C公式:梯形,Simpson,cotes公式等)做近似,然后求和,从而导出求定积分的数值公式。 一般在[a,b]上n等分,取步长,节点,每个小区间[,]上用梯形公式 , 根据积分区间的可加性的复合梯形求积公式为 然后计算可得答案 三 变量说明 a:存放区间下限 b:存放区间上限 f[x]:存放被积分函数 h:存放节点步长 n:存放复合梯形公式的节点等分次数 s:存放弧长 四 源程序代码 #include"stdio.h" #include"math.h" 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("%f\n",s); } 五 输出结果 0.619092
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服