重庆邮电大学数值计算课程设计213273张云华213348刘贞宇.docx
- 文档编号:3289345
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:12
- 大小:271.65KB
重庆邮电大学数值计算课程设计213273张云华213348刘贞宇.docx
《重庆邮电大学数值计算课程设计213273张云华213348刘贞宇.docx》由会员分享,可在线阅读,更多相关《重庆邮电大学数值计算课程设计213273张云华213348刘贞宇.docx(12页珍藏版)》请在冰豆网上搜索。
重庆邮电大学数值计算课程设计213273张云华213348刘贞宇
重庆邮电大学设计成绩:
20**级数理大类
《数值计算方法》课程设计
姓名:
张云华刘贞宇
班级:
11012011101201
学号:
20**21327320**213348
设计时间:
20**.12.27
指导教师:
尹龙军
目录
1.课程设计目的………………………………………………3
2.课程设计题目………………………………………………3
3.理论知识和算法……………………………………………3
4.VC代码及计算结果截屏…………………………………4
5.求解结果的分析和结论……………………………………9
6.课程设计的总结与体会………………………………………10
1、课程设计目的
1)学会用数值积分避开求f(x)的原函F(x)的繁琐步骤,并可以有效的控制结果。
2)在某些求积函数中,用数值积分求解一些原函数F(x)不能用初等函数表示成有限形式。
3)熟练掌握用复化梯形法,复化辛甫生法和龙贝格法求解积分。
4)编程实现复化梯形法,复化辛甫生以及龙贝格算法对积分的计算。
二、课程设计内容(题目)
数值积分收敛速度的比较
分别按下述计算方案求积分
的近似值,并列表给出对分节点的积分值,从而比较其收敛速度。
积分的准确值为:
方案I 复化梯形法
方案II 复化辛甫生法
方案III 龙贝格算法
3、问题的分析(含涉及的理论知识、算法等)
1)复化梯形公式:
把积分区间[a,b]等分为m个小区间,令步长h=
,求积节
i=0,,1,2…m,等距节点复化梯形公式为
先分段,通过避开直接算积分的繁琐步骤,直接计算函数值,再通过复化梯形公式求得积分的近似值,当n达到一定程度时,所得的结果就近似等于积分的值了.
计算步骤:
算出f(a),f(b)以及f(xk)相应的值,将所有值相加后乘以h/2.即得到积分的值
2)复化辛甫生公式:
将区间[a,b]分成n等分,每等分称为一个子区间,其长度为h=(b-a)/n,分点为xk=a+kh,k=0,1,2,....即a=x0 记子区间[xk,xk+1]的中点为xk+1/2,即xk+1/2=(xk+xk+1)/2=xk+h/2(k=0,1,2,...,n-1) 复化辛甫生公式 和复化梯形公式的算法类似,依次算出函数的值,最后得出积分的近似值,当n较大时,结果近似等于积分的值. 3)龙贝格算法 1.算出f(a)和f(b),根据数值计算方法教材公式5.26计算T1; 2.将[a,b]分半,算出f((a+b)/2)后,根据公式5.26计算T2;; 3.再将区间分半,算出f(a+(b-a)/4)及f(a+3*(b-a)/4),并根据公式5.26计算T4. 4.将区间再次分半,计算T8. 5.将区间再次分半,类似上述过程计算T16. 4、计算过程(含涉及编写的程序、运行环境、计算结果截屏等) 流程图1复化梯形公式 k++ 是 否 图1: 复化梯形公式计算结果1 图2: 复化梯形公式计算结果2 辛甫生公式复化求积: 流程图2复化辛普森公式 是k++ 图3复化辛普森公式计算结果 图4龙贝格算法计算结果 5、问题求解结果的分析与结论 三种算法对分节点的积分值表 表1三种算法对分节点的积分值表 复化梯形公式 复化辛甫生公式 龙贝格算法 n=1 -34.77851492 -11.59283831 -34.77851492 n=2 -17.38925746 -11.98494282 -17.38925746 n=3 -14.35266097 -12.05157185 n=4 -13.33602148 -13.33602148 图5复化辛普森公式收敛 结果分析: 通过计算发现,三种解法中,用复化辛甫生公式计算积分时收敛速度较快,复化梯形公式和龙贝格算法的收敛速度较慢,且后面两者的结果基本一致,但相对来说,龙贝格算法的计算量更少,更加方便.如果用折线图来描述的话,那么辛甫生算法的图像较为平整,变化幅度比较小. 6、课程设计的总结与体会(含每位同学承担的主要工作等) 1)组员分别承担的任务 张云华: 写报告,用复化辛甫生公式计算积分的编程,分别用三种算法计算节点的积分值并完成列表. 心得与体会: 在课程设计的同时不仅巩固了以前所学过的知识,而且可以学到很多在书本上所没有学到过的知识,特别是团队合作能力。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,增强了我们处理问题的能力。 还有只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的掌握,从而提高自己的实际动手能力和独立思考的能力。 刘贞宇: 用复化梯形公式和龙贝格算法计算积分的编程,ppt的制作 心得与体会: 学习必须通过实践,通过实践发现了自己的不足之处,并及时纠正。 在求解过程中也遇到了各种各样的问题,还有在编写程序是要注意代码,要仔细,一个数字弄错了就可能导致运行时结果出错或不合实际。 因此我们应多课外实践来加深我们对课本的理解。 附录: 源代码 复化梯形公式: #include"stdio.h" #include"math.h" voidmain() { intk; doublea,b,n,h,x; doublef,f1,f2,T,F=0.0; printf("请输入abn: "); scanf("%lf%lf%lf",&a,&b,&n); h=(b-a)/n; for(k=1;k { x=a+k*h; f=exp(x)*cos(x); printf("\nf=%0.7f",f); F+=f; printf("\nF=%0.7f",F); } if(a! =0.0) f1=exp(a)*cos(a); else(f1=1.0); printf("\nf1=%0.7f",f1); f2=exp(b)*cos(b); printf("\nf2=%0.7f",f2); T=0.5*h*(f1+2*F+f2); printf("\nT=%0.7f",T); } 复化辛普森公式 #include"stdio.h" #include"math.h" voidmain() { intk; doublea,b,n,h; doublex,f,f1,f2,F1=0.0,F2=0.0,S=0.0; printf("请输入abn: "); scanf("%lf%lf%lf",&a,&b,&n); h=(b-a)/n; for(k=0;k { x=a+k*h+0.5*h; f=exp(x)*cos(x); printf("\nf=%0.7f",f); F1+=f; printf("\nF1=%0.7f",F1); } for(k=1;k { f=0; x=a+k*h; f=exp(x)*cos(x); printf("\nf=%0.7f",f); F2+=f; printf("\nF2=%0.7f",F2); } if(a! =0) f1=exp(a)*cos(a); else(f1=1.0); f2=exp(b)cos(b); S=h/6.0*(f1+4*F1+2*F2+f2); printf("\nS=%0.7f",S); 龙贝格算法: #include #include #definee1e-5 #definea0//积分下限a #defineb3.14159//积分上限b #definef(x)exp(x)*cos(x)//被积函数f(x) doublet[100][100]; intmain() { intn,k,i,m; doubleh,g,p; h=(double)(b-a)/2; t[0][0]=h*(f(a)+f(b)); k=1; n=1; do//Romberg算法 { g=0; for(i=1;i<=n;i++) g+=f((a+((2*i-1)*h))); t[k][0]=(t[k-1][0]/2)+(h*g); for(m=1;m<=k;m++) { p=pow(4,(double)(m)); t[k-m][m]=(p*t[k-m+1][m-1]-t[k-m][m-1])/(p-1); } m-=1; h/=2; n*=2; k+=1; } while(fabs(t[0][m]-t[0][m-1])>e);//自定义误差限e printf("%.8lf",t[0][m]); return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 重庆 邮电大学 数值 计算 课程设计 213273 张云华 213348 刘贞宇