Skip to content

数值稳定性

Numerical stability · Backward stability

以允许的小输入扰动刻画算法的有限精度行为,并与问题条件性及其他稳定性概念分开。

形式陈述

设数值问题为 y=F(x),浮点实现返回 y^=Afl(x)。若对每个允许输入 x,都存在满足指定结构约束的扰动 Δx,使

y^=F(x+Δx),ΔxxC(n)u+O(u2),

则称该实现在相应范数、扰动模型和浮点算术模型下后向稳定。若输入含有多个数据对象,分母、逐分量尺度以及哪些结构必须保持都要分别说明;例如对对称问题,只允许任意非结构化矩阵扰动可能给出过于宽松的结论。

前向稳定直接控制

y^F(x)F(x)

相对于问题条件数和舍入尺度的大小。混合稳定允许部分输入扰动与部分输出误差同时存在;弱稳定常只保证某些性质或较松的误差界。这些术语在不同文献中并非完全统一,使用时应给出实际不等式,而不是只贴标签。

后向稳定与良态问题结合,才通常推出小前向误差:

相对前向误差κ(F,x)相对后向误差.

因此稳定性是算法级性质,条件性是问题级性质。两者都必须相对于误差度量、输入表示和允许扰动解释,不能用“不发散”或“结果看起来平滑”替代。

直觉

后向稳定算法给计算结果一份可追溯说明:它也许没有精确解原题,却精确解了一道只被机器精度轻轻移动过的题。若附近问题的答案彼此接近,结果便可信;若原问题病态,邻近题的真解也可能相距很远,稳定算法仍无法创造输入中没有的有效数字。

这种解释比逐步追踪每个舍入误差更有整体感。局部误差可以在中间量上抵消或放大,后向分析则直接问最终结果能否回收到一个小的数据扰动。不过,小扰动必须属于问题认可的集合,否则“邻近问题”可能已经改变了物理或代数结构。

例子与边界

计算 x2+y2 时,直接先平方可能在真实结果仍可表示时发生中间溢出。缩放算法令 m=max(|x|,|y|),在 m0 时计算

m(x/m)2+(y/m)2,

避免巨大中间量。两个表达式在实数中相等,有限精度路径却不同;稳定重写保护了算法,不是改变问题的条件数。

最小二乘中形成正规方程会把 A2-范数条件数近似平方,而基于正交变换的 QR 方法通常具有更好的后向稳定解释。两种算法解决同一数学问题,差别来自中间问题和舍入传播;不能因为正规方程在精确算术下代数正确,就宣称实现同样可靠。

反过来,后向稳定也不保证所有输出分量都有小相对误差。病态问题会放大输入扰动,极小或精确为零的分量还需要逐分量或绝对尺度。某个特殊输入上得到很小前向误差,也不足以证明算法后向稳定:偶然准确没有提供对邻近输入和全部执行路径的统一保证。

“稳定”在其他领域还有不同对象。动力系统的平衡稳定研究连续轨道,ODE 绝对稳定研究离散测试方程的放大因子,多步法零稳定研究扰动模式,PDE 格式稳定研究离散演化算子;它们都不能与本页的有限精度算法稳定性互换。

推论与应用

前向与后向误差给出稳定性的度量语言,消去误差与稳定重写展示局部公式怎样破坏或恢复稳定路径,矩阵分解页面则会陈述其计算因子究竟对应哪个邻近矩阵。算法稳定性结论应落到可检查的不等式,而不是停在“行业通常认为稳定”的经验判断。

实践中,可靠性报告至少要同时给出问题条件估计、可计算残差或后向误差,以及实现采用的精度和异常处理。只有前向结果、问题敏感性和算法误差三者放在一起,才能判断丢失的数字来自数据、方法还是执行环境。

参考资料
  • Nicholas J. Higham, “What Is Numerical Stability?”, 2020, nhigham.com.
  • Nicholas J. Higham, Accuracy and Stability of Numerical Algorithms, 2nd ed., SIAM, 2002, Chs. 1–3.
  • Lloyd N. Trefethen, “The Definition of Numerical Analysis,” in The Princeton Companion to Mathematics, 2008.