2014-12-27 2 views
0

대칭 행렬의 고유 벡터를 얻기 위해 Jacobi 알고리즘을 구현하고 있습니다. 볼프람 Aplha에서와 diffrent : 난 내가 (http://fptchlx02.tu-graz.ac.at/cgi-bin/access.com?c1=0000&c2=0000&c3=0000&file=0638 여기 광산처럼 같은 결과) : 내 응용 프로그램에서 서로 다른 고유 벡터를 얻는 이유를 이해하지 않습니다 http://www.wolframalpha.com/input/?i=eigenvector%7B%7B1%2C2%2C3%7D%2C%7B2%2C2%2C1%7D%2C%7B3%2C1%2C1%7D%7D고유 벡터. Jacobi 알고리즘 구현

예 매트릭스 :

1 2 3 
2 2 1 
3 1 1 

내 결과 :

을 WA에서
0.7400944496522529, 0.6305371413491765, 0.23384421945632447 
-0.20230251371232585, 0.5403584533063043, -0.8167535949636785 
-0.6413531776951003, 0.5571668060588798, 0.5274763043839444 

결과 :

1.13168, 0.969831, 1 
-1.15396, 0.315431, 1 
0.443327, -1.54842, 1 

그 솔루션은 사소한 것으로 기대하지만 찾을 수 없습니다. 나는이 질문을 mathoverflow에 요청했고 그들은이 사이트로 나를 가리켰다.

+0

을 나는 이것이 당신이 실행 한 쿼리를 추가 할 경우 당신은 당신의 질문을 개선하고 다른 사람에게 유용 할 수 있습니다 –

+0

프로그래밍과 아무런 관계가 없다고 생각 WA에서, 또한 수학 교류에 관한 귀하의 질문을 상호 참조하십시오. – kkm

답변

0

행렬의 고유 벡터는 고유하지 않으며 가능한 분해가 여러 개 있습니다. 사실 유일한 고유 공간 만 정의 할 수 있습니다. 귀하가받는 두 가지 결과는 모두 유효합니다. Wolfram Alpha에게 두 번째 행렬을 직교 화하도록 요청하면 쉽게 알 수 있습니다. Run the following query :

Orthogonalize[{{1.13168, 0.969831, 1.}, {-1.15396, 0.315431, 1.}, {0.443327, -1.54842, 1.}}] 

0.630537 0.540358 0.557168 
-0.740094 0.202306 0.641353 
0.233844 -0.816754 0.527475 

지금 당신은 당신의 알고리즘이 올바른 결과를 반환하는 것을 볼 수 있습니다 얻을 수있다. 먼저 행렬이 바뀝니다. WA가 행 벡터를 주었고 알고리즘이 열을 반환합니다. 그런 다음 첫 번째 벡터에 -1을 곱하지만 임의의 고유 벡터에 유효한 고유 벡터를 생성하기 위해 0이 아닌 상수를 곱할 수 있습니다. 그렇지 않으면 결과가 완벽하게 일치합니다.

당신은 또한 다음과 같은 수학 StackExchange가 도움이 답을 찾을 수 있습니다 : Are the eigenvectors of a real symmetric matrix always an orthonormal basis without change?

+0

네, 맞습니다. 귀하의 답변을 주셔서 감사합니다, 내가 기대하는 것처럼 사소한 것이 아니라 그것을 이해했습니다. –