常微分方程组初值问题数值解的实现和算法分析

上传人:206****923 文档编号:37522035 上传时间:2018-04-17 格式:DOC 页数:18 大小:280.04KB
返回 下载 相关 举报
常微分方程组初值问题数值解的实现和算法分析_第1页
第1页 / 共18页
常微分方程组初值问题数值解的实现和算法分析_第2页
第2页 / 共18页
常微分方程组初值问题数值解的实现和算法分析_第3页
第3页 / 共18页
常微分方程组初值问题数值解的实现和算法分析_第4页
第4页 / 共18页
常微分方程组初值问题数值解的实现和算法分析_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《常微分方程组初值问题数值解的实现和算法分析》由会员分享,可在线阅读,更多相关《常微分方程组初值问题数值解的实现和算法分析(18页珍藏版)》请在金锄头文库上搜索。

1、课程设计说明书(论文) 第 页 常微分方程组初值问题数值解的实现和算法分析常微分方程组初值问题数值解的实现和算法分析摘 要本次课程设计主要内容是用改进 Euler 方法和四阶 Runge-Kutta 方法解决常微分方程组初值问题的数值解法,通过分析给定题目使用 Matlab 编写程序计算结果并绘图然后区别两种方法的使用范围。最后对计算结果进行分析,得到结论。关键词:改进 Euler,Runge-Kutta,初值问题课程设计说明书(论文) 第 I 页 目目 录录1 前言.12 题目叙述.13 解题思路.13.1 一阶常微分方程的初值问题.13.2 一阶常微分方程组的初值问题.23.2.1 用 R

2、unge-Kutta 方法计算解决一阶微分方程组初值问题的基本思路.23.2.2 用改进 Euler 方法计算解决一阶微分方程组初值问题的基本思路.44 用 matlab 语言编程解决相关问题.44.1 四阶 Runge-kutta 方法的 Matlab 编程实现.44.2 Euler 改进方法 Matlab 编程实现.55 编程解决.65.1 输入计算题目.65.2 用 Runge-Kutta 方法的 Matlab 编程解法.65.3 用改进 Euler 方法的 Matlab 编程解法.76 计算结果.86.1 用四阶 Runge-Kutta 方法的 Matlab 编程解法的结果以及与精确解

3、的比较.96.2 用改进 Euler 方法的 Matlab 编程解法的结果以及与精确解的比较.97.结果分析.10致谢.11参考文献.12附录.13翻译.17课程设计说明书(论文) 第 0 页 1 1 前言前言常微分方程是解决工程实例的常用的工具,建立微分方程只是解决问题的第一步,通常需要求出方程的解来说明实际现象,并加以检验。如果能得到解析形式的解固然是便于分析和应用的,但是我们知道,虽然求解常微分方程有各种各样的解析方法,但解析方法只能用来求解一些特殊类型的方程,实际问题终归结出来的微分方程主要靠数值解法1。数值解法就是一个十分重要的手段,而 Euler 方法以及 Runge-Kutta

4、方法又是数值解法最基础最常用的方法。通过对两种方法计算结果的对比,从而找到一个最为合适的计算方法。2 2 题目叙述题目叙述对以下的常微分方程组初值问题11122233112231230.0131000,2500,0.01310002500(0)1,(0)1,(0)0yyy yyy yyyy yy yyyy (1) 用四阶 RungeKutta 方法求解,根据计算结果画出解的图形(2) 用改进 Euler 方法求解,根据计算结果画出解的图形。3 3 解题思路解题思路3.13.1 一阶常微分方程的初值问题一阶常微分方程的初值问题一阶常微分方程的初值问题的一般形式为:00( , ) ()yf x y

5、 y xy 0, xx b我们知道,只要函数f (x, y)适当光滑譬如关于y 满足利普希茨(Lipschitz)条件,即如果存在实数,使得0L 121212( ,)( ,),f x yf x yL yyy yR理论上就可以保证初值问题的解存在并且唯一。( )yy x所谓数值解法, 就是求上述问题在一系列离散点的近121nnxxxxLL课程设计说明书(论文) 第 1 页 似值。两个相邻节点的间距称为步长1121,nny yyyLL1nnhxx3.23.2 一阶常微分方程组的初值问题一阶常微分方程组的初值问题解一阶微分方程组时类似于单个方程的数值解法,只要把和理 yfyf解为向量,那么就有:一阶

6、微分方程组初值问题的形式为:(1)式中引入向量符号:则(1)可写为:(2)axb3.2.13.2.1 用用 Runge-KuttaRunge-Kutta 方法计算解决方法计算解决一阶微分方程组初值问题的基本思路一阶微分方程组初值问题的基本思路(2)式形式上与常数微分方程初值问题是一样的,只要注意向量函数运算及其表示,就可以用初值问题的求解格式得到常微分方程组初值问题(2)的求解格式,由初值问题的经典 Runge-kutta 公式可得一阶常微分方程组初值问题(2)的 Runge-kutta 公式:课程设计说明书(论文) 第 2 页 注意上式是向量形式,其对应的分量形式为:微分方程理论告诉我们,高

7、阶微分方程可转化为一阶微分方程组来研究,因此可以用一阶微分方程组初值问题揭发来解高阶微分方程初值问题。高阶微分方程初值问题的形式为:(3)axb令则(2)化为了一阶微分方程组初值问题:课程设计说明书(论文) 第 3 页 Runge-kutta 方法巧妙利用函数在一些点上的函数值的线性组合,( , )f x y获得了高阶的数值解法,它避开了要获得高阶方法须对求高阶导数的不( , )f x y便,是离散化方法中 Tayl 情况,其中在准确性的工作量的综合效果看,经典的Runge-kutta 方法是首选 or 展开法的一个应用。Runge-kutta 方法主要用于定步长的。Runge-kutta 方

8、法也常用于对多步法提供初值。3.2.23.2.2 用改进用改进 EulerEuler 方法计算解决一阶微分方程组初值问题的基本思路方法计算解决一阶微分方程组初值问题的基本思路改进Euler方法需要用Euler方法求出一个预测值然后再用梯形公式校正1ny一次得到,即所求结果的迭代格式。1ny(4)1111(,) (,)(,)2nnnnnnnnnnyyhf xyhyyf xyf xy预测校正为了方便编程可将(4)式改变为如下格式11(,)(,)1()2pnnncnnpnpcyyhf xyyyhf xyyyy 4 4 用用 matlabmatlab 语言编程解决相关问题语言编程解决相关问题4.14.1 四阶四阶 Runge-kuttaRunge-kutta 方法的方法的 MatlabMatlab 编程实现编程实现function T=Runge_Kutta(f,x0,y0,h,n)课程设计说明书(论文) 第 4 页 % T=Runge_Kutta(f,x0,y0,h,n)% f 待解方程(组)% x0 初试自变量值% y0 初试函数值% h

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号