Skip to content

Commit

Permalink
Documentation updates (#242)
Browse files Browse the repository at this point in the history
  • Loading branch information
nathanaelbosch authored Jun 2, 2023
1 parent cc3dfd2 commit d2a9bf9
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 39 deletions.
14 changes: 7 additions & 7 deletions docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,17 @@ makedocs(
pages=[
"Home" => "index.md",
"Tutorials" => [
"Getting Started" => "getting_started.md"
"Second Order ODEs and Energy Preservation" => "dynamical_odes.md"
"Differential Algebraic Equations" => "dae.md"
"Probabilistic Exponential Integrators" => "exponential_integrators.md"
"Parameter Inference" => "fenrir.md"
"Getting Started" => "tutorials/getting_started.md"
"Second Order ODEs and Energy Preservation" => "tutorials/dynamical_odes.md"
"Differential Algebraic Equations" => "tutorials/dae.md"
"Probabilistic Exponential Integrators" => "tutorials/exponential_integrators.md"
"Parameter Inference" => "tutorials/fenrir.md"
],
"Solvers and Options" => [
"solvers.md",
"diffusions.md",
"initialization.md",
"priors.md",
"initialization.md",
"diffusions.md",
],
"Benchmarks" => [
"Multi-Language Wrapper Benchmark" => "benchmarks/multi-language-wrappers.md",
Expand Down
81 changes: 51 additions & 30 deletions docs/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,13 @@ The implemented _ODE filters_ solve differential equations via Bayesian filterin

For a short intro video, check out our [poster presentation at JuliaCon2021](https://www.youtube.com/watch?v=EMFl6ytP3iQ).

---

__For more probabilistic numerics check out the [ProbNum](https://probnum.readthedocs.io/en/latest/) Python package.__
It implements probabilistic ODE solvers, but also probabilistic linear solvers, Bayesian quadrature, and many filtering and smoothing implementations.

---

## Installation

Run Julia, enter `]` to bring up Julia's package manager, and add the ProbNumDiffEq.jl package:

```
julia> ]
(v1.8) pkg> add ProbNumDiffEq
(v1.9) pkg> add ProbNumDiffEq
```

## Getting Started
Expand All @@ -30,29 +23,57 @@ For a quick introduction check out the "[Solving ODEs with Probabilistic Numeric

## Features

- Two extended Kalman filtering-based probabilistic solvers: the explicit [`EK0`](@ref) and semi-implicit [`EK1`](@ref).
- Adaptive step-size selection (by default with PI control)
- On-line uncertainty calibration, for multiple different measurement models
- Dense output
- Sampling from the solution
- Callback support
- Convenient plotting through a Plots.jl recipe
- Automatic differentiation via ForwardDiff.jl
- Supports arbitrary precision numbers via BigFloats.jl
- Specialized solvers for second-order ODEs (demo will be added)
- Compatible with DAEs in mass-matrix ODE form (demo will be added)
- Two extended Kalman filtering-based probabilistic solvers: the explicit [`EK0`](@ref) and semi-implicit [`EK1`](@ref).
- Adaptive step-size selection with PI control;
fully compatible with [DifferentialEquations.jl's timestepping options](https://docs.sciml.ai/DiffEqDocs/stable/extras/timestepping/)
- Online uncertainty calibration for multiple different diffusion models (see "[Diffusion models and calibration](@ref)")
- [Dense output](@ref)
- Sampling from the solution
- Callback support
- Convenient plotting through a [Plots.jl](https://docs.juliaplots.org/latest/) recipe
- Automatic differentiation via [ForwardDiff.jl](https://github.com/JuliaDiff/ForwardDiff.jl)
- Arbitrary precision via Julia's built-in [arbitrary precision arithmetic](https://docs.julialang.org/en/v1/manual/integers-and-floating-point-numbers/#Arbitrary-Precision-Arithmetic)
- Specialized solvers for second-order ODEs (see [Second Order ODEs and Energy Preservation](@ref))
- Compatible with DAEs in mass-matrix ODE form (see [Solving DAEs with Probabilistic Numerics](@ref))


## [References](@id references)

- N. Bosch, P. Hennig, F. Tronarp: **Probabilistic Exponential Integrators** (2023)
- N. Bosch, F. Tronarp, P. Hennig: **Pick-and-Mix Information Operators for Probabilistic ODE Solvers** (2022)
- N. Krämer, N. Bosch, J. Schmidt, P. Hennig: **Probabilistic ODE Solutions in Millions of Dimensions** (2022)
- N. Bosch, P. Hennig, F. Tronarp: **Calibrated Adaptive Probabilistic ODE Solvers** (2021)
- F. Tronarp, S. Särkkä, and P. Hennig: **Bayesian ODE Solvers: The Maximum A Posteriori Estimate** (2021)
- N. Krämer, P. Hennig: **Stable Implementation of Probabilistic ODE Solvers** (2020)
- H. Kersting, T. J. Sullivan, and P. Hennig: **Convergence Rates of Gaussian Ode Filters** (2020)
- 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)

More references on ODE filters and on probabilistic numerics in general can be found on the [probabilistic-numerics.org homepage](https://www.probabilistic-numerics.org/research/general/).
The main references _for this package_ include:

- N. Bosch, P. Hennig, F. Tronarp:
[**Probabilistic Exponential Integrators**](https://arxiv.org/abs/2305.14978)
(2023)
- N. Bosch, F. Tronarp, P. Hennig:
[**Pick-and-Mix Information Operators for Probabilistic ODE Solvers**](https://proceedings.mlr.press/v151/bosch22a.html)
(2022)
- N. Krämer, N. Bosch, J. Schmidt, P. Hennig:
[**Probabilistic ODE Solutions in Millions of Dimensions**](https://proceedings.mlr.press/v162/kramer22b.html)
(2022)
- N. Bosch, P. Hennig, F. Tronarp:
[**Calibrated Adaptive Probabilistic ODE Solvers**](http://proceedings.mlr.press/v130/bosch21a.html)
(2021)
- F. Tronarp, S. Särkkä, and P. Hennig:
[**Bayesian ODE Solvers: The Maximum A Posteriori Estimate**](https://link.springer.com/article/10.1007/s11222-021-09993-7)
(2021)
- N. Krämer, P. Hennig:
[**Stable Implementation of Probabilistic ODE Solvers**](https://arxiv.org/abs/2012.10106v1)
(2020)
- H. Kersting, T. J. Sullivan, and P. Hennig:
[**Convergence Rates of Gaussian Ode Filters**](https://link.springer.com/article/10.1007/s11222-020-09972-4)
(2020)
- F. Tronarp, H. Kersting, S. Särkkä, and P. Hennig:
[**Probabilistic Solutions To Ordinary Differential Equations As Non-Linear Bayesian Filtering: A New Perspective**](https://link.springer.com/article/10.1007/s11222-019-09900-1)
(2019)
- M. Schober, S. Särkkä, and P. Hennig:
[**A Probabilistic Model for the Numerical Solution of Initial Value Problems**](https://link.springer.com/article/10.1007/s11222-017-9798-7)
(2018)

More references on ODE filters and on probabilistic numerics in general can be found on [probabilistic-numerics.org ](https://www.probabilistic-numerics.org/research/general/).


## Related packages

- [probdiffeq](https://pnkraemer.github.io/probdiffeq/): Fast and feature-rich filtering-based probabilistic ODE solvers in JAX.
- [ProbNum](https://probnum.readthedocs.io/en/latest/): Probabilistic numerics in Python. It has not only probabilistic ODE solvers, but also probabilistic linear solvers, Bayesian quadrature, and many filtering and smoothing implementations.
- [Fenrir.jl](https://github.com/nathanaelbosch/Fenrir.jl): Parameter-inference in ODEs with probabilistic ODE solvers. This package builds on ProbNumDiffEq.jl to provide a negative marginal log-likelihood function, which can then be used with an optimizer or with MCMC for parameter inference.
4 changes: 2 additions & 2 deletions docs/src/initialization.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ Y^{(0)}(0) &= y_0, \\
Y^{(1)}(0) &= f(y_0, 0).
\end{aligned}
```
And it turns out that we can also compute higher-order derivatives of ``y`` with the chain rule,
which we can use to initialize ``Y^{(i)}(0)``.
It turns out that we can also compute higher-order derivatives of ``y`` with the chain rule,
and then use these to better initialize ``Y^{(i)}(0)``.
This, done efficiently with Taylor-mode autodiff by using
[TaylorIntegration.jl](https://perezhz.github.io/TaylorIntegration.jl/latest/),
is what [`TaylorModeInit`](@ref) does.
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 comments on commit d2a9bf9

Please sign in to comment.