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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top