2014-07-15 1 views
6

나는 유형의 문제를 해결하기 위해 찾고 있어요 : x 스칼라 (고유)입니다 Aw = xBw는, w는 고유 벡터이며, AB가 동일한 차원의 대칭, 정사각형 NumPy와 매트릭스됩니다. ABd x d 인 경우 d x/w 쌍을 찾을 수 있어야합니다. 어떻게 이것을 numpy로 해결할 수 있을까요? 나는 Scipy 문서를보고 있었고, 내가 원하는 것을 찾지 못했습니다.NumPy와 : 일반화 된 고유치 문제

+0

체크 아웃 http://stackoverflow.com/questions/12672408/generalized-eigenvectors-in-matlab – emeth

+0

정확히 내가하고 싶은 것이지만, 파이썬. –

답변

7

:

from scipy.linalg import eigh 

eigvals, eigvecs = eigh(A, B, eigvals_only=False) 

당신은 볼 것이다,은 복잡한 ndarray, 그래서 아마 당신은 아마 당신의 경우에 더 빠르게 수행 할 eigvalsh()이 같은 모듈에서 eigvecs.real ...

을 사용해야하지만, 고유 벡터를 반환하지 않습니다.

+0

이 문제를 해결해 주셔서 감사합니다!이 기능에 대한 문서의 예는 처음 보면 꽤 분명하지 않았습니다. –

6

scipy.linalg.eig을 보았습니까? documentation에서 :

보통의 해결 또는 는 정방 행렬의 고유치 문제를 일반화. 이 방법

는 선택적 매개 변수 b 있습니다

scipy.linalg.eig(a, b=None, ... 
b : (M, M) array_like, optional 
Right-hand side matrix in a generalized eigenvalue problem. 
      Default is None, identity matrix is assumed. 
당신이 일반화 된 고유치 문제를 해결하기 위해 scipy.linalg.eigh() 필요 보인다
+0

OP에서의 문제는'Aw = xBw'입니다. – emeth

+0

그래서 문제가 무엇입니까? 'scipy.linalg.eig (a, b = None, ...': 매개 변수 b : 일반화 된 고유치 문제에서 오른쪽 행의 행렬입니다. 기본값은 None, 항등 행렬입니다 ._ – RomanHotsiy

+0

안녕하세요, 그러나 B 부분을 놓쳤습니다. –