ivp 0.3.0

A Rust library for solving initial value problems (IVPs) for ordinary differential equations (ODEs).
Documentation


This library provides a pure rust implementation of SciPy's solve_ivp function with slight modifications to the API to better fit Rust's design patterns.

Currently implemented solvers:

  • DOP853: An 8th order Dormand-Prince method with step-size control and dense output.
  • DOPRI5: A 5th order Dormand-Prince method with step-size control and dense output.
  • RK4: The classic 4th order Runge-Kutta method with fixed step-size and cubic Hermite interpolation for dense output.
  • RK23: A 3rd order Runge-Kutta method with 2nd order error estimate for step-size control.
  • Radau: A 5th order implicit Runge-Kutta method of Radau IIA type with step-size control and dense output.

Planned additions in development:

  • BDF: A variable-order (1 to 5) Backward Differentiation Formula method with step-size control and dense output.

Note: This library uses dynamically sized arrays (Vec) internally to allow for flexibility in use cases and future deployment as a Python package. For a more performant solution with statically sized arrays (and thus require compile-time declaration of system), consider using differential-equations, which also supports a wider variety of solvers and features. Including SDE, DDE, and DAE equations. This library is primarily intended for users looking for a rust version of SciPy's solve_ivp function with a familiar API.