pythonscipy

scipy.integrate.solve_ivp unclear how to solve implicit ODE of form 0=F(t, y(t), y'(t))


Currently, I do use assimulos solver suite to solve an implicit differential equation of the form 0 = F(t, y(t), y'(t)). I would like to use a solver which comes with a native scipy installation and had a look at the documentation for scipy.integrate.solve_ivp. The documentation says that the solver solves a a system of the form:

Solve an initial value problem for a system of ODEs. This function numerically integrates a system of ordinary differential equations given an initial value dy / dt = f(t, y) y(t0) = y0

I do miss the ability to solve a system of the form dy / dt = f(t, y, y'). Is this possible with scipy.integrate.solve_ivp ?


Solution

  • Such an equation is called a differential algebraic equation (DAE). As far as I know, SciPy doesn't have a built-in DAE solver.

    This answer to this similar question provides an example of using fsolve to solve the algebraic part of the problem in combination with odeint. This might be applicable to your problem.

    You might also be interested in the ODES package, which provides additional solvers as an extension for SciPy, including a DAE solver.