解决ode常常需要微调参数、调整误差公差或向求解器传递额外信息。本主题展示如何指定选项,以及每个选项与哪个微分方程求解器兼容。
使用odeset
函数创建一个选项结构,然后将其作为第四个输入参数传递给求解器。例如,调整相对误差和绝对误差公差:
选择= odeset (“RelTol”1飞行,“AbsTol”1 e-5);[t、y] =数值(@odefun tspan, y0,选择);
如果使用该命令odeset
没有输入,然后是MATLAB®显示每个选项的可能值的列表,默认值由花括号表示{}
.
的odeget
函数查询现有结构中选项的值,可以使用该结构根据条件动态更改选项值。例如,这段代码检测是否统计数据
被设置为“上”
,并在必要时更改该值:
如果isempty (odeget(选择,“统计数据”) odeset(选择,“统计数据”,“上”)结束
一些选项在odeset
是通用的并且与任何求解器兼容,而其他的是特定于求解器的。该表总结了每个选项与不同求解器的兼容性。
选项组 | 选项 | 数值 |
ode23 |
ode78 |
ode89 |
ode113 |
ode15s |
ode23s |
ode23t |
ode23tb |
ode15i |
---|---|---|---|---|---|---|---|---|---|---|---|
错误控制 | RelTol |
|
|
|
|
|
|
|
|
|
|
AbsTol |
|
|
|
|
|
|
|
|
|
|
|
NormControl |
|
|
|
|
|
|
|
|
|
|
|
解算器输出 | 非负 |
|
|
|
|
|
|
|
|
|
|
OutputFcn |
|
|
|
|
|
|
|
|
|
|
|
OutputSel |
|
|
|
|
|
|
|
|
|
|
|
完善 |
|
|
|
|
|
|
|
|
|
|
|
统计数据 |
|
|
|
|
|
|
|
|
|
|
|
步长 | InitialStep |
|
|
|
|
|
|
|
|
|
|
MaxStep |
|
|
|
|
|
|
|
|
|
|
|
活动地点 | 事件 |
|
|
|
|
|
|
|
|
|
|
雅可比矩阵 | 雅可比矩阵 |
|
|
|
|
|
|
|
|
|
|
JPattern |
|
|
|
|
|
|
|
|
|
|
|
矢量化 |
|
|
|
|
|
|
|
|
|
|
|
质量矩阵和das | 质量 |
|
|
|
|
|
|
|
|
|
|
MStateDependence |
|
|
|
|
|
|
|
|
|
|
|
MvPattern |
|
|
|
|
|
|
|
|
|
|
|
MassSingular |
|
|
|
|
|
|
|
|
|
|
|
InitialSlope |
|
|
|
|
|
|
|
|
|
|
|
算法的选择ode15s 和ode15i |
MaxOrder |
|
|
|
|
|
|
|
|
|
|
快速公车提供 |
|
|
|
|
|
|
|
|
|
|
*使用非负
参数与ode15s
,ode23t
,ode23tb
只适用于那些没有质量矩阵的问题。
**事件函数为ode15i
必须接受第三个输入参数yp
.
MATLAB包括几个示例文件,显示如何使用各种选项。例如,类型编辑ballode
来看一个例子“事件”
指定事件函数,或编辑batonode
来看一个例子“质量”
指定一个质量矩阵。有关示例文件及其使用的选项的完整摘要,请参见ODE示例和文件的摘要.