主要内容

选择一个ODE求解器

常微分方程

一个常微分方程(ode)包含从属变量的一个或多个衍生物,y,关于单个独立变量,T.,通常称为时间。这里用来表示的导数的符号y关于T. y ' 对于第一个衍生, y ' ' 对于二阶导数,等等。的命令ode等于最级的衍生物y这在等式中出现。

例如,这是二阶ode:

y ' ' = 9. y

在A.初值问题, ODE从初始状态开始求解。利用初始条件, y 0. ,以及需要一段时间才能得到答案, T. 0. T. F ,迭代求解。在每一步,求解器都对前一步的结果应用特定的算法。在这样的第一步,初始条件提供了必要的信息,允许进行集成。最后的结果是ODE求解器返回一个时间步长的向量 T. = [ T. 0. T. 1 T. 2 ... T. F ] 以及每个步骤的相应解决方案 y = [ y 0. y 1 y 2 ... y F ]

odes的类型

MATLAB中的ODE求解器®解决这些类型的一阶ode:

  • 表格的明确杂志 y ' = F T. y

  • 形式的线性隐式杂志 m T. y y ' = F T. y ,在那里 m T. y 是一个非奇异质量矩阵。质量矩阵可以是与时间或状态相关的,也可以是常数矩阵。线性隐式ode涉及的是的一阶导数的线性组合y,其在质量矩阵中编码。

    线性隐式ode总是可以转化为显式形式, y ' = m 1 T. y F T. y .但是,将质量矩阵直接指定给颂歌求解器避免这种变换,这是不方便的,并且可以计算得昂贵。

  • 如果某些成分 y ' 是缺失的,那么方程被调用了差分代数方程式或daes,daes系统包含一些代数变量.代数变量是方程中没有导数的因变量。通过对方程组求导,消去代数变量,可将一阶ode方程组改写为一阶ode的等价方程组。将DAE重写为ODE所需的导数数称为微分索引。的ode15s.ODE23T.求解器可以解决index-1 dae。

  • 表格的完全隐含杂志 F T. y y ' = 0. .完全隐式ode不能以显式形式重写,可能还包含一些代数变量。的ode15i.求解器专为完全隐含的问题而设计,包括索引-1 daes。

属性可以为某些类型的问题的求解器提供附加信息odeset函数创建一个选项结构。

杂井系统

您可以指定任意数量的耦合ODE方程来求解,原则上,方程的数量只受可用计算机内存的限制。如果方程组有N方程,

y ' 1 y ' 2 y ' N = F 1 T. y 1 y 2 ... y N F 2 T. y 1 y 2 ... y N F N T. y 1 y 2 ... y N

然后编码等式的函数返回向量N元素,对应于 y ' 1 y ' 2 ...... y ' N .例如,考虑二元方程组

{ y ' 1 = y 2 y ' 2 = y 1 y 2 2

编码这些方程的函数是

功能Dy = Myode(T,Y)Dy(1)= Y(2);DY(2)= Y(1)* Y(2)-2;结尾

高阶余下

MATLAB ode求解器仅解决一阶方程。您必须使用通用替换将更高阶odes作为等效的一阶方程式重写

y 1 = y y 2 = y ' y 3. = y ' ' y N = y N 1

这些替换的结果是一个N一阶方程

{ y ' 1 = y 2 y ' 2 = y 3. y ' N = F T. y 1 y 2 ... y N

例如,考虑三阶ODE

y ' ' ' y ' ' y + 1 = 0.

使用替换

y 1 = y y 2 = y ' y 3. = y ' '

结果是等价的一阶系统

{ y ' 1 = y 2 y ' 2 = y 3. y ' 3. = y 1 y 3. 1.

然后,该方程式系统的代码

功能y(1) = y(2);dydt (2) = y (3);dydt (3) = y y (3) (1) * 1;结尾

复杂的常微分方程

考虑复杂的ode方程

y ' = F T. y

在哪里 y = y 1 + 一世 y 2 .求解时,将实部和虚部分离成不同的解分量,最后将结果重新组合。概念上,这看起来像

y V. = [ 真实的 y 想象 y ] F V. = [ 真实的 F T. y 想象 F T. y ]

例如,如果ODE是 y ' = y T. + 2 一世 ,然后您可以使用函数文件表示方程式:

功能f = complexf(t,y)f = y。* t + 2 * i;结尾

然后,分离实部和虚部的代码是

功能fv = imageindeode(t,yv)%由实分量和虚分量构造yY = yv(1) + i*yv(2);%计算函数值yp = complexf (t、y);%分别返回实值和虚值阵线=[真实(yp);图像放大(yp)];结尾

运行求解器以获取解决方案时,初始条件y0也分为实部和虚部,为每个解分量提供一个初始条件。

y0 = 1 + i;yv0 =[真实(y0);图像放大(y0)];Tspan = [0 2];[t,yv] = ode45(@imaginaryODE, tspan, yv0);

获取解决方案后,将真实和虚部组件组合在一起,以获得最终结果。

Y = yv(:,1)+ i * yv(:,2);

基本求解器的选择

数值在大多数ODE问题中表现良好,通常应该是您的首选解算器。然而,ode23.ode78ode89ode113可以比效率更高数值对于宽松或更严格的准确度要求的问题。

一些ODE问题刚性,或评价困难。刚度是一个无法精确定义的术语,但一般来说,当问题中某个地方的缩放存在差异时,刚度就会出现。例如,如果一个ODE有两个解组件,它们在完全不同的时间尺度上变化,那么这个方程可能是僵硬的。如果一个问题不是僵硬的解决者(例如数值)无法解决问题或极慢。如果您观察到非任命的求解器非常慢,请尝试使用僵硬的求解器,例如ode15s.代替。当使用刚性求解器时,您可以通过提供雅可比矩阵或其稀疏模式来提高可靠性和效率。

该表提供了关于何时使用每个不同求解器的一般指南。

解算器 问题类型 精度 什么时候使用
数值 该方法 媒介

大多数时候。数值应该是你第一个尝试解决问题的人。

ode23.

ode23.可以比效率更高数值在粗公差或中度硬度存在的问题上。

ode113 从低到高

ode113可以比效率更高数值在有严格的误差容忍度的问题上,或者当ODE函数的计算代价很高时。

ode78

ode78可以比效率更高数值处理具有高精度要求的平滑解决方案的问题。金宝搏官方网站

ode89

ode89可以比效率更高ode78在非常平滑的问题上,在整合长时间间隔时,或者当公差尤为严格时。

ode15s. 僵硬的 低至中等

尝试ode15s.数值失败或效率低下,你怀疑问题是僵硬的。也使用ode15s.当求解差分代数方程(Daes)时。

ode23s.

ode23s.可以比效率更高ode15s.在粗公差问题上。它可以解决一些棘手的问题ode15s.无效。

ode23s.计算每一步的雅可比矩阵,因此通过提供雅可比矩阵是有益的odeset最大限度地提高效率和准确性。

如果有质量矩阵,它一定是常数。

ODE23T.

ODE23T.如果问题只是中等刚度,你需要一个没有数值阻尼的解。

ODE23T.可以解决差分代数方程(DAES)。

ODE23TB.

就像ode23s., 这ODE23TB.求解器可能比效率更高ode15s.在粗公差问题上。

ode15i. 完全隐含

ode15i.有关完全隐含的问题f (t、y, y”)=0.对于索引1的差分代数方程(Daes)。

有关何时使用每个求解器的详细信息和进一步建议,请参见[5]

ODE示例和文件的摘要

有几个示例文件可以作为大多数ODE问题的极佳起点。运行微分方程示例应用程序,它可以让你轻松地探索和运行示例,输入

odeexamples

要打开单独的示例文件进行编辑,输入

编辑examplefilename.m.

要运行示例,输入

exampleFileName

该表包含可用的ODE和DAE示例文件的列表,以及它们使用的求解器和选项。文档中还包含了直接发布的示例子集的链接。

示例文件 求解器使用 指定的选项 描述 文档链接
amp1dae ODE23T.
  • '大量的'

刚性DAE -具有常数奇异质量矩阵的电路

解决硬晶体管差分代数方程
ode23.
  • '事件'

  • “OutputFcn”

  • “OutputSel”

  • “完善”

  • 'initalstep'

  • 'maxstep'

简单的事件地点-弹跳球

歌唱活动的位置
Batonode. 数值
  • '大量的'

带有与时间和状态相关的质量矩阵运动的棒的ODE

抛掷棒的运动方程的求解
brussode ode15s.
  • 'jpattern'

  • '矢量化'

棘手的大问题——化学反应中的扩散(布鲁塞尔)

解决刚性常微分方程
博尔斯德 ode15s.
  • '大量的'

  • 'mstatedependence'

  • 'jpattern'

  • 'mvpattern'

  • 'Reltol'

  • 'ABSTOL'

采用移动网格技术求解了具有强状态依赖质量矩阵的ODE - Burgers方程

用强状态相关质量矩阵求解ODE
fem1ode ode15s.
  • '大量的'

  • 'mstatedependence'

  • 的雅可比矩阵

含时质量矩阵的刚性问题-有限元法

-
fem2ode ode23s.
  • '大量的'

用定质量矩阵-有限元法求解刚性问题

-
HB1DE. ode15s. -

僵硬的颂歌问题在很长的间隔 - 罗伯逊化学反应中得到解决

-
hb1dae ode15s.
  • '大量的'

  • 'Reltol'

  • 'ABSTOL'

  • '矢量化'

刚性,线性隐式DAE来自守恒定律-罗伯逊化学反应

用半显式微分代数方程(DAEs)求解Robertson问题
ihb1dae ode15i.
  • 'Reltol'

  • 'ABSTOL'

  • 的雅可比矩阵

僵硬,完全隐含的DAE - 罗伯逊化学反应

用隐式微分代数方程(DAEs)求解Robertson问题
iburgersode ode15i.
  • 'Reltol'

  • 'ABSTOL'

  • 的雅可比矩阵

  • 'jpattern'

隐式ODE系统- Burgers方程

-
kneeode. ode15s.
  • 非负的

具有非承诺约束的“膝关节问题”

非负颂歌解决方案
orbitode 数值
  • 'Reltol'

  • 'ABSTOL'

  • '事件'

  • “OutputFcn”

高级事件位置 - 限制三个身体问题

歌唱活动的位置
rididode. 数值 -

非符合问题 - 没有外力的刚体的欧拉方程

解决非任足的杂物
VDPode. ode15s.
  • 的雅可比矩阵

可参数化范德波尔方程(对于大的刚性μ

解决刚性常微分方程

参考文献

L. F.和M. K.戈登,常微分方程的计算机解法:初值问题, w·h·弗里曼,旧金山,1975年。

[2] Forsythe,G.,M. malcolm和C. moler,数学计算的计算机方法,新泽西州的Prentice-Hall,1977年。

卡哈纳,D. C. Moler和S. Nash,数值方法与软件,新泽西州的Prentice-Hall,1989年。

夏平,l.f.,常微分方程的数值解,查普曼和霍尔,纽约,1994。

[5] Shampine, L. F.和M. W. Reichelt,《MATLAB ODE Suite》暹罗学报科学计算,卷。18,1997,第1-22页。

L. F. Shampine, I. Gladwell和S. Thompson,用matlab解决杂志,剑桥大学出版社,剑桥英国,2003。

也可以看看

|

相关的话题

外部网站