2009-04-06 6 views
1

Ich erhalte einen falschen Eigenvektor (der auch überprüft wird, indem ich mehrere Male lief, um sicher zu sein), wenn ich matrix.eig() verwende. Die Matrix ist:Problem mit Jamas Eigenwert-Zerlegungsfunktion

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 

Die Funktion gibt die Eigenvektoren:

-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 gibt die folgende Eigenvektor für den gleichen Eingang:

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 

Die Eigenwerte für Matlab und jama stimmen überein, aber Eigenvektoren die ersten 5 Spalten sind im Vorzeichen umgekehrt und nur die letzte Spalte ist genau.

Gibt es irgendein Problem an der Art von Eingang, Jama.Matrix.EigenvalueDecomposition.eig() akzeptiert oder irgendein anderes Problem mit dem gleichen? Bitte sagen Sie mir, wie ich den Fehler beheben kann. Danke im Voraus.

Antwort

7

Es gibt hier keinen Fehler, beide Ergebnisse sind korrekt - wie auch alle anderen Skalarzeiten die Eigenvektoren.

Es gibt eine unendliche Anzahl von Eigenvektoren, die funktionieren - es ist eine einfache Konvention, dass die meisten Softwareprogramme die Vektoren mit einer Länge von eins melden. Jama berichtet, dass Eigenvektoren, die -1-mal denen von Matlab entsprechen, wahrscheinlich nur ein Artefakt des verwendeten Algorithmus sind.

+0

bitte sorgfältig sehen .... es ist nicht skalare mal eine andere Eigenvektor alle Spalten mit Ausnahme zuletzt haben in Zeichen .. letzte Spalte für beide gleich ist ... was falsch ist umgekehrt worden. – BHS

+0

Wie ich die Konventionen für das Ergebnis verstehe, ist jede Spalte ein Eigenvektor. So * one * von denen wurde nicht im Zeichen umgedreht. Damit bleibt jede Spalte ein gültiger Eigenvektor der Norm 1. Wo ist das Problem? – Varkhan

+0

So kann jeder der Eigenvectos in Zeichen umgedreht werden und es ist immer noch sicher. Dann sind meine Zweifel geklärt. Vielen Dank.. – BHS