| Version 3 (modified by pv, 4 years ago) |
|---|
See Task #919
The scipy.integrate.ode/odeint API needs some cleanup. This page details a suggestion what a revised API should look like.
Problems with current api
- ode is a class, odeint a function
- ode has different semantics than odeint for the callback function
Proposed API
The idea would be to follow the lead of the scipy.interpolate API (cf. eg. KroghInterpolate).
- CamelCase classes Vode, Zvode, Dopri, etc., functionality similar to ode
- Thin wrapper functions vode, zvode, ..., with functionality similar to odeint
The second point could perhaps also be
- One wrapper function odeint (or something similar) with a suitable keyword argument.
Use cases
Integrate a simple ODE
import numpy as np
from scipy.integrate import vode
def f(t,y):
return -2*y + np.array([np.cos(t),0,0])
t = np.linspace(0, 20, 200)
y = np.vode(f, t=t, y0=[0,1,2])
Related
- Gabriel Gellner started to work on something related here: https://launchpad.net/pyode
Open questions
- Are the named classes Vode etc. discoverable? (Having names of different solvers in class names is obscure.)
