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

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

ID:28357539

大小:259.00 KB

页数:18页

时间:2018-12-09

常微分方程组初值问题数值解实现和算法分析_第1页
常微分方程组初值问题数值解实现和算法分析_第2页
常微分方程组初值问题数值解实现和算法分析_第3页
常微分方程组初值问题数值解实现和算法分析_第4页
常微分方程组初值问题数值解实现和算法分析_第5页
资源描述:

《常微分方程组初值问题数值解实现和算法分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

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

2、解决一阶微分方程组初值问题的基本思路44用matlab语言编程解决相关问题44.1四阶Runge-kutta方法的Matlab编程实现44.2Euler改进方法Matlab编程实现55编程解决65.1输入计算题目65.2用Runge-Kutta方法的Matlab编程解法65.3用改进Euler方法的Matlab编程解法76计算结果86.1用四阶Runge-Kutta方法的Matlab编程解法的结果以及与精确解的比较96.2用改进Euler方法的Matlab编程解法的结果以及与精确解的比较97.结果分析10致谢11参考文献12附录13翻译17.---

3、1前言常微分方程是解决工程实例的常用的工具,建立微分方程只是解决问题的第一步,通常需要求出方程的解来说明实际现象,并加以检验。如果能得到解析形式的解固然是便于分析和应用的,但是我们知道,虽然求解常微分方程有各种各样的解析方法,但解析方法只能用来求解一些特殊类型的方程,实际问题终归结出来的微分方程主要靠数值解法[1]。数值解法就是一个十分重要的手段,而Euler方法以及Runge-Kutta方法又是数值解法最基础最常用的方法。通过对两种方法计算结果的对比,从而找到一个最为合适的计算方法。2题目叙述对以下的常微分方程组初值问题(1)用四阶Runge—K

4、utta方法求解,根据计算结果画出解的图形(2)用改进Euler方法求解,根据计算结果画出解的图形。3解题思路3.1一阶常微分方程的初值问题一阶常微分方程的初值问题的一般形式为:我们知道,只要函数f(x,y)适当光滑——譬如关于y满足利普希茨(Lipschitz)条件,即如果存在实数,使得理论上就可以保证初值问题的解存在并且唯一。所谓数值解法,就是求上述问题在一系列离散点.---的近似值。两个相邻节点的间距称为步长[1]3.2一阶常微分方程组的初值问题解一阶微分方程组时类似于单个方程的数值解法,只要把和理解为向量,那么就有:一阶微分方程组初值问题的

5、形式为:  (1)式中引入向量符号:         则(1)可写为:       (2)3.2.1用Runge-Kutta方法计算解决一阶微分方程组初值问题的基本思路(2)式形式上与常数微分方程初值问题是一样的,只要注意向量函数运算及其表示,就可以用初值问题的求解格式得到常微分方程组初值问题(2)的求解格式,由初值问题的经典Runge-kutta公式可得一阶常微分方程组初值问题(2)的Runge-kutta公式:.---注意上式是向量形式,其对应的分量形式为:微分方程理论告诉我们,高阶微分方程可转化为一阶微分方程组来研究,因此可以用一阶微分方程组

6、初值问题揭发来解高阶微分方程初值问题。高阶微分方程初值问题的形式为:         (3)令则(2)化为了一阶微分方程组初值问题:.---Runge-kutta方法巧妙利用函数在一些点上的函数值的线性组合,获得了高阶的数值解法,它避开了要获得高阶方法须对求高阶导数的不便,是离散化方法中Tayl情况,其中在准确性的工作量的综合效果看,经典的Runge-kutta方法是首选or展开法的一个应用。Runge-kutta方法主要用于定步长的。Runge-kutta方法也常用于对多步法提供初值。3.2.2用改进Euler方法计算解决一阶微分方程组初值问题的

7、基本思路改进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      步数ifnar

8、gin<5n=100;endr=size(y0);r=r(1);s=size(x0);s=s(1);r=r+s;T=zer

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。