我目前正在尝试使用SciPy的integrate.ode包来解决一对耦合的一阶ODE:比如Lotka-Volterra捕食者 - 食饵方程.但是,这意味着在集成循环期间,我必须更新我在每次迭代时发送给方法的参数,并且只是跟踪前一个值并调用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
Run Code Online (Sandbox Code Playgroud)
我在每次迭代时设置的值set_f_params似乎没有传播到回调方法,这并不是非常令人惊讶,因为网上没有任何示例似乎涉及"实时"变量传递给回调,但这是我能想到将这些值放入回调方法的唯一方法.
有没有人对如何使用SciPy数字整合这些ODE有任何建议?
| 归档时间: |
|
| 查看次数: |
8587 次 |
| 最近记录: |