在感兴趣的区间上找到某个矩阵的特征值的快速算法

计算科学 线性代数 复杂 本征系统
2021-11-24 20:01:39

我很好奇如何快速计算任意矩阵的特征值,稀疏或密集,受限于某个给定的感兴趣区间。

假设我们有一个任意n×n矩阵A, 通常是计算所有特征值的复杂度AO(n3),我想知道我们是否能找到一种算法,它做同样的工作,但只承担一个O(n2)或更简单,或更具体地说,区间上的特征值(a,b). 这可能吗?

对于对称矩阵,据我所知,我们可以使用二分法来完成工作,我想知道一般矩阵是否还有其他技巧。

2个回答

对于直接的一般结果(与迭代近似相反),您必须首先计算最大的特征向量才能在剩余的正交子空间中找到较小的特征向量。基本上计算最大的特征向量(单位向量的平均投影O(N2)),并在剩余的部分重复N-子空间,减去先前对矩阵的投影。

认为“间隔”在这里是一个有点糟糕的概念。基本上,如果您计算第一个特征向量(和相应的特征值),您可能会发现它的大小低于所需的窗口,在这种情况下,您会遇到N2计算的下限。我认为区间上限a没关系,但较低的将决定您必须计算的特征值的哪个分区,因此让您介于两者之间N2N3.

对于稀疏矩阵,请查看Arnoldi Iteration以及 Krylov 子空间/方法的相应数学。这些算法在快速逼近最大特征值方面做得非常好,但有时当矩阵具有较差的条件数或其他不合需要的光谱特性时会花费很长时间。

逆子空间迭代:http ://en.wikipedia.org/wiki/Inverse_iteration在 ARPACK 中可用。

过滤对角化:http ://ab-initio.mit.edu/wiki/index.php/Harminv

瑞利-切比雪夫: ftp: //ftp.math.ucla.edu/pub/camreport/cam10-05.pdf

专为该问题而设计。逆迭代是标准方法。

编辑:我刚刚注意到您正在寻找可能不对称的特征值问题。过滤对角化仍然可以工作,但它更棘手。www.cs.tsukuba.ac.jp/techreport/data/CS-TR-08-13.pdf