跳到主要内容

矩阵特征值

阐述​

对于方阵 AA,方程 det⁡(A−λI)=0\det(A-\lambda I)=0 是一个 nn 次多项式,它有 nn 个根。如果能找到相应的 nn 个线性无关的向量 X=(x1,⋯ ,xn)X=(x_1,\cdots,x_n),则有 AX=XΛAX=X\Lambda,也就是

A=XΛX−1A=X\Lambda X^{-1}

这就完成了矩阵的对角化。

不是所有的矩阵都能对角化,实践中大多数矩阵能够对角化,不过有可能会出现特征向量几乎平行的情况,此时 XX 的条件数非常大,对应的向量也不是一组很好的基。除非矩阵是正规矩阵。

特征值问题本质上是非常困难的,因为至少比高次方程的求解要更困难。Abel-Ruffini 定理指出,对于高于 5 次的多项式没有通用的求根公式,所以特征值问题也只能是迭代的。并且,也不能通过直接计算特征多项式的系数来求解,因为多项式的根可能病态地依赖于多项式系数。

幂法​

理论解法​

对足够大的 nn,对 AnA^n 进行 QR 分解,那么得到的矩阵 Q=(q1,⋯ ,qn)Q=(q_1,\cdots,q_n) 就是按特征值降序排列的特征向量。不过,由于 AnA^n 的条件数非常大,QR 分解得不到什么有用的数据,这种方法并不实用。

QR 迭代法​

让 A(0)=AA^{(0)}=A,然后在每一步迭代中,

  • A(k−1)=Q(k)R(k)A^{(k-1)}=Q^{(k)}R^{(k)}
  • A(k)=R(k)Q(k)A^{(k)}=R^{(k)}Q^{(k)}

这样矩阵会收敛到上三角矩阵,而 Q^(k)=Q(1)⋯Q(k)\hat Q^{(k)}=Q^{(1)}\cdots Q^{(k)} 收敛到 AA 的特征向量。

显然,如果 QRQR 从 Hessenberg 分解后的矩阵开始会更快,特别是对 Hermite 矩阵,每步只需要 Θ(n)\Theta(n) 运算。

位移​

可以在 QR 分解时减去 μkI\mu_kI,然后在乘积时加上 μkI\mu_kI 来加速收敛:

Arnoldi 算法​

解法选择​

  • 1000 × 1000 以内,使用稠密解法(LAPACK)
  • 其他使用 Krylov 方法
    • Arnoldi / Lanczos
    • LOBPCG
    • Jacobi-Davidson

这些方法通常对「极限」的特征值比较有效;对于内部的特征值,可以用 (A−μI)−1(A-\mu I)^{-1}.

实例​

性质​

相关内容​

奇异值分解​

由于 AA∗,A∗AAA^*,A^*A 肯定是 Hermite 矩阵,对这些矩阵解特征值问题就得到了奇异值分解

Schur 分解​

任何矩阵都可以

A=QTQ∗A=QTQ^*
  • 如果 A 是 Hermite 矩阵,那 T=T∗T=T^*,这时 Schur 分解和奇异值分解等价
  • 因为 A 和 T 相似,所以 TT 的对角元就是 AA 的特征值

参考文献​