数值计算方法实验3

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1实验报告学院(系)名称:姓名学号专业班级实验项目数值积分课程名称数值计算方法课程代码实验时间实验地点批改意见:成绩教师签字:实验目的:编写变步长的梯形法则及龙贝格方法等算法程序,上机调试通过。实验环境:硬件环境: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)的值3.T2n的全部分点中有n+1个是二分前原有的点4.每个小区间[xk,xk+1]经过二分再增加一个新分点后,用复化梯形公式求得该区间上的积分值为5.对区间[a,b]因此有6.前一项Tn是二分前的积分值,后一项只涉及二分时新增加的分点,所要计算f值的次数为n7.递推公式由于避免了老节点的重复计算,而使计算量减少了一半二.龙贝格积分法的步骤。1.将积分区间分成n等份和2n等份时,求得积分近似值Tn和T2n,则有误差估计式2.积分近似值T2n的误差大致等于3.与T2n之和比T2n更接近于真值I4.可以得到一种更好的计算积分的公式实验结果:一.变步长梯形法输入积分区间和精度后,输出结果3.141582,根据精度要求,最终结果为:3.1416二.龙贝格积分法输入积分区间和精度后,输出结果为0.459698,根据精度要求,最终结果为:0.459710214dxx10sinxdx)()(2)(4121kkkkxfxfxfhI10101011102)(221)(2)()(4)()(2)(4212121nkknnkknkkkkkknknxfhTxfhxfxfhxfxfxfhT21kx)(3122nnnTTTI)(3122nnnTTTI)(312nnTT)(312nnTTnnnnnTTTTTT3134)(312222变步长梯形法的流程图:龙贝格积分法的流程图:开始读入a,b,εkTbfafhhab1)]()([2,1xhaS2,0xhxSxfS,)(xb?2122TShT2122)(31STTTk=1?1212,2,1SSTThhkk=2122)(151CSSSk=2?12CC=2122)(631RCCCk=3?12RR=|R2-R1|ε?打印R23附录(源程序及运行结果):一.变步长梯形法#includestdio.h#includemath.hdoublef(doublex){return4/(1+x*x);}voidmain(){doublea,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.hdoublef(doublex){returnsin(x);}voidmain(){doublea,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));intk=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-C1)/63;if(k==3){R1=R2;C1=C2;continue;}C1=C2;R1=R2;}printf(%lf,R2);}运行结果:

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功