-
Notifications
You must be signed in to change notification settings - Fork 4
Home
Welcome to the UncertaintyWrapper wiki!
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.
There are several methods to derive the Jacobian matrix. All of these methods require the calculation of derivatives.
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.
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.
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.
scipy.misc.derivativestatsmodels.tools.numdiff
- Uncertainties
- Tapenade
- AUDi
- Python AD
- PyADOLC
- PyCppAD