1、 数 值 微 分 -高级语言程序设计课程设计 指导教师:* 班级:06 级软件工程 3 班 成员:* * 目 录 一、 课程设计概述与设计目的 二、概要设计 三、详细设计 四、调试与测试 五、结论与体会 六、源程序清单与执行结果 一、课程设计概述与设计目的 (一).课程设计名称 数值微分 (二).任务要求 对于一些不易按照常规方法求得原函数的微分方程 例如: 1)0( )1(0 cossin2020 y t ttyy ,利用龙格-库塔 公式,经过简单的计算过程求出)1(y的近似值 龙格-库塔公式的形式为: ),( ) 2 , 2 ( ) 2 , 2 ( ),( )22( 6 34 23 12
2、1 43211 hKyhxfK K h y h xfK K h y h xfK yxfK KKKK h yy nn nn nn nn nn (三).开发环境 C+是从 C 语言发展演变而来的,C 语言毕竟是一个 面向过程的编程语言, 因此与其它面向过程的编程语 言一样, 已经不能满足运用面向对象方法开发软件的 需要。C+便是在 C 语言基础上为支持面向对象的程 序设计而研制的一个通用目的的程序设计语言, 它是 在 1980 年由 AT 一个软件往往有多个模块组成,其中包括由不同的程序 员开发的组件及类库提供的组件,这样不同模块间在对标 识符命名时就有可能发生命名冲突,也就是说,在不同的 模块中
3、,使用相同的名字表示不同的事物,这样当然会引 起程序出错。而我们使用命名空间,就解决了这个问题。 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 * s
4、tep; cout“y“(“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)