3

我想从 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);

并在控制台中打印特征向量。

4

0 回答 0