Version 3 (modified by pv, 4 years ago)

Add a simple use case

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).

  1. CamelCase classes Vode, Zvode, Dopri, etc., functionality similar to ode
  2. Thin wrapper functions vode, zvode, ..., with functionality similar to odeint

The second point could perhaps also be

  1. 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])

Open questions

  • Are the named classes Vode etc. discoverable? (Having names of different solvers in class names is obscure.)