计算方法实验六-----数值积分_第1页
计算方法实验六-----数值积分_第2页
计算方法实验六-----数值积分_第3页
计算方法实验六-----数值积分_第4页
计算方法实验六-----数值积分_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上山西大学计算机与信息技术学院实验报告姓 名学 号专业班级课程名称计算方法实验日期成 绩指导老师批改日期实验名称实验六 数值积分一 实验目的: 利用复化梯形公式、复化辛普生公式和龙贝格数值积分公式计算的近似值。二 实验方法:(1) 将a,b区间n等分,记分点为,并在每个小区间上应用梯形公式 (2) 在每个小区间上,用辛普生公式 式中为的中点,即(3) 先用梯形公式计算,然后,将求积区间(a,b)逐次折半的方法,令区间长度 计算,式中。 于是,得到辛普生公式。 柯斯特求积公式。 最后,得龙贝格求积公式。 利用上述各公式计算,直到相邻两次的积分结果之差满足精度要求。三 实验

2、内容利用复化梯形公式、复化辛普生公式和龙贝格数值积分公式计算的近似值,要求误差为,将计算结果与精确值比较,并对计算结果进行分析(计算量、误差) 四 实验程序:复合梯形公式:#include <stdio.h>#include <math.h>#define esp 0.5e-7#define a 1 #define b 2 #define c 0#define d 1#define E 2.#define f1(x) (x*pow(E,x) #define f2(x) (4/(1+(x*x) void fun1()int i,n,k=0; double h,q,t,g;

3、 n=1; h=(double)(b-a)/2; t=h*(f1(a)+f1(b); do k+; q=t; g=0; for (i=1;i<=n;i+) g+=f1(a+(2*i-1)*h); t=(q/2)+(h*g); n*=2; h/=2; while (fabs(t-q)>esp); printf("函数1分了%d次:n",k);printf("积分结果为:"); printf("%12.8lfn",t); void fun2()int i,n,k=0; double h,q,t,g; n=1; h=(doubl

4、e)(d-c)/2; t=h*(f2(c)+f2(d); do k+; q=t; g=0; for (i=1;i<=n;i+) g+=f2(c+(2*i-1)*h); t=(q/2)+(h*g); n*=2; h/=2; while (fabs(t-q)>esp);printf("函数2分了%d次:n",k);printf("积分结果为:"); printf("%12.8lfn",t); int main()printf("/*复合梯形公式*/n"); fun1();fun2();return 0;复合

5、辛普生公式代码:#include <stdio.h>#include <math.h>#define esp 0.5e-7#define a 1 #define b 2 #define c 0#define d 1#define E 2.#define f1(x) (x*pow(E,x) #define f2(x) (4/(1+(x*x) void fun1() int i,n,k=0; double f1,f2,f3,h,s0,s; f1=f1(a)+f1(b); f2=f1(double)(b+a)/2); f3=0; s=(double)(b-a)/6)*(f1+

6、4*f2); n=2; h=(double)(b-a)/4; do k+; f2+=f3; s0=s; f3=0; for (i=1;i<=n;i+)f3+=f1(a+(2*i-1)*h); s=(h/3)*(f1+2*f2+4*f3); n*=2; h/=2; while (fabs(s-s0)>esp); printf("函数1分了%d次数:n",k);printf("积分结果为:"); printf("%12.8lfn",s); void fun2() int i,n,k=0; double f1,f2,f3,h,s

7、0,s; f1=f2(d)+f2(c); f2=f2(double)(d+c)/2); f3=0; s=(double)(d-c)/6)*(f1+4*f2); n=2; h=(double)(d-c)/4; do k+; f2+=f3; s0=s; f3=0; for (i=1;i<=n;i+)f3+=f2(c+(2*i-1)*h); s=(h/3)*(f1+2*f2+4*f3); n*=2; h/=2; while (fabs(s-s0)>esp); printf("函数1分了%d次数:n",k);printf("积分结果为:"); pri

8、ntf("%12.8lfn",s); int main()printf("/*复合辛普生公式*/n"); fun1();fun2();return 0;龙贝格数值积分公式代码:#include <stdio.h>#include <math.h>#define esp 0.5e-7#define a 1 #define b 2 #define c 0#define d 1#define E 2.#define f1(x) (x*pow(E,x) #define f2(x) (4/(1+(x*x) double t1100100;d

9、ouble t2100100;void fun1()int n,k,i,m,w=0; double h,g,p; h=(double)(b-a)/2; t100=h*(f1(a)+f1(b); k=1; n=1; do w+; g=0; for (i=1;i<=n;i+) g+=f1(a+(2*i-1)*h); t1k0=(t1k-10/2)+(h*g); for (m=1;m<=k;m+) p=pow(4,(double)(m); t1k-mm=(p*t1k-m+1m-1-t1k-mm-1)/(p-1); m-=1; h/=2; n*=2; k+=1; while (fabs(t

10、10m-t10m-1)>esp); printf("函数1分了%d次:n",w);printf("积分结果为:n"); printf("%12.8lfn",t10m); void fun2() int n,k,i,m,w=0; double h,g,p; h=(double)(d-c)/2; t200=h*(f2(c)+f2(d); k=1; n=1; do w+; g=0; for (i=1;i<=n;i+) g+=f2(c+(2*i-1)*h); t2k0=(t2k-10/2)+(h*g); for (m=1;m<

11、;=k;m+) p=pow(4,(double)(m); t2k-mm=(p*t2k-m+1m-1-t2k-mm-1)/(p-1); m-=1; h/=2; n*=2; k+=1; while (fabs(t20m-t20m-1)>esp); printf("函数2分了%d次:n",w);printf("积分结果为:n"); printf("%12.8lfn",t20m); int main()printf("/*龙贝格数值积分公式*/n"); fun1();fun2();return 0;五、结果分析 复合梯形公式结果截图: 复合辛普生公式结果截图:龙贝格数值积分公式结果截图:六、 结果分析1在求积分时,常把积分区间分成若干小区间,在每个小区间行采用次数不高的求积公式,如梯形、辛普生然后再把它们加起来,得到整个区间上的求积公式,这就是复合求积公式的基本思想。2龙贝格采用了变步长的求解公式,可以根据精度的要求,在计算过程中适当调整步长,使计算结果逐步逼近精确值,但是近似值序列收敛于积分精确值的速度较慢。3复化梯形公式、复化辛普生公式和龙贝格数值积分公式都有着较高的精度,其中龙贝格数值积分公式精度基本上是最高的。而在对积分区间作同样的分割的条件下,复合

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论