Problema con la funzione di decomposizione Autovalore di Jama
-
23-08-2019 - |
Domanda
io sono sempre un torto Eigen-vettore (controllato anche mediante l'esecuzione più volte per essere sicuri) quando sto usando matrix.eig()
. La matrice è:
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
La funzione restituisce i Eigen vettori:
-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 dà la seguente eigen-vettoriale per lo stesso ingresso:
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
I Eigen valori per MATLAB e jama sono corrispondenti, ma Eigen-vettori i primi 5 colonne sono invertiti nel segno e solo l'ultima colonna è accurata.
C'è qualche problema del tipo di input che Jama.Matrix.EigenvalueDecomposition.eig()
accetta o qualsiasi altro problema con lo stesso? Ti prego, dimmi come posso correggere l'errore. Grazie in anticipo.
Soluzione
Non c'è errore qui, entrambi i risultati sono corretti - come tutti gli altri tempi scalari i eigen vettori.
Ci sono un numero infinito di Eigen vettori che funzionano - il suo solo convenzione che la maggior parte dei programmi software riportano i vettori che hanno la lunghezza di uno. Che Jama riporta Eigen vettori pari a -1 volte quelli di Matlab è probabilmente solo un artefatto dell'algoritmo hanno usato.