scipy.integrate.ode с двумя связанными ODE?

я сейчас пытаюсь использовать пакет SciPy интегрировать.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

Ценности I ' Настройка m на каждой итерации через set_f_params , похоже, не распространяется на методы обратного вызова, что неудивительно, учитывая, что ни один из примеров в Интернете, похоже, не включает "живую" переменную, передаваемую в обратные вызовы , но это был единственный способ получить эти значения в методах обратного вызова.

Есть ли у кого-нибудь совет, как использовать SciPy для численной интеграции этих ODE?

6
задан Magsol 20 April 2011 в 01:31
поделиться