SciPy - 计算对称矩阵中特定特征值的特征向量



我有一个对称矩阵(无向图的邻接矩阵),我有一个特定的特征值(最大特征值),我想要与之关联的特征向量(左或右,任何一个,因为我相信左边只是对称矩阵右边的转置)。

我正在运行的图形可以从数千个节点增加到数十万个节点,因此相应的邻接矩阵会很大。然而,密度是稀疏的,所以相应的矩阵也会稀疏。

在 SciPy 中是否有有效的方法可以做到这一点?更好的是,有没有办法只计算给定对称矩阵的前导特征值和相应的特征向量(这意味着我不必自己用 linalg.eigvals 显式计算前导特征值)。

是的,scipy.sparse.linalg.eigsh,最后的h代表埃尔米特,还有一个非对称矩阵的版本,scipy.sparse.linalg.eigs .

如果a是你的矩阵,无论是否稀疏,你的调用将如下所示:

evals, evecs = scipy.sparse.linalg.eigsh(a, k=1)

您的evalsevecs是特征值和相应特征向量的数组,因为如果将k设置为 1 以外的值,您可以要求多个 if 值。返回的特征值和向量由 which 参数控制,该参数默认为 LM ,代表最大量级

最新更新