matlab 如何在ode45中修复采样时间

lskq00tm  于 2023-11-21  发布在  Matlab
关注(0)|答案(1)|浏览(195)

我想在ode45中固定采样时间(例如,T=0.5),我该怎么做?如果不可能,我们是否有其他方法在Matlab中固定采样时间?
我尝试了下面的代码,但这段代码没有修复采样时间。当我调试它时,请参阅ode45使用可变采样时间解决它。

T = 0.5;
tspan = 0:T:10;
y0 = [0.2,0.3];
[t, y] = ode45(@(t,y) odefcn(t,y), tspan, y0);
plot(t, y, '-o'), grid on
xlabel('Time')
function dx = odefcn(t,x)
dx = zeros(2,1);
u = [2 -2]*x(1:2) + 1;
dx(1) = x(1) - 2*x(2);
dx(2) = - x(2) + u;
end

字符串

b09cbbtk

b09cbbtk1#

ode45()函数具有自适应步长大小,您无法更改该行为。您可以做的是指定ode45()将在集成过程中使用的容差,这反过来将影响所选择的步长大小。例如,

options = odeset('RelTol',1e-8,'AbsTol',1e-10);
[t, y] = ode45(@(t,y) odefcn(t,y), tspan, y0, options);

字符串
如果你正在做一项研究,使用各种固定步长来比较结果,你需要编写自己的RK4求解器代码。

相关问题