ProbNum

ProbNum's CI Build Status ProbNum's Coverage Status ProbNum's Tutorials ProbNum's Benchmarks ProbNum on PyPI


ProbNum is a Python toolkit for solving numerical problems in linear algebra, optimization, quadrature and differential equations. ProbNum solvers not only estimate the solution of the numerical problem, but also its uncertainty (numerical error) which arises from finite computational resources, discretization, and stochastic input. These uncertainties can be used in downstream decisions.

Currently, available solvers are:

  • Linear solvers: Solve \(Ax=b\) for \(x\).

  • ODE solvers: Solve \(\dot{y}(t)= f(y(t), t)\) for \(y\).

  • Integral solvers (quadrature): Solve \(F = \int_{\Omega} f(x) p(x) dx\) for \(F\).

Lower level structure in ProbNum includes:

  • Random variables and random processes, as well as arithmetic operations thereof.

  • Memory-efficient and lazy implementation of linear operators.

  • Filtering and smoothing for (probabilistic) state-space models, mostly variants of Kalman filters.

The research field underpinning the ProbNum library is called probabilistic numerics (PN) at the intersection of machine learning and numerics. PN aims to quantify uncertainty arising from intractable or incomplete numerical computation and from stochastic input using the tools of probability theory. The general vision of probabilistic numerics is to provide well-calibrated probability measures over the output of a numerical routine, which then can be propagated along the chain of computation.

To get started install ProbNum using pip.

pip install probnum

Alternatively, you can install the package from source.

pip install git+https://github.com/probabilistic-numerics/probnum.git

To learn how to use ProbNum check out the quickstart guide and the tutorials.