数值计算方法实验3..docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数值计算方法实验3.

实验报告 学院(系)名称: 姓名 学号 专业 班级 实验项目 数值积分 课程名称 数值计算方法 课程代码 实验时间 实验地点 批改意见: 成绩 教师签字: 实验目的: 编写变步长的梯形法则及龙贝格方法等算法程序,上机调试通过。 实验环境: 硬件环境:IBM-PC或兼容机 软件环境:Windows操作系统 编程语言:C语言 实验内容: 用变步长梯形法求下列积分,使精确度达到10-4 利用龙贝格积分法计算,使精确度达到10-4 实验步骤: 变步长梯形法的步骤。 思想:将区间逐次对分进行计算,用前后两次计算的结果进行估计,若合乎精度要求,就停止计算;否则再次对分,重复以上计算过程,直至达到精度要求为止。 变步长梯形求积法的实现 1.设将区间[a, b] n等分,共有n + 1个分点,按复化梯形公式计算Tn,需要计算n + 1个f (x)的值 2.如果将求积区间再次对分,若仍然直接用复化梯形公式计算二分后的积分值T2n ,则需要计算2n+1个f(x) 的值 T2n 的全部分点中有n + 1个是二分前原有的点 每个小区间[xk , xk+1]经过二分再增加一个新分点 后,用复化梯形公式求得该区间上的积分值为 实验结果: 3.T2n 的全部分点中有n + 1个是二分前原有的点 4.每个小区间[xk , xk+1]经过二分再增加一个新分点 后,用复化梯形公式求得该区间上的积分值为 5.对区间[a, b]因此有 6.前一项Tn是二分前的积分值,后一项只涉及二分时新增加的分点 ,所要计算f 值的次数为n 7.递推公式由于避免了老节点的重复计算,而使计算量减少了一半 龙贝格积分法的步骤。 将积分区间分成n等份和2n等份时,求得积分近似值Tn和T2n,则有误差估计式 积分近似值T2n的误差大致等于 与T2n之和比T2n更接近于真值I 可以得到一种更好的计算积分的公式 实验结果: 变步长梯形法 输入积分区间和精度后,输出结果3.141582,根据精度要求,最终结果为:3.1416 龙贝格积分法 输入积分区间和精度后,输出结果为0.459698,根据精度要求,最终结果为:0.4597 变步长梯形法的流程图: 龙贝格积分法的流程图: 附录(源程序及运行结果): 变步长梯形法 #includestdio.h #includemath.h double f(double x){return 4/(1+x*x);} void main(){ double a,b,h,T1,T2,e,S,x; printf(请输入区间a和b:); scanf(%lf,%lf,a,b); printf(精度:); scanf(%lf,e); h=b-a; T2=h/2*(f(a)+f(b)); do{ T1=T2; S=0; x=a+h/2; do{ S=S+f(x); x=x+h; }while(xb); T2=T1/2+h*S/2; h=h/2; }while(fabs(T2-T1)=e); printf(用变步长梯形法输出T2:%lf\n,T2); } 运行结果: 龙贝格积分法 #includestdio.h #includemath.h double f(double x){return sin(x);} void main(){ double a,b,h,T1,T2=1,e,S,S1,S2=1,x,C1,C2,R1=0,R2=1; printf(请输入区间a和b:); scanf(%lf,%lf,a,b); printf(精度:); scanf(%lf,e); h=2*(b-a); T2=(b-a)/2*(f(a)+f(b)); int k=0; while(fabs(R2-R1)=e){ k=k+1; h=h/2; T1=T2; S1=S2; S=0; x=a+h/2; do{S=S+f(x); x=x+h; }while(xb); T2=T1/2+h/2*S; S2=T2+(T2-T1)/3; if(k==1){continue;} C2=S2+(S2-S1)/15; if(k==2){C1=C2;continue;} R2=C2+(C2-

文档评论(0)

stzs + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档