在Java中计算稀疏矩阵的复特征向量

问题描述 投票:1回答:2

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

我的矩阵可能具有复特征值和特征向量。例如,请参阅this Wolfram Alpha sample的结果。

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

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

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

现在,我最近开始研究Spectra(C ++)seems to support my use case。但是我想首先询问并且可能会丢弃我方面的误解或者我可能已经从Java领域跳过的东西,因为我希望尽可能地继续使用单一平台/语言。

有什么我应该研究的吗?另外,如果我最终离开Java完成这项任务,我可以调查Spectra的其他任何替代方案吗?谢谢!

eigenvalue eigenvector apache-commons-math jama mtj
2个回答
0
投票

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

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


0
投票

对于未来的每个人都有同样的问题:有一个名为Jeigen的Java库可以做到这一点。它实际上是Eigen C ++库的Java包装器,原始海报已在他自己的答案中提到过。

你可以找到Jeigen here

© www.soinside.com 2019 - 2024. All rights reserved.