1

我正在尝试计算一个可能很大且稀疏的非对称NxN矩阵的特征值和特征向量(N > 10 ^ 6)的特征值和特征向量。我不需要所有这些,但也许是第一个。理想情况下,我想从 Java 中这样做,但如果需要,可以迁移到 C、C++ 或 Python。

我的矩阵可能同时具有复杂的特征值和特征向量。例如,查看此 Wolfram Alpha 样本的结果的结果。

我找到了几种方法来使用一些 Java 库并为它们编写了一些评估代码:

但我面临的问题是这些库不返回(或者至少我没有办法得到)复值特征向量。它们中的大多数确实返回复值特征,但不返回复特征向量。它们通常以具有列作为每个特征向量的“实数向量”或“实数矩阵”的形式提供后者。

事实上,我确实需要复杂形式的特征值,如果有的话。

现在,我最近开始研究似乎支持我的用例的Spectra (C++)。但是我想先问一下,也许会抛弃我这边的一个误解,或者我可能从 Java 领域跳过的东西,因为我想尽可能地继续使用单一平台/语言。

有什么我应该调查的吗?另外,如果我最终放弃了 Java 来完成这项任务,我可以寻找其他 Spectra 的替代品吗?谢谢!

4

2 回答 2

0

以防万一有人偶然发现这一点,我最终采用了 C++ 方式,因为没有一个 Java 库提供了我需要的复杂特征向量。

我最终使用 Spectra 和 Eigen 用 C++ 实现了我需要的大部分东西。然后我使用 SWIG 构建了一系列本机包装类。

于 2017-06-20T21:54:18.367 回答
0

对于将来有相同问题的每个人:有一个名为 Jeigen 的 Java 库可以做到这一点。它实际上是原始发布者在他自己的答案中已经提到的 Eigen C++ 库的 Java 包装器。

你可以在这里找到杰根。

于 2019-04-03T14:43:31.850 回答