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

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

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
常微分方程组初值问题数值解的实现和算法分析 摘 要 本次课程设计主要内容是用改进Euler方法和四阶Runge-Kutta方法解决常微分方程组初值问题的数值解法,通过分析给定题目使用Matlab编写程序计算结果并绘图然后区别两种方法的。最后对计算结果进行分析,得到结论。 关键词:改进Euler,Runge-Kutta,初值问题 1前言 1 2题目叙述 1 3解题思路 1 3.1一阶常微分方程的初值问题 1 3.2一阶常微分方程组的初值问题 2 3.2.1用Runge-Kutta方法计算解决一阶微分方程组初值问题的基本思路 2 3.2.2用改进Euler方法计算解决一阶微分方程组初值问题的基本思路 4 4用matlab语言编程解决相关问题 4 4.1四阶Runge-kutta方法的Matlab编程实现 4 4.2 Euler改进方法Matlab编程实现 5 5 编程解决 6 5.1 输入计算题目 6 5.2用Runge-Kutta方法的Matlab编程解法 6 5.3用改进Euler方法的Matlab编程解法 7 6计算结果 8 6.1用四阶Runge-Kutta方法的Matlab编程解法的结果以及与精确解的比较 9 6.2用改进Euler方法的Matlab编程解法的结果以及与精确解的比较 9 7.结果分析 10 致谢 11 参考文献 12 附录 13 翻译 17 1前言 常微分方程是解决工程实例的常用的工具,建立微分方程只是解决问题的第一步,通常需要求出方程的解来说明实际现象,并加以检验。如果能得到解析形式的解固然是便于分析和应用的,但是我们知道,虽然求解常微分方程有各种各样的解析方法,但解析方法只能用来求解一些特殊类型的方程,实际问题终归结出来的微分方程主要靠数值解法[1]。数值解法就是一个十分重要的手段,而Euler方法以及Runge-Ktta方法又是数值解法最基础最常用的方法。2题目叙述 对以下的常微分方程组初值问题 用四阶Runge—Kutta方法求解,根据计算结果画出解的图形用改进Euler方法求解,根据计算结果画出解的图形。 3解题思路 3.1一阶常微分方程的初值问题 一阶常微分方程的初值问题的一般形式为: 我们知道,只要函数f (x, y)适当光滑——譬如关于y 满足利普希茨(Lipschitz)条件,即如果存在实数,使得 理论上就可以保证初值问题的解存在并且唯一。 所谓数值解法, 就是求上述问题在一系列离散点的近似值。两个相邻节点的间距称为步长[1] 3.2解一阶微分方程组时类似于单个方程的数值解法,只要把和理解为向量,那么就有: 一阶微分方程组初值问题的形式为: ??(1) 式中引入向量符号: ????????? 则(1)可写为: ???????(2)3.2.1用Runge-Kutta方法计算解决一阶微分方程组初值问题的基本思路 (2)式形式上与常数微分方程初值问题是一样的,只要注意向量函数运算及其表示,就可以用初值问题的求解格式得到常微分方程组初值问题(2)的求解格式,由初值问题的经典Runge-kutta公式可得一阶常微分方程组初值问题(2)的Runge-kutta公式: 注意上式是向量形式,其对应的分量形式为: 微分方程理论告诉我们,高阶微分方程可转化为一阶微分方程组来研究,因此可以用一阶微分方程组初值问题揭发来解高阶微分方程初值问题。 高阶微分方程初值问题的形式为: ?????????(3) 令则(2)化为了一阶微分方程组初值问题: Runge-kutta方法巧妙利用函数在一些点上的函数值的线性组合,获得了高阶的数值解法,它避开了要获得高阶方法须对求高阶导数的不便,是离散化方法中Tayl情况,其中在准确性的工作量的综合效果看,经典的Runge-kutta方法是首选or展开法的一个应用。Runge-kutta方法主要用于定步长的。Runge-kutta方法也常用于对多步法提供初值。 3.2.2用改进Euler方法计算解决一阶微分方程组初值问题的基本思路 改进Euler方法需要用Euler方法求出一个预测值然后再用梯形公式校正一次得到,即所求结果的迭代格式。 (4)为了方便将(4)式改变为如下格式 4用matlab语言编程解决相关问题 4.1四阶Runge-kutta方法的Matlab编程实现 function [T]=Runge_Kutta(f,x0,y0,h,n)%? [T]=Runge_Kutta(f,x0,y0,h,n) %??? f?????? 待解方程(组%??? x0????? 初试自变量值%??? y0????? 初试函数值%??? h?????? 步长%??? n?????? 步数if nargin5 n=100; end r=size(y

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档