1、实验四 复合辛普森公式一、实验目的1、理解复合辛普森公式的方法原理;2、利用复合辛普森公式计算积分。二、实验步骤 1.算法原理复合辛普森原理: 将区间划分为n等分,在每个子区间上采用辛普森公式,若记则得 记 称为复合辛普森求积公式,其余项为 于是当时,与复合梯形公式相似有 易知误差阶为,收敛性是显然的,实际上,只要则可得到收敛性,即 此外,由于中求积公系数均为正数,故知辛普森公式计算稳定。 2.算法步骤复合辛普森: 首先将区间划分为n等分,在每个子区间上采用辛普森公式,若记则得 3.程序流程图开始输入数据a,b,n , 结束 ,输出 三.程序代码#include#include#include
2、#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; /*用t1代替s1*/ e=eps+1.0; while(e=eps)
3、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,&a,&b); s=bsimpson(a,b); printf(s=%lfn,s); getch(); return 0;四、心得体会通过本次试验,我理解复合辛普森公式的方法原理,并且能利用复合辛普森公式计算积分,在数值分析的理论知识上又有了较大的收获,在进行编程的过程中,我已经基本熟练了数值算法的程序过程,能独立的在有限的时间内完成,这对以后的学习会有很大的帮助。