欢迎来到天天文库
浏览记录
ID:25610886
大小:60.50 KB
页数:4页
时间:2018-11-21
《变步长辛卜生求积法 高级语言课程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、高级语言课程设计——simpson积分公式班级:信息与计算科学(2003070201~3)小组成员:宋亚东200307020126周晓春200307020116瞿子易200307020335指导教师:王玉兰2005年1月12日算法原理:辛卜生积分是一个数值积分,所求的值是近似值。变步长辛卜生(Simpson)积分求积法是计算定积分S=∫abf(x)dx的经典方法,其计算步骤如下:1)用梯形公式计算Tn=h[f(a)+f(b)]/2,其中n=1,h=b-a,且Sn=Tn。2)用变步长梯形法则计算T2n=1/2Tn+h/2∑f(xk
2、+h/2)3)用辛卜生求积公式计算S2n=(4T2n-Tn)/3若
3、S2n-Sn
4、≧ε,则令2n=n,h/2=h,转到步骤(2)继续进行计算;否则结束,S2n即为所求积分的近似值。其中ε为事先给定的求积精度。设计分析:由分析可将程序分为运算函数和数值输入输出两部分,其重点应为辛卜生积分公式的算法实现。首先建立一个类函数,其中包括函数的运算对象及其基本运算,然后构造关于梯形计算公式的运算函数。最后构造关于辛卜生计算公式的函数,根据原理中
5、S2n-Sn
6、与ε的关系(ε为给定的精度),可以确定一个while函数,设计积分数值的精度与给
7、定精度的关系为判断条件。用for函数计算各部分和,最后求出积分值。算法实现:#includeusingnamespacestd;#includeclasssimpsonValue{public:doublex_lowValue,x_highValue,epsValue;simpsonValue(doublex_lowInitialValue,doublex_highInitialValue,doubleepsInitialValue){x_lowValue=x_lowInitialValue;
8、x_highValue=x_highInitialValue;epsValue=epsInitialValue;}doubleFunc(doublex){return1+x+x*x;}doublegetResults(){intn,k;n=1;doubleh,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(ep>epsValue){p
9、=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;}returnS2;}};voidmain(){doublex_low,x_high,eps;cout<<"enterthedoublex_lownumber:";cin>>x_low;cout<<"enterthedoublex_high
10、number(thenumberyouenterdshouldbegreaterthanx_low):";cin>>x_high;cout<<"enterthedouble-typeε:";cin>>eps;simpsonValuemyResult(x_low,x_high,eps);doubleresults=myResult.getResults();cout<<"theresultis:"<11、4T2n-Tn12、/3为13、14、6T2n-Tn15、/5,16、8T2n-Tn17、/7……,增加积分值的精度。设计体会:通过此次大家的共同合作,对程序设计有了初步的认识。对于数学方法在设计中的运用有了一定的掌握。对于C++类的定义的便捷感到很实用。也感受到同事之间的默契和相互讨论,相互激发的意义。也看到自己许多的不足之处。参考文献:《C++语言基础教程》吕凤翥编著《科学与工程数值算法(VisualC++版)》
11、4T2n-Tn
12、/3为
13、
14、6T2n-Tn
15、/5,
16、8T2n-Tn
17、/7……,增加积分值的精度。设计体会:通过此次大家的共同合作,对程序设计有了初步的认识。对于数学方法在设计中的运用有了一定的掌握。对于C++类的定义的便捷感到很实用。也感受到同事之间的默契和相互讨论,相互激发的意义。也看到自己许多的不足之处。参考文献:《C++语言基础教程》吕凤翥编著《科学与工程数值算法(VisualC++版)》
此文档下载收益归作者所有