В чем разница между scipy.integrate.odeint и scipy.integrate.ode?

Я прочитал документы для этих здесь, но он просто утверждает, что odeint является "интегратором с более простым интерфейсом, основанным на lsoda от ODEPACK"

В чем разница? При каких обстоятельствах используется более подходящий, чем другой?

Ответ 1

Если вы можете решить свою проблему с помощью odeint, я бы рекомендовал это. Это просто функция, объединяющая оду с использованием lsoda.

Если вы хотите гораздо больше опций, ode - это класс со многими методами и решателями:

Ответ 2

Мне было интересно об одном и том же вопросе, и позже я обнаружил, что в scipy.integrate есть другой API. Этот метод четко объясняется в документации.

Это может заинтересовать людей, сравнивающих odeint (odeintw для complex) и ode (complex_ode для сложных).

Он называется scipy.integrate.solve_ivp, доступный из scipy v1.0.0: https://scipy.github.io/devdocs/generated/scipy.integrate.solve_ivp.html#scipy.integrate.solve_ivp В этом решателе LSODA не может обрабатывать комплекс, но BDF быстрее в моем случае.