문제

파이썬에서 매트릭스의 역수를 어떻게 얻습니까? 나는 직접 구현했지만 순수한 파이썬이며, 더 빠른 모듈이 있다고 생각합니다.

도움이 되었습니까?

해결책

당신은 살펴 봐야합니다 Numpy 매트릭스 조작을하는 경우. 이것은 주로 C로 작성된 모듈이며, 순수한 파이썬으로 프로그래밍하는 것보다 훨씬 빠릅니다. 다음은 행렬을 반전시키고 다른 행렬 조작을 수행하는 방법의 예입니다.

from numpy import matrix
from numpy import linalg
A = matrix( [[1,2,3],[11,12,13],[21,22,23]]) # Creates a matrix.
x = matrix( [[1],[2],[3]] )                  # Creates a matrix (like a column vector).
y = matrix( [[1,2,3]] )                      # Creates a matrix (like a row vector).
print A.T                                    # Transpose of A.
print A*x                                    # Matrix multiplication of A and x.
print A.I                                    # Inverse of A.
print linalg.solve(A, x)     # Solve the linear equation system.

당신은 또한 볼 수 있습니다 정렬 모듈은 하나의 데이터 유형 만 처리해야 할 때 훨씬 더 효율적인 목록 구현입니다.

다른 팁

매트릭스를 실제로 뒤집어야하는지 확인하십시오. 이것은 종종 불필요하며 수치 적으로 불안정 할 수 있습니다. 대부분의 사람들이 행렬을 반전시키는 방법을 물으면 AX = B를 해결하는 방법을 알고 싶어합니다. 여기서 A는 행렬이고 X는 X와 B가 벡터입니다. 역을 계산하는 것보다 직접 X의 방정식 ax = b를 해결 한 다음 B를 곱하는 것보다 직접 X의 방정식 ax = b를 해결하는 코드를 사용하는 것이 더 효율적이고 정확합니다. 반전 A. 여러 B 값에 대한 시스템을 해결 해야하는 경우 A의 Cholesky 인수화를 저장하지만 반전하지 마십시오.

보다 그 행렬을 반전시키지 마십시오.

여기서 다시 반복 된 선택된 매트릭스가 단수 또는 잘못 조절 된 것은 유감입니다.

A = matrix( [[1,2,3],[11,12,13],[21,22,23]])

정의상, 행렬 A 자체를 곱할 때의 역수는 단위 행렬을 제공해야합니다. 칭찬 된 설명에서 선택된 A는 그렇게하지 않습니다. 실제로 역수를 보면 반전이 올바르게 작동하지 않았다는 단서가 생깁니다. 개별 용어의 크기를보십시오 - 원본 A 행렬의 용어와 비교하여 매우 크다 ...

매트릭스의 예를 선택할 때 인간이 종종 단일 매트릭스를 선택할 수 있다는 것은 놀라운 일입니다!

솔루션에 문제가 있었으므로 더 자세히 살펴 보았습니다. Ubuntu-Kubuntu 플랫폼에서 Debian 패키지 Numpy에는 매트릭스와 Linalg 하위 포장이 없으므로 Numpy의 수입 외에도 Scipy도 가져와야합니다.

A의 대각선 항에 충분한 인수, 즉 2를 곱하면 매트릭스는 단수 또는 거의 단수가 될 가능성이 높습니다. 그래서

A = matrix( [[2,2,3],[11,24,13],[21,22,46]])

단수가 아니며 거의 단수가되지 않으며 그 예는 의미있는 결과를 제공합니다 ... 부유 숫자를 다룰 때는 무시할 수없는 반올림 오류의 영향에 대해 조심해야합니다.

귀하의 기여에 감사드립니다.

구식.

재귀적인 행렬의 결정 요인을 계산 한 다음 인접한 매트릭스를 형성 할 수 있습니다.

다음은 짧은 튜토리얼입니다

나는 이것이 정사각형 행렬에만 효과가 있다고 생각합니다

이를 계산하는 또 다른 방법은 그람-시미트 직교 화와 매트릭스를 전송하는 것과 관련이 있으며, 직교 화 된 매트릭스의 전이는 역입니다!

Numpy는 대부분의 사람들에게 적합하지만 Sympy의 매트릭스

이 명령을 실행해보십시오 http://live.sympy.org/

M = Matrix([[1, 3], [-2, 3]])
M
M**-1

재미를 위해 시도하십시오 M**(1/2)

Numpy를 싫어한다면 RPY와 ROCAL R의 사본을 꺼내서 대신 사용하십시오.

(또한 매트릭스를 반전시킬 필요가 있습니다. 예를 들어, rinalg.solve와 solve () 함수는 불필요하기 때문에 실제로 완전히 반전되지 않습니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top