用途:处理带物理单位的计算,以及为报告数值给出不确定度。覆盖单位换算(含需物理背景的换算,如波长到光子能量、质量到物质的量、能量到温度)、不确定度传播(含相关输入)、依据校准证书/规格/重复性数据编制 GUM 不确定度预算、选择包含因子、结果舍入与书写、从曲线拟合中提取参数不确定度、审查既有分析代码中的单位与不确定度缺陷,以及量级与无量纲组的合理性检查。不覆盖统计推断、模型选择与实验设计。
安装(资料版本):pint 0.26.1 需 Python 3.12+,uncertainties 3.2.3 需 Python 3.8+,NumPy 2.5.3、SciPy 1.18.1 需 Python 3.12+。命令:uv venv --python 3.13;source .venv/bin/activate;uv pip install "pint==0.26.1" "uncertainties==3.2.3" "numpy==2.5.3" "scipy==1.18.1"。pint-pandas 与 pint-xarray 为单独安装。
关键工作流:输入时附单位、输出时才剥离;在函数边界用 ureg.wraps 或 m_as 换算;先写测量模型,包含估值为零的修正项;每个输入给出估值、标准不确定度、分布与自由度;Type B 按正确除数换算(扩展不确定度除以 k,矩形除以 sqrt(3));先识别相关性再用协方差矩阵合并;用灵敏度系数读预算;检查线性化;为包含因子给出依据;先舍入不确定度再对齐数值;说明 ± 是标准还是扩展及其 k 与覆盖概率。
常见陷阱包括用 .magnitude 在未知尺度剥离单位、摄氏/华氏偏移单位做算术、分贝等对数单位相加即相乘、重建 ufloat 破坏相关性、curve_fit 未设 absolute_sigma 导致协方差被重标定、未验证线性化。
本地 CLI(离线运行):propagate_uncertainty.py 用 GUM 与蒙特卡洛比较区间端点,表达式解析为 AST 后按固定运算与函数列表求值;uncertainty_budget.py 按证书与规格的表述方式合成分量;format_result.py 输出舍入与书写形式;convert_units.py 通过换算局部导数传播不确定度;audit_units.py 静态审查代码(规则 UNIT001-004、UNC001-004、CONST001,可用注释抑制);check_plausibility.py 检查量纲并评估14个无量纲组、特征尺度与量级带。各脚本以 --help 查看用法,默认退出码 1 可用于 CI。相关模型与假设需自行验证。