双对角化QR迭代算法计算矩阵奇异值
字数 852 2025-10-30 21:15:36
双对角化QR迭代算法计算矩阵奇异值
我将为您讲解双对角化QR迭代算法在计算矩阵奇异值中的应用。这个算法是计算矩阵奇异值分解(SVD)的核心数值方法。
问题描述
给定一个m×n的实数矩阵A,我们希望计算A的所有奇异值。奇异值是SVD中Σ矩阵的对角元素,满足A = UΣVᵀ,其中U和V是正交矩阵,Σ是对角矩阵。奇异值的平方等于AAᵀ或AᵀA的特征值。
算法步骤详解
第一步:矩阵双对角化预处理
首先将矩阵A通过正交变换转化为双对角形式:
- 使用Householder变换从左侧和右侧分别对A进行正交变换
- 得到双对角矩阵B = U₁ᵀAV₁,其中B只有主对角线和第一次对角线非零
- 这个步骤的复杂度为O(mn²),但只需要执行一次
第二步:双对角矩阵的QR迭代
对双对角矩阵B进行隐式QR迭代:
-
位移策略选择:
- 使用Wilkinson位移或更精确的dqds位移
- 位移量σ通常取B的右下2×2子矩阵的特征值中更接近bₙₙ的那个
-
隐式QR步骤:
- 构造Givens旋转矩阵G₁,使得G₁(B² - σ²I)的第一列只有第一个元素非零
- 通过一系列Givens旋转将矩阵保持双对角形式
- 这个过程不需要显式形成B² - σ²I,提高了数值稳定性
第三步:收敛判断和收缩处理
- 检查次对角线元素是否可忽略(小于容差ε)
- 如果某个次对角线元素b_{k,k+1} ≈ 0,可将矩阵分块为两个更小的双对角矩阵
- 对每个子矩阵递归应用QR迭代
- 当所有次对角线元素都可忽略时,主对角线元素即为奇异值
第四步:精度优化技巧
- 采用差分商dqd算法提高小奇异值的计算精度
- 使用相对精度收敛准则,而不是绝对精度
- 通过迭代 refinement 提高最终结果的精度
算法特点
- 时间复杂度:O(mn²)预处理 + O(n²)每次迭代
- 数值稳定性好,适合各种规模的矩阵
- 可以只计算奇异值,或同时计算奇异向量
- 特别适合大型稀疏矩阵的截断SVD计算
这个算法结合了双对角化的简化作用和QR迭代的高效性,是现代科学计算中计算矩阵奇异值的标准方法。