• 카테고리

    질문 & 답변
  • 세부 분야

    수학

  • 해결 여부

    미해결

고유벡터 고유값 차이 질문

22.02.14 00:49 작성 조회수 280

0

2 1 2

4 2 4

2 1 2

이 벡터의 eigenvalue 와 eigenvector를 구하려고 하는데

eigenvalue 값을 비슷하게 나오는 것 같은데, eigenvector들이 제대로 나오지 않습니다.

x1 =(0, −2, 1), x2 =(1, −2, 0), x3 =(1, 2, 1)  이게 eigen vector 들이어야 하는데, numpy로 계산하니까 이상한 값이 나오더라고요ㅠ 왜이런거죠?

 

답변 1

답변을 작성해보세요.

0

안녕하세요.

답변이 많이 늦어져서 죄송합니다.

코드상으론 이상이 없어보이는데 뭔가 구버전의 문제일지도 모른다는 생각이 듭니다.

아래 코드를 사용했을때,  결과는 아래와 같이 정상적으로 출력됩니다. (numerical error내에서)

[-4.4408921e-16+0.j  6.0000000e+00+0.j  0.0000000e+00+0.j]

[-0.66666667  0.66666667  0.33333333]

[0.40824829 0.81649658 0.40824829]

[ 0.         -0.89442719  0.4472136 ]

참고로 방금 제가 테스트한 버전은 intel numpy는 아닙니다. 제가 사용한 버전은 아래와 같습니다.

요약하자면, 버전문제인것으로 예측됩니다. (특정버전에 특정오류가 충분히 발생할거라 생각합니다.)

numpy == 1.19.5

scipy == 1.5.4

python == 3.6.8

import numpy as np
from scipy import linalg

a = np.array([[2,1,2],[4,2,4],[2,1,2]], dtype=np.float64)

vals, vecs = linalg.eig(a)

print(vals)
print(vecs[:,0])
print(vecs[:,1])
print(vecs[:,2])