1、实验四 复合辛普森公式一、实验目的1、理解复合辛普森公式的方法原理;2、利用复合辛普森公式计算积分。二、实验步骤1.算法原理复合辛普森原理:将区间 划分为 n 等分,在每个子区间 上采用辛普森公式,若记,ba1,kx则得2121hxkk10)()(nkbadxfxfI).()(4)(61021fRfffhnnk kkk 记1021)()(nk kkkxffxfS,)()(4)(61012nknkbfffafh称为复合辛普森求积公式,其余项为.),(),()2(18)( 1014nk kknn xfhSIfR于是当 时,与复合梯形公式相似有,)(4baCxf),(),2(180)( 4(bafh
2、abSIfnn易知误差阶为 ,收敛性是显然的,实际上,只要 则可得到收敛性,即4h Cxbandf)(lim此外,由于 中求积公系数均为正数,故知辛普森公式计算稳定。nS2.算法步骤复合辛普森:首先将区间 划分为 n 等分,在每个子区间 上采用辛普森公式,若记,ba1,kx则得2121hxkk021)(4)(6nk kkkxffxfS)()(4)(1012nknkbfffafh3.程序流程图开始输入数据 a,b,n )(2)()()21101 nkknkkk bfxfafhxffhT ,)()(4)(60121nknkn fffafS, ,0knabkhxk结束,nTIR1 nSI221,R输
3、 出 21,输 出输出k三.程序代码#include#include#include#define eps 0.000001 /计算精度 float func(double x) /% func- 求积函数(函数文件)while(x=0)return 1;double y;y=(sin(x)/x);return(y);double bsimpson(double a,double b) /% a, b - 求积区间int i,n;double h,p,e,s;double t1,t2,s1,s2,x;n=1;h=b-a;t1=h*(func(a)+func(b)/2.0;s1=t1; /*用
4、t1 代替 s1*/e=eps+1.0;while(e=eps)s=0.0;for(i=0;i=n-1;i+)x=a+(i+0.5)*h;s=s+func(x);t2=(t1+h*s)/2.0;s2=(4*t2-t1)/3.0;e=fabs(s2-s1);t1=t2;s1=s2;n=n+n;h=h/2.0;return(s2);main()double a,b,s;printf(“input a,b=“);scanf(“%lf,%lf“,s=bsimpson(a,b);printf(“s=%lfn“,s);getch();return 0;四、心得体会通过本次试验,我理解复合辛普森公式的方法原理,并且能利用复合辛普森公式计算积分,在数值分析的理论知识上又有了较大的收获,在进行编程的过程中,我已经基本熟练了数值算法的程序过程,能独立的在有限的时间内完成,这对以后的学习会有很大的帮助。