Matlab - ODE45 - 改变时间步数

时间:2015-11-04 19:41:21

标签: matlab ode45

我有一个带有句柄@func的函数,其初始条件为y0,我希望通过t = [0, tspan]进行测试。我需要做些什么来增加ode45使用的时间步长的数量,而不更改tspan

我看到了ode45的MATLAB文档,发现我需要以某种方式将options输入更改为ode45。但是,我真的不明白如何做到这一点,因为没有提供示例代码。

1 个答案:

答案 0 :(得分:4)

您需要查看odeset,它会创建一个在ODE解算器中使用的选项结构,例如ode45。您正在考虑更改MaxStep参数。

此文档(MATLAB R2015a)说:

  

MaxStep - 步长上限[正标量]

     

MaxStep默认为所有解算器中tspan间隔的十分之一。

因此,你可以使它小于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)默认解决上述问题   集成属性替换为OPTIONS中的值,创建的参数   使用ODESET功能。有关详细信息,请参阅ODESET 。常用选项   是标量相对误差容差'RelTol'(默认为1e-3)和矢量   绝对容错'AbsTol'(默认情况下为所有组件1e-6)。   如果解决方案的某些组件必须是非负的,请使用   ODESET'NonNegative'属性设置为这些属性的索引   组件。