Solvers and Options

ProbNumDiffEq.jl provides mainly the following two solvers, both based on extended Kalman filtering and smoothing. For the best results we suggest using EK1, but note that it requires that the Jacobian of the vector field is defined.

ProbNumDiffEq.EK1Type
EK1(; prior=:ibm, order=3, diffusionmodel=:dynamic, smooth=true)

Gaussian ODE filtering with first order extended Kalman filtering.

Currently, only the integrated Brownian motion prior :ibm is supported. For the diffusionmodel, chose one of [:dynamic, :dynamicMV, :fixed, :fixedMV, :fixedMAP].

See also: EK0

References:

  • N. Bosch, P. Hennig, F. Tronarp: Calibrated Adaptive Probabilistic ODE Solvers (2021)
  • F. Tronarp, H. Kersting, S. Särkkä, and P. Hennig: Probabilistic Solutions To Ordinary Differential Equations As Non-Linear Bayesian Filtering: A New Perspective (2019)
source
ProbNumDiffEq.EK0Type
EK0(; prior=:ibm, order=3, diffusionmodel=:dynamic, smooth=true)

Gaussian ODE filtering with zeroth order extended Kalman filtering.

Currently, only the integrated Brownian motion prior :ibm is supported. For the diffusionmodel, chose one of [:dynamic, :dynamicMV, :fixed, :fixedMV, :fixedMAP].

See also: EK1

References:

  • N. Bosch, P. Hennig, F. Tronarp: Calibrated Adaptive Probabilistic ODE Solvers (2021)
  • F. Tronarp, H. Kersting, S. Särkkä, and P. Hennig: Probabilistic Solutions To Ordinary Differential Equations As Non-Linear Bayesian Filtering: A New Perspective (2019)
  • M. Schober, S. Särkkä, and P. Hennig: A Probabilistic Model for the Numerical Solution of Initial Value Problems (2018)
source

Experimental: Iterated extended Kalman smoothing

We do not recommend using the following solver, but if you are interested feel free to open an issue!

ProbNumDiffEq.IEKSType
IEKS(; prior=:ibm, order=1, diffusionmodel=:dynamic, linearize_at=nothing)

Gaussian ODE filtering with iterated extended Kalman smoothing.

To use it, use solve_ieks(prob, IEKS(), args...) instead of solve(prob, IEKS(), args...), since it is implemented as an outer loop around the solver.

Currently, only the integrated Brownian motion prior :ibm is supported. For the diffusionmodel, chose one of [:dynamic, :dynamicMV, :fixed, :fixedMV, :fixedMAP]. Just like the EK1 it requires that the Jacobian of the rhs function is available.

See also: EK0, EK1, solve_ieks

References:

  • F. Tronarp, S. Särkkä, and P. Hennig: Bayesian ODE Solvers: The Maximum A Posteriori Estimate
source
ProbNumDiffEq.solve_ieksFunction
solve_ieks(prob::AbstractODEProblem, alg::IEKS, args...; iterations=10, kwargs...)

Solve method to be used with the IEKS. The IEKS works essentially by solving the ODE multiple times. solve_ieks therefore wraps a call to the standard solve method, passing args... and kwargs....

Currently, this method is very simplistic - it iterates for a fixed numer of times and does not use a stopping criterion.

source