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

问题描述 投票:0回答:1

我有以下问题。有一个大小为

A
的矩阵
NxN
,其中
N = 200 000
。它非常稀疏,每行中正好有
M
个元素,其中
M={6, 18, 40, 68, 102}
(我有 5 个不同的场景),其余的都是零。

现在我想获得矩阵

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 个特征向量,依此类推,这样我就可以将结果保存在一个文件中。

matrix sparse-matrix eigenvector
1个回答
2
投票

您可以尝试使用 SLEPC 库 https://slepc.upv.es/description/ :

“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

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

再见,

© www.soinside.com 2019 - 2024. All rights reserved.