Запуск ode, dopri5 метод, ошибка: неподдерживаемый тип операнда ‘ode’

Я начинающий программист и хотел бы интегрировать функцию с помощью ode ‘dopri5’, но не думаю, что делаю это правильно. Ссылка не очень помогла, и у меня есть ошибка, которую я не узнаю. Так, первоначально я использовал odeint, и он работал хорошо. Вот этот кусок кода:

Itmp = odeint(te.rhs, Itmp, [xLim[i], xLim[i+1]], mxstep=10000,
                          atol=1e-11, rtol=1e-11, args=(f,))[1]

И моя попытка интеграции с помощью dopri5 заключается в следующем:

Itmp = ode(te.rhs).set_integrator('dopri5', max_step=10000,atol=1e-11, rtol=1e-11)

Ошибка, которую я получаю, говорит, что Itmp является типом «ode», в то время как мне нужно, чтобы он был поплавком, как odeint дает мне.

Вот конкретная ошибка, (Я пытаюсь вычесть Itmp из поплавка):

unsupported operand type(s) for -: 'ode' and 'float'

И когда я использую отладчик python и пытаюсь распечатать Itmp, он дает мне

<scipy.integrate._ode.ode object at 0x10d6ab410>

И после того, как я продолжу, он останавливается с вышеуказанной ошибкой. Я предполагаю, что у меня нет правильно написанной команды ode. Любая помощь будет очень признательна!

1 ответ

  1. Возвращаемое значение конструктора odeкласса является экземпляром объекта типа ode. На данный момент никакой интеграции не произошло. Для этого необходимо вызвать шаговые функции интегратора. После шага новое состояние находится в yполе odeобъекта.

    odeДля получения дополнительной информации обратитесь к документации класса.

    Вы должны были заметить, что не передали интегратору ни начальные условия, ни конец интервала интегрирования.