首页 热点专区 小学知识 中学知识 出国留学 考研考公
您的当前位置:首页正文

实验四 复合辛普森公式

2021-04-03 来源:要发发知识网
实验四 复合辛普森公式

一、实验目的

1、理解复合辛普森公式的方法原理; 2、利用复合辛普森公式计算积分。

二、实验步骤

1.算法原理 复合辛普森原理:

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

xk12xk1h,则得 2 Ibaf(x)dxf(x)dx

k0n1hn1 [f(xk)4f(xk12)f(xk)]Rn(f).

6k0记

hn1 Sn[f(xk)4f(xk12)f(xk)]

6k0n1n1h [f(a)4f(xk12)2f(xk)f(b)],

6k0k1称为复合辛普森求积公式,其余项为

hh4n1(4)()f(k),k(xk,xk1). Rn(f)ISn1802k0于是当f(x)C[a,b]时,与复合梯形公式相似有 Rn(f)ISn44bah4(4)()f(),(a,b) 1802易知误差阶为h,收敛性是显然的,实际上,只要f(x)C[a,b]则可得到收敛性,即 limSnnbaf(x)dx

此外,由于Sn中求积公系数均为正数,故知辛普森公式计算稳定。 2.算法步骤

复合辛普森:

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

xk12xk

1h,则得 2n1n1hn1hSn[f(xk)4f(xk12)f(xk)][f(a)4f(xk12)2f(xk)f(b)]

6k06k0k1 3.程序流程图

开始 输入数据a,b,n k0,hba , xkakhn n1hn1hTn[f(xk)f(xk1)][f(a)2f(xk)f(b)]2k02k1n1n1hSn[f(a)4f(xk12)2f(xk)f(b)], 6k0k1R1ITn ,R2ISn kk1 输出R1,R2结束

三.程序代码

#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; 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);

/*用t1代替s1*/ printf(\"s=%lf\\n\ getch(); return 0; }

四、心得体会

通过本次试验,我理解复合辛普森公式的方法原理,并且能利用复合辛普森公式计算积分,在数值分析的理论知识上又有了较大的收获,在进行编程的过程中,我已经基本熟练了数值算法的程序过程,能独立的在有限的时间内完成,这对以后的学习会有很大的帮助。

因篇幅问题不能全部显示,请点此查看更多更全内容