高级语言程序C课程数值微分WORD版本.docx
- 文档编号:16615386
- 上传时间:2023-07-15
- 格式:DOCX
- 页数:8
- 大小:40.01KB
高级语言程序C课程数值微分WORD版本.docx
《高级语言程序C课程数值微分WORD版本.docx》由会员分享,可在线阅读,更多相关《高级语言程序C课程数值微分WORD版本.docx(8页珍藏版)》请在冰点文库上搜索。
高级语言程序C课程数值微分WORD版本
高级语言程序C课程数值微分(WORD版本)
数值微分
----《高级语言程序设计》课程设计
指导教师:
***
班级:
06级软件工程3班
成员:
***
***
一、课程设计概述与设计目的
二、概要设计
三、详细设计
四、调试与测试
五、结论与体会
六、源程序清单与执行结果
一、课程设计概述与设计目的
(一).课程设计名称
数值微分
(二).任务要求
对于一些不易按照常规方法求得原函数的微分方程例如:
,利用龙格-库塔公式,经过简单的计算过程求出
的近似值
龙格-库塔公式的形式为:
(三).开发环境
C++是从C语言发展演变而来的,C语言毕竟是一个面向过程的编程语言,因此与其它面向过程的编程语言一样,已经不能满足运用面向对象方法开发软件的需要。
C++便是在C语言基础上为支持面向对象的程序设计而研制的一个通用目的的程序设计语言,它是在1980年由AT&T贝尔实验室的BjarneStroustrup博士创建的。
C++的特点:
全面兼容C,它保持了C的简洁、高效和接近汇编语言等特点,对C的类型系统进行了改革和扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。
同时,用C编写的众多的库函数和实用软件可以用于C++中。
除此之外,C++不仅支持面向过程,又支持面向对象。
(四).设计目的
1.通过课程设计全面掌握《C++语言程序设计》关键知识点,掌握C++语言中的基本知识。
2.通过课程设计了解并掌握C++语言程序设计的方法,熟悉C++程序设计的开发环境及C++程序的调试过程。
3.培养我们查阅参考资料、手册的自学能力,通过独立思考深入钻研有关问题,学会自己分析、解决问题的方法。
二、概要设计
1.程序整体设计流程图
2.主控函数执行流程图
三、详细设计
1.包含加载头文件:
#include
#include
2.运用命名空间usingnamespacestd;
一个软件往往有多个模块组成,其中包括由不同的程序员开发的组件及类库提供的组件,这样不同模块间在对标识符命名时就有可能发生命名冲突,也就是说,在不同的模块中,使用相同的名字表示不同的事物,这样当然会引起程序出错。
而我们使用命名空间,就解决了这个问题。
3.主函数设计:
主函数设计是该程序的一个重要部分。
a.利用工具:
龙格库塔公式,是由doubleRunge_Kuta(double(*f)(doublex,doubley),doublex0,doubley0,doublexn,longstep)来实现。
b.设置运行结果的精度利用cout.precision(10)来实现。
c.通过调用龙格库塔公式求得微分方程值:
for(i=0;i<=10;i++)
{x=x0+i*step;
cout<<"y"<<"("< } d.输出微分方程值: 利用cout语句来输出结果,通过调用龙格库塔公式得出结果。 4.微分方程函数设计: 利用return语句把y’返回到主函数,把题目中微分方程用c++语言实现。 5.龙格库塔公式: 首先定义变量k1,k2,k3,k4,h和结果result.利用if语句根据step的大小选择编译哪条语句: 如果step<=0,直接返回y0的值;如果step==1,直接利用一次龙格库塔公式就可求得微分方程的值;或者0 最后将结果reslut返回到主函数。 四、调试与测试 五、源程序清单和执行结果 (一)源程序清单 #include #include usingnamespacestd; doublef(doubley,doublex)//所求函数 { return((-20)*y+20*sin(x)+cos(x)); } doubleRunge_Kuta(double(*f)(doublex,doubley),doublex0,doubley0,doublexn,longstep)//龙格库塔公式 { doublek1,k2,k3,k4,result; doubleh=(xn-x0)/step; if(step<=0)//首先需要判断步长是否正确 return(y0); if(step==1) { k1=f(x0,y0); k2=f(x0+h/2,y0+h*k1/2); k3=f(x0+h/2,y0+h*k2/2); k4=f(x0+h,y0+h*k3); result=y0+h*(k1+2*k2+2*k3+k4)/6; } else { doublex1,y1; x1=xn-h; y1=Runge_Kuta(f,x0,y0,xn-h,step-1); k1=f(x1,y1); k2=f(x1+h/2,y1+h*k1/2); k3=f(x1+h/2,y1+h*k2/2); k4=f(x1+h,y1+h*k3); result=y1+h*(k1+2*k2+2*k3+k4)/6; } return(result); } intmain() { doublef(doublex,doubley); doublex0=0,y0=1; doublex,step; longi; step=0.1; cout.precision(10);//设置精度 for(i=0;i<=10;i++) { x=x0+i*step; cout<<"y"<<"("< } cout<<"soy (1)="< Runge_Kuta(f,x0,y0,1,10); return(0); } (二)执行结果: 现场运行程序并显示结果 六、结论与体会 经过一个多月的课程设计,我们感觉收获甚丰。 通过此次的课程设计,我们将本学期课本上所学习的有关知识应用到实践当中,使我们在应用过程中,更加清楚的了解并掌握C++语言的各部分内容,进一步加深了对C++语言的认识与理解。 例如,函数的递归调用等。 同时提高了个人程序设计思想,及时发现一些错误,并在调试过程中更加深刻的认识到C++语言程序的严谨性。 任何一个程序员都无法保证所编写的程序没有错误,程序内部的逻辑错误只能由我们自己去发现并修改,在遇到问题时,首先通过对此部分函数的整体流程进行分析,找出问题所在,再由小组成员商定最优解决办法,这样有助于提高我们个人团体协作能力。 同时也是我们进一步加深了解了高数中微分知识,更重要的是,学会了把高数微分知识和编程相结合并运用于实践中。 总之,通过此次课程设计,我们学到了许多在书本上学不到的知识。 通过实践,我们能更好的掌握C++语言,并运用它编写应用程序。 我们对它的功能和实用性、严密性和对程序的编写都有了比较深刻的体会。 毫无疑问,编写过程中我们遇到了许多问题,但通过我们不懈的努力,团结奋斗的的精神我们终究将问题一一解除,最终实现了程序的各项功能。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 语言 程序 课程 数值 微分 WORD 版本