Pergunta

Estou recebendo um Eigen-vector errado (também verificado executando várias vezes para ter certeza) quando eu estou usando matrix.eig(). A matriz é:

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

A função retorna os eigenvetores:

-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á o seguinte-vector Eigen para a mesma entrada:

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

Os eigen-valores para Matlab e jama estão combinando mas eigen-vetores os primeiros 5 colunas são revertidas em sinal e só a última coluna é preciso.

Existe alguma questão sobre o tipo de entrada que Jama.Matrix.EigenvalueDecomposition.eig() aceita ou qualquer outro problema com o mesmo? Por favor me diga como posso corrigir o erro. Agradecemos antecipadamente.

Foi útil?

Solução

Não há nenhum erro aqui, ambos os resultados estão corretos - como quaisquer outras vezes escalares os eigenvetores.

Há um número infinito de eigenvetores que o trabalho - apenas a sua convenção de que a maioria dos programas de software relatar os vetores que têm comprimento de um. Isso Jama relata eigenvetores igual a -1 vezes aqueles de Matlab é provavelmente apenas um artefato do algoritmo que eles usaram.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top