我想从 3x3 矩阵中获取特征向量和特征值。
我已经尝试过使用EigenvalueDecomposition
来自 Accord 的。结果特征向量的问题(?)是特征向量的在线计算器给了我与 Accord.NET 不同的向量。
EigenvalueDecomposition
更准确地说,我在这个测试矩阵上尝试了 Accord :
(1, 2, 3)
(4, 5, 6)
(7, 8, 9)
arndt-bruenner
计算器(http://www.arndt-bruenner.de/mathe/scripts/engl_eigenwert2.htm)给我这些结果:
真实特征值:{ -1.1168439698070431 ; 0; 16.116843969807043 }
特征向量:
对于特征值 -1.1168439698070431:
[ -0.785830238742067 ; -0.08675133925662847;0.6123275602288102]
对于特征值 0:
[ 0.4082482904638631 ; -0.8164965809277261;0.4082482904638631]
对于特征值 16.116843969807043:
[0.2319706872462859; 0.5253220933012337;0.8186734993561815]
现在,当我在 Accords EigenvalueDecomposition 上使用此测试矩阵时,我得到以下结果:
(0.231970687246286, 0.816964204061037, 0.408248290463863)
(0.525322093301234, 0.0901883579085377, -0.816496580927726)
(0.818673499356182, -0.636587488243964, 0.408248290463863)
然而,特征值与在线计算器的结果是正确的。
我做错了什么,我该如何正确使用 Accord 的功能呢?
我只在 c# 中这样做:
double[,] kovarianzmatrix = new double[,]
{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
Accord.Math.Decompositions.EigenvalueDecomposition solver = new Accord.Math.Decompositions.EigenvalueDecomposition(kovarianzmatrix, false, true);
并在控制台中打印特征向量。