找到巨大且非常稀疏矩阵的特征值

时间:2014-03-21 12:01:20

标签: matrix sparse-matrix eigenvector

我有以下问题。有一个大小为A的矩阵NxN,其中N = 200 000。它非常稀疏,每行中都有M个元素,其中M={6, 18, 40, 68, 102}(我有5种不同的场景),其余为0。

现在我想获得矩阵A的所有特征值和特征向量。

问题是,我不能将矩阵A放入内存,因为它大约是160 GB的数据。我正在寻找的是一个软件,它允许很好地存储稀疏矩阵(没有零,我的矩阵只有几MB),然后把这个存储的矩阵没有零地放到计算特征值和向量的算法中。

你们中的任何人都可以向我推荐一款软件吗?

编辑:我发现我可以重新配置我的矩阵A,因此它变成了一个带矩阵。然后我可以使用LAPACK来获取特征值和特征向量(具体地说:http://software.intel.com/sites/products/documentation/doclib/iss/2013/mkl/mklman/GUID-D3C929A9-8E33-4540-8854-AA8BE61BB08F.htm)。问题是,我需要所有向量,并且由于我的矩阵是NxN,我不能允许LAPACK将解(所有特征向量)存储在内存中。最好的方法是给我第一个K特征向量的函数,然后我重新运行程序以获得下一个K特征向量,依此类推,所以我可以将结果保存在文件中。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用SLEPC库http://www.grycap.upv.es/slepc/description/summary.htm

" SLEPc是特征值问题计算的可扩展库,是一个用于解决并行计算机上大型稀疏特征问题的软件库。"

阅读其用户的第二章" EPS:特征值问题解决者"。他们专注于保持稀缺性的方法......但是计算了有限数量的特征值和特征向量。

我希望我们的矩阵具有良好的性质(例如肯定的......)。

 EPSIsPositive(EPS eps,PetscBool *pos);

您可能会对光谱切片感兴趣。计算给定区间内的所有特征值...或者您可以设置目标并计算该目标周围最接近的特征值。

请参阅http://www.grycap.upv.es/slepc/documentation/current/docs/manualpages/EPS/EPSSetWhichEigenpairs.html#EPSSetWhichEigenpairs

参见示例http://www.grycap.upv.es/slepc/documentation/current/src/eps/examples/tutorials/index.html

为什么需要为这么大的矩阵计算所有特征向量?

再见,

相关问题