В настоящее время я пытаюсь использовать пакет SciPy integrate.ode для решения пары связанных ODE первого порядка: скажем, уравнение Лотка-Вольтерра-хищника-жертвы . Тем не менее, это означает, что во время цикла интеграции я должен обновлять параметры, которые я посылаю методам на каждой итерации, и просто отслеживать предыдущее значение и вызывать 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?