复合辛普森公式
实验5 复合辛普森公式
李涛 201226100108 计自1201
一、实验目的
48-42101,cosxdx,使误差不超过(注意所给积分特点,, 用复合辛普森公式计算积分,0
做出相应的处理后再计算)
二、实验步骤
1.算法原理
复合辛普森原理:
将区间划分为n等分,在每个子区间上采用辛普森公式,若记,,x,x[a,b]kk,1
1则得 x,x,h,k,12k2
n,1bI,f(x)dx,f(x)dx, ,,ak,0
n,1h,[f(x),4f(x),f(x)],R(f)., ,kkkn,126k,0
记
n,1hS,[f(x),4f(x),f(x)], ,nkk,12k6k,0
n,1n,1h,[f(a),4f(x),2f(x),f(b)],, ,,k,12k6k,0k,1称为复合辛普森求积公式,其余项为
n,1hh4(4)R(f),I,S,,()f(,),,,(x,x)., ,nnkkkk,11802k,0
4于是当时,与复合梯形公式相似有 f(x),C[a,b]
b,ah4(4) , R(f),I,S,,()f(,),,,(a,b)nn1802
4易知误差阶为,收敛性是显然的,实际上,只要则可得到收敛性,即 hf(x),C[a,b]
b, limS,f(x)dxn,an,,
此外,由于中求积公系数均为正数,故知辛普森公式计算稳定。 Sn
2.算法步骤
复合辛普森:
首先将区间划分为n等分,在每个子区间上采用辛普森公式,若记,,x,x[a,b]kk,1
1则得 x,x,h,k,12k2
n,1n,1n,1hhS,[f(x),4f(x),f(x)],[f(a),4f(x),2f(x),f(b)] ,,,nkk,12kk,12k66k,0k,0k,1
算法过程:
这里将辛普森公式写为Sn()函数,然后在Solve()函数里依次计算S1,S2,S4,S6.......当相
邻的精度小于eps时退出循环,则S2n保存结果。
三.程序代码
#include
#include
#define eps 1e-6
using namespace std;
double f(double x){
return sqrt(1+cos(x)*cos(x)); }//被积函数
double Sn(double a,double b,double n){
double h=(a+b)/(2*n);
double sum=0;
for(int k=1;k<=n;k++){
sum+=2*f(a+(2*k-1)*h);
sum+=f(a+2*k*h);
}
sum=(sum*2+f(a)-f(b))*h/3;
return sum;
}//辛普森公式
double Solve(double a,double b){
int i=1;
double S1n=Sn(a,b,i);
double S2n=Sn(a,b,2*i);
while(fabs(S1n-S2n)>eps){
cout<<"n = "<
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
, 当eps设为10^-4时计算结果为58.4708 [错的] , 当eps设为10^-5时计算结果为58.4706 [错的] , 当eps设为10^-6时计算结果为58.4705 [考虑假收敛后结果] 此外根据第三次计算结果可以发现当n=42时已经满足10^-4的精度要求,所以第一次和第二次计算都不能达到精度要求。
五、心得体会
通过本次试验,我理解复合辛普森公式的方法原理,并且能利用复合辛普森公式计算积分,在数值分析的理论知识上又有了较大的收获,在进行编程的过程中,我已经基本熟练了数值算法的程序过程,能独立的在有限的时间内完成,这对以后的学习会有很大的帮助。