Lanczos 算法
Lanczos 方法是一种迭代算法,它把尺寸为 的对称矩阵 约化为尺寸为 的三对角矩阵 ,其中 。 的本征值近似于 的极端本征值,并且可以重构出相应的本征矢。
Lanczos 方法的关键步骤
初始化:
- 选取一个单位模长的随机初始矢量 。
- 令 ,。
迭代: 对于 :
- 计算 。
- 计算 。
- 计算 。
- 计算 。
- 若 ,则停止;否则令 。
三对角矩阵: 经过 次迭代后,构造矩阵 如下:
对角化 :
- 用标准的稠密矩阵技术(例如 QR 算法)对角化 。
- 的本征值近似于 的极端本征值。
- 的相应本征矢可以由 Lanczos 矢量 重构得到。
Lanczos 方法的优点
高效:
- 只需要矩阵与矢量的乘积,因此适用于稀疏矩阵。
- 内存占用为 ,而不是 。
可扩展性:
- 对于稠密方法无法处理的超大矩阵也能很好地工作。
专注于极端本征值:
- Lanczos 方法在求最大或最小的本征值及其本征矢时尤其有效。
挑战与注意事项
正交性丢失:
- 在有限精度运算中,Lanczos 矢量 可能失去正交性,从而导致伪本征值。
- 补救方法包括重新正交化,或使用更高级的变体,如隐式重启 Lanczos 方法。
的选取:
- 迭代次数 必须谨慎选取,以平衡精度与计算代价。
收敛性:
- 收敛到极端本征值通常很快,但内部本征值可能需要很多次迭代。