- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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++语言基础教程》吕凤
您可能关注的文档
最近下载
- 管材安装合同范本(12篇).docx VIP
- 滇人版 七年级 第九册 第10课 文件合并与超链接课件.pptx VIP
- 古镇商业运营与旅游开发思路.pptx VIP
- 02S515排水检查井图集.pdf VIP
- 标准图集-23S519-小型排水构筑物.pdf VIP
- 形考作业(五)配置DNS服务实训.docx VIP
- 高钾血症应急演练脚本.docx VIP
- xx河防洪治理工程施工组织设计.doc VIP
- 新解读《GB_T 17934.3-2021印刷技术 网目调分色版、样张和生产印刷品的加工过程控制 第3部分:新闻纸冷固型平版胶印》最新解读.pptx VIP
- 简式数控车床使用说明书(中英文).pdf VIP
原创力文档


文档评论(0)