QR算法计算矩阵特征值
字数 1506 2025-10-26 09:00:43
QR算法计算矩阵特征值
题目描述
QR算法是一种用于计算任意实数方阵全部特征值的迭代算法。给定一个n×n的矩阵A,QR算法通过迭代过程(Aₖ = QₖRₖ, Aₖ₊₁ = RₖQₖ)产生一个矩阵序列{Aₖ},该序列通常会收敛到一个上三角矩阵(或分块上三角矩阵),其对角线上的元素就是矩阵A的特征值。这个算法的核心思想是将矩阵A通过相似变换(保持特征值不变)逐步化简为更容易读取特征值的形式。
解题过程
第一步:理解基本QR迭代
- 初始化:设A₁ = A(原始矩阵)。
- QR分解:对当前矩阵Aₖ进行QR分解,即将其分解为一个正交矩阵Qₖ和一个上三角矩阵Rₖ的乘积:Aₖ = QₖRₖ。
- 正交矩阵Q满足QᵀQ = I(单位矩阵)。
- 上三角矩阵R的所有下三角元素(对角线以下)为零。
- 矩阵重组:计算下一次迭代的矩阵Aₖ₊₁ = RₖQₖ。
- 由于Aₖ₊₁ = RₖQₖ = QₖᵀAₖQₖ,这是一个相似变换,因此Aₖ₊₁与Aₖ具有相同的特征值。
- 重复迭代:重复步骤2和3,直到Aₖ收敛为一个上三角矩阵(对于实特征值)或分块上三角矩阵(对于复特征值对)。
- 读取特征值:收敛后,矩阵Aₖ的对角线元素就是A的特征值。
第二步:处理收敛问题
- 基本QR迭代可能收敛较慢,尤其是当特征值之间的模长相差不大时。
- 加速技巧:引入位移(Shift)
- 在每次迭代中,先对矩阵进行平移:计算Aₖ - μₖI(其中μₖ是一个位移参数,通常选择Aₖ的右下角元素)。
- 然后对平移后的矩阵进行QR分解:Aₖ - μₖI = QₖRₖ。
- 重组矩阵:Aₖ₊₁ = RₖQₖ + μₖI。
- 位移μₖ的选择可以加速收敛,常用的策略有:
- 单位移:μₖ = Aₖ[n, n](右下角元素),适用于实特征值。
- 双位移:当矩阵有复特征值对时,使用两个连续的实位移(基于右下角2×2子矩阵的特征值),避免复数运算。
第三步:实际计算步骤(带位移的QR算法)
- 预处理:将矩阵化为上Hessenberg形式
- 为了减少每次QR分解的计算量,先通过相似变换(如Householder变换)将A化为上Hessenberg矩阵(即所有下三角部分除了第一条次对角线外均为零)。
- 上Hessenberg形式保持QR迭代的高效性,因为QR分解后重组得到的Aₖ₊₁仍是上Hessenberg矩阵。
- 迭代循环:
- 检查当前矩阵的次对角线元素是否可忽略(小于容差阈值)。如果是,则可将矩阵分块,对对角块分别应用QR算法,减少计算量。
- 选择位移μₖ(例如,单位移或双位移)。
- 执行带位移的QR步骤:Aₖ - μₖI = QₖRₖ,Aₖ₊₁ = RₖQₖ + μₖI。
- 终止条件:当所有次对角线元素足够小(例如,小于10⁻¹²)时,对角线元素即为特征值。对于复特征值对,会收敛为2×2对角块,其特征值可通过求解二次方程得到。
第四步:示例说明(简化)
假设A是一个2×2矩阵:
\[ A = \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix} \]
- 特征值可通过解析法求得为3和1。
- QR迭代过程:
- 第一次QR分解:A₁ = Q₁R₁,其中Q₁ ≈ [0.894, -0.447; 0.447, 0.894],R₁ ≈ [2.236, 1.789; 0, 1.342]。
- 重组:A₂ = R₁Q₁ ≈ [2.8, 0.6; 0.6, 1.2]。
- 继续迭代,Aₖ会收敛到上三角矩阵[3, 0; 0, 1],对角线元素即为特征值。
通过以上步骤,QR算法可以高效地计算任意实矩阵的全部特征值,是数值线性代数中的核心方法之一。