我有一个带有句柄@func的函数,它的初始条件为y0,我想在t = [0, tspan]上进行测试。确切地说,我需要做什么来增加ode45使用的时间步骤的数量,而不改变tspan
我看到了ode45的MATLAB文档,并看到我需要以某种方式将options输入更改为ode45。但是,我并不真正理解如何做到这一点,因为没有提供示例代码。
发布于 2015-11-04 20: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
复制相似问题