scipy.integrate.ode与两个耦合的ODE?

| 我目前正在尝试使用SciPy的integration.ode软件包来解决一对耦合的一阶ODE:例如Lotka-Volterra捕食者-猎物方程。但是,这意味着在积分循环中,我必须在每次迭代中更新要发送给方法的参数,并且仅跟踪先前的值并在每次迭代中调用ѭ0似乎并没有解决问题。
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进行数字集成有任何建议吗?     
已邀请:
我可能是错的,但此示例似乎非常接近您的问题。 :)使用uses3ѭ求解ODE的系统。     
我有一个类似的问题。事实证明,积分器不会在每次调用bind()时都重新评估微分方程函数,而是在其内部计时。我将集成器的max_step选项更改为与stepsize相同,并且对我有用。     

要回复问题请先登录注册