主要内容

选择颂歌求解器

常微分方程

一个常微分方程(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中的颂歌求解器®解决这些类型的一阶ODES:

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

  • 形式的线性隐式杂志 m T. y y ' = F T. y , 在哪里 m T. y 是一种非围绕质量基质。质量矩阵可以是时间或依赖的,或者它可以是恒定的矩阵。线性隐式杂散涉及第一个衍生物的线性组合y,其在质量矩阵中编码。

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

  • 如果有些组成部分 y ' 缺失,然后调用方程式差分代数方程式或daes,daes系统包含一些代数变量。代数变量是依赖变量,其衍生物不会出现在方程中。通过采用方程的衍生物来消除代数变量,可以将DAES系统作为相同的一阶ODES进行重写。作为ode重写DAE所需的衍生物的数量称为差分索引。这ode15s.ODE23T.求解器可以解决索引1 daes。

  • 表格的完全隐含杂志 F T. y y ' = 0. 。完全隐式杂志不能以显式形式重写,也可以包含一些代数变量。这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。

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

功能dydt = f(t,y)dydt(1)= y(2);dydt(2)= y(3);dydt(3)= y(1)* y(3)-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);%在单独的组件中返回真实和虚构fv = [真实(yp);imag(yp)];

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

y0 = 1 + i;YV0 = [真实(y0);imag(y0)];tspan = [0 2];[t,yv] = ode45(@imaginordode,tspan,yv0);

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

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

基本求解器选择

ODE45.对于大多数颂歌问题,通常应该是您的首选求解器。然而,ode23.ode113.可以比效率更高ODE45.对于宽松或更严格的准确度要求的问题。

一些颂歌问题展示刚性或评估难度。刚度是遵守精确定义的术语,但通常,当存在问题的某处缩放时发生僵硬时,发生刚度。例如,如果ode有两个在急性不同的时间尺度上变化的解决方案组件,则等式可能是僵硬的。如果不适用的求解器(如ODE45.)无法解决问题或极慢。如果您观察到非任命的求解器非常慢,请尝试使用僵硬的求解器,例如ode15s.反而。使用僵硬的求解器时,可以通过提供雅各族矩阵或其稀疏模式来提高可靠性和效率。

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

求解器 问题类型 准确性 何时使用
ODE45. non 中等的

大多数时候。ODE45.应该是你尝试的第一个解决者。

ode23. 低的

ode23.可以比效率更高ODE45.在粗耐受性的问题中,或在适度刚度存在下。

ode113. 从低到高

ode113.可以比效率更高ODE45.在严格错误公差的问题上,或者颂歌才能评估昂贵。

ode15s. 僵硬的 低至中等

尝试ode15s.什么时候ODE45.失败或效率低下,你怀疑问题是僵硬的。也使用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]

颂歌示例和文件摘要

有几个示例文件可用,它是大多数颂歌问题的优秀起点。运行微分方程示例应用程序,它允许您轻松探索和运行示例,键入

odeexamples.

打开个人示例文件以进行编辑,键入

编辑examplefilename.m.

运行示例,键入

examplefilename.

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

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

硬常数奇异质量矩阵的DAE - 电路

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

  • 'outputfcn'

  • 'outputsel'

  • '精炼'

  • 'initalstep'

  • 'maxstep'

简单的活动位置 - 弹跳球

颂歌位置
Batonode. ODE45.
  • '大量的'

具有时间和状态依赖质量矩阵的颂歌 - 警棍的运动

解决抛入空气的警棍的运动方程
布鲁塞特 ode15s.
  • 'jpattern'

  • '矢量化'

僵硬的大问题 - 化学反应中的扩散(布鲁塞尔)

解决僵硬的杂散
博尔斯德 ode15s.
  • '大量的'

  • 'mstatedependence'

  • 'jpattern'

  • 'mvpattern'

  • 'Reltol'

  • 'ABSTOL'

使用移动网格技术解决了具有强烈状态依赖质量矩阵 - 汉堡的汉堡等式的颂歌

用强状态依赖质量矩阵求解ode
FEM1DE. ode15s.
  • '大量的'

  • 'mstatedependence'

  • '雅各比亚'

具有时间依赖性质量矩阵的僵硬问题 - 有限元方法

-
FEM2DE. ode23s.
  • '大量的'

恒定质量矩阵 - 有限元法的僵硬问题

-
HB1DE. ode15s. -

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

-
HB1DAE. ode15s.
  • '大量的'

  • 'Reltol'

  • 'ABSTOL'

  • '矢量化'

从保护法 - 罗伯逊化学反应的僵硬,线性隐含的DAE

将罗伯逊问题解为半显式差分代数方程(Daes)
Ihb1dae. ode15i.
  • 'Reltol'

  • 'ABSTOL'

  • '雅各比亚'

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

将罗伯逊问题解为隐式差分代数方程(Daes)
iburgersode. ode15i.
  • 'Reltol'

  • 'ABSTOL'

  • '雅各比亚'

  • 'jpattern'

隐式ode系统 - 汉堡方程式

-
kneeode. ode15s.
  • '非负面'

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

非负颂歌解决方案
轨道轨道 ODE45.
  • 'Reltol'

  • 'ABSTOL'

  • '事件'

  • 'outputfcn'

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

颂歌位置
rididode. ODE45. -

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

解决非任足的杂物
VDPode. ode15s.
  • '雅各比亚'

可参数化van der Pol等式(大型僵硬μ.

解决僵硬的杂散

参考

[1]洗发腺,L. F.和M.K. Gordon,常微分方程的计算机解决方案:初始值问题,W. H.Freeman,旧金山,1975年。

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

[3] Kahaner,D.,C. moler和S. Nash,数值方法和软件,新泽西州的Prentice-Hall,1989年。

[4]洗发腺,L. F.,常微分方程的数值解,Chapman&Hall,纽约,1994年。

[5]洗发腺,L. F.和M. W. Reichelt,“Matlab Ode Suite”,暹罗学报科学计算,卷。18,1997,第1-22页。

[6]洗发丁,L. F.,Gladwell,I.和S. Thompson,用matlab解决杂志,剑桥大学出版社,剑桥英国,2003。

也可以看看

|

相关话题

外部网站