Skip to main content

Transparent calculations with uncertainties on the quantities involved (aka "error propagation") ; calculation of derivatives

Project description

uncertainties allows calculation such as (0.2 +- 0.01)**2 = 0.04 +- 0.004 to be performed transparently.

Correlations between expressions are correctly taken into account. x-x is exactly zero, for instance (more naive implementations found on the web yield a non-zero uncertainty for x-x, which is incorrect). Whatever the complexity of the calculation and the number of steps involved, the uncertainties produced by this program are what is predicted by error propagation theory.

Basic examples:

import uncertainties
from math import *  # Must be done *after* importing uncertainties

# Mathematical operations:
x = uncertainties.NumberWithUncert((0.20, 0.01))  # x = 0.20+-0.01
x = uncertainties.NumberWithUncert("0.20(1)")  # Other representation
print x**2  # Prints "0.04+-0.004"
print sin(x**2)  # Prints "0.0399...+-0.00399..."

print x.position_in_sigmas(0.17)  # Prints "-3.0": deviation of -3 sigmas

# Access to the nominal value, and to the uncertainty:
s = x**2  # Square
print s  # Prints "0.04+-0.004"
print s.nominal_value  # Prints "0.04"
print s.std_dev()  # Prints "0.004..."

print s.derivatives[x]  # Partial derivative: prints "0.4" (= 2*0.20)

print s - x*x  # Exactly zero: correlations taken into account

The Python (or IPython) shell can thus be used as a powerful calculator that handles quantities with uncertainties (print statements are optional, and all mathematical functions can for instance be imported with from math import * after importing this module with import uncertainties).

Almost all mathematical operations are supported, including most functions from the standard math module and functions from the third-party numpy module (fast operations on arrays and matrices). Comparison operators (>, ==, etc.) are supported too. There is no restriction on the complexity of the expressions, or on the number of variables involved.

Another possible use of this module is the calculation of partial derivatives of mathematical functions.

Additional examples and information can be obtained with pydoc uncertainties after installation.

Please send feature requests, bug reports, or feedback to the author.

Installation: sudo easy_install uncertainties might work for you (this does not require any manual download, but requires setuptools). For additional installation methods, see README.txt in the provided files.

Version history (main changes only):

  • 1.0.12: main class (Number_with_uncert) renamed NumberWithUncert so as to follow PEP 8.

  • 1.0.11: origin_value renamed more appropriately as nominal_value.

  • 1.0.9: correlations() renamed more appropriately as covariance_matrix().

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uncertainties-1.0.17.tar.gz (25.4 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page