我有一个带有句柄@func
的函数,它的初始条件为y0
,我想在t = [0, tspan]
上进行测试。确切地说,我需要做什么来增加ode45
使用的时间步骤的数量,而不改变tspan
我看到了ode45
的MATLAB文档,并看到我需要以某种方式将options
输入更改为ode45
。但是,我并不真正理解如何做到这一点,因为没有提供示例代码。
发布于 2015-11-04 12:02:34
您需要查看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的文档:
ODESET
[TOUT,YOUT] = ode45(ODEFUN,TSPAN,Y0,OPTIONS)
解决了上述问题,默认的集成属性被OPTIONS
中的值替换,是用函数创建的参数。详细信息见。常用的选项是标量相对容错'RelTol'
(默认情况下为1e-3
)和绝对误差容差向量'AbsTol'
(默认情况下为所有组件1e-6
)。如果解决方案的某些组件必须是非负的,请使用ODESET
将'NonNegative'
属性设置为这些组件的索引。
https://stackoverflow.com/questions/33530603
复制相似问题