Initialization routines for ODE filters.

You may use the following (rough) guidelines to choose a suitable strategy for low(ish) dimensional ODEs.

Initialization routines for high-dimensional ODEs are not implemented efficiently yet.

It may also be worth noting:

  • Only automatic-differentiation-based routines yield the exact initialization. This becomes more desirable, the larger the number of modelled derivatives is.

  • ForwardModeJVP is generally more efficient than ForwardMode. The jury is still out on the efficiency of ReverseMode.

  • Stack and StackWithJacobian are the only routines that come essentially for free. The other routines rely on either inference or automatic differentiation.

  • For stiff ODEs, prefer NonProbabilisticFitWithJacobian with BDF or Radau over NonProbabilisticFit (or use one of the automatic-differentiation-based routines).

  • Initialization routines can be chained together. For example, build a prior_process with an initrv that is generated by StackWithJacobian, and initialize the ODE filter with NonProbabilisticFitWithJacobian.


InitializationRoutine(*, is_exact, requires_jax)

Initialization routines for a filtering-based ODE solver.

Stack(*[, scale_cholesky])

Initialization by stacking y0, f(y0).

StackWithJacobian(*[, scale_cholesky])

Initialization by stacking y0, f(y0), and df(y0).

NonProbabilisticFit(*[, dt, ...])

Fit the prior process to a few steps of a non-probabilistic solver.

NonProbabilisticFitWithJacobian(*[, dt, ...])

Fit the prior process to a few steps of a non-probabilistic solver and use Jacobians.


Initialization via forward-mode automatic differentiation.


Initialization via Jacobian-vector-product-based automatic differentiation.


Initialization via reverse-mode automatic differentiation.


Initialize a probabilistic ODE solver with Taylor-mode automatic differentiation.

Class Inheritance Diagram

Inheritance diagram of probnum.diffeq.odefilter.init_routines._interface.InitializationRoutine, probnum.diffeq.odefilter.init_routines._stack.Stack, probnum.diffeq.odefilter.init_routines._stack.StackWithJacobian, probnum.diffeq.odefilter.init_routines._non_probabilistic_fit.NonProbabilisticFit, probnum.diffeq.odefilter.init_routines._non_probabilistic_fit.NonProbabilisticFitWithJacobian, probnum.diffeq.odefilter.init_routines._autodiff.ForwardMode, probnum.diffeq.odefilter.init_routines._autodiff.ForwardModeJVP, probnum.diffeq.odefilter.init_routines._autodiff.ReverseMode, probnum.diffeq.odefilter.init_routines._autodiff.TaylorMode