我试图计算一个潜在的大而稀疏的非对称NxN
矩阵(N
> 10 ^ 6)的特征值和特征向量。我不需要所有这些,但也许是第一个。理想情况下,我想从Java这样做,但如果需要可以转移到C,C ++或Python。
我的矩阵可能具有复特征值和特征向量。例如,请参阅this Wolfram Alpha sample的结果。
我找到了几种使用大量Java库的方法,并为它们编写了一些评估代码:
但我面临的问题是这些库不返回(或者至少我没有找到任何方法)复杂的特征向量。它们中的大多数确实返回复值特征值,但不返回复杂的特征向量。它们通常以“实数矢量”或“实矩阵”的形式提供后者,其具有作为每个特征向量的列。
事实上我需要复杂形式的特征值,如果有的话。
现在,我最近开始研究Spectra(C ++)seems to support my use case。但是我想首先询问并且可能会丢弃我方面的误解或者我可能已经从Java领域跳过的东西,因为我希望尽可能地继续使用单一平台/语言。
有什么我应该研究的吗?另外,如果我最终离开Java完成这项任务,我可以调查Spectra的其他任何替代方案吗?谢谢!
万一有人偶然发现了这一点,我终于采用了C ++方式,因为没有一个Java库提供了我需要的复杂特征向量。
我最终使用Spectra和Eigen实现了C ++所需的大部分内容。然后我使用SWIG构建了一系列本机包装类。
对于未来的每个人都有同样的问题:有一个名为Jeigen的Java库可以做到这一点。它实际上是Eigen C ++库的Java包装器,原始海报已在他自己的答案中提到过。
你可以找到Jeigen here。