【发布时间】:2017-06-04 21:08:52
【问题描述】:
我正在尝试计算一个可能较大且稀疏的非对称 NxN 矩阵 (N > 10^6) 的特征值和特征向量。我不需要所有这些,但也许是第一个。理想情况下,我希望从 Java 开始,但如果需要,可以迁移到 C、C++ 或 Python。
我的矩阵可能同时具有复杂的特征值和特征向量。例如,查看this Wolfram Alpha sample 的结果。
我找到了几种方法来使用一些 Java 库并为它们编写了一些评估代码:
-
Commons-Math:
EigenDecomposition -
JAMA:
EigenvalueDecomposition -
MTJ:
EVD -
COLT:
EigenvalueDecomposition
但我面临的问题是这些库不会返回(或者至少我没有找到)复值特征向量。它们中的大多数确实返回复值特征值,但不返回复杂特征向量。它们通常以“实数向量”或“实数矩阵”的形式提供后者,每个特征向量都有列。
事实上,如果有的话,我确实需要复杂形式的特征值。
现在,我最近开始研究Spectra (C++) 其中seems to support my use case。但是我想先问一下,也许会抛弃我这边的一个误解,或者我可能从 Java 领域跳过的东西,因为我想尽可能地继续使用单一平台/语言。
有什么我应该调查的吗?另外,如果我最终放弃了 Java 来完成这项任务,我可以寻找 Spectra 的其他替代品吗?谢谢!
【问题讨论】:
标签: eigenvalue eigenvector apache-commons-math jama mtj