稀疏矩阵的记忆有效小特征值算法

时间:2013-07-15 11:50:19

标签: java sparse-matrix eigenvalue

我正在编写一些Java软件,它需要计算正定对称稀疏矩阵的特征值和特征向量。我不需要所有的特征值,但我最感兴趣的是小特征值。问题是:

1)出于测试目的,我的代码需要在笔记本电脑上运行(四核,4 GB RAM)

2)测试数据涉及大矩阵 - 通常超过10000乘10000

这两个约束意味着大多数常见的Java矩阵包都不能满足我当前的需求 - 我甚至无法在内存中存储密集的10000乘10000矩阵,更不用说用它们进行计算了。

所以我的问题是:在进行矩阵计算时,人们如何解决内存约束问题?我的矩阵通常非常稀疏 - 通常不到5%的条目是非零的。有没有利用这个的算法?我可以以某种方式将矩阵存储在我的硬盘上,并且一次只加载它的一部分以减轻RAM上的压力吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用la4j库:

// Compressed Sparse Row Matrix
Matrix a = new CRSMatrix(...); 

// eigen[0] = P, eigen[1] = D
Matrix eigen[] = a.decompose(Matrices.EIGEN_DECOMPOSITOR);