“赋值 使用区间算术:”
实区间与集合运算 ​
实区间
对二元实运算
加减法的端点公式为
乘法需取四个端点乘积的最小值和最大值。除法可写成乘倒数区间,但前提是
包含不变量与向外舍入 ​
精确实数端点通常不能由有限浮点格式表示。验证区间计算因此维护包含不变量:机器返回的区间
下端点向
最近舍入只保证结果接近精确端点,不能保证方向正确;两个最近舍入端点都可能落到真实集合内部,产生看似更窄却不可靠的区间。验证实现还要固定格式、舍入模式、溢出、次正规数与 NaN 处理,不能只在纸面公式旁写一句“考虑浮点误差”。
若每个基本区间操作都满足包含性,表达式树上的组合也满足包含性。这是验证数值计算的局部证书接口:证明不要求算出未知真值,只需证明每一步返回的集合覆盖该步所有可能真值。
一条可追踪的计算 ​
取
精确区间运算给出
考虑函数
若把同一个
真实集合却只有
“验证”保证了什么 ​
一个可靠外包络证明真值在区间内,不证明区间足够窄,也不证明问题条件良好。区间
包含性也依赖实现模型。若编译器改变舍入模式、把两步融合成 FMA、在扩展精度寄存器中延迟舍入,或者并行线程共享全局舍入状态,纸面证书未必对应实际指令。成熟区间库会用硬件指令、受控舍入或误差无关的端点算法封装这些细节,并以测试覆盖异常值。
区间结果不是概率置信区间。它不需要为未知量指定分布,保证形式是确定性的全称包含;置信区间则在重复抽样下具有覆盖概率,两者的随机对象与量词不同。区间也不自动证明模型真实:若输入范围漏掉真实输入,后续再严谨的向外舍入仍只验证了错误前提下的计算。
与区间抽象域的分层 ​
区间抽象域会把程序中每个变量映射到区间,并在控制流汇合处做 join、在循环中做 widening。它的静态分析可靠性还需证明抽象转移函数覆盖所有具体程序步骤;本页只提供算术操作的集合外包络和有限精度实现边界。
两层可靠性不能合并成一句“用了区间所以分析可靠”。上层可能错误建模整数溢出、数组越界或分支条件;下层也可能因舍入方向错误漏掉真值。只有算术外包络、语言语义与抽象转移的证明逐层接上,最终警报才具有不漏报的含义。
验证数值计算还用于严格根包围、全局优化和计算机辅助证明。它交付的是可检查的包含证书,而非单纯多打印几位小数;更高精度能减少舍入扩张,却不能单独消除变量相关性或错误模型。
参考资料
- Ramon E. Moore, R. Baker Kearfott, and Michael J. Cloud, Introduction to Interval Analysis, SIAM, 2009, Chs. 1–3。
- IEEE Computer Society, IEEE Standard for Interval Arithmetic, IEEE Std 1788-2015。
- Siegfried M. Rump, “Verification Methods: Rigorous Results Using Floating-Point Arithmetic,” Acta Numerica 19, 2010, pp. 287–449。
- Timothy J. Hickey, Qun Ju, and Maarten H. van Emden, “Interval Arithmetic: From Principles to Implementation,” Journal of the ACM 48(5), 2001, pp. 1038–1068。