2013-01-24 370 views
1

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

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

在SciPy中有这样做的有效方法吗?更好的是,是否有一种方法可以只计算给定对称矩阵的主要特征值和相应的特征向量(这意味着我不必使用linalg.eigvals明确计算主要特征值)。

回答

3

是的,,h最后代表Hermitian,还有一个版本为非对称矩阵,scipy.sparse.linalg.eigs

如果a是你的矩阵,稀少或没有,您的通话将看起来像:

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

evalsevecs是特征值和对应的特征向量的阵列,因为你可以要求不止一个,如果设置k为1以外的值。返回的特征值和向量由which参数控制,默认值为LM,代表最大值为

+0

太棒了,谢谢!还有一件事 - 与最大特征值相关的特征向量不一定是最大幅度正确的向量?所以尽管'LM'将返回最大的特征值,返回的特征向量可能不是与那个最大特征值相关联的特征向量,或者返回的特征向量是依赖于哪个特征值被计算出来的? – adelbertc

+1

特征向量不具有固有的大小。他们通常是正常化的。 – bogatron

+0

哦,对了,我忘了 - 所以我猜测返回的特征向量是与特征值相关的那些(在我的情况下是最大的)? – adelbertc

相关问题