Problema com função de decomposição Eigenvalue de Jama
-
23-08-2019 - |
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.
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.