SHANGHAI JIAO TONG UNIVERSITY 题目名称:复合梯形公式与复合辛普森公式对比 学生姓名: 学生学号: 班级: 学院(系): 1 目录 1. 2. 3. 4. 概述 .............................................................................................................. 3 问题提出 ...................................................................................................... 4 算法推导 ...................................................................................................... 5 算法框图 ...................................................................................................... 6 4.1 复合梯形公式算法流程图...................................................................... 6 4.2 复合辛普森公式算法流程图................................................................. 7 5. 6. MATLAB 源程序 ......................................................................................... 8 结论与展望 .................................................................................................. 9 图表目录 图4-1 复合梯形公式算法流程图 ...................................................................... 6 图4-2 复合辛普森公式算法流程图 .................................................................. 7 图6-1 MATLAB 计算结果 .................................................................................. 9 表2-1 函数计算结果表 ....................................................................................... 4 2 1. 概述 梯形求积公式和辛普森求积公式分别是牛顿-科斯特公式中 n=1 和n=2 时的 情形。其中梯形求积公式可表示为 b?a ( f (a) ? f (b)) 2 ? b a f ( x)dx ? 其公式左端是以[a,b]区间上积分,右端为 b-a 为高、端点函数值为上下底的 梯形的面积值,故通称为梯形公式,具有 1 次代数精确度。 类似的,辛普森求积公式可以表示为 S? b?a a ?b [ f (a) ? 4 f ( ) ? f (b)] 6 2 该公式一般在立体几何中用来求拟柱体的体积,由于偶数 n 阶牛顿-科特斯求 积公式至少具有 n+1 次代数精确度,所以辛普森公式实际上具有 3 次代数精确 度。 由于牛顿-科斯特公式在 n≥8 时不具有稳定性,故不可能通过提高阶的方法 来提高求积精度。 为了提高精度通常可把积分区间分成若干子区间 (通常是等分) , 再在每个子区间上用低阶求积公式。这种方法称为复合求积法。 本文主要讨论复合梯形公式和复合辛普森公式在同一数学问题中的应用。 首 先给出了复合梯形公式和复合辛普森公式的推导过程以及其余项的表达形式, 然 后用流程图的形式介绍算法思路,再运用 MATLAB 编写代码计算结果,最后对 结果进行对比讨论。 希望通过两个算法在同一个算例中的应用对比, 更好的理解和掌握复合梯形 公式和复合辛普森公式的适用范围和适用条件。并且能够熟悉 MATLAB 编程求 解问题的流程,掌握编程化的思想方法。同时对两种方法的计算结果对比分析, 讨论两种求积方法的计算精度。 3 2. 问题提出 对于函数f x = 式计算积分I = 给出的函数表如下,试用复合梯形公式和复合辛普森公 1 0 。 表2-1 函数计算结果表 x 0 1/8 1/4 3/8 1/2 5/8 3/4 7/8 1 f(x) 1 0.997397867081822 0.989615837018092 0.989615837018092 0.958851077208406 0.936155636704740 0.908851680031112 0.877192573984031 0.841470984807897 4 3. 算法推导 3.1 复合梯形公式 根据梯形公式, ? b a f ( x)dx ? b?a ( f (a) ? f (b)) 2 ? 将区间[a, b]划分为 n 等份,分点 = + ?,h = ,k = 0,1, … , n,在每个子区 间[ , +1 ](k = 0,1, … , n ? 1)上采用梯形公式,则得: I ? ? f ( x)dx ? ? f ( x)dx ? b a k ?0 n ?1 h n?1 ?[( f ( xk ) ? f ( xk ?1 )] ? Rn ( f ) 2 k ?0 记Tn ? n ?1 h n?1 h [ f ( x ) ? f ( x )] ? [ f ( a ) ? 2 f ( xk ) ? f (b)] ? k ? k ?1 2 k ?0 2 k ?1 则T 为复合梯形公式。 另外,复合梯形公式的余项可表示为 Rn ( f ) ? ? b?a 2 h f ??(? ) 12 3.2 复合辛普森公式 根据辛普森公式 S? b?a a ?b [ f (a) ? 4 f ( ) ? f (b)] 6 2 将区间[a, b]划分为 n 等份, 在每个子区间[ , +1 ](k = 0,1, … , n ? 1)上采用辛普 森公式。 若记 1 +1/2 = + ? 2 则得 5 I ? ? f ( x )dx ? ? ? a k ?0 b n ?1 xk ?1 xk f ( x )dx ? h n ?1 ? [ f ( xk ) ? 4 f ( xk ?1/ 2 ) ? f ( xk ?1 )] ? Rn ( f ) 6 k ?0 记n?1 n ?1 h Sn ? [ f (a) ? 4? f ( xk ?1/ 2 ) ? 2? f ( xk ) ? f (b)] 6 k ?0 k ?1 该公式即为复合辛普森公式。 复合辛普森公式的余项可表示为 Rn ( f ) ? ? b ? a h 4 (4) ( ) f (? ) 180 2 4. 算法框图 4.1 复合梯形公式算法流程图 开始 输入区间断点 a,b 及等分数 n 求出步长 h, 各节点 及相应的 函数值f(xk ),k=1,2,..n-1 各节点函数值f(xk )求和 sum,k=1,2,..n-1 T = ? ( + + ) 2 输出积分值T 结束 图4-1 复合梯形公式算法流程图 6 4.2 复合辛普森公式算法流程图 开始 输入区间断点 a, b 及等分数 n 求出步长 h, 各节点 , 相邻节点中点 +1/2 及 相应的函数值f(xk ), f(xk+1/2 )k=1,2,..n-1 各节点函数值f(xk )求和 sum1, 各相邻节点中心点函数值f(xk+1/2 )求和 sum2 k=1,2,..n-1 S = ? ( + + 21 + 42) 6 输出积分值S 结束 图4-2 复合辛普森公式算法流程图 7 5. MATLAB 源程序 %复合梯形公式及复合辛普森积分公式 clear all; format long; a=0; b=1; n=8; h=(b-a)/n;%步长 for i=1:n+1 x(i)=a+(i-1)*h; if isnan(sin(x(i))/x(i)) syms t; tmp=limit(sin(t)./t,t,x(i));%当被积函数在某点值不存在时,求其极限 y(i)=eval(tmp); else y(i)=sin(x(i))/x(i);%被积函数求节点的值 end end %复合梯形公式及复合辛普森积分公式 s1=0; for k=2:n s1=s1+y(k); end T8=h/2*(y(1)+2*s1++y(n+1)) %复合辛普森积分公式 s2=0; s3=0; for k=2:2:n s2=s2+y(k); end for k=3:2:n-1 s3=s3+y(k); end h1=2*h;%注:此时步长是原来的 2 倍S4=h1/6*(y(1)+4*s2+2*s3+y(n+1)) fprintf('梯形积分公式:%6.6f\n 辛普森公式积分:%6.6f\n',T8,S4) 8 6. 结论与展望 图6-1MATLAB 计算结果 运行 MATLAB 程序,得到复合梯形求积公式的积分值为 0.945691,复合辛普 森求积公式的积分值为 0.946083(四舍五入后保留 6 位小数) 。而实际的积分准 确值保留到 6 位小数的结果为 0.946083。 通过上述结果对比可以得出, 虽然复合梯形公式将区间分成了 8 等分而复合 辛普森公式将区间分成了 4 等分, 但两种计算方法实际都需要使用 9 个点上的函 数值, 计算量基本也相同, 然而最终精度差别却很大。 在保留 6 位小数的前提下, 复合辛普森法计算结果与精确解完全一致, 而复合梯形公式的计算结果却只有前 两位数字与精确解相同,误差相对比较大。 下面利用余项公式来估计两种算法的误差。首先需要求f x = 数。由于 f ( x) ? 1 sin x ? ? cos( xt )dt , 0 x 的高阶导 所以有 f k ( x) ? ? 1 dk k? (cos xt )dt ? ? t k cos( xt ? )dt , k 0 dx 0 2 1 于是 max f k ( x) ? ? cos( xt ? 0? x ?1 0 1 1 k? k 1 . ) t dt ? ? t k dt ? 0 2 k ?1 从而复合梯形公式的误差 9 R8 ( f ) ? h2 1 1 1 max f ??( x) ? ( ) 2 ? 0.434 ?10?3 . 0 ? x ? 1 12 12 8 3 而复合辛普森公式的误差 R8 ( f ) ? 1 1 41 ( ) ? 0.271?10?6 . 2880 4 5 从而,对比两者可得,复合辛普森公式在计算该问题时的精度远高于复合梯形公 式。 通过以上分析,本文所得结论如下: 1. 复合梯形公式和复合辛普森公式都可以用来作为数值积分估算的替代公式。 2. 在计算量基本相同的前提下,复合辛普森公式计算结果的计算精度要比复合 梯形公式计算精度高的多。 3. 本算例也验证了辛普森公式作为偶数阶牛顿 -柯特斯公式的更为精确的代数 精度。 关于如何开展下一步研究,提出以下构想: 1. 对多个算例进行分析,保证计算量基本相同的情况下去比较计算精度,验证 复合辛普森公式具有更高精度的结论。 2. 对多个算例进行 MATLAB 编程分析,在要求相同计算精度的前提下去比较计 算量的大小,从而分析复合梯形公式与复合辛普森公式的优劣。 10 参考文献 [1]穆耶赛尔·艾合买提,阿布都热西提·阿布都外力. 改进复合梯形求积公式[J]. 首都师 范大学学报(自然科学版),2016,06:1-4. [2]刘智颖,王向公,任威龙,龙耀萍. 辛普森公式的推广形式及应用[J]. 山东理工大学学报 (自然科学版),2014,01:29-31. [3]陈凤忠. 辛普森公式的统一美[J]. 长春理工大学学报(综合版),2005,03:59-60+80. [4]李庆扬, 王能超, 易大义. 数值分析.第5版[M]. 清华大学出版社, 2008,12:106-109. 11