1、 高级语言课程设计simpson 积分公式班级:信息与计算科学(20030702013)小组成员:宋亚东 200307020126周晓春 200307020116瞿子易 200307020335指导教师:王玉兰2005 年 1 月 12 日算法原理:辛卜生积分是一个数值积分,所求的值是近似值。变步长辛卜生(Simpson)积分求积法是计算定积分S= abf(x)dx 的经典方法,其计算步骤如下:1) 用梯形公式计算 Tn=hf(a)+f(b)/2,其中 n=1,h=b-a,且 Sn=Tn。2) 用变步长梯形法则计算T2n=1/2Tn+h/2f(x k+h/2)3) 用辛卜生求积公式计算 S2n
2、=(4T2n-Tn)/3若|S 2n-Sn |,则令 2n=n,h/2=h,转到步骤(2)继续进行计算;否则结束,S 2n 即为所求积分的近似值。其中 为事先给定的求积精度。设计分析:由分析可将程序分为运算函数和数值输入输出两部分,其重点应为辛卜生积分公式的算法实现。首先建立一个类函数,其中包括函数的运算对象及其基本运算,然后构造关于梯形计算公式的运算函数。最后构造关于辛卜生计算公式的函数,根据原理中|S 2n-Sn|与 的关系( 为给定的精度) ,可以确定一个 while 函数,设计积分数值的精度与给定精度的关系为判断条件。用 for 函数计算各部分和,最后求出积分值。算法实现:#inclu
3、deusing namespace std;#includeclass simpsonValuepublic: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*
4、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;kx_low;coutx_high;couteps;simpsonValue myResult(x_low,x_high,eps);double results=myResult.getResults();cout“the result is : “results“ “endl;结果分析:可以改变 的精度来得到所想要的积分值的精度,同时,可以改变|4T 2n-Tn|/3 为|6T2n-Tn|/5,|8T 2n-Tn|/7,增加积分值的精度。设计体会:通过此次大家的共同合作,对程序设计有了初步的认识。对于数学方法在设计中的运用有了一定的掌握。对于 C+类的定义的便捷感到很实用。也感受到同事之间的默契和相互讨论,相互激发的意义。也看到自己许多的不足之处。参考文献:C+语言基础教程吕凤翥编著科学与工程数值算法(Visual C+版)