我有一个函数,其句柄为@func
,初始条件为y0
,我想测试t = [0, tspan]
。我需要做什么来增加步骤ode45
使用的号码,而不改变tspan
?Matlab - ODE45 - 更改时间步数
我看到了ode45
的MATLAB文档,看到我需要以某种方式将options
输入更改为ode45
。但是,我并不真正了解如何执行此操作,因为没有提供示例代码。
我有一个函数,其句柄为@func
,初始条件为y0
,我想测试t = [0, tspan]
。我需要做什么来增加步骤ode45
使用的号码,而不改变tspan
?Matlab - ODE45 - 更改时间步数
我看到了ode45
的MATLAB文档,看到我需要以某种方式将options
输入更改为ode45
。但是,我并不真正了解如何执行此操作,因为没有提供示例代码。
您需要查看odeset
,它创建了一个用于ODE求解器的选项结构,如ode45
。您正在查看更改参数。
此(MATLAB R2015a)文档说:
- 上结合在步长正标量]
默认在所有求解器
tspan
间隔的十分之一。
因此,你可以使它小于0.1*tspan
...像1e-6
或类似的东西。这取决于tspan
是什么,所以如果您想增加时间步长/输出点的总数,则需要使其小于0.1*tspan
。
因此,请创建odeset
结构并覆盖参数。现在
options = odeset('MaxStep', 1e-6);
,你就大功告成了,你的问题,请致电ode45
:值的其余部分将继续作为默认
[tout,yout] = ode45(@func, tspan, y0, options);
,直到你得到简单的玩的所需的粒度。
虽然有点埋没,文档确实告诉您如何更改的选项。这是关于如何使用选项拨打ode45
的部分。请注意粗体突出显示的内容。这是MATLAB R2015a的文档:
[TOUT,YOUT] = ode45(ODEFUN,TSPAN,Y0,OPTIONS)
如上解决了与由值替换OPTIONS
默认 集成性能,参数创建 与ODESET
功能。详情请参阅ODESET
。常用的选项 分别是标量相对误差容差'RelTol'
(默认为1e-3
)和矢量 的绝对误差容差'AbsTol'
(默认为所有组件1e-6
)。 如果解决方案的某些组件必须为非负数,请使用ODESET
将'NonNegative'
属性设置为这些组件的索引。