MATLAB and Python Codebase for "Taming Uncertainty in a Complex World: The Rise of Uncertainty Quantification — A Tutorial for Beginners"
This repository contains the MATLAB and Python code for the paper "Taming Uncertainty in a Complex World: The Rise of Uncertainty Quantification — A Tutorial for Beginners", by Nan Chen, Stephen Wiggins, and Marios Andreou, published in the March 2025 issue of the Notices of the American Mathematical Society.
The MATLAB codebase was tested on version R2020b, while the Python codebase was tested on version 3.10.6.
The following MATLAB m-file (script) files can be found in the respective subdirectories (the numbered sections correspond to the ones found in the Supplementary Document of the paper, which is available in the arXiv version of this work):
- 2.1 - Shannon's entropy
- Computing_Entropy.m
- 2.2 - Relative entropy
- Computing_Relative_Entropy.m
- 3.1 - Uncertainty propagation in the linear damped system
- Linear_System_UQ.m
- 3.2 - Uncertainty propagation in the chaotic Lorenz 63 model
- L63_UQ.m
- 4.1 - Uncertainties in posterior distributions
- Bayes_Formula.m
- 4.2 - Lagrangian DA
- Flow_Model.m
- LDA_Function_of_L.m
- LDA_Main_Filter.m
- 5.1 - Parameter estimation with uncertainties in data
- Parameter_Estimation.m
- 5.2 - Eddy identification
- Eddy_Identification.m
- Flow_Model.m
- LDA_Main_Smoother.m
- 6 - Calibrating Stochastic Models Based on UQ
- Calibrating_Stochastic_Model_with_UQ.m
The following Python script files can be found in the respective subdirectories (the numbered sections correspond to the ones found in the Supplementary Document of the paper, which is available in the arXiv version of this work):
- 2.1 - Shannon's entropy
- Computing_Entropy.py
- 2.2 - Relative entropy
- Computing_Relative_Entropy.py
- 3.1 - Uncertainty propagation in the linear damped system
- Linear_System_UQ.py
- 3.2 - Uncertainty propagation in the chaotic Lorenz 63 model
- L63_UQ.py
- 4.1 - Uncertainties in posterior distributions
- Bayes_Formula.py
- 4.2 - Lagrangian DA
- Flow_Model.py
- LDA_Function_of_L.py
- LDA_Main_Filter.py
- 5.1 - Parameter estimation with uncertainties in data
- Parameter_Estimation.py
- 5.2 - Eddy identification
- Eddy_Identification.py
- Flow_Model.py
- LDA_Main_Smoother.py
- 6 - Calibrating Stochastic Models Based on UQ
- Calibrating_Stochastic_Model_with_UQ.py
The figures generated by each script are available in the corresponding subdirectory, in both .png
and MATLAB .fig
formats for quick reference. Associated output files (when applicable) are also provided in .txt
format for both the MATLAB and Python codebase. Finally, each subdirectory (corresponding to each section of the paper’s Supporting Document) includes a Python_Requirements.txt
file listing the necessary Python packages for the associated script file(s), formatted for use with package managers such as pip
or conda
.
[Notices of the American Mathematical Society] [arXiv]
BibTeX Entry:
@article{chen2025taming,
title = "{Taming Uncertainty in a Complex World: The Rise of Uncertainty Quantification -- A Tutorial for Beginners}",
author = "Chen, Nan and Wiggins, Stephen and Andreou, Marios",
journal = "Notices of the American Mathematical Society",
ISSN = "1088-9477",
publisher = "American Mathematical Society (AMS)",
volume = "72",
number = "03",
pages = "250 - 260",
year = "2025",
month = mar,
DOI = "10.1090/noti3120",
URL = "http://dx.doi.org/10.1090/noti3120"
}
This code is released under the MIT License. See the file LICENSE
for copying permission.