寻找巨大且非常稀疏的矩阵的特征值 [英] finding eigenvalues of huge and very sparse matrix

查看:120
本文介绍了寻找巨大且非常稀疏的矩阵的特征值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下问题.有一个大小为NxN的矩阵A,其中N = 200 000.非常稀疏,每行中恰好有M个元素,其中M={6, 18, 40, 68, 102}(我有5种不同的情况),其余为零.

I have the following problem. There is a matrix A of size NxN, where N = 200 000. It is very sparse, there are exactly M elements in each row, where M={6, 18, 40, 68, 102} (I have 5 different scenarios), the rest are zeros.

现在,我想获取矩阵A的所有特征值和特征向量.

Now I would like to get all the eigenvalues and eigenvectors of matrix A.

问题是,我无法将矩阵A放到内存中,因为它大约有160 GB的数据.我要寻找的是一种能够很好地存储稀疏矩阵(没有零,我的矩阵只有几MB),然后将此存储的不带零的矩阵放入计算特征值和向量的算法的软件.

Problem is, I cannot put matrix A into memory as it is around 160 GB of data. What I am looking for is a software that allows nice storing of sparse matrix (without zeros, my matrix is just few MB) and then putting this stored matrix without zeros to the algorithm that calculates eigenvalues and vectors.

任何人都可以向我推荐一个软件吗?

Can any of you recommend me a software for that?

我发现我可以重新配置矩阵A,因此它成为带矩阵.然后,我可以使用LAPACK来获取特征值和特征向量(具体为:

I found out I can reconfigure my matrix A so it becomes a band matrix. Then I could use LAPACK to get the eigenvalues and eigenvectors (concretely: http://software.intel.com/sites/products/documentation/doclib/iss/2013/mkl/mklman/GUID-D3C929A9-8E33-4540-8854-AA8BE61BB08F.htm). Problem is, I need all the vectors, and since my matrix is NxN, I cannot allow LAPACK to store the solution (all eigenvectors) in the memory. The best way would be a function that will give me first K eigenvectors, then I rerun the program to get the next K eigenvectors and so on, so I can save the results in a file.

推荐答案

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

You may try to use the SLEPC library http://www.grycap.upv.es/slepc/description/summary.htm :

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

"SLEPc the Scalable Library for Eigenvalue Problem Computations, is a software library for the solution of large sparse eigenproblems on parallel computers."

阅读用户手册的第二章"EPS:特征值问题解决器".他们专注于保留稀疏性的方法...但是计算出的特征值和特征向量数量有限.

Read the second chapter of their users'manual, "EPS: Eigenvalue Problem Solver". They are focused on methods that preserve sparcity...but a limited number of eigenvalues and eigenvectors are computed.

我希望我们的矩阵具有良好的属性(例如,正定的...).

I hope our matrices have good properties (positive definite for instance...).

 EPSIsPositive(EPS eps,PetscBool *pos);

您可能会被频谱切片"所困扰,以计算给定间隔中的所有特征值...或者您可以设置一个目标并计算围绕该目标的最接近特征值.

You may be interrested in "spectrum slicing" to compute all eigenvalues in a given interval... Or you may set a target and compute the closest eigenvalue around this target.

请参见 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

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

Why do you need to compute all eigenvectors for such large matrices ?

再见

这篇关于寻找巨大且非常稀疏的矩阵的特征值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆