稠密矩阵特征值计算一般分为两个步骤:
- 将矩阵A转化为Hessenberg矩阵H,A = Q'HQ,对于稠密矩阵,他的Hessenberg阵是三对角阵。
- 对Hessenberg阵H运用QR方法,求出H的特征值,H的特征值就是A的特征值。
- 用逆迭代的算法,对于一个给定的特征值,计算它对应的特征向量。
1.将矩阵A转化为Hessenberg矩阵H
这一步是整个算法最耗时的部分,一般来说有3种算法可以将A转化为Hessenberg矩阵。
- HouseHolder变换
- Givens变换
- Lanczos方法,这一方法主要针对大型稀疏矩阵
这一步一般就是用经典的QR方法,主要Hessenberg阵在QR的迭代中保持Hessenberg阵的形式
3.用逆迭代的算法,对于一个给定的特征值,计算它对应的特征向量
对于一个给定的特征值t:
- (A - tI) y = b, b是一个随机矩阵,解这个方程得出y
- b = y / |y|,t = t + 1/(b * y)
- 最终b收敛与特征向量,t收敛与特征值