2013-06-16 4 views
2

Matlab에서 inv() 함수를 사용하면 수치 적으로 불안정하기 때문에 사용하지 않는 것이 좋습니다 (설명 섹션의 http://www.mathworks.com/help/matlab/ref/inv.html 참조). 더불어, (A 및 B 모두 행렬이다)numpy에서 행렬 반전을 사용하는 올바른 (안정적이고 효율적인) 방법은 무엇입니까?

inv(A)*B 

: 이 같은 표현을 대체하는 제안 된 역 행렬 A 단수에 가까운 경우

A\B 

이 중요해진다.

numpy/scipy로 작성하는 좋은 방법이 있습니까?()() 해결할 것입니다()

+7

이 유래 질문 참조 - [NumPy와의 왼쪽 역 (http://stackoverflow.com/questions/2250403/left-inverse-in-numpy-or-scipy는) – mtadd

+1

는'linalg.solve는()'이다 올바른 방법은 http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.solve.html#numpy.linalg.solve를 참조하십시오. 나는 수치 적으로 역 (LU 분해법 사용)보다 안정적이라고 생각한다. – Floris

답변

1

코멘트에서 언급했듯이, 당신은 왼쪽 반전을 사용해야합니다.

이것은 this question에 설명되어 있습니다.

은 (imitatio, aemulatio)을 요약하면 : 일반적으로