【课堂笔记】特征值分解
文章目录
- 定义
- 引理1
- 定理2
- 定理3
- 定义4
- 定理5
- 定理6
- 特征值算法
- Rayleigh商(Rayleigh Quotient)
- 幂迭代法(Power Iteration)解特征向量
- 位移逆迭代法(Shifted Inverse Iteration)
- Rayleigh 商迭代
- 局部三次收敛定理
 
- QR分解 + RQ重排
 
定义
设A∈Cm×mA \in \mathbb{C}^{m \times m}A∈Cm×m,如果存在λ∈C,x∈Cm\lambda\in \mathbb{C}, x \in \mathbb{C}^mλ∈C,x∈Cm满足:
 Ax=λxAx = \lambda x Ax=λx
 则称λ\lambdaλ是特征值(eigenvalue),xxx是特征向量(eigenvector)
 设Λ(A)={λi}\Lambda(A) = \set{\lambda_i}Λ(A)={λi},X=[x1∣x2∣...∣xm]X = [x_1 \mid x_2 \mid ... \mid x_m]X=[x1∣x2∣...∣xm],则可以写成AX=XΛAX = X\LambdaAX=XΛ
 特征多项式定义为:
 pA(z)=det(zI−A)=(z−λ1)...(z−λm)p_A(z) = \det (zI-A) = (z-\lambda_1)...(z-\lambda_m) pA(z)=det(zI−A)=(z−λ1)...(z−λm)
 如果每个λi\lambda_iλi是唯一的,称它们是简单的(simple)
定义相似变换为:
 A↦B=X−1AXA \mapsto B = X^{-1}AX A↦B=X−1AX
引理1
代数重数总是大于等于几何重数。
 如果它们相等,称这个矩阵是非缺陷的(nondefective)
定理2
相似矩阵A,BA, BA,B有相同的特征多项式、特征值、代数/几何重数
定理3
如果m×mm \times mm×m的矩阵AAA是非缺陷的,则存在特征值分解
 A=XΛX−1A = X\Lambda X^{-1} A=XΛX−1
定义4
Schur分解是形如:
 A=QTQ∗A = QTQ^* A=QTQ∗
 其中QQQ是酉矩阵,TTT是上三角矩阵
定理5
每个方阵AAA都有Schur分解
定理6
若AAA是Hermitian的,则A=QΛQ∗A = Q\Lambda Q^*A=QΛQ∗,其中Λ\LambdaΛ是实的。
 我们可以用
 A→Q1∗AQ1→Q2∗Q1∗AQ1Q2→...→TA \to Q_1^*AQ_1 \to Q_2^*Q_1^*AQ_1Q_2 \to ... \to T A→Q1∗AQ1→Q2∗Q1∗AQ1Q2→...→T
 来收敛到TTT
特征值算法
Rayleigh商(Rayleigh Quotient)
设
 r(x)=x⊤Axx⊤xr(x) = \frac{x^\top A x}{x^\top x} r(x)=x⊤xx⊤Ax
 其中
 ∂r∂xj=2x⊤x(Ax−r(x)x)j\frac{\partial r}{\partial x_j} = \frac{2}{x^\top x}(Ax - r(x)x)_j ∂xj∂r=x⊤x2(Ax−r(x)x)j
 如果xxx是特征向量,对应的特征值为λ\lambdaλ,则r(x)=λr(x) = \lambdar(x)=λ,∇r(x)=0\nabla r(x) = 0∇r(x)=0【主要用途】
 设qjq_jqj是AAA的特征向量,如果x→qjx \to q_jx→qj,则:
 r(x)−r(qj)=O(∥x−qj∥2)r(x) - r(q_j) = O(\|x-q_j\|^2) r(x)−r(qj)=O(∥x−qj∥2)
幂迭代法(Power Iteration)解特征向量
具体实现:
# input: A
# x_0 : random vector
for k=1,2,...y = A * x_{k-1}x_k = y / ||y||  # 归一化防止数值溢出
λ = xᵀy   # Rayleigh商得到最终的特征值 λ = xᵀAx
原理:
 x(0)=a1q1+a2q2+...+amqmx(1)=a1λ1q1+a2λ2q2+...+amλmqm⋮x(k)=a1λ1kq1+a2λ2kq2+...+amλmkqmx^{(0)} = a_1q_1 + a_2q_2 + ... + a_mq_m \\ x^{(1)} = a_1\lambda_1q_1 + a_2\lambda_2q_2 + ... + a_m\lambda_mq_m \\ \vdots \\ x^{(k)} = a_1\lambda_1^{k}q_1 + a_2\lambda_2^kq_2 + ... + a_m\lambda_m^kq_m x(0)=a1q1+a2q2+...+amqmx(1)=a1λ1q1+a2λ2q2+...+amλmqm⋮x(k)=a1λ1kq1+a2λ2kq2+...+amλmkqm
 假设∣λ1∣>...>∣λm∣|\lambda_1| > ... > |\lambda_m|∣λ1∣>...>∣λm∣,则它收敛到最大的特征向量,收敛速度取决于∣λ2/λ1∣|\lambda_2 / \lambda_1|∣λ2/λ1∣
这个方法有些问题:
- q1q_1q1缺失
- λ1k\lambda_1^kλ1k数值溢出
- 收敛速度可能很慢
位移逆迭代法(Shifted Inverse Iteration)
如果我们对A−1A^{-1}A−1进行幂迭代,那么就能得到它的最大模特征向量,也就是AAA的最小模特征向量的倒数。
然而,我们不想要最小,也不想要最大,我们希望得到任意一个特征值。
 引入位移μ\muμ,我们对B=(A−μI)−1B = (A- \mu I)^{-1}B=(A−μI)−1作幂迭代,就可以求出AAA的离μ\muμ最近的特征值!这是因为:
 ∣λj(B)∣=1∣λj(A)−μ∣|\lambda_j(B) |= \frac{1}{|\lambda_j(A) - \mu|} ∣λj(B)∣=∣λj(A)−μ∣1
完整算法:
‖v⁽⁰⁾‖₂ = 1
for k = 1, 2, ..., max_iter(A − μI) w = v⁽ᵏ⁻¹⁾    # 求解线性方程组v⁽ᵏ⁾ = w / ‖w‖₂        # 归一化λ⁽ᵏ⁾ = (v⁽ᵏ⁾)ᵀ A v⁽ᵏ⁾  # 计算 Rayleigh 商(特征值估计)
Rayleigh 商迭代
在位移逆迭代法的基础上,我们让μ\muμ也迭代起来,让上一步的λ\lambdaλ当成下一次的μ\muμ:
‖v⁽⁰⁾‖₂ = 1
for k = 1, 2, ..., max_iter(A − μ⁽ᵏ⁻¹⁾I) w = v⁽ᵏ⁻¹⁾    # 求解线性方程组v⁽ᵏ⁾ = w / ‖w‖₂        # 归一化μ⁽ᵏ⁾ = λ⁽ᵏ⁾ = (v⁽ᵏ⁾)ᵀ A v⁽ᵏ⁾  # 计算 Rayleigh 商(特征值估计)
这个算法有个很大的优势,由以下定理给出:
局部三次收敛定理
如果AAA是对称的,即A=A⊤A = A^\topA=A⊤,当接近真实值时,误差将以立方的速度下降:
 ∥v(k+1)−(±qj)∥=O∥v(k)−(±qj)∥3∣λ(k+1)−λj∣=O∣λ(k)−λj∣3\|v^{(k+1)} - (\pm q_j)\| = O\|v^{(k)} - (\pm q_j)\|^3 \\ |\lambda^{(k+1)} - \lambda_j| = O|\lambda^{(k)} - \lambda_j|^3 ∥v(k+1)−(±qj)∥=O∥v(k)−(±qj)∥3∣λ(k+1)−λj∣=O∣λ(k)−λj∣3
QR分解 + RQ重排
算法:
 A(0)=Afor k=1,2,...:Q(k)R(k)=A(k−1)A(k)=R(k)Q(k)\begin{align*} &A^{(0)} = A\\ &\text{for k=1,2,...}:\\ &\ \ \ \ \ \ Q^{(k)}R^{(k)} = A^{(k-1)}\\ &\ \ \ \ \ \ A^{(k)} = R^{(k)}Q^{(k)} \end{align*} A(0)=Afor k=1,2,...:      Q(k)R(k)=A(k−1)      A(k)=R(k)Q(k)
 RQ重排的本质是用同一个正交矩阵Q(k)Q^{(k)}Q(k)对原矩阵做一次 左右旋转(相似变换):
 A(k)=R(k)Q(k)=[(Q(k))⊤Q(k)]R(k)Q(k)=(Q(k))⊤[Q(k)R(k)]Q(k)=(Q(k))⊤A(k−1)Q(k)\begin{align*} A^{(k)} = R^{(k)}Q^{(k)} &= [(Q^{(k)})^\top Q^{(k)}]R^{(k)}Q^{(k)} \\ &= (Q^{(k)})^\top [Q^{(k)}R^{(k)}]Q^{(k)}\\ &= (Q^{(k)})^\top A^{(k-1)}Q^{(k)} \end{align*} A(k)=R(k)Q(k)=[(Q(k))⊤Q(k)]R(k)Q(k)=(Q(k))⊤[Q(k)R(k)]Q(k)=(Q(k))⊤A(k−1)Q(k)
