“定理也没有分析浮点舍入。它把每个 $C k$ 当作精确应用,并研究网格扰动在选定范数中的传播。实际实现每步产生的舍入误差可以作为附加源项放进稳定估计,但要证明 backward stabil…”
形式陈述 ​
设数值问题为
则称该实现在相应范数、扰动模型和浮点算术模型下后向稳定。若输入含有多个数据对象,分母、逐分量尺度以及哪些结构必须保持都要分别说明;例如对对称问题,只允许任意非结构化矩阵扰动可能给出过于宽松的结论。
前向稳定直接控制
相对于问题条件数和舍入尺度的大小。混合稳定允许部分输入扰动与部分输出误差同时存在;弱稳定常只保证某些性质或较松的误差界。这些术语在不同文献中并非完全统一,使用时应给出实际不等式,而不是只贴标签。
后向稳定与良态问题结合,才通常推出小前向误差:
因此稳定性是算法级性质,条件性是问题级性质。两者都必须相对于误差度量、输入表示和允许扰动解释,不能用“不发散”或“结果看起来平滑”替代。
直觉 ​
后向稳定算法给计算结果一份可追溯说明:它也许没有精确解原题,却精确解了一道只被机器精度轻轻移动过的题。若附近问题的答案彼此接近,结果便可信;若原问题病态,邻近题的真解也可能相距很远,稳定算法仍无法创造输入中没有的有效数字。
这种解释比逐步追踪每个舍入误差更有整体感。局部误差可以在中间量上抵消或放大,后向分析则直接问最终结果能否回收到一个小的数据扰动。不过,小扰动必须属于问题认可的集合,否则“邻近问题”可能已经改变了物理或代数结构。
例子与边界 ​
计算
避免巨大中间量。两个表达式在实数中相等,有限精度路径却不同;稳定重写保护了算法,不是改变问题的条件数。
最小二乘中形成正规方程会把
反过来,后向稳定也不保证所有输出分量都有小相对误差。病态问题会放大输入扰动,极小或精确为零的分量还需要逐分量或绝对尺度。某个特殊输入上得到很小前向误差,也不足以证明算法后向稳定:偶然准确没有提供对邻近输入和全部执行路径的统一保证。
“稳定”在其他领域还有不同对象。动力系统的平衡稳定研究连续轨道,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.