高级语言程序C课程数值微分(WORD版本)_第1页
高级语言程序C课程数值微分(WORD版本)_第2页
高级语言程序C课程数值微分(WORD版本)_第3页
高级语言程序C课程数值微分(WORD版本)_第4页
高级语言程序C课程数值微分(WORD版本)_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数 值 微 分 -高级语言程序设计课程设计 指导教师:*班级:06级软件工程 3班成员:* 目 录一、 课程设计概述与设计目的二、概要设计三、详细设计四、调试与测试五、结论与体会六、源程序清单与执行结果一、课程设计概述与设计目的(一).课程设计名称数值微分(二).任务要求对于一些不易按照常规方法求得原函数的微分方程例如:,利用龙格-库塔公式,经过简单的计算过程求出的近似值龙格-库塔公式的形式为:(三).开发环境 C+是从C语言发展演变而来的,C语言毕竟是一个面向过程的编程语言,因此与其它面向过程的编程语言一样,已经不能满足运用面向对象方法开发软件的需要。C+便是在C语言基础上为支持面向对象的程序设计而研制的一个通用目的的程序设计语言,它是在1980年由AT&T贝尔实验室的Bjarne Stroustrup博士创建的。 C+的特点:全面兼容C,它保持了C的简洁、高效和接近汇编语言等特点,对C的类型系统进行了改革和扩充,因此C+比C更安全,C+的编译系统能检查出更多的类型错误。同时,用C编写的众多的库函数和实用软件可以用于C+中。除此之外,C+不仅支持面向过程,又支持面向对象。(四).设计目的1. 通过课程设计全面掌握C+语言程序设计关键知识点,掌握C+语言中的基本知识。2. 通过课程设计了解并掌握C+语言程序设计的方法,熟悉C+程序设计的开发环境及C+程序的调试过程。3. 培养我们查阅参考资料、手册的自学能力,通过独立思考深入钻研有关问题,学会自己分析、解决问题的方法。二、概要设计 1程序整体设计流程图 2.主控函数执行流程图三、详细设计 1.包含加载头文件:#include #include 2.运用命名空间 using namespace std;一个软件往往有多个模块组成,其中包括由不同的程序员开发的组件及类库提供的组件,这样不同模块间在对标识符命名时就有可能发生命名冲突,也就是说,在不同的模块中,使用相同的名字表示不同的事物,这样当然会引起程序出错。而我们使用命名空间,就解决了这个问题。3.主函数设计:主函数设计是该程序的一个重要部分。a.利用工具:龙格库塔公式,是由double Runge_Kuta( double (*f)(double x, double y), double x0, double y0, double xn, long step )来实现。b.设置运行结果的精度利用cout.precision(10)来实现。c.通过调用龙格库塔公式求得微分方程值:for(i = 0;i = 10;i+) x = x0 + i * step;couty(x)=Runge_Kuta(f,x0,y0,x,i) endl;d.输出微分方程值:利用cout语句来输出结果,通过调用龙格库塔公式得出结果。4.微分方程函数设计:利用return语句把y返回到主函数,把题目中微分方程用c+语言实现。5.龙格库塔公式:首先定义变量k1,k2,k3,k4,h和结果result.利用if语句根据step的大小选择编译哪条语句:如果step=0,直接返回y0的值;如果step=1,直接利用一次龙格库塔公式就可求得微分方程的值;或者0step1,通过此公式的递归调用来求得微分方程的值。最后将结果reslut返回到主函数。四、调试与测试五、源程序清单和执行结果(一)源程序清单#include #include using namespace std;double f(double y, double x) / 所求函数return (-20) * y + 20 * sin(x) + cos(x);double Runge_Kuta( double (*f)(double x, double y), double x0, double y0, double xn, long step ) / 龙格库塔公式 double k1,k2,k3,k4,result; double h = (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 double x1,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);int main()double f(double x, double y); double x0 = 0,y0 = 1; double x,step; long i;step = 0.1; cout.precision(10); / 设置精度 for(i = 0;i = 10;i+)x = x0 + i * step; cout y ( x ) = Runge_Kuta(f,x0,y0,x,i) endl;cout so y(1) = Runge_Kuta(f,x0,y0,1,10) endl; Runge_Kuta(f,x0,y0,1,10); return(0);(二)执行结果:现场运行程序并显示结果六、结论与体会经过一个多月的课程设计,我们感觉收获甚丰。通过此次的课程设计,我们将本学期课本上所学习的有关知识应用到实践当中,使我们在应用过程中,更加清楚的了解并掌握C+语言的各部分内容,进一步加深了对C+语言的认识与理解。例如,函数的递归调用等。同时提高了个人程序设计思想,及时发现一些错误,并在调试过程中更加深刻的认识到C+语言程序的严谨性。任何一个程序员都无法保证所编写的程序没有错误,程序内部的逻辑错误只能由我们自己去发现并修改,在遇到问题时,首先通过对此部分函数的整体流程进行分析,找出问题所在,再由小组成员商定最优解决办法,这样有助于提高我们个人团体协作能力。同时也是我们进一步加深了解了高数中微分知识,更重要的是,学会了把高数微分知识和编程相结合并运用于实践中。总之,通过此次课

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论