ODE 选项摘要
解算 ODE 经常要求微调参数、调整误差容限或向求解器传递附加信息。本主题说明如何为求解器函数(ode45
、ode15s
等)指定选项以及每个选项与哪些微分方程求解器兼容。
选项语法
使用 odeset
函数创建 options 结构体,然后将其作为第四个输入参量传递给求解器。例如,要调整相对和绝对误差容限,请使用以下命令:
opts = odeset(RelTol=1e-2,AbsTol=1e-5); [t,y] = ode45(@odefun,tspan,y0,opts);
如果您使用不带输入参数的 odeset
命令,MATLAB® 将显示每个选项的可能值列表,并以花括号 {}
表示默认值。
odeget
函数可以查询现有结构体中的选项值,您可以用该函数来根据条件动态更改选项值。例如,以下代码检测 Stats
是否设置为 "on"
,并根据需要更改其值:
if isempty(odeget(opts,"Stats")) odeset(opts,Stats="on") end
选项与每个求解器的兼容性
在 odeset
中,有些选项是通用的,可与任何求解器兼容,还有一些选项是特定于求解器的。下表总结了每个选项与不同求解器之间的兼容性。
选项组 | 选项 | ode45 | ode23 | ode78 | ode89 | ode113 | ode15s | ode23s | ode23t | ode23tb | ode15i |
---|---|---|---|---|---|---|---|---|---|---|---|
误差控制 | RelTol | | | | | | | | | | |
AbsTol | | | | | | | | | | | |
NormControl | | | | | | | | | | | |
求解器输出 | NonNegative | | | | | | | | | | |
OutputFcn | | | | | | | | | | | |
OutputSel | | | | | | | | | | | |
Refine | | | | | | | | | | | |
Stats | | | | | | | | | | | |
步长 | InitialStep | | | | | | | | | | |
MaxStep | | | | | | | | | | | |
MinStep | | | | | | | | | | | |
事件位置 | Events | | | | | | | | | | |
雅可比矩阵 | Jacobian | | | | | | | | | | |
JPattern | | | | | | | | | | | |
Vectorized | | | | | | | | | | | |
质量矩阵和 DAE | Mass | | | | | | | | | | |
MStateDependence | | | | | | | | | | | |
MvPattern | | | | | | | | | | | |
MassSingular | | | | | | | | | | | |
InitialSlope | | | | | | | | | | | |
ode15s 和 ode15i 的算法选项 | MaxOrder | | | | | | | | | | |
BDF | | | | | | | | | | |
* 只有在解算不涉及质量矩阵的问题时,才对 ode15s
、ode23t
和 ode23tb
求解器使用 NonNegative
参数。
** ode15i
的事件函数必须接受 yp
的第三个输入参量。
用法示例
MATLAB 包含几个示例文件,说明了如何使用各种选项。例如,键入 edit ballode
查看使用 'Events'
指定事件函数的示例,或键入 edit batonode
查看使用 'Mass'
指定质量矩阵的示例。有关示例文件及其使用的选项的完整总结,请参阅 ODE 示例和文件摘要。