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 示例和文件摘要。