我目前正在尝试使用SciPy的integration.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进行数值集成有任何建议?
最佳答案
我可能是错的,但this example似乎非常接近您的问题。 :)它使用odeint
来解决ODE系统。
关于python - scipy.integrate.ode与两个耦合的ODE?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5724496/