变步长辛卜生求积法 高级语言课程设计.docVIP

变步长辛卜生求积法 高级语言课程设计.doc

  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文档。上传文档
查看更多
变步长辛卜生求积法 高级语言课程设计

高级语言课程设计 ——simpson积分公式 班级:信息与计算科学(2003070201~3) 小组成员: 宋亚东 200307020126 周晓春 200307020116 瞿子易 200307020335 指导教师:王玉兰 2005年1月12日 算法原理: 辛卜生积分是一个数值积分,所求的值是近似值。 变步长辛卜生(Simpson)积分求积法是计算定积分 S=∫abf(x)dx的经典方法,其计算步骤如下: 用梯形公式计算Tn=h[f(a)+f(b)]/2,其中n=1,h=b-a,且Sn=Tn。 用变步长梯形法则计算 T2n=1/2Tn+h/2∑f(xk+h/2) 用辛卜生求积公式计算 S2n=(4T2n-Tn)/3 若|S2n-Sn |≧ε,则令2n=n,h/2=h,转到步骤(2)继续进行计算;否则结束,S2n即为所求积分的近似值。其中ε为事先给定的求积精度。 设计分析: 由分析可将程序分为运算函数和数值输入输出两部分,其重点应为辛卜生积分公式的算法实现。 首先建立一个类函数,其中包括函数的运算对象及其基本运算,然后构造关于梯形计算公式的运算函数。最后构造关于辛卜生计算公式的函数,根据原理中|S2n-Sn|与ε的关系(ε为给定的精度),可以确定一个while函数,设计积分数值的精度与给定精度的关系为判断条件。用for函数计算各部分和,最后求出积分值。 算法实现: #includeiostream using namespace std; #includemath.h class simpsonValue { public: double x_lowValue,x_highValue,epsValue; simpsonValue(double x_lowInitialValue,double x_highInitialValue,double epsInitialValue) { x_lowValue=x_lowInitialValue; x_highValue=x_highInitialValue; epsValue=epsInitialValue; } double Func(double x) { return 1+x+x*x; } double getResults() { int n,k; n=1; double h,T1,T2,S1,S2,ep,p,xValue; h=x_highValue-x_lowValue; T1=h*(Func(x_lowValue)+Func(x_highValue))/2.0; S1=T1; ep=epsValue+1.0; while(epepsValue) { p=0.0; for(k=0;k=n-1;k++) { xValue=x_lowValue+(k+0.5)*h; p=p+Func(xValue); } T2=(T1+h*p)/2.0; S2=(4.0*T2-T1)/3.0; ep=fabs(S2-S1); T1=T2; S1=S2; n=n+n; h=h/2.0; } return S2; } }; void main() { double x_low,x_high,eps; coutenter the double x_low number:; cinx_low; coutenter the double x_high number(the number you enterd should be greater than x_low):; cinx_high; coutenter the double-type ε :; cineps; simpsonValue myResult(x_low,x_high,eps); double results=myResult.getResults(); coutthe result is : results endl; } 结果分析: 可以改变ε的精度来得到所想要的积分值的精度,同时,可以改变|4T2n-Tn|/3为|6T2n-Tn|/5,|8T2n-Tn|/7……,增加积分值的精度。 设计体会: 通过此次大家的共同合作,对程序设计有了初步的认识。对于数学方法在设计中的运用有了一定的掌握。对于C++类的定义的便捷感到很实用。也感受到同事之间的默契和相互讨论,相互激发的意义。也看到自己许多的不足之处。 参考文献: 《C++语言基础教程》吕凤

文档评论(0)

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

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

1亿VIP精品文档

相关文档