Ich wollte die Eigenvektoren und Eigenwerte aus einer 3x3-Matrix erhalten.Berechnen von Eigenwert und Eigenvektor für 3x3-Matrix mit Accord.NET
Ich habe bereits versucht, die EigenvalueDecomposition
von Accord zu verwenden. Das Problem (?) Ich habe mit den resultierenden Eigenvektoren ist, dass Online-Rechner für Eigenvektoren geben mir verschiedene Vektoren aus, was Accord.NET tut.
Genauer gesagt, habe ich versucht Accord EigenvalueDecomposition
auf dieser Testmatrix:
(1, 2, 3)
(4, 5, 6)
(7, 8, 9)
wo der arndt-bruenner
Rechner (http://www.arndt-bruenner.de/mathe/scripts/engl_eigenwert2.htm) gibt mir diese Ergebnisse:
Reale Eigenwerte: {-1.1168439698070431; 0; 16,116843969807043}
Eigenvektoren:
für Eigenwert -1,1168439698070431:
[-,785830238742067; -0,08675133925662847; ,6123275602288102]
für Eigenwert 0:
[,4082482904638631; -0,8164965809277261; ,4082482904638631]
für Eigenwert 16,116843969807043:
[,2319706872462859; 0.5253220933; ,8186734993561815]
Nun, wenn ich diesen Test Matrix auf Accords EigenvalueDecomposition verwenden, erhalte ich diese Ergebnisse:
(0,231970687246286, ,816964204061037, 0,408248290463863)
(0,5253220933, ,0901883579085377, -,816496580927726)
(0,818673499356182, -,636587488243964, 0,408248290463863)
Die Eigenwerte stimmen jedoch mit den Ergebnissen des Online-Rechners.
Was mache ich falsch und wie muss ich die Accord-Funktionen richtig verwenden?
Ich tat dies nur in 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);
und druckte die Eigenvektoren in der Konsole.