Skip to content
Mark Mikofski edited this page Apr 5, 2016 · 7 revisions

Welcome to the UncertaintyWrapper wiki!

Uncertainty theory

Uncertainty of f_i(x_j) can be determined with the covariance matrix, Sx_i,x_j and the Jacobian matrix, J = df_i/dx_j as

df * df = J * S * J.T

where J.T is the transpose of J. The diagonals of df * df are the variance of each function and the square root of the variance is the standard deviation. For more detail see Wikipedia entry for uncertainty propagation.

Jacobians and Derivatives

There are several methods to derive the Jacobian matrix. All of these methods require the calculation of derivatives.

Automatic Differentiation (AD)

Automatic Differentiation, also known as Algorithmic Differentiation is a method of automatically calculating derivatives. Actual AD methods vary, but usually involve overloading basic numerical operations, therefore use of AD generally requires alteration of the source code. For more detailed information and a list of AD tools by platform and application please consult the Community Portal for Automatic Differentiation, a site that promotes auto-differentiation. The COIN|OR project also host several AD projects including ADOL-C and CppAD.

AlgoPy

UncertaintyWrapper uses AlgoPy a Python AD package by Heidelberg University professor Sebastian Walker that is based on ADOL-C and CppAD. Prof. Walker published his work on AlgoPy in the Journal of Computational Science. The AlgoPy documentation is also hosted online and the source is on GitHub.

Numdifftools

UncertaintyWrapper attempts to use AlgoPy to automatically calculate derivatives. If the underlying function can't be overloaded, for example if it is a C/C++ or FORTRAN library, then UncertaintyWrapper falls back on numerical differentiation using Numdifftools by Per A. Brodtkorb. Numdifftools conveniently wraps calls to AlgoPy so that both methods can be used interchangably in most situations. The numerical differentiation technique in Numdifftools is based on adaptive numerical differentiation in MATLAB by John D'Errico. The documentation for Numdifftools is online and the source is on GitHub.

Other tools

Numerical Differentiation

Automatic Differentiation

  • Uncertainties
  • Tapenade
  • AUDi
  • Python AD
  • PyADOLC
  • PyCppAD

Clone this wiki locally