当前位置:文档之家› 常微分方程数值解

常微分方程数值解

常微分方程数值解
常微分方程数值解

第四章常微分方程数值解

[课时安排]6学时

[教学课型]理论课

[教学目的和要求]

了解常微分方程初值问题数值解法的一些基本概念,如单步法和多步法,显式和隐式,方法的阶数,整体截断误差和局部截断误差的区别和关系等;掌握一阶常微分方程初值问题的一些常用的数值计算方法,例如欧拉(Euler)方法、改进的欧拉方法、龙贝-库塔(Runge-Kutta)方法、阿达姆斯(Adams)方法等,要注意各方法的特点及有关的理论分析;掌握构造常微分方程数值解的数值积分的构造方法和泰勒展开的构造方法的基本思想,并能具体应用它们导出一些常用的数值计算公式及评估截断误差;熟练掌握龙格-库塔(R-K)方法的基本思想,公式的推导,R-K公式中系数的确定,特别是能应用“标准四阶R-K公式”解题;掌握数值方法的收敛性和稳定性的概念,并能确定给定方法的绝对稳定性区域。[教学重点与难点]

重点:欧拉方法,改进的欧拉方法,龙贝-库塔方法。

难点:R—K方法,预估-校正公式。

[教学内容与过程]

4.1 引言

本章讨论常微分方程初值问题

(4.1.1)

的数值解法,这也是科学与工程计算经常遇到的问题,由于只有很特殊的方程能用解析方法求解,而用计算机求解常微分方程的初值问题都要采用数值方法.通常我们假定(4.1.1)中

f(x,y)对y满足Lipschitz条件,即存在常数L>0,使对,有

(4.1.2) 则初值问题(4.1.1)的解存在唯一.

假定(4.1.1)的精确解为,求它的数值解就是要在区间上的一组离散点

上求的近似.通常取

,h称为步长,求(4.1.1)的数值解是按节点的顺序逐步

推进求得.首先,要对方程做离散逼近,求出数值解的公式,再研究公式的局部截

断误差,计算稳定性以及数值解的收敛性与整体误差等问题.

4.2 简单的单步法及基本概念

4.2.1 Euler法、后退Euler法与梯形法

求初值问题(4.1.1)的一种最简单方法是将节点的导数用差商

代替,于是(4.1.1)的方程可近似写成

(4.2.1)

从出发,由(4.2.1)求得再将

代入(4.2.1)右端,得到的近似,一般写成

(4.2.2) 称为解初值问题的Euler法.

Euler法的几何意义如图4-1所示.初值问题(4.1.1)的解曲线y=y(x)过点,从出发,以为斜率作一段直线,与直线交点于,显然有

,再从出发,以为斜率作直线推进到上一点,其余类推,这样得到解曲线的一条近似曲线,它就是折线.

Euler法也可利用的Taylor展开式得到,由

(4.2.3) 略去余项,以,就得到近似计算公式(4.2.2).

另外,还可对(4.1.1)的方程两端由到积分得

(4.2.4)

若右端积分用左矩形公式,用,,则得(4.2.2).

如果在(4.2.4)的积分中用右矩形公式,则得

(4.2.5)

称为后退(隐式)Euler法.若在(4.2.4)的积分中用梯形公式,则得

(4.2.6)

称为梯形方法.

上述三个公式(4.2.2),(4.2.5)及(4.2.6)都是由计算,这种只用前一步即可算出的公式称为单步法,其中(4.2.2)可由逐次求出的值,称为显式方法,而(4.2.5)及(4.2.6)右端含有当f对y非线性时它不能直接求出,此时应把它看作一个方程,求解,这类方法称为稳式方法.此时可将(4.2.5)或(4.2.6)写成不动点形式的方程

这里对式(4.2.5)有,对(4.2.6)则,g与

无关,可构造迭代法

(4.2.7)

由于对y满足条件(4.1.2),故有

当或,迭代法(4.2.4)收敛到,因此只要步长h足够小,就可保证迭代(4.2.4)收敛.对后退Euler法(4.2.5),当时迭代收敛,对梯形法(4.2.6),当

时迭代序列收敛.

例4.1用Euler法、隐式Euler法、梯形法解

取h=0.1,计算到x=0.5,并与精确解比较.

解本题可直接用给出公式计算.由于,Euler法的计算公式为

n=0时,.其余n=1,2,3,4的计算结果见表4-1.

对隐式Euler法,计算公式为

解出

当n=0时,.其余n=1,2,3,4的计算结果见表4-1.

表4-1 例4.1的三种方法及精确解的计算结果

对梯形法,计算公式为

解得

当n=0时,.其余n=1,2,3,4的计算结果见表4-1.

本题的精确解为,表4-1列出三种方法及精确解的计算结果.

4.2.2 单步法的局部截断误差

解初值问题(4.1.1)的单步法可表示为

(4.2.8)

其中与有关,称为增量函数,当含有时,是隐式单步法,如(4.2.5)及(4.2.6)均为隐式单步法,而当不含时,则为显式单步法,它表示为

(4.2.9)

如Euler法(4.2.2),.为讨论方便,我们只对显式单步法(4.2.9)给出局部截断误差概念.

定义2.1设y(x)是初值问题(4.1.1)的精确解,记

(4.2.10)

称为显式单步法(4.2.9)在的局部截断误差.

之所以称为局部截断误差,可理解为用公式(4.2.9)计算时,前面各步都没有误差,即,只考虑由计算到这一步的误差,此时由(4.2.10)有

局部截断误差(4.2.10)实际上是将精确解代入(4.2.9)产生的公式误差,利用Taylor展开式可得到.例如对Euler法(4.2.2)有,故

它表明Euler法(4.2.2)的局部截断误差为,称

为局部截断误差主项.

定义2.2 设是初值问题(4.1.1)的精确解,若显式单步法(4.2.9)的局部截断误差

,是展开式的最大整数,称为单步法(4.2.9)的阶,含的项称为局部截断误差主项.

根据定义,Euler法(4.2.2)中的=1故此方法为一阶方法.

对隐式单步法(4.2.8)也可类似求其局部截断误差和阶,如对后退Euler法(4.2.5)有局部截断误差

故此方法的局部截断误差主项为,也是一阶方法.对梯形法(4.2.6)

同样有

它的局部误差主项为,方法是二阶的.

4.2.3 改进Euler法

上述三种简单的单步法中,梯形法(4.2.6)为二阶方法,且局部截断误差最小,但方法是隐式的,计算要用迭代法.为避免迭代,可先用Euler法计算出的近似,将(4.2.6)改为

(4.2.11)

称为改进Euler法,它实际上是显式方法.即

(4.2.12)

右端已不含.可以证明,=2,故方法仍为二阶的,与梯形法一样,但用(4.2.11)计算不用迭代.

例4.2用改进Euler法求例4.1的初值问题并与Euler法和梯形法比较误差的大小.

解将改进Euler法用于例4.1的计算公式

当n=0时,.其余结果见表4-2.

表4-2 改进Euler法及三种方法的误差比较

从表4-2中看到改进Euler法的误差数量级与梯形法大致相同,而比Euler法小得多,它优于Euler法.

讲解:

求初值问题(4.1.1)的数值解就是在假定初值问题解存在唯一的前提下在给定区间

上的一组离散点上求解析解的一组近似

为此先要建立求数值解的计算公式,通常称为差分公式,简单的单步法就是由计算下一步,构造差分公式有三种方法,一是用均差(即差商)近似,二是用等价的积分方程(4.2.4)用数值积分方法,三是用函数的Taylor展开,其中Taylor展开最有普遍性,可以得到任何数值解的计算公式及其局部截断误差。计算公式是微分方程

的一种近似,局部截断误差的概念就是刻划这种逼迫的好坏。

当为微分方程的解,即,而用

,定义局部截断误差,它表示用精确解代入计算公式(4.2.9)产生的公式误差为越大表明公式逼近微分方程的精度越高,因此就定义为公式的阶,通常的公式才能用于计算初值问题(4.1.1)的数值解。利用Taylor展开时,只要将的表达式在处展开成Taylor公式就可得到不同公式的局部截断误差。如4.2.2所给出的Euler法。

后退Euler法和梯形法,它们只需用一元函数的Taylor展开,与后面4.5节的多步法完全一致,而通常单步法(4.2.9)的一般情况则需要用二元函数的Taylor展开,才能得到公式的具体形式和局部截断误差。例如对改进Euler法,其局部截断误差由(4.2.12)可得

要求出它的结果就要用到二元函数的Taylor展开,将在4.3节再作介绍。

4.3 Runge-Kutta方法

4.3.1 显式 Runge-Kutta法的一般形式

上节已给出与初值问题(4.1.1)等价的积分形式

(4.3.1)

只要对右端积分用不同的数值求积公式近似就可得到不同的求解初值问题(4.1.1)的

数值方法,若用显式单步法

(4.3.2)

当,即数值求积用左矩形公式,它就是Euler法(4.2.2),方法只有一阶,若取

(4.3.3)

就是改进Euler法,这时数值求积公式是梯形公式的一种近似,计算时要用二个右端函数f的值,但方法是二阶的.若要得到更高阶的公式,则求积分时必须用更多的f值,根据数值积分公式,可将(4.3.1)右端积分表示为

注意,右端f中还不能直接得到,需要像改进Euler法(4.2.11)一样,用前面已算得的f值表示为(4.3.3),一般情况可将(4.3.2)的 表示为

(4.3.4)

其中

这里均为待定常数,公式(4.3.2),(4.3.4)称为r级的显式Runge-Kutta法,简称R-K方法.它每步计算r个f值(即),而ki 由前面(i-1)个已算出的表示,故公式是显式的.例如当r=2时,公式可表示为

(4.3.5)

其中.改进Euler法(4.2.11)就是一个二级显式R-K方法.参数取不同的值,可得到不同公式.

4.3.2 二、三级显式R-K方法

对r=2的显式R-K方法(4.3.5),要求选择参数,使公式的阶p尽量高,由局部截断误差定义

(4.3.6)

令,对(4.3.6)式在处按Taylor公式展开,由于

将上述结果代入(4.3.6)得

要使公式(4.3.5)具有的阶p=2,即,必须

(4.3.4)

由此三式求的解不唯一.因r=2,故,于是有解

(4.3.8)

它表明使(4.3.5)具有二阶的方法很多,只要都可得到二阶R-K方法.若取,则,则得改进Euler法(4.2.11),若取,则得

,此时(4.3.5)为

(4.3.9)

其中

称为中点公式.后退Euler法(4.2.11)及中点公式(4.3.9)是两个常用的二级R-K方法,注意二级R-K方法只能达到二阶,而不可能达到三阶.因为r=2只有4个参数,要达到p=3则在(4.3.6)的展开式中要增加3项,即增加三个方程.加上(4.3.4)的三个方程求4个待定

参数是无解的.当然r=2,p=2的R-K方法(4.3.5)当取其他数时,也可得到其他公式,但系数较复杂,一般不再给出.

对r=3的情形,要计算三个k值,即

其中

将按二元函数在处按Taylor公式展开,然后代入局部截断误差表达式,可得

可得三阶方法,其系数应满足方程

(4.3.10)

这是8个未知数6个方程的方程组,解也是不唯一的,通常.一种常见的三级三阶R-K方法是下面的Kutta三阶方法:

(4.3.11)

4.3.3 四阶R-K方法及步长的自动选择

利用二元函数Taylor展开式可以确定(4.3.4)中r=4,p=4的R-K方法,经典的四阶R-K 方法是:

(4.3.12)

它的局部截断误差,故p=4,这是最常用的四阶R-K方法,数学库中都有

用此方法求解初值问题的软件.这种方法的优点是精度较高,缺点是每步要算4个右端函数值,计算量较大.

例4.3用经典四阶R-K方法解例4.1的初值问题,仍取

h=0.1,计算到,并与改进Euler法、梯形法在处比较其误差大小.

解用四阶R-K方法公式(4.3.12),此处,于是当n=0时

于是,按公式(4.3.12)可算出

此方法误差:

改进Euler法误差:

梯形法误差:

可见四阶R-K方法的精度比二阶方法高得多.

用四阶R-K方法求解初值问题(4.1.1)精度较高,但要从理论上给出误差的估计式则比较困难.那么应如何判断计算结果的精度以及如何选择合适的步长h?通常是通过

不同步长在计算机上的计算结果近似估计.设在处的值,当

时,的近似为,于是由四阶R-K方法有

若以为步长,计算两步到,则有

于是得

(4.3.13)

它给出了误差的近似估计.如果(ε为给定精度),则认为以为步长的计算结果满足精度要求,若,则还可放大步长.因此(4.3.13)提供了自动选择步长的方法.

讲解:

求初值问题(4.1.1)的单步法主要是指Runge-Kutta法,本节主要讨论显式R-K方法,建立具体的计算公式使用的是Taylor展开,形如(4.3.4)的显式R-K方法,当r=1时就是Euler法,因此只要讨论的计算公式,在r确定后如何推导公式都是一样的,只是r越大计算越复杂,为了掌握了解公式来源,只要以r=2为例推导计算公式即可。因此本节重点就是用Taylor展开求出r=2的显式R-K方法的计算公式,由于方法的局部截断

误差为(4.3.6),的右端有的项,要对它做Taylor展开,就要用到二元函数的Taylor展开,按照二元函数Taylor级数

(4.3.14)

将它用到(4.3.6)的的展开式中,即可得到按升幂整理出的结果,对r=2的公式只能得到=2阶的公式,即,于是2级R-K方法(4.3.5)的系数

必须满足(4.3.4)给出的方程,它的解由(4.3.8)给出,只要,求出的公式都是r=2的2阶R-K方法。而常用的就是得到的改进Euler法(4.2.11)和得到的中点公式(4.3.9)。

4.4 单步法的收敛性与绝对稳定性

4.4.1 单步法的收敛性

定义4.1 设y(x)是初值问题(4.1.1)的精确解,是单步法(4.3.2)在处产生的近似解,若

则称方法(4.3.2)产生的数值解收敛于.

实际上,定义中是一固定点,当h→0时n→∞,n不是固定的.因显然

方法收敛,则在固定点处的整体误差,当p≥1时.

下面定理给出方法(4.3.2)收敛的条件.

定理4.1设初值问题(4.1.1)的单步法(4.3.2)是p阶方法(p≥1),且函数对y满足Lipschitz条件,即存在常数L>0,使对,均有

则方法(4.3.2)收敛,且.

定理证明略.可见[3].

4.4.2 绝对稳定性

用单步法(4.3.2)求数值解,由于原始数据及计算过程舍入误差影响,实际得到的不是而是,其中是误差,再计算下一步得到

以Euler法为例,若令,则

(4.4.1)

如果,则从计算到误差不增长,它是稳定的.但如果条件不满足就不稳定.

例4.4y′=-100y,y(0)=1,精确解为,用Euler法求解得

若取h=0.025,则,当,而,显然计算是不稳定的.

如果用后退Euler法(4.2.5)解此例,仍取h=0.025,则

,即

显然当,计算是稳定的.

由此看到稳定性与方法有关,也与有关,在此例中.在研究方法的稳定性时,通常不必对一般的f(x,y)进行讨论,而只针对模型方程

(4.4.2)

这里可能为复数.规定是因为时微分方程(4.4.2)本身是不稳定的,而讨论数值方法(4.3.2)的稳定性,必须在微分方程本身稳定的前提下进行.另一方面,对初值问题(4.1.1),若将f(x,y)在处线性展开,可得

于是方程(4.1.1)可近似表示为

它表明用模型方程(4.4.2)是合理的,至于模型方程(4.4.2)中所以用复数λ是因为初值问题(4.1.1)如果是方程组,即,则是(m×m)阶矩阵,其特征值可能是复数.当然对单个方程,λ就是实数,此时只要规定<0即可.

用单步法(4.3.2)解模型方程(4.4.2)可得到

(4.4.3)

其中依赖所选方法,如用Euler法则

(4.4.4)

此时由(4.4.1)看到误差方程也为,与(4.4.4)是一样的.因此对一般单步法(4.3.2)误差方程也与(4.4.3)一致.下面再考虑二阶R-K方法有

对四阶R-K方法,可得

定义4.2 将单步法(4.3.2)用于解模型方程(4.4.2),若得到(4.4.3)中的

则称方法是绝对稳定的.在复平面上复变量满足的区域,称为方法(4.3.2)

的绝对稳定域,它与实轴的交点称为绝对稳定区间.

例如对Euler法,在复平面上是以(-1,0)为圆心,以1为半径的单位圆域内部,当为实数时,则得绝对稳定区间为,因<0,故有

在例4.4中时方法稳定,而例中取h=0.025故不稳定.

.

对后退Euler法(4.2.5),

因<0,故,其绝对稳定域是以(1,0)为圆心的单位圆外部,绝对稳定区

间为,即对任何h>0方法都是绝对稳定的.

二阶R-K方法的绝对稳定区间为.

三阶R-K方法的绝对稳定区间为.

四阶R-K方法的绝对稳定区间为.

例4.5用经典四阶R-K方法计算初值问题

步长取h=0.1及0.2,给出计算误差并分析其稳定性.

解本题直接按R-K方法(4.3.12)的公式计算.因精确解为,其计算误差

如表所示.

从计算结果看到,h=0.2时误差很大,这是由于在λ=-20,h=0.2时λh=-4,而四阶R-K方法的绝对稳定区间为[-2.485,0],故h=0.2时计算不稳定,误差很大.而h=0.1时=-2,其值在绝对稳定区间[-2.485,0]内,计算稳定,故结果是可靠的.

讲解:

由于微分方程初值问题数值解公式求出的解是一个逐次递推的过程,因此原始数据误差及计算过程舍入误差对解的影响就是数值方法绝对稳定性研究的问题,如果由计算误差不增长,方法就是绝对稳定的。为使问题得到简化通常就是将方法用于解模型方程(4.4.2),对于单步法得到的差分方程为,由于模型方程的

,代入Euler法,得

,对二阶R-K方法,例如,用改进Euler法

常微分方程数值解法

常微分方程数值解法 【作用】 微分方程建模是数学建模的重要方法,因为许多实际问题的数学描述将导致求解微 分方程的定解问题。把形形色色的实际问题化成微分方程的定解问题,大体上可以按以 下几步: 1. 根据实际要求确定要研究的量(自变量、未知函数、必要的参数等)并确定坐标系。 2. 找出这些量所满足的基本规律(物理的、几何的、化学的或生物学的等等)。 3. 运用这些规律列出方程和定解条件。 基本模型 1.发射卫星为什么用三级火箭 2.人口模型 3.战争模型 4.放射性废料的处理 通常需要求出方程的解来说明实际现象,并加以检验。如果能得到解析形式的解固然是便于分析和应用的,但是我们知道,只有线性常系数微分方程,并且自由项是某些特殊类型的函数时,才可以得到这样的解,而绝大多数变系数方程、非线性方程都是所谓“解不出来”的于是对于用微分方程解决实际问题来说,数值解法就是一个十分重要的手段。 1.改进Euler 法: 2.龙格—库塔(Runge—Kutta)方法: 【源程序】 1.改进Euler 法: function [x,y]=eulerpro(fun,x0,x1,y0,n);%fun为函数,(x0,x1)为x区间, y0为初始值,n为子区间个数 if nargin<5,n=50;end h=(x1-x0)/n; x(1)=x0;y(1)=y0; for i=1:n x(i+1)=x(i)+h; y1=y(i)+h*feval(fun,x(i),y(i)); y2=y(i)+h*feval(fun,x(i+1),y1); y(i+1)=(y1+y2)/2; end 调用command窗口 f=inline('-2*y+2*x^2+2*x') [x,y]=eulerpro(f,0,0.5,1,10) 求解函数y'=?2y+2x2+2x ,(0 ≤x ≤0.5),y(0) = 1 2.龙格—库塔(Runge—Kutta)方法: [t,y]=solver('F',tspan,y0) 这里solver为ode45,ode23,ode113,输入参数 F 是用M文件定义的微分方程y'= f (x, y) 右端的函数。tspan=[t0,tfinal]是求解区间,y0是初值。 注:ode45和ode23变步长的,采用Runge-Kutta算法。

常微分方程数值解

第四章常微分方程数值解 [课时安排]6学时 [教学课型]理论课 [教学目的和要求] 了解常微分方程初值问题数值解法的一些基本概念,如单步法和多步法,显式和隐式,方法的阶数,整体截断误差和局部截断误差的区别和关系等;掌握一阶常微分方程初值问题的一些常用的数值计算方法,例如欧拉(Euler)方法、改进的欧拉方法、龙贝-库塔(Runge-Kutta)方法、阿达姆斯(Adams)方法等,要注意各方法的特点及有关的理论分析;掌握构造常微分方程数值解的数值积分的构造方法和泰勒展开的构造方法的基本思想,并能具体应用它们导出一些常用的数值计算公式及评估截断误差;熟练掌握龙格-库塔(R-K)方法的基本思想,公式的推导,R-K公式中系数的确定,特别是能应用“标准四阶R-K公式”解题;掌握数值方法的收敛性和稳定性的概念,并能确定给定方法的绝对稳定性区域。[教学重点与难点] 重点:欧拉方法,改进的欧拉方法,龙贝-库塔方法。 难点:R—K方法,预估-校正公式。 [教学内容与过程] 4.1 引言 本章讨论常微分方程初值问题 (4.1.1) 的数值解法,这也是科学与工程计算经常遇到的问题,由于只有很特殊的方程能用解析方法求解,而用计算机求解常微分方程的初值问题都要采用数值方法.通常我们假定(4.1.1)中 f(x,y)对y满足Lipschitz条件,即存在常数L>0,使对,有 (4.1.2) 则初值问题(4.1.1)的解存在唯一. 假定(4.1.1)的精确解为,求它的数值解就是要在区间上的一组离散点 上求的近似.通常取 ,h称为步长,求(4.1.1)的数值解是按节点的顺序逐步 推进求得.首先,要对方程做离散逼近,求出数值解的公式,再研究公式的局部截

常微分方程初值问题的数值解法

第七章 常微分方程初值问题的数值解法 --------学习小结 一、本章学习体会 通过本章的学习,我了解了常微分方程初值问题的计算方法,对于解决那些很难求解出解析表达式的,甚至有解析表达式但是解不出具体的值的常微分方程非常有用。在这一章里求解常微分方程的基本思想是将初值问题进行离散化,然后进行迭代求解。在这里将初值问题离散化的方法有三种,分别是差商代替导数的方法、Taylor 级数法和数值积分法。常微分方程初值问题的数值解法的分类有显示方法和隐式方法,或者可以分为单步法和多步法。在这里单步法是指计算第n+1个y 的值时,只用到前一步的值,而多步法则是指计算第n+1个y 的值时,用到了前几步的值。通过对本章的学习,已经能熟练掌握如何用Taylor 级数法去求解单步法中各方法的公式和截断误差,但是对线性多步法的求解理解不怎么透切,特别是计算过程较复杂的推理。 在本章的学习过程中还遇到不少问题,比如本章知识点多,公式多,在做题时容易混淆,其次对几种R-K 公式的理解不够透彻,处理一个实际问题时,不知道选取哪一种公式,通过课本里面几种方法的计算比较得知其误差并不一样,,这个还需要自己在往后的实际应用中多多实践留意并总结。 二、本章知识梳理 常微分方程初值问题的数值解法一般概念 步长h ,取节点0,(0,1,...,)n t t nh n M =+=,且M t T ≤,则初值问题000 '(,),()y f t y t t T y t y =≤≤?? =?的数值解法的一般形式是 1(,,,...,,)0,(0,1,...,)n n n n k F t y y y h n M k ++==-

常微分方程的数值解法

第九章 常微分方程的数值解法 在自然科学的许多领域中,都会遇到常微分方程的求解问题。然而,我们知道,只有少数十分简单的微分方程能够用初等方法求得它们的解,多数情形只能利用近似方法求解。在常微分方程课中已经讲过的级数解法,逐步逼近法等就是近似解法。这些方法可以给出解的近似表达式,通常称为近似解析方法。还有一类近似方法称为数值方法,它可以给出解在一些离散点上的近似值。利用计算机解微分方程主要使用数值方法。 我们考虑一阶常微分方程初值问题 ?????==0 0)() ,(y x y y x f dx dy 在区间[a, b]上的解,其中f (x, y )为x, y 的已知函数,y 0为给定的初始值,将上述问题 的精确解记为y (x )。数值方法的基本思想是:在解的存在区间上取n + 1个节点 b x x x x a n =<<<<= 210 这里差i i i x x h -=+1,i = 0,1, …, n 称为由x i 到x i +1的步长。这些h i 可以不相等,但一 般取成相等的,这时n a b h -=。在这些节点上采用离散化方法,(通常用数值积分、微分。泰勒展开等)将上述初值问题化成关于离散变量的相应问题。把这个相应问题的解y n 作为y (x n )的近似值。这样求得的y n 就是上述初值问题在节点x n 上的数值解。一般说来,不同的离散化导致不同的方法。 §1 欧拉法与改进欧拉法 1.欧拉法 1.对常微分方程初始问题 (9.2) )((9.1) ),(00???? ?==y x y y x f dx dy 用数值方法求解时,我们总是认为(9.1)、(9.2)的解存在且唯一。 欧拉法是解初值问题的最简单的数值方法。从(9.2)式由于y (x 0) = y 0已给定,因而可以算出 ),()('000y x f x y = 设x 1 = h 充分小,则近似地有: ),()(') ()(00001y x f x y h x y x y =≈- (9.3)

常微分方程数值解法

i.常微分方程初值问题数值解法 常微分方程初值问题的真解可以看成是从给定初始点出发的一条连续曲线。差分法是常微分方程初值问题的主要数值解法,其目的是得到若干个离散点来逼近这条解曲线。有两个基本途径。一个是用离散点上的差商近似替代微商。另一个是先对微分方程积分得到积分方程,再利用离散点作数值积分。 i.1 常微分方程差分法 考虑常微分方程初值问题:求函数()u t 满足 (,), 0du f t u t T dt =<≤ (i.1a ) 0(0)u u = (i.1b) 其中(,)f t u 是定义在区域G : 0t T ≤≤, u <∞上的连续函数,0u 和T 是给定的常数。我们假设(,)f t u 对u 满足Lipschitz 条件,即存在常数L 使得 121212(,)(,), [0,]; ,(,)f t u f t u L u u t T u u -≤-?∈∈-∞∞ (i.2) 这一条件保证了(i.1)的解是适定的,即存在,唯一,而且连续依赖于初值0u 。 通常情况下,(i.1)的精确解不可能用简单的解析表达式给出,只能求近似解。本章讨论常微分方程最常用的近似数值解法-差分方法。先来讨论最简单的Euler 法。为此,首先将求解区域[0,]T 离散化为若干个离散点: 0110N N t t t t T -=<< <<= (i.3) 其中n t hn =,0h >称为步长。 在微积分课程中我们熟知,微商(即导数)是差商的极限。反过来,差商就是微商的近似。在0t t =处,在(i.1a )中用向前差商 10()()u t u t h -代替微商du dt ,便得 10000()()(,())u t u t hf t u t ε=++ 如果忽略误差项0ε,再换个记号,用i u 代替()i u t 便得到 1000(,)u u hf t u -= 一般地,我们有 1Euler (,), 0,1, ,1n n n n u u hf t u n N +=+=-方法: (i.4) 从(i.1b) 给出的初始值0u 出发,由上式可以依次算出1,,N t t 上的差分解1,,N u u 。

MATLAB求解常微分方程数值解

利用MATLAB求解常微分方程数值解

目录 1. 内容简介 (1) 2. Euler Method(欧拉法)求解 (1) 2.1. 显式Euler法和隐式Euler法 (2) 2.2. 梯形公式和改进Euler法 (3) 2.3. Euler法实用性 (4) 3. Runge-Kutta Method(龙格库塔法)求解 (5) 3.1. Runge-Kutta基本原理 (5) 3.2. MATLAB中使用Runge-Kutta法的函数 (7) 4. 使用MATLAB求解常微分方程 (7) 4.1. 使用ode45函数求解非刚性常微分方程 (8) 4.2. 刚性常微分方程 (9) 5. 总结 (9) 参考文献 (11) 附录 (12) 1. 显式Euler法数值求解 (12) 2. 改进Euler法数值求解 (12) 3. 四阶四级Runge-Kutta法数值求解 (13) 4.使用ode45求解 (14)

1.内容简介 把《高等工程数学》看了一遍,增加对数学内容的了解,对其中数值解法比较感兴趣,这大概是因为在其它各方面的学习和研究中经常会遇到数值解法的问题。理解模型然后列出微分方程,却对着方程无从下手,无法得出精确结果实在是让人难受的一件事情。 实际问题中更多遇到的是利用数值法求解偏微分方程问题,但考虑到先从常微分方程下手更为简单有效率,所以本文只研究常微分方程的数值解法。把一个工程实际问题弄出精确结果远比弄清楚各种细枝末节更有意思,因此文章中不追求非常严格地证明,而是偏向如何利用工具实际求解出常微分方程的数值解,力求将课程上所学的知识真正地运用到实际方程的求解中去,在以后遇到微分方程的时候能够熟练运用MATLAB得到能够在工程上运用的结果。 文中求解过程中用到MATLAB进行数值求解,主要目的是弄清楚各个函数本质上是如何对常微分方程进行求解的,对各种方法进行MATLAB编程求解,并将求得的数值解与精确解对比,其中源程序在附录中。最后考察MATLAB中各个函数的适用范围,当遇到实际工程问题时能够正确地得到问题的数值解。 2.Euler Method(欧拉法)求解 Euler法求解常微分方程主要包括3种形式,即显式Euler法、隐式Euler法、梯形公式法,本节内容分别介绍这3种方法的具体内容,并在最后对3种方法精度进行对比,讨论Euler法的实用性。 本节考虑实际初值问题 使用解析法,对方程两边同乘以得到下式

常微分方程的数值解

实验4 常微分方程的数值解 【实验目的】 1.掌握用MATLAB软件求微分方程初值问题数值解的方法; 2.通过实例用微分方程模型解决简化的实际问题; 3.了解欧拉方法和龙格-库塔方法的基本思想和计算公式,及稳定性等概念。 【实验内容】 题3 小型火箭初始重量为1400kg,其中包括1080kg燃料。火箭竖直向上发射时燃料燃烧率为18kg/s,由此产生32000N的推力,火箭引擎在燃料用尽时关闭。设火箭上升时空气阻力正比于速度的平方,比例系数为m,求引擎关闭瞬间火箭的高度、速度、加速度,及火箭到达最高点的时的高度和加速度,并画出高度、速度、加速度随时间变化的图形。 模型及其求解 火箭在上升的过程可分为两个阶段,在全过程中假设重力加速度始终保持不变,g=s2。 在第一个过程中,火箭通过燃烧燃料产生向上的推力,同时它还受到自身重力(包括自重和该时刻剩余燃料的重量)以及与速度平方成正比的空气阻力的作用,根据牛顿第二定律,三个力的合力产生加速度,方向竖直向上。因此有如下二式: a=dv/dt=/m=/(1400-18t) dh/dt=v 又知初始时刻t=0,v=0,h=0。记x(1)=h,x(2)=v,根据MATLAB 可以求出0到60秒内火箭的速度、高度、加速度随时间的变化情况。程序如下: function [ dx ] = rocket( t,x ) a=[*x(2)^2)/(1400-18*t)]; dx=[x(2);a]; end ts=0:1:60;

x0=[0,0]; [t,x]=ode45(@rocket,ts,x0); h=x(:,1); v=x(:,2); a=[*(v.^2))./(1400-18*t)]; [t,h,v,a]; 数据如下: t h v a 000

常微分方程数值解法

第七章 常微分方程数值解法 常微分方程中只有一些典型方程能求出初等解(用初等函数表示的解),大部分的方程是求不出初等解的。另外,有些初值问题虽然有初等解,但由于形式太复杂不便于应用。因此,有必要探讨常微分方程初值问题的数值解法。本章主要介绍一阶常微分方程初值问题的欧拉法、龙格-库塔法、阿达姆斯方法,在此基础上推出一阶微分方程组与高阶方程初值问题的 数值解法;此外,还将简要介绍求解二阶常微分方程值问题的差分方法、试射法。 第一节 欧拉法 求解常微分方程初值问题 ?????==0 0)() ,(y x y y x f dx dy (1) 的数值解,就是寻求准确解)(x y 在一系列离散节点 <<<<

常微分方程初值问题数值解法

常微分方程初值问题数值解法 朱欲辉 (浙江海洋学院数理信息学院, 浙江舟山316004) [摘要]:在常微分方程的课程中讨论的都是对一些典型方程求解析解的方法.然而在生产实 际和科学研究中所遇到的问题往往很复杂, 在很多情况下都不可能给出解的解析表达式. 本篇文章详细介绍了常微分方程初值问题的一些数值方法, 导出了若干种数值方法, 如Euler法、改进的Euler法、Runge-Kutta法以及线性多步法中的Adams显隐式公式和预测校正 公式, 并且对其稳定性及收敛性作了理论分析. 最后给出了数值例子, 分别用不同的方法计算出近似解, 从得出的结果对比各种方法的优缺点. [关键词]:常微分方程;初值问题; 数值方法; 收敛性; 稳定性; 误差估计 Numerical Method for Initial-Value Problems Zhu Yuhui (School of Mathematics, Physics, and Information Science, Zhejiang Ocean University, Zhoushan, Zhejiang 316004) [Abstract]:In the course about ordinary differential equations, the methods for analytic solutions of some typical equations are often discussed. However, in scientific research, the problems are very complex and the analytic solutions about these problems can’t be e xpressed explicitly. In this paper, some numerical methods for the initial-value problems are introduced. these methods include Euler method, improved Euler method, Runge-Kutta method and some linear multistep method (e.g. Adams formula and predicted-corrected formula). The stability and convergence about the methods are presented. Some numerical examples are give to demonstrate the effectiveness and accuracy of theoretical analysis. [Keywords]:Ordinary differential equation; Initial-value problem; Numerical method; Convergence; Stability;Error estimate

常微分方程数值解法

第八章 常微分方程的数值解法 一.内容要点 考虑一阶常微分方程初值问题:?????==0 0)() ,(y x y y x f dx dy 微分方程的数值解:设微分方程的解y (x )的存在区间是[a,b ],在[a,b ]内取一系列节 点a= x 0< x 1<…< x n =b ,其中h k =x k+1-x k ;(一般采用等距节点,h=(b-a)/n 称为步长)。在每个节点x k 求解函数y(x)的近似值:y k ≈y(x k ),这样y 0 , y 1 ,...,y n 称为微分方程的数值解。 用数值方法,求得f(x k )的近似值y k ,再用插值或拟合方法就求得y(x)的近似函数。 (一)常微分方程处置问题解得存在唯一性定理 对于常微分方程初值问题:?????==0 0)() ,(y x y y x f dx dy 如果: (1) 在B y y A x x 00≤-≤≤,的矩形内),(y x f 是一个二元连续函数。 (2) ),(y x f 对于y 满足利普希茨条件,即 2121y y L y x f y x f -≤-),(),(则在C x x 0≤≤上方程?????==0 0)() ,(y x y y x f dx dy 的解存在且唯一,这里C=min((A-x 0),x 0+B/L),L 是利普希茨常数。 定义:任何一个一步方法可以写为),,(h y x h y y k k k 1k Φ+=+,其中),,(h y x k k Φ称为算法的增量函数。 收敛性定理:若一步方法满足: (1)是p 解的. (2) 增量函数),,(h y x k k Φ对于y 满足利普希茨条件. (3) 初始值y 0是精确的。则),()()(p h O x y kh y =-kh =x -x 0,也就是有 0x y y lim k x x kh 0h 0 =--=→)( (一)、主要算法 1.局部截断误差 局部截断误差:当y(x k )是精确解时,由y(x k )按照数值方法计算出来的1~ +k y 的误差y (x k+1)- 1~ +k y 称为局部截断误差。 注意:y k+1和1~ +k y 的区别。因而局部截断误差与误差e k +1=y (x k +1) -y k +1不同。 如果局部截断误差是O (h p+1),我们就说该数值方法具有p 阶精度。

(整理)常微分方程数值解法

i.常微分方程初值问题数值解法 i.1 常微分方程差分法 考虑常微分方程初值问题:求函数()u t 满足 (,), 0du f t u t T dt =<≤ (i.1a ) 0(0)u u = (i.1b) 其中(,)f t u 是定义在区域G : 0t T ≤≤, u <∞上的函数,0u 和T 是给定的常数。我们假设(,)f t u 对u 满足Lipschitz 条件,即存在常数L 使得 121212(,)(,), [0,]; ,(,)f t u f t u L u u t T u u -≤-?∈∈-∞∞ (i.2) 这一条件保证了(i.1)的解是适定的,即存在,唯一,而且连续依赖于初值0u 。 通常情况下,(i.1)的精确解不可能用简单的解析表达式给出,只能求近似解。本章讨论常微分方程最常用的近似数值解法--差分方法。先来讨论最简单的Euler 法。为此,首先将求解区域[0,]T 离散化为若干个离散点: 0110N N t t t t T -=<<<<=L (i.3) 其中n t hn =,0h >称为步长。 在微积分课程中我们熟知,微商(即导数)是差商的极限。反过来,差商就是微商的近似。在0t t =处,在(i.1a )中用向前差商 10()()u t u t h -代替微商du dt ,便得 10000()()(,())u t u t hf t u t ε=++ 如果忽略误差项0ε,再换个记号,用i u 代替()i u t 便得到 1000(,)u u hf t u -= 一般地,我们有 1Euler (,), 0,1,,1n n n n u u hf t u n N +=+=-L 方法: (i.4) 从(i.1b) 给出的初始值0u 出发,由上式可以依次算出1,,N t t L 上的差分解1,,N u u L 。

常微分方程常用数值解法.

第一章绪论 1.1 引言 常微分方程是现代数学的一个重要分支,是人们解决各种实际问题的有效工具。微分方程的理论和方法从17世纪末开始发展起来,很快成了研究自然现象的强有力工具,在17到18世纪,在力学、天文、科学技术、物理中,就已借助微分方程取得了巨大的成就。1864年Leverrer根据这个方程预见了海王星的存在,并确定出海王星在天空中的位置。现在,常微分方程在许多方面获得了日新月异的应用。这些应用也为常微分方程的进一步发展提供了新的问题,促使人们对微分方程进行更深入的研究,以便适应科学技术飞速发展的需要。 研究常微分方程常用数值解是数学工作者的一项基本的且重要的工作。在国内外众多数学家的不懈努力,使此学科基本上形成了一套完美的体系。微分方程的首要问题是如何求一个给定方程的通解或特解。到目前为止,人们已经对许多微分方程得出了求解的一般方法。由于在生产实际和科学研究中所遇到的微分方程问题比较复杂,使这些问题的解即使能求出解析表达式,也往往因计算量太大而难于求出,而对于一些典型的微分方程则可以运用基本方法求出其解析解,并可以根据初值问题的条件把其中的任意常数确定下来。 由于求通解存在许多困难,人们就开始研究带某种定解条件的特解。首先是Cauchy对微分方程初始解的存在惟一性进行了研究。目前解的存在惟一性、延拓性、大范围的存在性以及解对初始解和参数的延续性和可微性等理论问题都已发展成熟。与此同时,人们开始采取各种近似方法来求微分方程的特解,例如求微分方程数值解的Euler折线法、Runge-Kutta法等,可以求得若干个点上微分方程的近似解。最后,由于当代高科技的发展为数学的广泛应用和深入研究提供了更好的手段。用计算机结合Matlab软件求方程的精确解、近似解,对解的性态进行图示和定性、稳定性研究都十分方便有效。 本章先介绍常微分的一般概念、导出微分方程的一些典型例子及求解微分方程的思路分析。从而得到常微分方程的常用数值解法。

常微分方程数值解法

第八章 常微分方程数值解法 考核知识点: 欧拉法,改进欧拉法,龙格-库塔法,单步法的收敛性与稳定性。 考核要求: 1. 解欧拉法,改进欧拉法的基本思想;熟练掌握用欧拉法,改进欧拉法、求微 分方程近似解的方法。 2. 了解龙格-库塔法的基本思想;掌握用龙格-库塔法求微分方程近似解的方 法。 3. 了解单步法的收敛性、稳定性与绝对稳定性。 例1 用欧拉法,预估——校正法求一阶微分方程初值问题 ? ??=-='1)0(y y x y ,在0=x (0,1)0.2近似解 解 (1)用1.0=h 欧拉法计算公式 n n n n n n x y y x y y 1.09.0)(1.01+=-+=+,1.0=n 计算得 9.01=y 82.01.01.09.09.02=?+?=y (2)用预估——校正法计算公式 1,0)(05.01.09.0)0(111)0(1=???-+-+=+=++++n y x y x y y x y y n n n n n n n n n 计算得 91.01=y ,83805.02=y 例2 已知一阶初值问题 ???=-='1 )0(5y y y 求使欧拉法绝对稳定的步长n 值。 解 由欧拉法公式 n n n n y h y h y y )51(51-=-=+ n n y h y ~)51(~1-=+

相减得01)51()51(e h e h e n n n -==-=-Λ 当 151≤-h 时,4.00≤

Ch5常微分方程数值解法

Ch5. 常微分方程数值解法 §1. 引言 1. 问题的提出 假设一阶微分方程初值问题???=='00 )() ,(y x y y x f y 中的(),f x y 关于y 满足Lipschitz 条件,即存在常数L ,使得()()1212,,f x y f x y L y y -≤-,则由常微分方程理论知,初值问题有唯一解。 除了一些特殊类型的方程外,许多微分方程都没有解析解。 2. 数值解法的基本思想——离散化 计算解)(x y 在离散点 ,,,,10n x x x 上值)(i x y 的近似值i y ,ih x x i +=0。 3. 几个基本概念 (1) 单步法与多步法 若计算1i y +时只用到i y ,则称这种方法为单步法,如()1,i i i i y y hf x y +=+;若计算1i y +时需用到()1,, ,1i i i k y y y k --≥,则称这种方法为多步法。 (2) 显式与隐式 若1i y +可以直接用1,,,i i i k y y y --表示,则称此计算公式为显式,否则称之为 隐式。 §2. Euler 方法 1. Euler 公式 将),(y x f y ='在[]1,+n n x x 上积分,?+=-+1))(,()()(1n n x x n n dx x y x f x y x y , 得? +=≈-+1))(,(1n n x x n n I dx x y x f y y ,用数值积分法求I 。 (1) ()n n y x hf I ,=,得()n n n n y x hf y y ,1+=+。 Euler 公式 (2) ()11,++=n n y x hf I ,得()111,++++=n n n n y x hf y y 。 后退的Euler 公式 (3) ()()[]11,,2 +++=n n n n y x f y x f h I , 得()()[]111 ,,2 +++++=n n n n n n y x f y x f h y y 。 梯形公式(隐式)

数值分析--第9章 常微分方程数值解

数值分析--第9章常微分方程数值解

第九章 常微分方程数值解法 许多实际问题的数学模型是微分方程或微分方程的定解问题。如物体运动、电路振荡、化学反映及生物群体的变化等。常微分方程可分为线性、非线性、高阶方程与方程组等类;线性方程包含于非线性类中,高阶方程可化为一阶方程组。若方程组中的所有未知量视作一个向量,则方程组可写成向量形式的单个方程。因此研究一阶微分方程的初值问题 ?????=≤≤=0)(),(y a y b x a y x f dx dy , (9-1) 的数值解法具有典型性。 常微分方程的解能用初等函数、特殊函数或它们的级数与积分表达的很少。用解析方法只能求出线性常系数等特殊类型的方程的解。对非线性方程来说,解析方法一般是无能为力的,即使某些解具有解析表达式,这个表达式也可能非常复杂而不便计算。因此研究微分方程的数值解法是非常必要的。 只有保证问题(9-1)的解存在唯一的前提下,研究其数值解法或者说寻求其数值解才有意义。由常微分方程的理论知,如果(9-1)中的),(y x f 满足条件 (1)),(y x f 在区域} ),({+∞<<∞-≤≤=y b x a y x D ,上连续; (2)),(y x f 在D 上关于y 满足Lipschitz 条件,即存在常数L ,使得 y y L y x f y x f -≤-),(),( 则初值问题(9-1)在区间],[b a 上存在惟一的连续解)(x y y =。在

下面的讨论中,我们总假定方程满足以上两个条件。 所谓数值解法,就是求问题(9-1)的解)(x y y =在若干点 b x x x x a N =<<<<= 210 处的近似值),,2,1(N n y n =的方法。),,2,1(N n y n =称为问题(9-1)的 数值解,n n x x h -=+1称为由n x 到1+n x 的步长。今后如无特别说明, 我们总假定步长为常量。 建立数值解法,首先要将微分方程离散化,一般采用以下几种方法: (1) 用差商近似导数 在问题(9-1)中,若用向前差商h x y x y n n )() (1-+代替)(n x y ',则得 )1,,1,0( ))(,()()(1-=≈-+N n x y x f h x y x y n n n n n )(n x y 用其近似值n y 代替,所得结果作为)(1+n x y 的近似值,记为1+n y ,则有 1(,) (0,1,,1)n n n n y y hf x y n N +=+=- 这样,问题(9-1)的近似解可通过求解下述问题 100 (,) (0,1,,1)()n n n n y y hf x y n N y y x +=+=-??=? (9-2) 得到,按式(9-2)由初值0y 经过N 步迭代,可逐次算出N y y y ,,21。此方程称为差分方程。 需要说明的是,用不同的差商近似导数,将得到不同的计算公式。 (2) 用数值积分法 将问题(9-1)中的微分方程在区间],[1+n n x x 上两边积分,可得 )1,,1,0( ))(,()()(1 1-==-?++N n dx x y x f x y x y n n x x n n (9-3) 用1+n y ,n y 分别代替)(1+n x y ,)(n x y ,若对右端积分采用取左端点的矩形公式,即

常微分方程数值解

2.4 常微分方程数值解 函数 ode45、ode23、ode113、ode15s 、ode23s 、ode23t 、ode23tb 功能 常微分方程(ODE )组初值问题的数值解 参数说明: solver 为命令ode45、ode23,ode113,ode15s,ode23s,ode23t,ode23tb 之一。 Odefun 为显式常微分方程y’=f(t,y),或为包含一混合矩阵的方程M(t,y)*y’=f(t,y)。命令 ode23只能求解常数混合矩阵的问题;命令ode23t 与ode15s 可以求解奇异矩阵的问题。 Tspan 积分区间(即求解区间)的向量tspan=[t0,tf]。要获得问题在其他指定时间点 t0,t1,t2,…上的解,则令tspan=[t0,t1,t2,…,tf](要求是单调的)。 Y0 包含初始条件的向量。 Options 用命令odeset 设置的可选积分参数。 P1,p2,… 传递给函数odefun 的可选参数。 格式 [T,Y] = solver(odefun,tspan,y0) %在区间tspan=[t0,tf]上,从t0到tf ,用初始条 件y0求解显式微分方程y’=f(t,y)。对于标量t 与列向量y ,函数f=odefun(t,y)必须返回一f(t,y)的列向量f 。解矩阵Y 中的每一行对应于返回的时间列向量T 中的一个时间点。要获得问题在其他指定时间点t0,t1,t2,…上的解,则令tspan=[t0,t1,t2,…,tf](要求是单调的)。 [T,Y] = solver(odefun,tspan,y0,options) %用参数options (用命令odeset 生成) 设置的属性(代替了缺省的积分参数),再进行操作。常用的属性包括相对误差值RelTol (缺省值为1e-3)与绝对误差向量AbsTol (缺省值为每一元素为1e-6)。 [T,Y] =solver(odefun,tspan,y0,options,p1,p2…) 将参数p1,p2,p3,..等传递给函数 odefun ,再进行计算。若没有参数设置,则令options=[]。 1.求解具体ODE 的基本过程: (1)根据问题所属学科中的规律、定律、公式,用微分方程与初始条件进行描述。 F(y,y’,y’’,…,y (n),t) = 0 y(0)=y 0,y’(0)=y 1,…,y (n-1)(0)=y n-1 而y=[y;y(1);y(2);…,y(m-1)],n 与m 可以不等 (2)运用数学中的变量替换:y n =y (n-1),y n-1=y (n-2),…,y 2=y 1=y ,把高阶(大于2阶)的方 程(组)写成一阶微分方程组:????????? ???=?????? ????????′′′=′)y ,t (f )y ,t (f )y ,t (f y y y y n 21n 21M M ,????????????=????????????=n 10n 210y y y )0(y )0(y )0(y y M M (3)根据(1)与(2)的结果,编写能计算导数的M-函数文件odefile 。 (4)将文件odefile 与初始条件传递给求解器Solver 中的一个,运行后就可得到ODE 的、在指定时间区间上的解列向量y (其中包含y 及不同阶的导数)。 2.求解器Solver 与方程组的关系表见表2-3。 表2-3 函数指令 含 义 函 数 含 义 ode23 普通2-3阶法解ODE odefile 包含ODE 的文件 ode23s 低阶法解刚性ODE odeset 创建、更改Solver 选项 ode23t 解适度刚性ODE 选项 odeget 读取Solver 的设置值 ode23tb 低阶法解刚性ODE odeplot ODE 的时间序列图 求解器 Solver ode45 普通4-5阶法解ODE 输出 odephas2 ODE 的二维相平面图

常微分方程初值问题数值解法

常微分方程初值问题数值求解 学生:张玉娟 学号:3070942232 指导老师:梁鹏 摘 要:数值求解是指在没有办法知道未知函数的解析表达式的情况下,近似计算未知函数在其定义域 中的某些离散点上的函数值。本文利用欧拉方法、梯形方法和龙格_库塔方法三种单步法基于Matlab 求解常微分方程初值问题。 关键词:常微分初值问题;数值求解;欧拉方法;梯形方法;龙格_库塔方法;Matlab 实现 1 引言 很多科学技术和工程问题常用微分方程的形式建立数学模型,因此微分方程的求解是很有意义的。建立微分方程只是解决问题的第一步,通常需要求出方程的解来说明实际现象,并加以检验。如果能得到解析形式的解固然是便于分析和应用的,但是我们知道,虽然求解常微分方程有各种各样的解析方法,但解析方法只能用来求解一些典型的方程,而对于绝大多数的微分方程问题,很难或者根本不可能得到它的解析解,实际问题终归结出来的微分方程主要靠数值解法。因此,研究微分方程求解的数值方法是非常有意义的。本文介绍了欧拉法、梯形法和四阶龙格_库塔方法三种单步法,通过Matlab 的平台运行。 2 建模 常微分方程初值问题的数学模型是:求y ()y x =,使之满足 0'()(,)()y x f x y x b y a y =≤≤??=?,(a ),, (1) 其中0y ,a ,b 是已知的常数,(,)f x y 是已知函数,且满足条件: (,)(,')'f x y f x y L y y -≤-, 式中的L 是不依赖于y ,'y 的常数,称为利普希茨(Lipschitz )常数。 由常微分方程理论知识可知,上述问题存在唯一解()y x 。现在的目标就是计算区间[],a b 上等节点i x a ih =+处该未知函数的函数值()i y x ,其中()/h b a N =-,0,1,2,...,i N =。为此,可以用求解常微分方程问题的单步法,即欧拉方法、梯形方法和龙格_库塔方法求解。 3 算法求解和程序设计 3.1 欧拉方法 将微分方程离散化,用向前商 1()() n n y x y x h +-代替微分()n y x ,代入(1)中的微分方程,可得 1()() (,())1,2,3,...n n n n y x y x f x y x n h +-==,() 化简可得

常微分方程的几种数值解法

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊ 常微分方程的几种数值解法 数学与应用数学肖振华指导教师张秀艳 【摘要】自然界与工程技术中的很多现象,可以归结为微分方程定解问题。其中,常微分方程求解是微分方程的重要基础内容。但是,对于许多的微分方程,往往很难得到甚至不存在精确的解析表达式,这时候,数值解提供了一个很好的解决思路。,针对于此,本文对常微分方程数值解法进行了简单研究,主要讨论了一些常用的数值解法,如欧拉法、改进的欧拉法、Runge—Kutta方法、Adams预估校正法以及勒让德谱方法等,通过具体的算例,结合MA TLAB求解画图,初步给出了一般常微分方程数值解法的求解过程。同时,通过对各种方法的误差分析,让大家对各种方法的特点和适用范围有一个直观的感受。 【关键词】常微分方程数值解法MA TLAB 误差分析 【Abstract】 Many phenomena in nature and engineering can be attributed to the definite solution of the problem for differential equations. Among them, the ordinary differential equation solving is an important foundation for the content of the differential equations. However, many of the differential equations are often difficult to obtain accurate analytical expression .At this time, the numerical solution provides a good idea. For the Numerical Solution of Ordinary Differential Equations in this article, we focuses on some commonly used numerical solution, such as the Euler method, improved Euler method, Runge-Kutta method, Adams predictor corrector method as well as newer spectral methods. Through specific examples, combined with MATLAB solving and drawing, we initially know the solution process of general numerical solution of ordinary differential equations . At the same time, according to the error analysis of various methods , everyone has an intuitive feel of the characteristics and scope of the various methods. 【Keywords】Ordinary Differential Equations Numerical Solution MATLAB error analysis

常微分方程数值解

第八章 常微分方程数值解 姓名 学号 班级 习题主要考察点:欧拉方法的构造,单步法的收敛性和稳定性的讨论,线性多步法中亚当姆斯方法的构造和讨论。 1 用改进的欧拉公式,求以下微分方程 ]1,0[1)0(2∈?????=-='x y y x y y 的数值解(取步长2.0=h ),并与精确解作比较。(改进的尤拉公式的应用) 解:原方程可转化为 x y y y 22 -=',令22 y z =,有x z dx dz 22-=- 解此一阶线性微分方程,可得 12+= x y 。 利用以下公式 )4,3,2,1,0()(21)2(2.0)2(2.01=???? ?????+=-?+=-?+=+i y y y y x y y y y x y y y c p i p i p i c i i i i p 求在节点)5,4,3,2,1(2.0=?=i i x i 处的数值解i y ,其中,初值为1,000==y x 。 MATLAB 程序如下: x(1)=0;%初值节点 y(1)=1;%初值 fprintf('x(%d)=%f,y(%d)=%f,yy(%d)=%f\n',1,x(1),1,y(1),1,y(1)); for i=1:5 yp=y(i)+0.2*(y(i)-2*x(i)/y(i));%预报值 yc=y(i)+0.2*(yp-2*x(i)/yp);%校正值 y(i+1)=(yp+yc)/2;%改进值 x(i+1)=x(i)+0.2;%节点值 yy(i+1)=sqrt(2*x(i+1)+1);%精确解 fprintf('x(%d)=%f,y(%d)=%f,yy(%d)=%f\n',i+1,x(i+1),i+1,y(i+1),i+1,yy(i+1)); end 程序运行的结果如下: x(1)=0.000000, y(1)=1.000000, yy(1)=1.000000 x(2)=0.200000, y(2)=1.220000, yy(2)=1.183216 x(3)=0.400000, y(3)=1.420452, yy(3)=1.341641 x(4)=0.600000, y(4)=1.615113, yy(4)=1.483240 x(5)=0.800000, y(5)=1.814224, yy(5)=1.612452 x(6)=1.000000, y(6)=2.027550, yy(6)=1.732051

相关主题
文本预览
相关文档 最新文档