第12章 常微分方程(组)数值求解方程与方程组的数值解

合集下载

常微分方程的数值解法实验报告

常微分方程的数值解法实验报告

常微分方程的数值解法专业班级:信息软件 姓名:吴中原 学号:120108010002 一、实验目的1、熟悉各种初值问题的算法,编出算法程序;2、明确各种算法的精度与所选步长有密切关系;通过计算更加了解各种 算法的优越性。

二、实验题目1、根据初值问题数值算法,分别选择二个初值问题编程计算;2、试分别取不同步长,考察某节点j x处数值解的误差变化情况; 3、试用不同算法求解某初值问题,结果有何异常; 4、分析各个算法的优缺点。

三、实验原理与理论基础(一) 欧拉法算法设计对常微分方程初始问题(6-1)(6-2)用数值方法求解时,我们总是认为(6-1)、(6-2)的解存在且唯一。

欧拉法是解初值问题的最简单的数值方法。

从(6-2)式由于y (x 0) = y 0已给定,因而可以算出),()('000y x f x y =。

设x 1 = h 充分小,则近似地有:),()(')()(00001y x f x y hx y x y =≈-(6-3)记 ,n ,,i x y y i i 10 )(== 从而我们可以取),(0001y x hf y y ==作为)(1x y 的近似值。

利用1y 及f (x 1, y 1)又可以算出)(2x y 的近似值:),(1112y x hf y y +=一般地,在任意点()h n x n 11+=+处)(x y 的近似值由下式给出),(1n n n n y x hf y y +=+(6-4)这就是欧拉法的计算公式,h 称为步长。

⎪⎩⎪⎨⎧==)( ),(d d 00y x y y x f x y(二)四阶龙格-库塔法算法设计:欧拉公式可以改写为:()111,i i i i y y k k hf x y +=+⎧⎪⎨=⎪⎩,它每一步计算(),f x y 的值一次,截断误差为()2o h 。

改进的欧拉公式可以改写为:()()()11212112,,i i i i i i y y k k k hf x y k hf x h y k +⎧=++⎪⎪=⎨⎪=++⎪⎩,它每一步要计算(),f x y 的值两次,截断误差为()3o h 。

常微分方程的数值解法的原理

常微分方程的数值解法的原理

常微分方程的数值解法的原理
常微分方程的数值解法是一种解决常微分方程初值问题的方法,其基本原理是:先取自变量的一系列离散点,把微分问题离散化,求出离散问题的数值解,以此作为微分问题解的近似。

具体步骤如下:
1、假定解存在且唯一,解函数y(x)及右端函数?(x,y)具有所需的光滑
程度。

2、取步长h>0,以h剖分区间【α,b】,令xi=α+ih,把微分方程离散化成
一个差分方程。

3、以y(x)表微分方程初值问题的解,以yi表差分问题的解,就是近似解
的误差,称为全局误差。

4、设计各种离散化模型,求出近似解,估计误差以及研究数值方法的稳定性
和收敛性等。

常微分方程的数值解

常微分方程的数值解

f ( x, y1 ) f ( x, y2 ) L y1 y2
(其中 L 为 Lipschitz 常数)则初值问题( 1 )存 在唯一的连续解。
求问题(1)的数值解,就是要寻找解函数在一 系列离散节点x1 < x2 <……< xn < xn+1 上的近似 值y1, y 2,…,yn 。 为了计算方便,可取 xn=x0+nh,(n=0,1,2,…), h称为步长。
(1),(2)式称为初值问题,(3)式称为边值问题。 在实际应用中还经常需要求解常微分方程组:
f1 ( x, y1 , y2 ) y1 ( x0 ) y10 y1 (4) f 2 ( x, y1 , y2 ) y2 ( x0 ) y20 y2
本章主要研究问题(1)的数值解法,对(2)~(4)只 作简单介绍。
得 yn1 yn hf ( xn1 , yn1 )
上式称后退的Euler方法,又称隐式Euler方法。 可用迭代法求解
二、梯形方法 由
y( xn1 ) y( xn )
xn1 xn
f ( x, y( x))dx
利用梯形求积公式: x h x f ( x, y( x))dx 2 f ( xn , y( xn )) f ( xn1 , y( xn1 ))
常微分方程的数言 简单的数值方法 Runge-Kutta方法 一阶常微分方程组和高阶方程
引言
在高等数学中我们见过以下常微分方程:
y f ( x, y, y) a x b y f ( x, y ) a x b (2) (1) (1) y ( x ) y , y ( x ) y 0 0 0 0 y ( x0 ) y0 y f ( x, y, y) a x b (3) y(a) y0 , y(b) yn

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

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

许多实际问题的数学模型是微分方程或微分方程的定解问题。

如物体运动、电路振荡、化学反映及生物群体的变化等。

常微分方程可分为线性、非线性、高阶方程与方程组等类;线性方程包含于非线性类中,高阶方程可化为一阶方程组。

若方程组中的所有未知量视作一个向量,则方程组可写成向量形式的单个方程。

因此研究一阶微分方程的初值问题⎪⎩⎪⎨⎧=≤≤=0)(),(y a y bx a y x f dxdy, (9-1) 的数值解法具有典型性。

常微分方程的解能用初等函数、特殊函数或它们的级数与积分表达的很少。

用解析方法只能求出线性常系数等特殊类型的方程的解。

对非线性方程来说,解析方法一般是无能为力的,即使某些解具有解析表达式,这个表达式也可能非常复杂而不便计算。

因此研究微分方程的数值解法是非常必要的。

只有保证问题(9-1)的解存在唯一的前提下,研究其数值解法或者说寻求其数值解才有意义。

由常微分方程的理论知,如果(9-1)中的),(y x f 满足条件(1)),(y x f 在区域} ),({+∞<<∞-≤≤=y b x a y x D ,上连续; (2)),(y x f 在上关于满足Lipschitz 条件,即存在常数,使得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称为由到1+n x 的步长。

今后如无特别说明,我们总假定步长为常量。

建立数值解法,首先要将微分方程离散化,一般采用以下几种方法: (1) 用差商近似导数在问题(9-1)中,若用向前差商hx y x y n n )()(1-+代替)(n x y ',则得)1,,1,0( ))(,()()(1-=≈-+N n x y x f hx y x y n n n n n)(n x 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)由初值经过步迭代,可逐次算出N y y y ,,21。

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

数值分析常微分方程数值解法
7
第8页/共105页
➢ 数值积分方法(Euler公式)
设将方程 y=f (x, y)的两端从 xn 到xn+1 求积分, 得
y( xn1) y( xn )
xn1 f ( x, y( x))dx :
xn
xn1 F ( x)dx
xn
用不同的数值积分方法近似上式右端积分, 可以得到计算 y(xn+1)的不同的差分格 式.
h2 2
y''( )
Rn1
:
y( xn1)
yn1
h2 2
y''( )
h2 2
y''( xn ) O(h3 ).
局部截断误差主项
19
第20页/共105页
➢ 向后Euler法的局部截断误差
向后Euler法的计算公式
yn1 yn hf ( xn1, yn1 ), n 0, 1, 2,
定义其局部截断误差为
y 计算 的n递1 推公式,此类计算格式统称为差分格式.
3
第4页/共105页
数值求解一阶常微分方程初值问题
y' f ( x, y), a x b,
y(a)
y0
难点: 如何离散 y ?
➢ 常见离散方法
差商近似导数 数值积分方法 Taylor展开方法
4
第5页/共105页
➢ 差商近似导数(Euler公式)
(0 x 1)
y(0) 1.
解 计算公式为
yn1
yn
hfn
yn
h( yn
2xn ), yn
y0 1.0
n 0, 1, 2,
取步长h=0.1, 计算结果见下表
13

常微分方程的求解

常微分方程的求解

18—1 常微分方程数值解法2§1 引言§2 Euler 方法§3 Runge -Kutta 方法§4 单步法的收敛性与稳定性§5 线性多步法§6 方程组与高阶方程的情况§7 边值问题的数值解法3§1 引言微分方程:关于一个未知函数的方程,方程中含有未知函数的(偏)导数,以及自变量等,其中关于未知函数导数的最高次数称为微分方程的阶数.例如:0)()(')()(''=++−x c y x b y x a x y4实际中,很多问题的数学模型都是微分方程. 常微分方程作为微分方程的基本类型之一,在理论研究与工程实际上应用很广泛. 很多问题的数学模型都可以归结为常微分方程. 很多偏微分方程问题,也可以化为常微分方程问题来近似求解.微分方程的应用情况5对于一个常微分方程:'(,) ,[,]dy y f x y x a b dx==∈为了使解存在,一般要对函数f 施加限制条件,例如要求f 对y 满足Lipschitz 条件:1212(,)(,)f x y f x y L y y −≤−6同时,一个有解的微分方程通常会有无穷多个解例如cos() sin(),dyx y x a a R dx=⇒=+∀∈为了使解唯一,需要加入一个限定条件. 通常会在端点出给出,如下面的初值问题:(,),[,]()dyf x y x a b dx y a y ⎧=∈⎪⎨⎪=⎩7常微分方程的解是一个函数,但是,只有极少数特殊的方程才能求解出来,绝大多数是不可解的.并且计算机没有办法对函数进行运算. 一般考虑其近似解法,一种是近似解析法,如逼近法、级数解法等,另一种是本章介绍的数值解法.8§2 Euler 方法92-1 Euler 公式对常微分方程初值问题:⎩⎨⎧==00')(),(y x y y x f y 数值求解的关键在于消除其中的导数项——称为离散化. 利用差商近似逼近微分是离散化的一个基本途径.10现在假设求解节点为),,1,0(m i ih a x i "=+=,其中ma b h −=为步长,这些节点相应的函数值为)(,),(1m x y x y ". 在点n x 处,已知))(,()('n n n x y x f x y =用n x 的向前差商nn n n x x x y x y −−++11)()(近似代替)('n x y ,如§1,则得到所谓的Euler 公式1(,)n n n n y y hf x y +=+——单步、显式格式11Euler 公式的局部截断误差:假设)(n n x y y =情况下,11)(++−n n y x y 称为局部截断误差.'''2311''23()()()()()2()(,()(()))2n n n n n n n n n y x y x y y x hy x h O h y x h y x f x y x h O h ++−=+++−−=+故有)(2)(''211n n n x y h y x y ≈−++. 122-2 后退的Euler 公式同样对常微分方程初值问题,在1+n x 点,已知))(,()(111'+++=n n n x y x f x y ,如果用向后差商hx y x y n n )()(1−+代替)(1'+n x y ,则得到后退的Euler 公式:111(,)n n n n y y hf x y +++=+——单步、隐式格式13相对于以上可以直接计算1+n y 的Euler 公式(显式),上式是隐式公式. 一般来讲,显式容易计算,而隐式具有更好的稳定性.求解上述公式,通常使用迭代法:对于给定的初值)0(1+n y,计算(1)()111(,)(0,1,)k k n n n n y y f x y k ++++=+=", 如果)(1lim k n k y +∞→收敛,则其极限必满足上述后退Euler 公式.14局部截断误差:假设)(n n x y y =,则),()(111++++=n n n n y x hf x y y .由于)]()[,())(,(),(1111111+++++++−+=n n n y n n n n x y y x f x y x f y x f η且''''2111(,())()()()()n n n n n f x y x y x y x hy x O h +++==++15则有'2''31111(,)[()]()()()()n y n n n n n n y hf x y y x y x hy x h y x O h η++++=−++++将此式减去式2'''31()()()()()2n n n n h y x y x hy x y x O h +=+++ 可得,2''311111()(,)[()]()()2n n y n n n n h y x y hf x y x y y x O h η+++++−=−−+16考虑到21111(,)()1(,)y n y n hf x O h hf x ηη++=++−,则有22''3''11()()()()22n n n n h h y x y y x O h y x ++−=−+≈−172-3 梯形公式由于上述两个公式的局部截断误差绝对值相等,符号相反,故求其算术平均得到梯形公式:111[(,)(,)]2n n n n n n hy y f x y f x y +++=++——单步、隐式格式18梯形法同样是隐式公式,可用下列迭代公式求解:(0)1(1)()111(,)[(,)(,)]2n n n n k k n n n n n n y y hf x y h y y f x y f x y +++++⎧=+⎪⎨=++⎪⎩局部截断误差:类似于后退Euler ,可计算出)(12)('''311n n n x y h y x y −≈−++192-4 改进的Euler 公式上述用迭代法求解梯形公式虽然提高了精度,但计算量也很大. 实际上常采用的方法是,用Euler 公式求得初始值(预测),然后迭代法仅施行一次(校正)——改进的Euler 公式:1111(,)[(,)(,)]2n n n n n n n n n n y y f x y hy y f x y f x y ++++⎧=+⎪⎨=++⎪⎩20估计上式中第二式当1+n y 为准确值时的局部截断误差:''11113(3)()()(()[()()])2()12n n n n n n n hy x y y x y x y x y x hy x ++++−=−++≈−212-5 Euler 两步公式如果用中心差商hx y x y n n 2)()(11−+−代替)('n x y ,则得Euler 两步公式112(,)n n n n y y hf x y +−=+——两步、显式格式22假设1−n y 及n y 均为准确值,利用Taylor 展式容易计算Euler 两步公式的局部截断误差为:11113(3)()()(()2(,()))()3n n n n n n n y x y y x y x hf x y x h y x +++−−=−+≈23此式与梯形公式相结合,得到如下的预测-校正公式:111112(,)[(,)(,)]2n n n n n n n n n n y y hf x y hy y f x y f x y −++++⎧=+⎪⎨=++⎪⎩假设第一式中的1−n y 及n y ,以及第二式中的n y 及1+n y 均是准确值,则有,2441)()(1111−≈−−++++n n n n y x y y x y 从而可得以下的事后估计式,111111114()()51()()5n n n n n n n n y x y y y y x y y y ++++++++⎧−≈−−⎪⎪⎨⎪−≈−⎪⎩25可以期望,以上式估计的误差作为计算结果的补偿,可以提高计算精度.以n p 及n c 分别表示第n 步的预测值和校正值,则有以下的“预测-改进-校正-改进”方案(其中在1+n p 与1+n c 尚未计算出来的前提下,以n n c p −代替11++−n n c p :26预测:'112n n n hy y p +=−+预测的改进:)(5411n n n n c p p m −−=++计算:),(11'1+++=n n n m x f m校正:)(2'1'1++++=n n n n m y hy c校正的改进:)(511111++++−+=n n n n c p c y计算:),(11'1+++=n n n y x f y27例 用Euler 方法求解初值问题2'[0,0.6](0)1y y xy x y ⎧=−−∈⎨=⎩取0.2h =,要求保留六位小数. 解:Euler 迭代格式为2210.2()0.80.2k k k k k k k k y y y x y y x y +=+−−=−因此2821000(0.2)0.80.20.8y y y x y ≈=−= 22111(0.4)0.80.20.6144y y y x y ≈=−=23222(0.6)0.80.20.461321y y y x y ≈=−=29例 用改进的Euler 方法求解初值问题2'sin 0[0,0.6](0)1y y y x x y ⎧++=∈⎨=⎩取0.2h =,求(0.2),(0.4)y y 的近似值,要求保留六位小数.解:改进的Euler 格式为212211110.2(sin )0.2(sin sin )2k k k k k k k k k k k k k y y y y x y y y y x y y x +++++⎧=+−−⎪⎨=+−−−−⎪⎩30即,222110.820.08sin 0.1(0.80.2sin )sin k k k k k k k k y y y x y y x x ++=−−−则有1(0.2)0.807285y y ≈=,2(0.4)0.636650y y ≈=31§3 Runge -Kutta 方法Def.1如果一种方法的局部截断误差为)(1+p h O ,则称该方法具有p 阶精度. 323-2 Runge —Kutta 方法的基本思想上述的Taylor 级数法虽然可得到较高精度的近似公式,但计算导数比较麻烦. 这里介绍不用计算导数的方法.))(,()()()('1h x y h x f h x y hx y x y n n n n n θθθ++=+=−+——平均斜率.33如果粗略地以),(n n y x f 作为平均斜率,则得Euler 公式;如果以221K K +作为平均斜率,其中),(1n n y x f K =,),(112hK y x f K n n +=+,则得改进的Euler 公式.343-3 二阶的Runge -Kutta 方法对点n x 和)10(≤<+=+p ph x x n p n ,用这两点斜率的线性组合近似代替平均斜率,则得计算公式:11122121()(,)(,)n n n n n p n y y h K K K f x y K f x y phK λλ++⎧=++⎪=⎨⎪=+⎩35现确定系数p ,,21λλ,使得公式具有二阶精度. 因为,取n y 为()n y x ,则'1(,)(,())'()n n n n n nK f x y f x y x y x y === 再把2K 在),(n n y x 处展开,有36'21(,)(,)n p n n n n K f x y phK f x ph y phy +=+=++代入可得,'2''31122()()n n n n y y hy ph y O h λλλ+=++++'2(,)(,)(,)()n n x n n y n n n f x y f x y ph f x y phy O h =+⋅+⋅+'2(')(,)()n x y n n y ph f f y x y O h =+⋅+⋅+'''2()n n y ph y O h =+⋅+37相比较二阶Taylor 展开''2'12n n n n y h hy y y ++=+,有,⎪⎩⎪⎨⎧==+211221p λλλ满足此条件的公式称为二阶Runge -Kutta 公式.38可以验证改进的Euler 公式属于二阶Runge -Kutta 公式. 下列变形的Euler 公式也是二阶Runge -Kutta 公式:12121(,)(,)22n n n n n n y y hK K f x y h h K f x y K +⎧⎪=+⎪=⎨⎪⎪=++⎩393-4 三阶Runge -Kutta 公式同二阶Runge -Kutta 公式,考虑三点,,(01)n n p n q x x x p q ++≤≤≤试图用它们的斜率321,,K K K 的线性组合近似代替平均斜率,即有如下形式的公式:1112233121312()(,)(,)(,())n n n n n n n n y y h K K K K f x y K f x ph y phK K f x qh y qh rK sK λλλ+=+++⎧⎪=⎪⎨=++⎪⎪=+++⎩40把32,K K 在),(n n y x 处展开,通过与)(1+n x y 在n x 的直接Taylor 展式比较,可确定系数s r q p ,,,,,,321λλλ,满足下式,从而使得上述公式具有三阶精度,41特别地,2,1,1,21,32,61231=−======s r q p λλλ是其一特例.123232223311213161p q p q pqs r s λλλλλλλλ++=⎧⎪⎪+=⎪⎪⎪+=⎨⎪⎪=⎪⎪+=⎪⎩423-5 四阶Runge -Kutta 公式相同的方法,可以导出下列经典的四阶Runge -Kutta 公式:112341213243(22)6(,)(,)22(,)22(,)n n n n n n n n n n h y y K K K K K f x y h h K f x y K h h K f x y K K f x h y hK +⎧=++++⎪⎪=⎪⎪⎪=++⎨⎪⎪=++⎪⎪=++⎪⎩43例 用经典四阶Runge —Kutta 方法求解初值问题'83[0,0.4](0)1y y x y =−⎧∈⎨=⎩,取0.2h =,求(0.4)y 的近似值,要求保留六位小数.解:四阶Runge —Kutta 格式为44112341211123122241330.2(22)6(,)830.2(,)83(0.1) 5.6 2.120.2(,)83(0.1) 6.32 2.372(,0.2)83(0.2) 4.208 1.578k k k k k k k k k k k kk k k k ky y K K K K K f x y y K f x y K y K yK f x y K y K y K f x y K y K y ++++⎧=++++⎪⎪==−⎪⎪⎪=+=−+=−⎨⎪⎪=+=−+=−⎪⎪⎪=+=−+=−⎩则10.5494 1.2016k k y y +=+,45故12(0.2) 2.3004,(0.4) 2.4654y y y y ≈=≈=.注:由准确解382()33xy x e −=−可得(0.2) 2.300792,(0.4) 2.465871y y ==46§5 线性多步法基本思想:在计算1+i y 之前,已计算出一系列的近似值i y y ,,1",如果充分利用这些已知信息,可以期望会获得更高精度的)(1+i x y 的近似值1+i y .基本方法:基于数值积分与基于Taylor 展开的构造方法.475-1 基于数值积分的构造方法对方程),('y x f y =两边从i x 到1+i x 积分,则得∫++=+1),()()(1i ix x i i dxy x f x y x y 设)(x P r 是f (x , y )的插值多项式,由此可得以下的一般形式的计算公式:∫++=+1)(1i ix x r i i dxx P y y 48例 取线性插值))(,())(,()(11111+++++−−+−−=i i i i ii i i i i r x y x f x x x x x y x f x x x x x P ,则得到梯形法:)],(),([2111+++++=i i i i i i y x f y x f hy y495-2 Adams 显式公式在区间],[1+i i x x 上利用r +1个数据点),(,),,(),,(11r i r i i i i i f x f x f x −−−−"构造插值多项式)(x P r ,由牛顿后插公式(注意到:j i j i j f f −Δ=∇)j i jrj j i r f j t th x P −=Δ⎟⎟⎠⎞⎜⎜⎝⎛−−=+∑0)1()(其中!)1()1(j j s s s j s +−−=⎟⎟⎠⎞⎜⎜⎝⎛". 50可得10rj i i rj i jj y y h f αΔ+−==+∑——Adams 显式公式其中1(1)j j t dt j α−⎛⎞=−⎜⎟⎝⎠∫,它可写成:∑=−++=rj ji rj i i f h y y 01β515-3 Adams 隐式公式在区间],[1+i i x x 上利用r +1个数据点),(,),,(),,(1111+−+−++r i r i i i i i f x f x f x "构造插值多项式)(x P r ,由牛顿后插公式101)1()(+−=+Δ⎟⎟⎠⎞⎜⎜⎝⎛−−=+∑j i jrj ji r f j t th x P 可得*11rj i i rj i j j y y h f α+−+==+Δ∑——Adams 隐式公式52其中01(1)jj t dt j −−⎛⎞α=−⎜⎟⎝⎠∫,它又可写成: *11ri i rj i j j y y h f β+−+==+∑535-4 Adams 预测-校正公式以r =3时的Adams 显式与隐式公式为例. 此时,显式公式为)9375955(243211−−−+−+−+=i i i i i i f f f f hy y 利用Taylor 展式,容易计算局部截断误差为)(720251)5(5i x y h . 54)5199(242111−−+++−++=i i i i i i f f f f hy y 同样利用Taylor 展开可得,其局部截断误差为5(5)19()720i h y x −. 隐式公式为55⎪⎩⎪⎨⎧+−++=−+−+=−−+++−−−+)519),(9(24)9375955(24211113211i i i i i i i i i i i i i f f f y x f hy y f f f f h y y 注 利用2-5节的相同作法同样可以构造更精确的计算过程.可构造利用显式预测,隐式校正的计算公式:56§6 方程组与高阶方程的情形6-1 一阶方程组常微分方程初值问题为⎩⎨⎧==00)(),('y x y y x f y 此时T m y y y ),,(1"=,Tm f f f ),,(1"=. 此时上述的一切方法均可使用,只是注意y 与f 此时为向量.576-2 化高阶方程为一阶方程组解下列的m 阶方程()(1)'(1)(1)000000(,,',,)(),'(),,()m m m m y f x y y y y x y y x y yx y −−−⎧=⎨===⎩""令)1(21,,',−===m m y y y y y y ",则有58'12'23'1'12(,,,,)m m m m y y y y y yy f x y y y −⎧=⎪=⎪⎪⎨⎪=⎪⎪=⎩#"初始条件为:)1(00'002001)(,,)(,)(−===m m y x y y x y y x y "。

常微分方程数值解法5262115页PPT文档

常微分方程数值解法5262115页PPT文档
x 1 ( t ) 表示时刻 t 食饵的密度,x 2 ( t ) 表示捕食者的密度;
r 表示食饵独立生存时的增长率;
d 表示捕食者独立生存时的死亡率;
a 表示捕食者的存在对食饵增长的影响系数,反映捕
食者对食饵的捕获能力;
b 表示食饵的存在对捕食者增长的促进系数,反映食
饵对捕食者的喂养能力
150 100
令 y 1 y ,y 2 y ',y 3 y '', ,y n y ( n 1 )
可以将以上高阶微分方程化为如下一阶常微分方程组
y1 ' y2 y2 ' y3 yn ' an(x)y1
a1(x)yn f (x)
例:P120,1(a),Bessel方程
常微分方程的数值解
一般地,凡表示未知函数,未知函数的导 数与自变量之间的关系的方程叫做微分方 程.未知函数是一元函数的,叫常微分方 程;未知函数是多元函数的,叫做偏微分方 程.

y ' x y'x2y2 y''y'xy
Matlab实现 [t,x]=ode45(f,ts,x0,options,p1,p2,......)
50 0 0
30 20 10
0 0
10
20
50
30
20
10

0
30
0
10
8
6
4
2
100
0
50
100
150
50
100
高阶常微分方程的解法
高阶常微分方程
y ( n ) a 1 ( x ) y ( n 1 ) a ( n 1 ) ( x ) y ' a n ( x ) y f( x )

常微分方程数值解法教材

常微分方程数值解法教材

常微分方程数值解法科学技术中的许多问题,在数学中往往归结为微分方程的求解问题。

例如天文学中研究星体运动,空间技术中研究物体飞行等,都需要求解常微分方程初值问题。

最简单的常微分方程初值问题是座=f (x, y), a £ x £ b,dx ' " (*)y(x o) =y°.定理如果f (x, y)在区域D ={( x,y) a《x〈b, y<°°}内连续,且关于y满足Lipschitz条件,那么初值问题 (*)的解存在且惟一。

因为数值解是求微分方程解y(x)的近似值,所以总假定微分方程的解存在惟一,即初值问题(*)中的f(x, y)满足定理的条件。

除特殊情形外,初值问题(*) 一般求不出解析解,即使有的能求出解析解,其函数表示式也比较复杂,计算量比较大,况且实际问题往往只要求在某一时刻解的函数值,因此,有必要研究初值问题(*)的数值解法。

所谓初值问题(*)的数值解法,就是寻求解y(x)在区间[a,b]上的一系列点x〔:::x^:: x3 :::..• :::x n:::■■-上的近似值y i,y2,…,y n,….记h j = x —x口(i =1,2, |||)表示相邻两个节点的间距,称为步长。

求微分方程数值解的主要问题:(1)如何将微分方程也=f (x, y)离散化,并建立求其数值解的递推公式;dx(2)递推公式的局部截断误差、数值数y n与精确解y(x n)的误差估计;(3)递推公式的稳定性与收敛性.、Euler方法Euler法是最早的解决一阶常微分方程初值问题的一种数值方法,虽然它不够精确,很少被采用,但是它在某种程度上反映了数值方法的基本思想和特征。

考虑初值问题% f(x, y), (1.1)dxyMi。

,(1.2) 为了求得它在等距离散点x1 <x2<x n上的数值解,首先将(1.1)离散化。

设h =X i —x — (i =1,2,|||),将式(1.1)离散化的办法有 Taylor 展开法、数值微分法及数值积分法。

常微分方程数值解法

常微分方程数值解法

欧拉方法
总结词
欧拉方法是常微分方程数值解法中最基础的方法之一,其基本思想是通过离散化时间点上的函数值来 逼近微分方程的解。
详细描述
欧拉方法基于微分方程的局部线性化,通过在时间点上逐步逼近微分方程的解,得到一系列离散点上 的近似值。该方法简单易行,但精度较低,适用于求解初值问题。
龙格-库塔方法
总结词
影响
数值解法的稳定性对计算结果的精度和可靠 性有重要影响。
判断方法
通过分析数值解法的迭代公式或离散化方法, 判断其是否具有稳定性和收敛性。
数值解法的收敛性
定义
数值解法的收敛性是指随着迭代次数的增加, 数值解逐渐接近于真实解的性质。
影响
数值解法的收敛性决定了计算结果的精度和 计算效率。
分类
根据收敛速度的快慢,可以分为线性收敛和 超线性收敛等。
判断方法
通过分析数值解法的迭代公式或离散化方法, 判断其是否具有收敛性。
误差分析
定义
误差分析是指对数值解法计算过程中 产生的误差进行定量分析和估计的过 程。
分类
误差可以分为舍入误差、截断误差和 初始误差等。
影响
误差分析对于提高计算精度和改进数 值解法具有重要意义。
分析方法
通过建立误差传递公式或误差估计公 式,对误差进行定量分析和估计。
生物学
生态学、生物种群动态和流行病传播 等问题可以通过常微分方程进行建模
和求解。
化学工程
化学反应动力学、化学工程流程模拟 等领域的问题可以通过常微分方程进 行描述和求解。
经济学
经济系统动态、金融市场模拟和预测 等问题可以通过常微分方程进行建模 和求解。
02 常微分方程的基本概念
常微分方程的定义

常微分方程解法

常微分方程解法

-179-第十五章 常微分方程的解法建立微分方程只是解决问题的第一步,通常需要求出方程的解来说明实际现象,并加以检验。

如果能得到解析形式的解固然是便于分析和应用的,但是我们知道,只有线性常系数微分方程,并且自由项是某些特殊类型的函数时,才可以肯定得到这样的解,而绝大多数变系数方程、非线性方程都是所谓“解不出来”的,即使看起来非常简单的方程如22x y dxdy+=,于是对于用微分方程解决实际问题来说,数值解法就是一个十分重要的手段。

§1 常微分方程的离散化下面主要讨论一阶常微分方程的初值问题,其一般形式是⎪⎩⎪⎨⎧=≤≤=0)(),(y a y bx a y x f dx dy(1)在下面的讨论中,我们总假定函数),(y x f 连续,且关于y 满足李普希兹(Lipschitz)条件,即存在常数L ,使得|||),(),(|y y L y x f y x f −≤−这样,由常微分方程理论知,初值问题(1)的解必定存在唯一。

所谓数值解法,就是求问题(1)的解)(x y 在若干点b x x x x a N =<<<<=L 210处的近似值),,2,1(N n y n L =的方法,),,2,1(N n y n L =称为问题(1)的数值解,n n n x x h −=+1称为由n x 到1+n x 的步长。

今后如无特别说明,我们总取步长为常量h 。

建立数值解法,首先要将微分方程离散化,一般采用以下几种方法:(i )用差商近似导数若用向前差商hx y x y n n )()(1−+代替)('n x y 代入(1)中的微分方程,则得),1,0())(,()()(1L =≈−+n x y x f hx y x y n n n n 化简得))(,()()(1n n n n x y x hf x y x y +≈+如果用)(n x y 的近似值n y 代入上式右端,所得结果作为)(1+n x y 的近似值,记为1+n y ,则有),1,0(),(1L =+=+n y x hf y y n n n n (2)这样,问题(1)的近似解可通过求解下述问题⎩⎨⎧==+=+)(),1,0(),(01a y y n y x hf y y n n n n L (3) 得到,按式(3)由初值0y 可逐次算出L ,,21y y 。

常微分方程数值解法ppt课件

常微分方程数值解法ppt课件

若存在正的常数 L 使:
(Lipschitz)条件
|f( x ,y 1 ) f( x ,y 2 ) | L |y 1 y 2 | ( 1 .3 )
使 得 对 任 意 的 x [ a , b ] 及 y 1 ,y 2 都 成 立
则称 f (x,y) 对y 满足李普希兹条件,L 称为 Lipschitz常数.
节点 x i a i h i , 一 般 取 h i h ( ( b a ) / n ) 即 等 距
要计算出解函数 y(x) 在一系列节点
ax 0x 1x nb
处的近似值 y y(x ) i 完整版PPT课件i
16
yf(x,y) axb (1 .1 )
y(x 0) y0
(1 .2 )
对微分方程(1.1)两端从 xn到 xn1 进行积分
在大量的实际方程中出现的函数起码的连续性都 无法保证,更何况要求阶的导数
求解数值解
很多微分方程 根本求不到 问题的解析解!
重要手段。
完整版PPT课件
7
5.常微分方程数值解法的特点 常微分方程的数值解法常用来求近似解
根据提供的算法 通过计算机
数值解法得到的近似 解(含误差)是一个 离散的函数表.
便捷地实现
欧拉方法的导出把区间ab分为n个小区间步长为要计算出解函数yx在一系列节点iiyyx?iiixaihhhban?????一般取即等距节点处的近似值01naxxxb?????1iiihxx??nn等分001112yfxyaxbyxy????????对微分方程11两端从1nnxx?到进行积分11nnnnxxxxydxfxyxdx??????11nnxnnxyxyxfxyxdx?????右端积分用左矩形数值求积公式22baggxdxbagaba???????gxfxyx?令11nnnnxxnnfxyxnnyyfxyxh??????得x0x11nnnnnnyxyxhyxyhfxy??????1

常微分方程(组)的数值解法

常微分方程(组)的数值解法

刚性常微分方程组求解
function demo1 figure ode23s(@fun,[0,100],[0;1]) hold on, pause ode45(@fun,[0,100],[0;1]) %-------------------------------------------------------------------------function f=fun(x,y) dy1dx = 0.04*(1-y(1))-(1-y(2)).*y(1)+0.0001*(1-y(2)).^2; dy2dx = -1e4*dy1dx + 3000*(1-y(2)).^2; f = [dy1dx; dy2dx];
求解初值问题:
2x y' y y y ( 0) 1
(0 x 1)
y ' f ( x, y ) y (a) y 0
ode输入函数 function f=fun(x,y) f=y-2*x/y; 输出变量为因变 量导数的表达式
自变量在前,因变 量在后
2.3 常微分方程(组)的数值解法
知识要点

常微分方程初值问题---ode45,0de23
微分方程在化工模型中的应用
•间歇反应器的计算 •活塞流反应器的计算
•全混流反应器的动态模拟
•定态一维热传导问题
•逆流壁冷式固定床反应器一维模型
•固定床反应器的分散模型
Matlab常微分方程求解问题分类
边值问题:
高阶微分方程odefile的编写
求解: y"a(t )( y' ) 2 b(t ) y et cos 2t
a(t ) e t cos 2te 2t , b(t ) cos(2t )

常微分方程的数值解及其它问题PPT课件

常微分方程的数值解及其它问题PPT课件

2020/10/13
3
• 数值积分
• quad('fname',a,b,tol,trace) Simpson法求数值积 分。
• quad8('fname',a,b,tol,trace) Newton-Cotes法求 数值积分。
• fname是被积函数文件名。
• b,a分别是积分上下限。
• 用tol来控制积分精度。可缺省。缺省时默认 tol=0.001。
b
1
( b a )n
a f ( x ) d ( b x a ) 0 f ( a ( b a ) u ) d u ni 1 f ( a ( b a ) u i)
2020/10/13
13
例 如 对 于 上 面 的 离 散 函 数 , 我 们 有 a=1 , b=1.5。于是我们可键入:
• 用trace来控制是否用显示积分过程。可缺省。 缺省时默认trace=0,不显示过程。
2020/10/13
4
例如:求
e3 x2
0
dx。
第一步:在编辑器中建立被积函数的M文
件。取名为fname。即在编辑器中输入:
functiห้องสมุดไป่ตู้n y=fname(x)
y=exp(-x^2);
2020/10/13
例如有函数
x i 1 . 0 0 0 0 1 . 1 0 0 0 1 . 2 0 0 0 1 . 3 0 0 0 1 . 4 0 0 0 1 . 5 0 0 0 y i 1 . 8 4 1 5 2 . 1 9 0 3 2 . 5 5 8 4 2 . 9 4 2 6 3 . 3 3 9 6 3 . 7 4 6 2
常微分方程的数值解及其它问 题的数值解

常微分方程的数值解

常微分方程的数值解
欧拉方法的公式为$y_{n+1} = y_n + h f(x_n, y_n)$,其中$h$是步长,$f(x, y)$是微分方程的右端函数。
欧拉方法的实现
确定步长和初始值
根据问题的性质和精度要求,选择合适的步长 和初始值。
迭代计算
根据欧拉方法的公式,迭代计算下一个点的值。
终止条件
当达到预设的迭代次数或误差范围时,停止迭代。
常微分方程的应用
总结词
常微分方程在自然科学、工程技术和社会科学等领域有广泛应用。
详细描述
在物理学中,常微分方程可以描述物体的运动规律、电磁波的传播等;在化学中,可以描述化学反应 的动力学过程;在社会科学中,可以用于研究人口增长、经济趋势等。此外,常微分方程还在控制工 程、航空航天等领域有广泛应用。
确定步长和初始值
在应用龙格-库塔方法之前,需要 选择合适的步长和初始值。步长 决定了迭代的精度,而初始值则 用于启动迭代过程。
编写迭代公式
根据选择的步长和初始值,编写 龙格-库塔方法的迭代公式。该公 式将使用已知的函数值和导数值 来计算下一步的函数值。
迭代求解
按照迭代公式进行迭代计算,直 到达到所需的精度或达到预设的 最大迭代次数。
欧拉方法的误差分析
截断误差
由于欧拉方法只使用了微分方程的一次项, 因此存在截断误差。
全局误差
全局误差是实际解与近似解之间的最大偏差。
局部误差
由于每一步都使用了上一步的结果,因此存 在局部误差。
稳定性
欧拉方法是稳定的,但步长和初始值的选择 会影响其稳定性和精度。
04 龙格-库塔方法
龙格-库塔方法的原理
常用的数值解法包括欧拉方法、龙格-库塔方法、改进的欧拉方法、预估 校正方法和步进法等。

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

数值分析常微分方程数值解法
10定义若某算法在计算过程中任一步产生的误差在以后的计算中都逐步衰减则称该算法是绝对稳定的absolutelystable常数可以一般分析时为简单起见只考虑试验方程test是复数equation时将某算法应用于上式幵假设只在初值产生误差
(Numerical Methods for Ordinary Differential Equations )
中心差商近似导数
y( x1 )
y( x2 ) y( x0 ) 2h
y( x2 ) y( x0 ) 2h f ( x1 , y( x1 ))
x0
x1
x2
yi1 yi1 2h f ( xi , yi ) i 1, ... , n 1
假设 yi1 y( xi1 ), yi y( xi ) ,则可以导出 Ri y( xi1 ) yi1 O(h3 ) 即中点公式具有 2 阶精度。
只要f (x, y)在a,b R1上连续, 且关于 y 满足
Lipschitz 条件,即存在与 x, y无关的常数 L 使 | f (x, y1) f (x, y2 ) | L | y1 y2 |
对任意定义在 a,b上的 y1 x, y2 x都成立,
则上述IVP存在唯一解。
求函数 y(x) 在一系列节点 a = x0< x1<…< xn= b 处的近似值
yi y(xi ) (i 1, ... , n)
的方法称为微分方程的数值解法。 y1,L , yn 称为微分方程的数值解。
称节点间距 hi xi1 xi (i 0, ... , n 1)为步长, 通常采用等距节点,即取 hi = h (常数)。
三、初值问题的离散化方法
离散化方法的基本特点是依照某一递推公式, 按节点从左至右的顺序依次求出y(xi )的近似 yi 值(i 1, ... , n),取 y0。

数值求解常微分方程PPT课件

数值求解常微分方程PPT课件

程叫做微分方程,求解微分方程必须附加某种
定解条件.微分方程和定解条件一起组成定解
问题,定解条件分为初始条件(初值问题)和边
界条件(边值问题)两种.未知函数为一元的微
分方程叫做常微分方程,未知函数为多元函数,
叫做偏微分方程.微分方程中导数的最高阶叫
做微分方程的阶.本章主要讨论一阶常微分方
程.
1
第1页/共51页
36
第36页/共51页
4. 阿达姆斯方法
我们已经知道,初值问题等价于积分方程, 即
y(xn1) y(xn )
xn1 xn
f (x, y(x))dx
对积分式分别采用矩形公式和梯形公式可得到 欧拉公式和改进的欧拉公式,截断误差分别为 O(h2)和O(h3)。
37
第37页/共51页
为此,我们自然可以想到,若用更高次的 插值多项式来代替f(x,y),则所得公式的精 度会更高。这就是线性多步法的起源思想。
本章前面介绍的方法称为单步法,因为 在计算yi+1时,只用到前面yi的值。而对于线 性多步法是要利用前面已经算出的若干个值yik,…,yi-1,yi来求yi+1。
38
第38页/共51页
现 用 k 次 多 项 式 Pk(x)
来代替f(x,y(x))
y(xi1) y(xi )
xi 1 xi
Pk (x)dx
为 了 改 善 精 度 , 将 函 数 y(x) 在 点 xi 处 的 导 数 y’(xi) 用 中 心 差 商 来 表示,即



式y变'
为( x:i误)

正y比( x于i h13), xi1

二y(阶x精i1度) xi1

第12章 MATLAB常微分方程(组)数值求解方程与方程组的数值解

第12章 MATLAB常微分方程(组)数值求解方程与方程组的数值解
基于修正的二阶Rosenbrock公式。由于是 单步解算器,当精度要求不高时,它效率 可能会高于ode15s。它可以解决一些
ode15s求解起来效率不太高的刚性问题。
ode23t可以用来求解微分代数方程。
ode23tb 刚性

当方程是刚性的,并且求解要求精度不高
时可以使用。
2020/6/19
© 吴鹏, MATLAB从零到进阶.
常微分方程数值解
【例12.4-1】的结果图:
方 法 1计 算 结 果 图 1
方 法 2计 算 结 果 图 1
方 法 3计 算 结 果 图 1
0.8
0.8
0.8
0.6
0.6
0.6
0.4
0.4
0.4
0.2
0.2
0.2
0
0
0
-0.2
-0.4 0
2020/6/19
y1(t)
-0.2
y2(t)
y3(t)
-0.4
在某段时间区间内的变化来看。非刚性问题变化相对缓 慢,而刚性问题在某段时间内会发生剧烈变化,即很短 的时间内,解的变化巨大。对于刚性问题不适合用 ode45来求解,如果硬要用ode45来求解的话,达到指定 精度所耗费的时间往往会非常长 。
2020/6/19
© 吴鹏, MATLAB从零到进阶.
二、 非刚性问题举例
这些函数可以求解非刚性问题,刚性问题,隐式
微分方程,微分代数方程等初值问题,也可以求解 延迟微分方程,以及边值问题等。
2020/6/19
© 吴鹏, MATLAB从零到进阶.
二、初值问题求解函数
常微分方程数值解
1. 提供的函数
ode23, ode45, ode113, ode15s, ode23s, ode23t, ode23tb,这些函数统一 的调用格式如下:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2017/7/20
©
吴鹏, MATLAB从零到进阶.
常微分方程数值解
四、 求解前准备工作
微分方程的形式是多种多样的,一般来说,很多高阶微分方程可以通过 变量替换转化成一阶微分方程组,即可以写成下面的形式: M t, y y ' F t , y ( 1) M t , y 称为质量矩阵,如果其非奇异的话,上式可以写成: y ' M 1 t, y F t, y ( 2) 将(2)式右半部分用odefun表示出来(具体表现形式可以采用匿名函数、 子函数、嵌套函数、单独m文件等形式),就是ode45,ode23等常微分 方程初值问题求解的输入参数odefun。
2017/7/20
©
吴鹏, MATLAB从零到进阶.
常微分方程数值解
二、 非刚性问题举例
问题见书中【例12.2-1】,左图微分方程的解,右图平面相轨迹
x(t) 2.5 2 1.5 1
6
4
=1 =2 =3
2
0.5 0
速度
0 5 10 15 t 20 25 30
0
-0.5 -1
-2
-1.5
-4
-2
ode113 非刚性
低到高
2017/7/20
©
吴鹏, MATLAB从零到进阶.
常微分方程数值解
二、初值问题求解函数
ode15s 刚性 低到中 基于数值差分公式(后向差分公式,BDFs 也叫Gear方法),因此效率不是很高。同 ode113一样,ode15s也是一个多步计算器。 当ode45求解失败,或者非常慢,并且怀 疑问题是刚性的,或者求解微分代数问题 时可以考虑用ode15s 低 基于修正的二阶Rosenbrock公式。由于是 单步解算器,当精度要求不高时,它效率 可能会高于ode15s。它可以解决一些 ode15s求解起来效率不太高的刚性问题。 ode23t 适度刚性 低 低 ode23t可以用来求解微分代数方程。 当方程是刚性的,并且求解要求精度不高 时可以使用。
2017/7/20
©
吴鹏, MATLAB从零到进阶.
常微分方程数值解
二、初值问题求解函数
1. 提供的函数
ode23, ode45, ode113, ode15s, ode23s, ode23t, ode23tb,这些函数统一 的调用格式如下: [T,Y] = solver(odefun,tspan,y0) [T,Y] = solver(odefun,tspan,y0,options) sol = solver(odefun,[t0 tf],y0...) 输入参数说明: odefun 表示微分方程(组)的句柄。 tspan 微分方程(组)的求解时间区间,有两种格式[t0,tf]或者 [t0,t1,…,tf],两者都以t0为初值点,根据tf自动选择积分步长。前者 返回实际求解过程中所有求解的时间点上的解,而后者只返回设定 的时间点上的解。后者对计算效率没有太大影响,但是求解大型问 题时,可以减少内存存储。
0
5
10
0
5
10
0
5
10
t
2017/7/20
t
t
©
吴鹏, MATLAB从零到进阶.
常微分方程数值解
三、 刚性问题举例
下图是【例12.2-3】得到解的图像,以及两个解的和的图像
10 y1 (t) 8 6 4 4 2 2 0 0 -2 -4 -6 -2 -4 -6 y2 (t) 10 8 6 12
F(t) = y1 (t) + y2 (t) y = 0直线
2017/7/20
©
吴鹏, MATLAB从零到进阶.
常微分方程数值解
一、 微分代数方程(DAE)举例
【例12.4-1】的结果图:
方 法 1计 算 结 果 图 1 1 方 法 2计 算 结 果 图 1 方 法 3计 算 结 果 图
0.8
0.8
0.8
0.6
0.6
0.6
0.4
0.4
0.4
0.2
0.2
0.2
0
5
10
15
20
0
5
10
15
20
t
2017/7/20
t
©
吴鹏, MATLAB从零到进阶.
常微分方程数值解
第三节 隐式微分方程(组)求解
2017/7/20
©
吴鹏, MATLAB从零到进阶.
常微分方程数值解
一、 概述
一些 微分方程组在初始给出的时候是不容易显示的 表示成上面提到的标准形式的。这时候就需要想办法表 示成上述的形式。一般来说有三种思路,一种是利用 solve函数符号求解出高阶微分的显式表达式,一种是利 用fzero/fsolve函数求解状态变量的微分值,还有一种是 利用MATLAB自带的ode15i函数 。
0
0
0
-0.2
y1 (t) y2 (t) y3 (t)
-0.2
y1 (t) y2 (t) y3 (t)
-0.2
y1 (t) y2 (t) y3 (t)
-0.4
0
5
10
15
20
-0.4
0
5
10
15
20
-0.4
0
2017/7/20
t
t
©
5
10
15
20
吴鹏 t , MATLAB从零到进阶.
常微分方程数值解
2017/7/20
©
吴鹏, MATLAB从零到进阶.
常微分方程数值解
二、初值问题求解函数
2. 函数介绍
函数 ode45 ode23 问题类型 精确度 非刚性 非刚性 中等 低 说明 采用算法为4-5阶Runge-Kutta法,大多数 情况下首选的函数 基于 Bogacki-Shampine 2-3阶Runge-Kutta 公式,在精度要求不高的场合,以及对于 轻度刚性方程,ode23的效率可能好于 ode45。 基于变阶次Adams-Bashforth-Moutlon PECE算法。在对误差要求严格的场合或 者输入参数odefun代表的函数本身计算量 很大情况下比ode45效率高。ode113可以看 成一个多步解算器,因为它会利用前几次 时间节点上的解计算当前时间节点的解。 因此它不适应于非连续系统。
2. 边值问题
两个求解函数函数bvp4c和bvp5c,后者求解精度要比前者好。以 bvpsolver表示bvp4c或者bvp5c,那么这两个函数有着统一的调用格 式:
solinit = bvpinit(x, yinit, params) sol = bvpsolver(odefun,bcfun,solinit) sol = bvpsolver(odefun,bcfun,solinit,options)
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
t
2017/7/20
©
吴鹏, MATLAB从零到进阶.
常微分方程数值解
第四节 微分代数方程(DAE)与延 迟微分方程(DDE)求解
2017/7/20
©
吴鹏, MATLAB从零到进阶.
常微分方程数值解
一、 微分代数方程(DAE)举例
DAE的求解一般有三种办法,一种是变量替换法,一种是 用ode15s函数还有一种是用12.3节中提到的ode15i函数 【例12.4-1】是利用上述三种方法求解的普通微分代数方 程 。 【例12.4-2】是变量替换后用fsolve函数求解出每一计算 节点的值,然后再调用ode45、ode23tb等函数求解,另一种 方法就是直接利用ode15i函数求解 。
如果质量矩阵奇异的话,(1)称为微分代数方程组(differential algebraic equations, DAEs.),可以利用求解刚性微分方程的函数如ode15s,ode23s 等来求解,从输入形式上看,求解DAEs和求解普通的ODE很类似,主 要区别是需要给微分方程求解器指定质量矩阵。
常微分方程数值解
三、 利用fzero/fsolve函数
下图是【例12.3-3】结果图像。 【例12.3-4】是利用ode15i求解【例12.33】算例,速度明显增快,结果一致,图像也是下图。
45 y1 (t) 40 35 30 25 20 15 10 5 0 y2 (t) y3 (t) y4 (t)
-2.5
-6 -3
-2
-1
0 位移
1
2
3
2017/7/20
©
吴鹏, MATLAB从零到进阶.
常微分方程数值解
三、 刚性问题举例
问题见书中【例12.2-2】, 【例12.2-3】。下图是【例12.2-2】不同 求解器得到解的图像对比。
子 函 数 形 式 /ode23 100 90 80 70 60 50 40 30 20 10 0 子 函 数 形 式 /ode15s 匿 名 函 数 形 式 /ode15s 100 100 90 80 70 60 50 40 30 20 10 0 90 80 70 60 50 40 30 20 10 0
t
2017/7/20
2017/7/20
©
吴鹏, MATLAB从零到进阶.
常微分方程数值解
二、初值问题求解函数
y0 :微分方程(组)的初值,即所有状态变量在t0时刻的值。 options 结构体,通过odeset设置得到的微分优化参数。
返回参数说明: T:时间点组成的列向量 Y:微分方程(组)的解矩阵,每一行对应相应T的该行上时间点的微 分方程(组)的解。 sol:以结构体的形式返回解。
常微分方程数值解
常微分方程(组) 数值求解
相关文档
最新文档