MATLAB is a great tool to simulate error propagation. As an example we will use the software to estimate the uncertainty in the difference between the measures of two quantities A and B, based on their individual uncertainties and σ* _{A}* and σ

*. The experiment shows the error of differences in case the errors are either dependent or independent of each other.*

_{B}We first clear the workspace, the Command Window and close all Figure windows. We first clear the workspace, the Command Window and close all Figure windows.

clear, clc, close all samplesize = 100000000;

To calculate the differences between A and B, and the error of this difference, we use two Gauss distributions A and B, with mean values of 6.3 and 3.4, i.e. with a difference of 6.3-3.4 = 2.9, and standard deviations of 1.2 and 1.5, respectively. We calculate the difference between the mean values of the two distributions on the assumption that the two distributions are dependent of each other. According to the article about the propagation of uncertainty of Wikipedia, the function then is

*f* = *aA* – *dB*

which yields

*f* = 6.3 – 3.4 = 2.9

with the real variables *A*, *B* with standard deviations σ* _{A}* and σ

*, and covariance*

_{B}*σ*and exactly known real-valued constants

_{AB}*a*,

*b*(i.e. and = 0). Then the variance is

σ_{f}^{2} = *a*^{2}*σ _{A}*

^{2}+

*b*

^{2}

*σ*

_{B}^{2}– 2

*abσ*

_{AB}^{2}

which yields

σ_{f}^{2} = 1.5^{2} + 1.2^{2} – 2 · 1.5 · 1.2 = 0.09

and therefore

σ* _{f}* = 0.3

which is the error of the difference of two measurements for perfectly dependent errors. Using a MATLAB experiment, we use the same set of random numbers r to add uncertainty to the data.

rng(0) r = randn(samplesize,1); age1 = 3.4 + 1.2*r; age2 = 6.3 + 1.5*r; dage = age2-age1; figure(... 'Position',[200 200 600 400],... 'Color',[1 1 1]); axes(... 'Box','on',... 'Units','Centimeters',... 'LineWidth',0.6,... 'FontName','Helvetica',... 'FontSize',14); hold on histogram(dage,30) mean(dage) std(dage)

which yields

ans = 2.9000

and

ans = 0.3000

for the difference in the mean and its error.

Now we run the same experiment but now the two measurements are independent from each other. Then the covariance term is zero and

σ_{f}^{2} = *a*^{2}*σ _{A}*

^{2}+

*b*

^{2}

*σ*

_{B}^{2}– 2

*abσ*

_{AB}^{2}

yields

σ_{f}^{2} = 1.5^{2} + 1.2^{2} – 0 = 3.6900

and therefore

σ* _{f}* = 1.9200

which is the error of the difference of two measurements for perfectly independent errors. Using a MATLAB experiment, we use the different sets of random numbers to add uncertainty to the data.

rng(0) age1 = 3.4 + 1.2*randn(samplesize,1); age2 = 6.3 + 1.5*randn(samplesize,1); dage = age2-age1; figure(... 'Position',[200 800 600 400],... 'Color',[1 1 1]); axes(... 'Box','on',... 'Units','Centimeters',... 'LineWidth',0.6,... 'FontName','Helvetica',... 'FontSize',14); hold on histogram(dage,30) mean(dage) std(dage)

which yields

ans = 2.8998

and

ans = 1.9207

for the approximately the difference in the mean and its error. The small deviation from the exact values used to create the data is due to the limited sample size.

### Reference

Tayler, J.R. 1997, An introduction to error analysis – the study of uncertainties in physical measurements, 2nd edition. University Science Books, 527 pages.