2012-12-10 6 views
4

오류 Numpy error: Matrix is singular은 무엇을 의미합니까? (linalg.solve 함수를 사용할 때)? Google에서 보았지만이 오류가 발생했을 때 알 수있는 사항을 찾을 수 없습니다.밤피 오류 : 단일 행렬

+0

, 그것은 당신이 당신의 매트릭스 루틴을 작성 약간의 실수가 있음을 나타낼 수 있습니다. 행렬이 정말 단수이면 특이 값 분해를 사용하여 유용한 정보를 얻을 수 있습니다. 그러나이 경우에는 선형 대수학 및 수치 계산 개념을 잘 이해하고 있어야합니다. – DaveP

답변

12

단일 행렬은 역변환되지 않는 행렬입니다. 즉, 해결하려는 방정식 시스템에 고유 한 솔루션이 없다는 것을 의미합니다. linalg.solve이 처리 할 수 ​​없습니다.

linalg.lstsq은 유용한 솔루션을 제공합니다.

+0

"고유 한 솔루션 없음"이란 여러 솔루션이있을 수 있음을 의미합니까? – KaliMa

+0

@KaliMa 그게 무슨 뜻이야. –

+0

@MichaelJBarber 가능한 모든 솔루션을 반환 할 수있는 방법이 있습니까? linalg.lstsq가하는 일인가요? – KaliMa

0

이 기능은 물론 numpy.linalg.lstsq를 사용하여 단일 행렬을 반전 : 당신이 단수 매트릭스가있는 경우

def inv(m): 
    a, b = m.shape 
    if a != b: 
     raise ValueError("Only square matrices are invertible.") 

    i = np.eye(a, a) 
    return np.linalg.lstsq(m, i)[0]