2015-11-04 313 views
2

我有一个函数,其句柄为@func,初始条件为y0,我想测试t = [0, tspan]。我需要做什么来增加步骤ode45使用的号码,而不改变tspanMatlab - ODE45 - 更改时间步数

我看到了ode45的MATLAB文档,看到我需要以某种方式将options输入更改为ode45。但是,我并不真正了解如何执行此操作,因为没有提供示例代码。

回答

4

您需要查看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'属性设置为这些组件的索引。