Matlab - ODE45 - 改变时间步数
Posted
技术标签:
【中文标题】Matlab - ODE45 - 改变时间步数【英文标题】:Matlab - ODE45 - change the number of time steps 【发布时间】:2015-11-04 19:41:20 【问题描述】:我有一个带有句柄@func
的函数,其初始条件为y0
,我想在t = [0, tspan]
上进行测试。确切地说,我需要做什么来增加ode45
使用的时间步数,而不更改tspan
?
我看到了 ode45
的 MATLAB 文档,发现我需要以某种方式将 options
输入更改为 ode45
。但是,由于没有提供示例代码,我并不真正了解如何执行此操作。
【问题讨论】:
【参考方案1】:您需要查看 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'
属性设置为这些的索引 组件。
【讨论】:
以上是关于Matlab - ODE45 - 改变时间步数的主要内容,如果未能解决你的问题,请参考以下文章