Uncertainty Quantification in Engineering
Turning point predictions into honest ranges by tracking how input uncertainty and model error propagate to outputs.
Why a single number is not enough
Every prediction rests on uncertain inputs and imperfect models. Reporting a single number hides that and invites false confidence. Uncertainty quantification (UQ) asks how uncertain the output is given the uncertainty in what went into it, so a result becomes a distribution or an interval rather than a bare figure.
Sources of uncertainty
- Aleatory: inherent randomness that more data cannot remove
- Epistemic: lack of knowledge that better models or data can reduce
- Input uncertainty: imprecise material properties, boundary conditions, cross-sections
- Model-form error: the equations are approximations of reality
- Numerical error: discretization and finite precision
How it is done
The workhorse is Monte Carlo: sample the uncertain inputs from their distributions, run the model on each sample, and look at the spread of outputs. When the model is expensive, a surrogate stands in so thousands of samples are affordable. More efficient methods exist (polynomial chaos, quasi-Monte Carlo) but the logic is the same: propagate the input distributions through to the output.
import numpy as np
def propagate(model, sampler, n=10000):
outs = np.array([model(sampler()) for _ in range(n)])
return {'mean': outs.mean(), 'p05': np.percentile(outs,5),
'p95': np.percentile(outs,95)}
Separating the two kinds
Good UQ keeps aleatory and epistemic uncertainty distinct, because they call for different responses. Epistemic uncertainty can be attacked with more experiments (this is where Bayesian experimental design earns its keep); aleatory uncertainty must be designed around with margin.
Kronos use
Design numbers such as the tritium breeding estimate carry uncertainty bands, and UQ is what makes those bands defensible. It also identifies which inputs dominate the uncertainty, focusing future work where it reduces the band most.