资源描述:
《复合梯形公式与复合辛普森公式对比》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、SHANGHAIJIAOTONGUNIVERSITY题目名称:复合梯形公式与复合辛普森公式对比学生姓名:学生学号:班级:学院(系):11目录1.概述32.问题提出43.算法推导54.算法框图64.1复合梯形公式算法流程图64.2复合辛普森公式算法流程图75.MATLAB源程序86.结论与展望9图表目录图41复合梯形公式算法流程图6图42复合辛普森公式算法流程图7图61MATLAB计算结果9表21函数计算结果表4111.概述梯形求积公式和辛普森求积公式分别是牛顿-科斯特公式中n=1和n=2时的情形。其中梯形求积公式可表示为其公式左端是以[a,b]区间
2、上积分,右端为b-a为高、端点函数值为上下底的梯形的面积值,故通称为梯形公式,具有1次代数精确度。类似的,辛普森求积公式可以表示为该公式一般在立体几何中用来求拟柱体的体积,由于偶数n阶牛顿-科特斯求积公式至少具有n+1次代数精确度,所以辛普森公式实际上具有3次代数精确度。由于牛顿-科斯特公式在n≥8时不具有稳定性,故不可能通过提高阶的方法来提高求积精度。为了提高精度通常可把积分区间分成若干子区间(通常是等分),再在每个子区间上用低阶求积公式。这种方法称为复合求积法。本文主要讨论复合梯形公式和复合辛普森公式在同一数学问题中的应用。首先给出了复合梯形公式和复合
3、辛普森公式的推导过程以及其余项的表达形式,然后用流程图的形式介绍算法思路,再运用MATLAB编写代码计算结果,最后对结果进行对比讨论。希望通过两个算法在同一个算例中的应用对比,更好的理解和掌握复合梯形公式和复合辛普森公式的适用范围和适用条件。并且能够熟悉MATLAB编程求解问题的流程,掌握编程化的思想方法。同时对两种方法的计算结果对比分析,讨论两种求积方法的计算精度。111.问题提出对于函数fx=sinxx给出的函数表如下,试用复合梯形公式和复合辛普森公式计算积分I=01sinxxdx。表21函数计算结果表xf(x)011/80.997397867081
4、8221/40.9896158370180923/80.9896158370180921/20.9588510772084065/80.9361556367047403/40.9088516800311127/80.87719257398403110.841470984807897111.算法推导3.1复合梯形公式根据梯形公式,将区间[a,b]划分为n等份,分点xk=a+kh,h=b-an,k=0,1,…,n,在每个子区间[xk,xk+1](k=0,1,…,n-1)上采用梯形公式,则得:记则Tn为复合梯形公式。另外,复合梯形公式的余项可表示为3.2复合辛普
5、森公式根据辛普森公式将区间[a,b]划分为n等份,在每个子区间[xk,xk+1](k=0,1,…,n-1)上采用辛普森公式。若记xk+1/2=xk+12h则得11记该公式即为复合辛普森公式。复合辛普森公式的余项可表示为1.算法框图开始4.1复合梯形公式算法流程图输入区间断点a,b及等分数n求出步长h,各节点xk及相应的函数值f(xk),k=1,2,..n-1各节点函数值f(xk)求和sum,k=1,2,..n-1Tn=h2(fa+fb+sum)输出积分值Tn结束图41复合梯形公式算法流程图114.2复合辛普森公式算法流程图开始输入区间断点a,b及等分数n
6、求出步长h,各节点xk,相邻节点中点xk+1/2及相应的函数值f(xk),f(xk+1/2)k=1,2,..n-1各节点函数值f(xk)求和sum1,各相邻节点中心点函数值f(xk+1/2)求和sum2k=1,2,..n-1Sn=h6(fa+fb+2sum1+4sum2)输出积分值Sn结束图42复合辛普森公式算法流程图111.MATLAB源程序%复合梯形公式及复合辛普森积分公式clearall;formatlong;a=0;b=1;n=8;h=(b-a)/n;%步长fori=1:n+1x(i)=a+(i-1)*h;ifisnan(sin(x(i))/x(
7、i))symst;tmp=limit(sin(t)./t,t,x(i));%当被积函数在某点值不存在时,求其极限y(i)=eval(tmp);elsey(i)=sin(x(i))/x(i);%被积函数求节点的值endend%复合梯形公式及复合辛普森积分公式s1=0;fork=2:ns1=s1+y(k);endT8=h/2*(y(1)+2*s1++y(n+1))%复合辛普森积分公式s2=0;s3=0;fork=2:2:ns2=s2+y(k);endfork=3:2:n-1s3=s3+y(k);endh1=2*h;%注:此时步长是原来的2倍S4=h1/6*(y
8、(1)+4*s2+2*s3+y(n+1))fprintf('梯形积