我想从3x3矩阵中获取特征向量和特征值。
我已经尝试使用雅阁的EigenvalueDecomposition
。
问题(?)我得到的特征向量是因为特征向量的在线计算器给了我与Accord.NET不同的向量。
更确切地说,我在此测试矩阵上尝试了Accord的EigenvalueDecomposition
:
(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}
特征向量:
for Eigenvalue -1.1168439698070431:
[-0.785830238742067; -0.08675133925662847; 0.6123275602288102]
表示特征值0:
[0.4082482904638631; -0.8164965809277261; 0.4082482904638631]
for Eigenvalue 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)
然而,特征值与在线计算器的结果是正确的。
我做错了什么?如何才能正确使用雅阁的功能?
我只在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);
并在控制台中打印了特征向量。