形式陈述
考虑可逆的线性系统 公理库 线性方程组 System of linear equations 可写为矩阵方程 Ax=b 的有限个一次方程系统。 A x = b ,真解记为 x ∗ = A − 1 b 。先在因子精度 u f 中计算带主元的近似分解,并用同一组因子求出初值 x ^ 0 。将行列置换还原到原坐标后,用固定可逆矩阵 M = A + Δ 表示这组因子的乘积。第 k 轮计算残差 公理库 残差、误差估计与停止准则 Residual and error estimation · Stopping criterion 区分可计算残差与未知真误差,并说明把缺陷转成误差界和停止证书所需的条件。 ,复用已有LU 因子 公理库 Gaussian 消元与 LU 分解 Gaussian elimination · LU factorization · PA equals LU 把 Gaussian 消元保存为可复用的带置换 LU 分解,再用三角求解处理一个或多个右端。 求校正,再更新解:
r k = b − A x ^ k , M d k = r k , x ^ k + 1 = x ^ k + d k . 这里 M d k = r k 是对理想校正方程 A d k = r k 的近似求解。实现通过两次三角代入应用因子,不形成 M − 1 。输入包括 A , b 、可复用因子、残差与更新精度、容差和最大轮数;输出应包含解、残差与后向误差历史、轮数和退出状态。
固定因子的精确递推
统一取误差符号 e k = x ∗ − x ^ k ,并选定同一向量范数及其诱导的矩阵范数 公理库 矩阵范数与诱导算子范数 Matrix norm · Induced matrix norm · Operator norm of a matrix 用诱导范数和常用可计算矩阵范数度量线性映射的放大能力,并区分算子范数、Frobenius 范数与谱半径。 。若残差、三角求解和更新均精确,则 r k = A e k ,所以
e k + 1 = e k − M − 1 A e k = ( I − M − 1 A ) e k = M − 1 Δ e k . 记 T = I − M − 1 A = M − 1 Δ 、q = ‖ T ‖ 。若 q < 1 ,由诱导范数的相容性逐轮得到
‖ e k + 1 ‖ ≤ q ‖ e k ‖ , ‖ e k ‖ ≤ q k ‖ e 0 ‖ ⟶ 0. 这说明足够好的固定因子可以反复消除误差,而精确因子 M = A 对应 T = 0 ,一次校正即得到真解。q < 1 是所选范数中的充分条件;q ≥ 1 本身不能判定发散。对固定有限维矩阵 T ,所有初始误差均收敛到零的准确判据是谱半径 ρ ( T ) < 1 ,即 T k → 0 。即使最坏方向不收敛,特定初始误差所在方向也可能收敛。
因子误差还可以给出一个明确但保守的充分条件。令 C = A − 1 Δ 、a = ‖ C ‖ 。当 a < 1 时,M = A ( I + C ) ,Neumann 级数保证 I + C 可逆且 ‖ ( I + C ) − 1 ‖ ≤ 1 / ( 1 − a ) ,于是
T = ( I + C ) − 1 C , q ≤ a 1 − a . 因此 a < 1 / 2 足以保证收缩。若 ε = ‖ Δ ‖ / ‖ A ‖ ,由线性系统条件数 公理库 线性方程组的条件数与扰动 Conditioning of linear systems · Matrix condition number 把一般问题条件性具体化为可逆线性系统的右端、系数矩阵与联合扰动界。 定义有 a ≤ κ ( A ) ε ,故 κ ( A ) ε < 1 / 2 也是充分条件。它同时涉及问题敏感性与实际因子误差;仅知道 κ ( A ) 不能确定 T 。
残差、求解和更新扰动下的平台定理
实际计算中,把三类误差定义为以下恒等式中的扰动:
r ^ k = b − A x ^ k + η k , d ^ k = M − 1 r ^ k + σ k , x ^ k + 1 = x ^ k + d ^ k + ξ k . η k 包含残差计算及精度转换误差,σ k 是应用固定因子求校正时的误差,ξ k 是更新与存储误差。依次代入,不使用近似等号,得到
e k + 1 = T e k − M − 1 η k − σ k − ξ k . 假设每一轮都有非负常数 R 0 , R 1 , W 0 , W 1 给出的统一界
‖ η k ‖ ≤ R 0 + R 1 ‖ e k ‖ , ‖ σ k + ξ k ‖ ≤ W 0 + W 1 ‖ e k ‖ . 定义
α = q + ‖ M − 1 ‖ R 1 + W 1 , β = ‖ M − 1 ‖ R 0 + W 0 . 若 α < 1 ,则误差满足
及 ‖ e k ‖ ≤ α k ‖ e 0 ‖ + β ( 1 − α k ) 1 − α 及 lim sup k → ∞ ‖ e k ‖ ≤ β 1 − α . 证明只需先对精确递推取范数,得到 E k + 1 ≤ α E k + β ,其中 E k = ‖ e k ‖ 。从 E 0 出发反复代入,便有 E k ≤ α k E 0 + β ∑ j = 0 k − 1 α j ;求几何和并令 k → ∞ 即得结论。这里的平台是统一上界,不表示每条轨道都会达到该数值。若已有常数界 ‖ η k ‖ ≤ R 、‖ σ k ‖ ≤ D 、‖ ξ k ‖ ≤ U ,可取 R 1 = W 1 = 0 、R 0 = R 、W 0 = D + U ,平台上界就是 ( ‖ M − 1 ‖ R + D + U ) / ( 1 − q ) 。
直觉
低精度直接解先给出大体正确的答案,高精度残差再指出它代回原方程后还差多少。已有 LU 因子把方程空间里的缺口翻译成解空间中的校正。T 衡量这次翻译未能消除多少旧误差;η k , σ k , ξ k 则记录这一轮又引入多少新误差。前者决定能否持续收缩,后者决定收缩最终能到哪里。
精度分工因此有三种角色:用 u f 做昂贵分解与便宜校正,用工作精度 u 保存并更新解,用残差精度 u r 观察方程缺口。如果 A x ^ k 与 b 已在低精度中舍入成相同值,算出的残差可能为零。更高精度乘加或扩展累加器让这些低位差异重新可见,但转换后的残差仍要经过质量足够好的因子才能成为有效校正。
图片加载失败 迭代精化的混合精度校正回路
例子与边界
同一个系统,两组因子的相反轨迹
取
A = ( 2 1 1 2 ) , b = ( 3 3 ) , x ∗ = ( 1 1 ) , x ^ 0 = 0. A 的特征值为 3 , 1 ,所以 κ 2 ( A ) = 3 ;由 A − 1 = 1 3 ( 2 − 1 − 1 2 ) 也得 κ ∞ ( A ) = 3 。以下残差、三角求解和更新都使用精确有理数,专门比较固定因子的质量。
第一组因子满足
L g = ( 1 0 1 / 3 1 ) , U g = ( 3 1 0 8 / 3 ) , L g U g = ( 3 1 1 3 ) = A + I = M g . 对任意残差 r = ( r 1 , r 2 ) T ,先解 L g y = r 得 y 1 = r 1 、y 2 = r 2 − r 1 / 3 ,再解 U g d = y 得
d 2 = 3 8 y 2 = 3 r 2 − r 1 8 , d 1 = r 1 − d 2 3 = 3 r 1 − r 2 8 . 因此 T g = M g − 1 = 1 8 ( 3 − 1 − 1 3 ) ,q ∞ = 1 / 2 。但初始误差沿 v = ( 1 , 1 ) T ,且 T g v = v / 4 ,故本次轨迹恰为
e k = 4 − k v , x ^ k = ( 1 − 4 − k ) v , r k = 3 ⋅ 4 − k v . 范数界 2 − k ‖ e 0 ‖ ∞ 控制所有方向,具体轨迹 4 − k 更快;沿 ( 1 , − 1 ) T 的误差才达到收缩因子 1 / 2 。
第二组特意提供的劣质因子仍然完全可逆:
L b = ( 1 0 1 / 2 1 ) , U b = ( 2 / 3 1 / 3 0 1 / 2 ) , L b U b = ( 2 / 3 1 / 3 1 / 3 2 / 3 ) = A / 3 = M b . 此时前代给出 y 1 = r 1 、y 2 = r 2 − r 1 / 2 ,回代给出 d 2 = 2 y 2 = 2 r 2 − r 1 、d 1 = 3 2 ( r 1 − d 2 / 3 ) = 2 r 1 − r 2 。也就是 M b − 1 = 3 A − 1 ,所以 T b = I − M b − 1 A = − 2 I ,每轮都过度校正:
e k = ( − 2 ) k v , x ^ k = ( 1 − ( − 2 ) k ) v , r k = 3 ( − 2 ) k v . 下面每个近似解栏列出两个相同坐标中的一个;残差由 r k = A e k 直接计算。
k
良好因子的 x ^ k 坐标
‖ r k ‖ ∞
劣质因子的 x ^ k 坐标
‖ r k ‖ ∞
0
0
3
0
3
1
3 / 4
3 / 4
3
6
2
15 / 16
3 / 16
− 3
12
3
63 / 64
3 / 64
9
24
4
255 / 256
3 / 256
− 15
48
两次计算的 A , b 、条件数和残差精度完全相同,差别在 T 。第二组是人为指定的坏近似,不是对正确实现的稳定 LU 算法的实验指控。它明确证明:适中的条件数与精确残差仍不能挽救失效的校正因子。
持续更新偏差留下非零极限
仍取良好因子、x ^ 0 = 0 ,让残差和三角求解精确,但每次存储更新时加入固定偏差 ξ k = − ϵ v ,其中 ϵ > 0 。误差始终沿 v ,精确递推和解为
e k + 1 = 1 4 e k + ϵ v , e k = [ 4 − k + 4 ϵ 3 ( 1 − 4 − k ) ] v ⟶ 4 ϵ 3 v . 这给出了增加轮数仍不能消除的误差。统一范数定理取 α = 1 / 2 、β = ϵ ,保证极限上界 2 ϵ ;实际极限范数为 4 ϵ / 3 ,说明统一平台界可以严格大于轨迹平台。偏差模型用于隔离机制,并不声称浮点更新总会产生同方向的固定偏差。
Hilbert 系统的混合精度实验
考虑五阶 Hilbert 矩阵:
( H 5 ) i j = 1 i + j − 1 , 1 ≤ i , j ≤ 5. 本次实验使用 NumPy 2.3.5 与 SciPy 1.17.0,可运行完整复算脚本 查看库版本与每轮输出。先将矩阵元素存为 float64(binary64),令参考向量 x ∗ = ( 1 , 1 , 1 , 1 , 1 ) T ,以 b = H5 @ x_ref 构造右端。调用 scipy.linalg.lu_factor(H5.astype(np.float32)) 做带部分主元的 binary32 LU 分解,再用 lu_solve 对转为 binary32 的右端求初值,并将初值转回 binary64。
每轮以 binary64 计算 r = b - H5 @ x,将残差转为 binary32 后复用同一组因子调用 lu_solve,最后将校正量转回 binary64 并更新解。下表中的残差范数也在 binary64 中计算。
这里的 x ∗ 专指构造右端所用的参考向量;右端舍入后,它未必是所存系统的精确解,因此最后一列衡量的是参考向量误差。
精化轮数 k
‖ b − H 5 x ^ k ‖ ∞ / ‖ b ‖ ∞
‖ x ^ k − x ∗ ‖ ∞ / ‖ x ∗ ‖ ∞
0
6.87 × 10 − 8
3.60 × 10 − 3
1
1.94 × 10 − 11
1.02 × 10 − 5
2
6.35 × 10 − 14
2.82 × 10 − 8
3
1.94 × 10 − 16
8.26 × 10 − 11
4
9.72 × 10 − 17
1.78 × 10 − 11
κ 2 ( H 5 ) ≈ 4.77 × 10 5 ,因而小残差仍可伴随明显的参考向量误差。前三轮精化显著降低了两项指标,第四轮的参考向量误差仍有改善,而残差已接近 binary64 舍入尺度。具体末位受运算库与平台影响;继续迭代也不保证精度单调改善,因为残差与更新的舍入扰动,以及参考向量与所存系统精确解的差异,都会影响最终平台。这组实验展示了低精度因子与高精度残差、更新的分工,但平台高度仍需结合具体扰动界解释。
推论与应用
把抽象扰动界用于浮点程序时,必须为各项提供来源。在标准浮点误差模型 公理库 浮点算术标准误差模型 Standard floating-point arithmetic model 以每次基本运算的小相对扰动和 gamma 记号组织多步浮点误差分析。 中,若没有溢出、下溢,且 ( n + 1 ) u r < 1 ,逐项计算残差在转换精度之前满足
‖ η k ‖ ∞ ≤ γ n + 1 ( r ) ( ‖ b ‖ ∞ + ‖ A ‖ ∞ ‖ x ^ k ‖ ∞ ) , γ n + 1 ( r ) = ( n + 1 ) u r 1 − ( n + 1 ) u r . 由 ‖ x ^ k ‖ ∞ ≤ ‖ x ∗ ‖ ∞ + ‖ e k ‖ ∞ ,可取
R 0 = γ n + 1 ( r ) ( ‖ b ‖ ∞ + ‖ A ‖ ∞ ‖ x ∗ ‖ ∞ ) , R 1 = γ n + 1 ( r ) ‖ A ‖ ∞ , 再单独加上精度转换的误差界。三角求解与更新也必须给出相应的 W 0 , W 1 ,不能因残差精度较高就将它们设为零。实际程序若以每轮不同的有效矩阵 M k 描述求解误差,推广同一证明需要统一控制 ‖ I − M k − 1 A ‖ 与 ‖ M k − 1 ‖ ;固定 M 的定理不能直接替代这些条件。
混合精度讨论中常见 κ ( A ) u f < 1 的经验性收缩判断,以及由 u 、κ ( A ) u r 控制平台的描述。这些简写隐去了维数、主元增长、缩放和三角求解误差。要从本页严格条件 κ ( A ) ε < 1 / 2 走到关于 u f 的结论,还必须用具体 LU 误差界联系 ε 与 u f 。因子无法提供收缩时,可以提高因子精度、改善缩放和主元策略,或将因子作为预条件器用于更强的内层迭代。
停止时可使用尺度化 normwise 后向误差
berr k = ‖ b − A x ^ k ‖ ∞ ‖ A ‖ ∞ ‖ x ^ k ‖ ∞ + ‖ b ‖ ∞ , 并检查校正量相对于解的大小。分子、分母同时为零时可约定该指标为零。达到容差后,应以显式高精度残差复核;连续数轮不降、校正量增长、因子求解失败、非有限值或达到最大轮数,则应返回相应退出状态。过去几轮校正量之比可以帮助诊断,却不能自动充当约束所有后续轮次的收缩常数。残差与误差估计 公理库 残差、误差估计与停止准则 Residual and error estimation · Stopping criterion 区分可计算残差与未知真误差,并说明把缺陷转成误差界和停止证书所需的条件。 区分这些可观察指标与误差证书,线性系统条件数 公理库 线性方程组的条件数与扰动 Conditioning of linear systems · Matrix condition number 把一般问题条件性具体化为可逆线性系统的右端、系数矩阵与联合扰动界。 则说明后向误差怎样影响前向精度。LAPACK 驱动还结合倒条件估计和逐分量误差界;仅报告小残差不足以说明解的精度。
稠密问题只做一次 O ( n 3 ) 的 LU 分解,每轮残差矩阵—向量乘和两次三角求解均为 O ( n 2 ) ;稀疏问题的每轮成本取决于 nnz ( A ) 、因子填充及访存。每轮重新分解既失去复用优势,也改变了固定因子模型。混合精度硬件带来的吞吐收益还要扣除转换和高精度累加成本,只有整体时间或能耗下降且最终误差满足目标,才构成有效优化。
参考资料
Erin Carson and Nicholas J. Higham, “Accelerating the Solution of Linear Systems by Iterative Refinement in Three Precisions” , SIAM Journal on Scientific Computing 40(2), 2018, A817–A847;§§2–3 区分求解器假设、收缩和误差平台,§7 给出 LU 专门化分析。
James Demmel et al., “Error Bounds from Extra Precise Iterative Refinement” , LAPACK Working Note 165, March 2004,§2 的残差、求解与更新扰动分析;这是 2006 年 ACM Transactions on Mathematical Software 论文之前的报告版本。
Nicholas J. Higham, “What Is Iterative Refinement?” , 2023。
Nicholas J. Higham, Accuracy and Stability of Numerical Algorithms , 2nd ed., SIAM, 2002, Ch. 12.
LAPACK Users’ Guide, 3rd ed., SIAM, 1999, Further Details: Error Bounds for Linear Equations .