0

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

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

2)测试数据涉及大矩阵——一般超过10000乘10000

这两个限制意味着大多数常用的 Java 矩阵包都不足以满足我当前的需求——我什至无法在内存中存储密集的 10000 x 10000 矩阵,更不用说用它们进行计算了。

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

4

1 回答 1

0

您可以尝试为此使用la4j库:

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

// eigen[0] = P, eigen[1] = D
Matrix eigen[] = a.decompose(Matrices.EIGEN_DECOMPOSITOR);
于 2013-07-19T08:32:36.567 回答