Scipy集成允许我们一次一个自适应的时间步进行ode集成,并对它做些什么。但是,matlabode需要我们指定一个timespan,并确定其中的自适应时间步,但不能在其中执行操作。你知道吗
来自scipy
ODE.set_initial_value(y0, tlist[0])
numoftimes = len(tlist)
for ii in range(1, numoftimes):
# while loop up to tlist[ii]
while ODE.t < tlist[ii]:
t_prev = ODE.t
y_prev = ODE.y
# integrate up to tlist[ii], one step at a time.
ODE.integrate(tlist[ii], step=1)
#do something to the output
...
但是,在matlab中,我没有做到这一点,主要是step=1
在matlabode套件中不可用。你知道吗
尝试是使tspan在matlabode套件中变得非常小。但这是不适应性的。在某些区域,原始的ode timestep非常大(非僵硬),但在某些区域,ode timestep非常小(僵硬)。你知道吗
tlist = [0 tf]
numoftimes = len(tlist)
for ii = 1:numoftimes
# while loop up to tlist(ii)
while t_prev < tlist(ii)
t_prev = T(end,:)
y_prev = Y(end,:)
# integrate up to tlist(ii), one step at a time.
t = [t_prev,t_prev+0.0000000000001];
[T, Y] = ode45(dydt, t, y);
#do something to the output
...
end
end
这是不好的,因为我有,即使ode45集成只有一个步骤 1强制时间步长为固定间隔 2由于在某些非刚性区域,“原始自适应”时间步长不需要那么小。你知道吗
如何使用matlab ode套件解决此问题?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐