Quick Navigator

 Search Site Miscellaneous Server Agreement Year 2038 Credits

# Manual Reference Pages  -  MATH::SYMBOLIC::CUSTOM::ERRORPROPAGATION (3)

.ds Aq ’

### NAME

Math::Symbolic::Custom::ErrorPropagation - Calculate Gaussian Error Propagation

### SYNOPSIS

```

use Math::Symbolic qw/parse_from_string/;
use Math::Symbolic::Custom::ErrorPropagation;

# Force is mass times acceleration.
my \$force = parse_from_string(m*a);

# The measurements of the acceleration and the mass are prone to
# statistical errors. (Hence have variances themselves.)
# Thus, the variance in the force is:
my \$variance = \$force->apply_error_propagation(a, m);

print \$variance;

# prints:
# (
#   ((sigma_a ^ 2) * ((partial_derivative(m * a, a)) ^ 2)) +
#   ((sigma_m ^ 2) * ((partial_derivative(m * a, m)) ^ 2))
# ) ^ 0.5

```

### DESCRIPTION

This module extends the functionality of Math::Symbolic by offering facilities to calculate the propagated variance of a function of variables with variances themselves.

The module adds a method to all Math::Symbolic objects.

#### CW\$ms_tree->apply_error_propagation( [list of variable names] )

This method does not modify the Math::Symbolic tree itself, but instead calculates and returns its variance based on its variable dependencies which are expected to be passed as arguments to this method in form of a list of variable names.

The variance is returned as a Math::Symbolic tree itself. It is calculated using the Gaussian error propagation formula for uncorrelated variances:

```

variance( f(x_1, x_2, ..., x_n ) ) =
sqrt(
sum_over_i=1_to_n(
variance(x_i)^2 * (df/dx_i)^2
)
)

```

In the above formula, the derivatives are partial derivatives and the component variances variance(x_i) are represented as sigma_x_i in the resulting formula. (The x_i is replaced by the variable name, though.)

Please refer to the SYNOPSIS for an example.

### AUTHOR

Please send feedback, bug reports, and support requests to one of the contributors or the Math::Symbolic mailing list.

List of contributors:

```

Steffen MXller, symbolic-module at steffen-mueller dot net

```