Matlab - ODE45 - 改变时间步数
Matlab - ODE45 - change the number of time steps
我有一个句柄 @func
的函数,我想在 t = [0, tspan]
上测试它的初始条件 y0
。在不改变 tspan
的情况下,我究竟需要做什么才能增加 数量 的时间步长 ode45
?
我看到了 ode45
的 MATLAB 文档,发现我需要以某种方式将 options
输入更改为 ode45
。但是,我不太明白如何做到这一点,因为没有提供示例代码。
您需要查看 odeset
,它创建了一个用于 ODE 求解器的选项结构,例如 ode45
。您正在查看更改 MaxStep
参数。
这个 (MATLAB R2015a) 的文档说:
MaxStep
- Upper bound on step size [ positive scalar ]
MaxStep
defaults to one-tenth of the tspan
interval in all solvers.
因此,您可以使其小于 0.1*tspan
... 1e-6
或类似的东西。这取决于 tspan
是什么,因此如果您想增加时间步长/输出点的总数,则需要使其小于 0.1*tspan
。
因此,创建一个 odeset
结构并覆盖 MaxStep
参数。其余值将保持默认值:
options = odeset('MaxStep', 1e-6);
既然你已经完成了,请致电 ode45
解决你的问题:
[tout,yout] = ode45(@func, tspan, y0, options);
只需尝试 MaxStep
直到获得所需的粒度。
小注
虽然有点隐蔽,但文档 确实 告诉您如何更改选项。这是讨论如何使用选项调用 ode45
的部分。请注意以粗体突出显示的内容。这是 MATLAB R2015a 的文档:
[TOUT,YOUT] = ode45(ODEFUN,TSPAN,Y0,OPTIONS)
solves as above with default
integration properties replaced by values in OPTIONS
, an argument created
with the ODESET
function. See ODESET
for details. Commonly used options
are scalar relative error tolerance 'RelTol'
(1e-3
by default) and vector
of absolute error tolerances 'AbsTol'
(all components 1e-6
by default).
If certain components of the solution must be non-negative, use
ODESET
to set the 'NonNegative'
property to the indices of these
components.
我有一个句柄 @func
的函数,我想在 t = [0, tspan]
上测试它的初始条件 y0
。在不改变 tspan
的情况下,我究竟需要做什么才能增加 数量 的时间步长 ode45
?
我看到了 ode45
的 MATLAB 文档,发现我需要以某种方式将 options
输入更改为 ode45
。但是,我不太明白如何做到这一点,因为没有提供示例代码。
您需要查看 odeset
,它创建了一个用于 ODE 求解器的选项结构,例如 ode45
。您正在查看更改 MaxStep
参数。
这个 (MATLAB R2015a) 的文档说:
MaxStep
- Upper bound on step size [ positive scalar ]
MaxStep
defaults to one-tenth of thetspan
interval in all solvers.
因此,您可以使其小于 0.1*tspan
... 1e-6
或类似的东西。这取决于 tspan
是什么,因此如果您想增加时间步长/输出点的总数,则需要使其小于 0.1*tspan
。
因此,创建一个 odeset
结构并覆盖 MaxStep
参数。其余值将保持默认值:
options = odeset('MaxStep', 1e-6);
既然你已经完成了,请致电 ode45
解决你的问题:
[tout,yout] = ode45(@func, tspan, y0, options);
只需尝试 MaxStep
直到获得所需的粒度。
小注
虽然有点隐蔽,但文档 确实 告诉您如何更改选项。这是讨论如何使用选项调用 ode45
的部分。请注意以粗体突出显示的内容。这是 MATLAB R2015a 的文档:
[TOUT,YOUT] = ode45(ODEFUN,TSPAN,Y0,OPTIONS)
solves as above with default integration properties replaced by values inOPTIONS
, an argument created with theODESET
function. SeeODESET
for details. Commonly used options are scalar relative error tolerance'RelTol'
(1e-3
by default) and vector of absolute error tolerances'AbsTol'
(all components1e-6
by default). If certain components of the solution must be non-negative, useODESET
to set the'NonNegative'
property to the indices of these components.