资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
计计算方法算方法 实验报实验报告告学学 院:院: 计计算机学院算机学院 专专 业业: : 计计算机科学与技算机科学与技术术 指指导导教教师师: : 爨爨莹莹 班班级级学号:学号: 201207010229 姓姓 名:名: 图尔荪图尔荪托合提托合提 实验四实验四 数值积分数值积分 1、实验目的、实验目的 1、观察复化梯形公式和复化辛普森公式随区间数 n 增加各自误差的减少规 律;研究广义积分的数值计算如何将其转化为普通积分,再由已有数值积分方 法进行计算 2、利用复化梯形公式和复化辛普森公式计算定积分,编程实现。 2 2、实验要求、实验要求: : 1) 认真分析题目的条件和要求,复习相关的理论知识,选择适当的解决方 案和算法; 2) 编写上机实验程序,作好上机前的准备工作; 3) 上机调试程序,并试算各种方案,记录计算的结果(包括必要的中间结 果) ; 4) 分析和解释计算结果; 5) 按照要求书写实验报告; 3 3、实验内容:、实验内容: 1) 分别用复化梯形公式和复化辛普森公式计算定积分,研究随着 n 增加各自误差的减少规律,取 n=2,4,8,16,精确值为 I=4.006994dxeIx2012) 用复化辛普森公式计算积分。dxxxI10sin3) 附加题:用四阶经典龙格-库塔公式求微分方程初值问题的数值解(取步长 h=0.01):()2 . 00 x0)2 . 0(,493)0(0)293(310022TTTdxdT4 4、题目:、题目:数值积分数值积分 5 5、原理:、原理: (1)复化梯形公式将区间等分成个子区间,,baN,1kkxx) 1, 1 , 0(NkL,在每个区间上用梯形公式Nabh,1kkxx)()(2)(11 kkxxkxfxfhdxxfIkk 相加后得复化梯形公式)()(2)(2)(11bfxfafhdxxfNkkbaNT记为其中。右端记为。khaxk) 1, 1 , 0(NkLNT当时,N )()(21110NkkNkkNhxfhxfTbababadxxfdxxfdxxf)()()(21即收敛于。NTbadxxf)((2)复化辛浦生公式将区间等分成个子区间,每个,baN,222kkxx) 1, 1 , 0(NkL子区间的中点为,子区间长度为,在12 kx) 1, 1 , 0(NkLNabh每个区间上用辛浦生公式,222kkxx)()(4)(6)(22122222 kkkxxkxfxfxfhdxxfIkk 相加后得复化辛浦生公式)()(2)(4)(6)(1121112bfxfxfafhdxxfNkkNkkbaNS记为其中。2hkaxk) 12 , 1 , 0(NkL 6 6、设计思想:、设计思想: 数值积分实际上都是基于插值的,我们算的都是离散的一些个点与点对应的函 数值,于是要求连续的积分是不可能的。 记等距分点 a #include void main() double e=2.718282; double I0,I1,I2,I3;/I0,I1,I2,I3 分别表示函数在(0,2)区间取 2,4,8,16 个点的近似函数值 I0=0.5*(sqrt(2)+2*sqrt(1+e)+sqrt(1+exp(2); I1=0.25*(sqrt(2)+2*sqrt(1+exp(0.5)+2*sqrt(1+e)+2*sqrt(1+exp(1.5) +sqrt(1+exp(2); I2=0.125*(sqrt(2)+2*sqrt(1+exp(0.25)+2*sqrt(1+exp(0.5)+2*sqrt(1+exp(0.75)+2*sqrt(1+exp(1)+2*sqrt(1+exp(1.25) +2*sqrt(1+exp(1.5)+2*sqrt(1+exp(1.75)+sqrt(1+exp(2); I3=0.0625*(sqrt(2)+2*sqrt(1+exp(0.125)+2*sqrt(1+exp(0.25) +2*sqrt(1+exp(0.375)+2*sqrt(1+exp(0.5)+2*sqrt(1+exp(0.625) +2*sqrt(1+exp(0.75)+2*sqrt(1+exp(0.875)+2*sqrt(1+exp(1) +2*sqrt(1+exp(1.125)+2*sqrt(1+exp(1.25)+2*sqrt(1+exp(1.375) +2*sqrt(1+exp(1.5)+2*sqrt(1+exp(1.625)+2*sqrt(1+exp(1.75) +2*sqrt(1+exp(1.875)+sqrt(1+exp(2); printf(“I0=%.6f,I1=%.6f,I2=%.6f,I3=%.6fn“,I0,I1,I2,I3); printf(“精确值 I=4.006994n“); 2)用复化辛普森公式计算积分dxxxI10sin#include #include double trapezia(double a,double b,double (*fun)(double),int n) /梯形法积分子程序 double Tn=0.0; double h; int k; h=(b-a)/n; for(k=1;kn;k+) Tn+=(*fun)(a+k*h); Tn=(*fun)(a)+(*fun)(b)+2*Tn; Tn=h*Tn/2; return Tn; double simpson(double a, double b, double (*fun)(double), int n) /利用梯形法的 simpson 积分子程序 /指向函数的指针做行参 double T2n,Tn; Tn=trapezia(a,b,fun,n); T2n=trapezia(a,b,fun,2*n); /fun 为指针名 return (4*T2n-Tn)/3; double fun1(double x) if (x=0) return 1; else return sin(x)/x; void main() double a=0,b=1,c; int n; /n 为区间数double (* p1)(double);/p 为指针数组,数组中元素为指针,指针类型为 指向函数的指 p0=fun1; /针,0 号未用 printf(“请输入要分的区间数:“); scanf(“%d“, printf(“用复化 simpson 公式积分得: “); c=simpson(a,b,p0,n); printf(“%fn“,c); 8 8、实验结果:、实验结果: 用复化辛普森公式计算积分 =0.946083dxxxI10sin用复化梯形公式和复化辛普森公式计算定积分 如下图:dxeIx2019 9、图形、图形(如果可视化)用复化梯形公式和复化辛普森公式计算定积分 dxeIx201用复化辛普森公式计算积分dxxxI10sin1010、实验体会:实验体会: 通过各种方法进行数值积分,比较计算结果,认识各个方法的区别,通过参考 资料,与同学交流,致使程序调试成功,在以后的实践中,我还会继续加深自 己这方面的能力。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号