Jama的特征值分解函数问题

当我使用matrix.eig()时,我得到一个错误的特征向量(也通过多次运行检查以确定matrix.eig() 。 矩阵是:

 1.2290 1.2168 2.8760 2.6370 2.2949 2.6402 1.2168 0.9476 2.5179 2.1737 1.9795 2.2828 2.8760 2.5179 8.8114 8.6530 7.3910 8.1058 2.6370 2.1737 8.6530 7.6366 6.9503 7.6743 2.2949 1.9795 7.3910 6.9503 6.2722 7.3441 2.6402 2.2828 8.1058 7.6743 7.3441 7.6870 

该函数返回特征向量:

 -0.1698 0.6764 0.1442 -0.6929 -0.1069 0.0365 -0.1460 0.6478 0.1926 0.6898 0.0483 -0.2094 -0.5239 0.0780 -0.5236 0.1621 -0.2244 0.6072 -0.4906 -0.0758 -0.4573 -0.1279 0.2842 -0.6688 -0.4428 -0.2770 0.4307 0.0226 -0.6959 -0.2383 -0.4884 -0.1852 0.5228 -0.0312 0.6089 0.2865 

Matlab为相同的输入提供以下特征向量:

 0.1698 -0.6762 -0.1439 0.6931 0.1069 0.0365 0.1460 -0.6481 -0.1926 -0.6895 -0.0483 -0.2094 0.5237 -0.0780 0.5233 -0.1622 0.2238 0.6077 0.4907 0.0758 0.4577 0.1278 -0.2840 -0.6686 0.4425 0.2766 -0.4298 -0.0227 0.6968 -0.2384 0.4888 0.1854 -0.5236 0.0313 -0.6082 0.2857 

matlab和jama的特征值是匹配的,但是特征向量前5列在符号中是相反的,只有最后一列是准确的。

是否存在Jama.Matrix.EigenvalueDecomposition.eig()接受的输入类型或任何其他问题? 请告诉我如何修复错误。 提前致谢。

这里没有错误,两个结果都是正确的 – 正如任何其他标量乘以特征向量一样。

有无数个特征向量可以工作 – 它只是大多数软件程序报告长度为1的向量的惯例。 Jama报告的特征向量等于Matlab的-1倍,可能只是他们使用的算法的一个人工产物。

Interesting Posts