复合辛普森公式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验5 复合辛普森公式

李涛 201226100108 计自1201

一、实验目的

● 用复合辛普森公式计算积分

dx x ⎰

+48

2cos 1,使误差不超过-4

10(注意所给积分特点,

做出相应的处理后再计算)

二、实验步骤 1.算法原理

复合辛普森原理:

将区间],[b a 划分为n 等分,在每个子区间[]1,+k k x x 上采用辛普森公式,若记

,2

1

21h x x k k +

=+则得 ● ∑⎰

-===

1

)()(n k b

a

dx x f dx x f I

● ).()]()(4)([61

21f R x f x f x f h n n k k k k +++=∑-=+

● ∑-=+++=1

1)]()(4)([6n k k k k n x f x f x f h S

● ],)()(2)(4)([6101

1

21∑∑-=-=++++=n k n k k k b f x f x f a f h

称为复合辛普森求积公式,其余项为

● .),(),()2(180)(10

1)

4(4∑-=+∈-

=-=n k k k k k n n x x f h h S I f R ηη

于是当],[)(4

b a C x f ∈时,与复合梯形公式相似有 ● ),(),()2

(180)()

4(4b a f h a b S I f R n n ∈--

=-=ηη 易知误差阶为4

h ,收敛性是显然的,实际上,只要],[)(b a C x f ∈则可得到收敛性,即 ● ⎰

=

→b

a

n n dx x f S )(lim

此外,由于n S 中求积公系数均为正数,故知辛普森公式计算稳定。

2.算法步骤

复合辛普森:

首先将区间],[b a 划分为n 等分,在每个子区间[]1,+k k x x 上采用辛普森公式,若记

,2

1

21h x x k k +

=+则得

∑-=+++=1021)]()(4)([6n k k k k n x f x f x f h S ])()(2)(4)([6101

1

21∑∑-=-=++++=n k n k k k b f x f x f a f h

算法过程:

这里将辛普森公式写为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 = "<

相关文档
最新文档