选择一个ODE求解器
常微分方程
一个常微分方程(ODE)包含一个或多个因变量的衍生品,y关于一个自变量,t,通常称为时间。这里使用的符号为代表的衍生品y关于t是 一阶导数, 二阶导数,等等。的订单ODE的=的最高阶导数y出现在方程。
例如,这是一个二阶的颂歌:
在一个初值问题ODE是通过从一个初始状态开始解决。使用初始条件, ,以及一段时间内获得的答案是, 迭代解。每一步的解决一个特定的算法适用于前面的步骤的结果。在这样的第一步,初始条件提供了必要的信息,允许集成进行。最终结果是,ODE求解器返回一个向量的时间步骤 在每个步骤以及相应的解决方案 。
类型的常微分方程
在MATLAB解决ODE®解决这些类型的一阶常微分方程:
明确的常微分方程的形式 。
隐式线性常微分方程的形式 ,在那里 是一个非奇异的质量矩阵。质量矩阵可以时间——或者依赖政府,也可以是一个常数矩阵。隐式线性常微分方程的一阶导数的线性组合y,质量矩阵的编码。
隐式线性常微分方程总是可以转化为一个显式的形式, 。然而,直接指定质量矩阵的ODE求解器避免了这个转换,这是不方便,可以计算昂贵。
如果一些组件 人失踪,那么方程叫什么微分代数方程或拓扑,拓扑包含一些制度代数变量。代数变量是因变量的衍生品没有出现在方程。系统的拓扑可以写成一个等效系统方程的一阶常微分方程通过衍生品消除代数变量。衍生品的数量需要重写DAE作为颂歌称为微分指数。的
ode15s
和ode23t
解决可以解决索引1拓扑。完全隐式形式的常微分方程 。完全隐式常微分方程不能被重写以显式的形式,也可能包含一些代数变量。的
ode15i
解算器是专为完全隐式问题,包括索引1拓扑。
你可以提供额外的信息的解算器通过使用某些类型的问题odeset
结构函数来创建一个选项。
系统的常微分方程
您可以指定任意数量的耦合颂歌方程来解决,原则上方程的数量是有限的可用的计算机内存。如果方程组n方程,
然后编码方程的函数返回一个向量n元素,对应的值 。例如,考虑两个方程的系统
一个函数,编码这些方程
函数dy = myODE (t, y) dy (1) = y (2);dy (2) = y y (1) * (2) 2;结束
高阶常微分方程
MATLAB解决歌唱只解一阶方程。你必须重写高阶常微分方程的等效系统一阶方程使用通用的替换
这些替换的结果是一个系统的n一阶方程
例如,考虑三阶的颂歌
使用替换
结果相当于一阶系统
这个方程组的代码
函数dydt = f (t, y) dydt (1) = y (2);dydt (2) = y (3);dydt (3) = y y (3) (1) * 1;结束
复杂的常微分方程
考虑到复杂的颂歌方程
在哪里 。解决它,独立的实部和虚部成不同的解决方案组件,然后重组结果。从概念上讲,这是怎样的
例如,如果ODE ,那么你可以使用函数代表方程文件:
函数f = complexf (t, y) f = y。* t + 2 *我;结束
然后,代码分离的实部和虚部
函数阵线= imaginaryODE (t,青年志愿)%构造y从真实的和虚构的成分y =(1) +电视上学到我*青年志愿(2);%评估函数yp = complexf (t、y);%返回真实和虚构的单独的组件阵线=[真实(yp);图像放大(yp)];结束
当您运行一个解算器获取解决方案,初始条件y0
也分为实部和虚部为每个解决方案组件提供一个初始条件。
y0 = 1 + i;yv0 =[真实(y0);图像放大(y0)];tspan = [0 2];(t,青年志愿)=数值(@imaginaryODE、tspan yv0);
一旦你获得解决方案,将真实的和想象的组件结合在一起获得最终结果。
y =青年志愿(:1)+ i *青年志愿(:,2);
基本求解器的选择
数值
执行与大多数颂歌问题和解决者通常是您的第一选择。然而,ode23
,ode78
,ode89
和ode113
可以更有效的比数值
宽松的问题或更严格的精度要求。
展览的颂歌一些问题刚度,或者难以评估。刚度是一个术语,颠覆一个精确的定义,但一般来说,刚度改变时就会发生扩展的问题。例如,如果一个颂歌有两个截然不同的时间尺度上变化的解决方案组件,那么方程可能是僵硬的。你可以确定一个问题如果解决该方法(如一样僵硬数值
)无法解决问题或非常缓慢。如果你观察到该解算器是非常缓慢的,试着用一个硬解算器等ode15s
代替。当使用一个硬解算器,可以提高可靠性和效率提供雅可比矩阵或其稀疏模式。
这个表提供一般指导方针时使用的每个不同的解决者。
解算器 | 问题类型 | 精度 | 什么时候使用 |
---|---|---|---|
数值 |
该方法 | 媒介 | 大部分的时间。 |
ode23 |
低 |
|
|
ode113 |
低到高 |
|
|
ode78 |
高 |
|
|
ode89 |
高 |
|
|
ode15s |
僵硬的 | 低到中等 | 试一试 |
ode23s |
低 |
如果有一个质量矩阵,它必须是常数。 |
|
ode23t |
低 | 使用
|
|
ode23tb |
低 | 就像 |
|
ode15i |
全隐式 | 低 | 使用 |
细节和进一步的建议关于何时使用每个解算器,看看[5]。
摘要颂歌的例子和文件
有几个可用的示例文件,作为最优秀的起点》的问题。运行微分方程的例子应用程序,它可以让你轻松地探索和运行示例,类型
odeexamples
开一个个人的例子文件编辑、类型
编辑exampleFileName.m
运行一个例子,类型
exampleFileName
这个表包含一个可用的颂歌和DAE列表示例文件以及他们所使用的连接器和选项。链接包括子集的例子也在文档中直接发表。
示例文件 | 解算器使用 | 选项指定 | 描述 | 文档链接 |
---|---|---|---|---|
amp1dae |
ode23t |
|
硬DAE -电路常数,单一的质量矩阵 |
解决硬晶体管微分代数方程 |
ballode |
ode23 |
|
简单事件位置——弹力球 |
歌唱活动的位置 |
batonode |
数值 |
|
歌唱与时间和情境依靠质量矩阵——运动的指挥棒 |
解决运动方程为指挥棒扔进空气 |
brussode |
ode15s |
|
僵硬的大问题——在一个化学反应扩散(Brusselator) |
解决刚性常微分方程 |
burgersode |
ode15s |
|
歌唱与强烈依赖质量矩阵——汉堡的方程使用移动网格技术解决 |
解决颂歌强烈依赖质量矩阵 |
fem1ode |
ode15s |
|
僵硬的问题时间质量矩阵-有限元方法 |
- - - - - - |
fem2ode |
ode23s |
|
僵硬的问题一个恒定的质量矩阵-有限元方法 |
- - - - - - |
hb1ode |
ode15s |
- - - - - - | 僵硬的颂歌问题解决很长时间间隔-罗伯逊化学反应 |
- - - - - - |
hb1dae |
ode15s |
|
僵硬,线性隐DAE从守恒定律-罗伯逊化学反应 |
解决罗伯逊问题半显式的微分代数方程(拓扑) |
ihb1dae |
ode15i |
|
僵硬,完全隐式DAE -罗伯逊化学反应 |
解决罗伯逊问题隐含的微分代数方程(拓扑) |
iburgersode |
ode15i |
|
隐式ODE体系——汉堡的方程 |
- - - - - - |
kneeode |
ode15s |
|
“膝盖问题”与nonnegativity约束 |
非负的颂歌的解决方案 |
orbitode |
数值 |
|
先进的事件位置——限制性三体问题 |
歌唱活动的位置 |
rigidode |
数值 |
- - - - - - | 该问题——欧拉方程的一个没有外部力量的刚体 |
解决该常微分方程 |
vdpode |
ode15s |
|
可参数化的范德波尔方程(僵硬的大μ) |
解决刚性常微分方程 |
引用
[1]Shampine, l·f·m·k·戈登,计算机解决常微分方程:初始值的问题w·h·弗里曼,旧金山,1975年。
[2]活力四射,G。,米。米alcolm, and C. Moler,计算机数学计算的方法新世纪,新泽西,1977。
[3]卡亨,D。,C. Moler, and S. Nash,数值方法和软件新世纪,新泽西,1989。
[4]Shampine, l . F。常微分方程的数值解查普曼&大厅,纽约,1994年。
[5]Shampine, l f和m . w . Reichelt表示“MATLAB颂歌套件。”暹罗期刊在科学计算18卷,1997年,页22页。
[6]Shampine, l F。,Gladwell, I. and S. Thompson,用MATLAB解决常微分方程英国剑桥,剑桥大学出版社,2003年。