QR分解法求矩阵特征值
字数 1105 2025-10-28 20:05:13
QR分解法求矩阵特征值
题目描述
给定一个n×n矩阵A,要求计算它的所有特征值。QR分解法是一种通过迭代将矩阵收敛到上三角矩阵(或Schur形式)来求解特征值的方法,其基本思想是利用QR分解构造一个相似变换序列,使矩阵逐步对角化。
解题过程
-
基本原理
- 特征值问题:求标量λ和非零向量v,满足Av = λv。
- QR分解法通过迭代公式:Aₖ = QₖRₖ(QR分解),Aₖ₊₁ = RₖQₖ(重新组合),构造序列{Aₖ}。
- 每一步迭代都是相似变换:Aₖ₊₁ = QₖᵀAₖQₖ,因此特征值保持不变。
- 当Aₖ收敛到上三角矩阵时,对角线元素即为特征值。
-
算法步骤
- 步骤1:初始化
设A₀ = A,迭代计数器k = 0。 - 步骤2:QR分解
对当前矩阵Aₖ进行QR分解,得到正交矩阵Qₖ和上三角矩阵Rₖ,满足Aₖ = QₖRₖ。- 例如,使用Householder变换或Givens旋转实现分解。
- 步骤3:矩阵更新
计算Aₖ₊₁ = RₖQₖ。注意顺序不能颠倒(先R后Q)。 - 步骤4:收敛判断
检查Aₖ₊₁是否接近上三角形式(非对角线元素足够小)。若未收敛,令k = k+1,返回步骤2;否则进入步骤5。 - 步骤5:提取特征值
从收敛后的上三角矩阵Aₖ₊₁的对角线读取特征值。
- 步骤1:初始化
-
示例说明
以矩阵A = [[2, 1], [1, 2]]为例:- 第一次迭代:
- QR分解:A₀ = Q₀R₀,其中Q₀ ≈ [[0.894, -0.447], [0.447, 0.894]],R₀ ≈ [[2.236, 1.342], [0, 1.342]]。
- 更新:A₁ = R₀Q₀ ≈ [[2.5, 0.5], [0.5, 1.5]]。
- 第二次迭代后A₂ ≈ [[2.8, 0.2], [0.2, 1.2]],非对角线元素减小。
- 多次迭代后Aₖ收敛到[[3, 0], [0, 1]],特征值为3和1。
- 第一次迭代:
-
关键细节
- 收敛性:对于可对角化矩阵,若特征值满足|λ₁| > |λ₂| > ... > |λₙ|,算法收敛;重复特征值或接近的特征值可能减慢收敛。
- 加速技巧:实际中常结合位移策略(如单步位移、双步位移)加速收敛,避免直接使用基本QR算法。
- 计算效率:每次迭代需O(n³)操作,通常先通过Hessenberg化将矩阵化为上Hessenberg形式,使QR分解降为O(n²)操作。
-
应用场景
- 适用于中小规模稠密矩阵的特征值计算。
- 是MATLAB等软件中
eig函数的核心组成部分之一。
通过以上步骤,QR分解法将特征值问题转化为迭代相似变换过程,最终通过对角线元素直接读取解。