【发布时间】:2011-08-09 03:08:57
【问题描述】:
我目前正在尝试使用 SciPy 的集成.ode 包来解决一对耦合的一阶 ODE:例如,Lotka-Volterra predator-prey equation。但是,这意味着在集成循环期间,我必须在每次迭代时更新发送给方法的参数,并且简单地跟踪先前的值并在每次迭代时调用 set_f_params() 似乎没有奏效.
hprev = Ho
pprev = Po
yh = np.zeros(0)
yp = np.zeros(0)
while dh.successful() and dp.successful() and dp.t < endtime and dh.t < endtime:
hparams = [alpha, beta, pprev]
pparams = [delta, gamma, hprev]
dh.set_f_params(hparams)
dp.set_f_params(pparams)
dh.integrate(dh.t + stepsize)
dp.integrate(dp.t + stepsize)
yh = np.append(yh, dh.y)
yp = np.append(yp, dp.y)
hprev = dh.y
pprev = dp.y
我在每次迭代中通过set_f_params 设置的值似乎不会传播到回调方法,这并不令人惊讶,因为网络上的示例似乎都没有涉及“实时”变量传递到回调,但这是我能想到的将这些值放入回调方法的唯一方法。
有人对如何使用 SciPy 对这些 ODE 进行数值积分有任何建议吗?
【问题讨论】: