문제

사용 중일 때 잘못된 고유 벡터 (여러 번 실행하여 확인)를 받고 있습니다. matrix.eig(). 행렬은 다음과 같습니다.

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

함수는 고유 벡터를 반환합니다.

-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은 동일한 입력에 대해 다음과 같은 고유 벡터를 제공합니다.

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

Matlab과 Jama의 고유 값은 일치하지만 Eigen-Vectors의 첫 5 개의 열은 부호로 되돌리고 마지막 열만 정확합니다.

입력 종류에 대한 문제가 있습니까? Jama.Matrix.EigenvalueDecomposition.eig()동일하게 동의하거나 다른 문제를 수락합니까? 오류를 어떻게 고칠 수 있는지 알려주세요. 미리 감사드립니다.

도움이 되었습니까?

해결책

여기에는 오류가 없습니다. 두 가지 결과는 모두 정확합니다. 다른 스칼라 타임스 Eigen 벡터와 마찬가지로.

대부분의 소프트웨어 프로그램이 길이가있는 벡터를보고하는 단지 규칙에 따라 작동하는 수많은 고유 벡터가 있습니다. Jama는 고유 벡터가 MATLAB의 -1 배에 달하는 고유 벡터를보고했을 것입니다. 아마도 아마도 그들이 사용한 알고리즘의 인공물 일 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top