2

当我使用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() 或任何其他问题?请告诉我如何修复错误。提前致谢。

4

2 回答 2

9

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

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

于 2009-04-06T03:35:21.780 回答
1

对于给定的矩阵,特征值是唯一的,如果考虑多个,则其数量等于矩阵的维数。而相应的特征值可能不同,因为向量可以根据某个方向进行缩放。在您的帖子结果中,JAVA 和 Matlab 版本都是正确的。

此外,您可以检查特征值来自的 D 矩阵。你会发现它们是一样的。

于 2020-11-18T06:48:27.683 回答