때로는 행렬의 역행렬을 수학적으로 계산하고, 그 결과를 다른 목적으로 활용해야 하는 경우가 있습니다. 먼저 역행렬을 직접 구하는 과정을 단계별로 살펴보겠습니다.
1. 소행렬식(Minors) 계산
소행렬식을 구할 때는 현재 행과 열의 값을 제외한 나머지 값들로 결정식(determinant)을 계산합니다. 이렇게 구한 소행렬식들은 하나의 행렬 형태로 저장됩니다.
2. 여인수(Cofactor) 구하기
다음 단계는 여인수를 구하는 것입니다. 소행렬식 행렬에 있는 값들의 부호를 교대로 변경합니다. 즉, '+'를 '-'로, '-'를 '+'로 바꿔줍니다.
3. 전치 행렬 만들기
이후 행렬을 전치(transpose)합니다. 전치란 행을 열로, 열을 행으로 변환하는 작업을 의미합니다.
4. 결정식으로 나누기
마지막으로 원래 행렬의 결정식을 구하고, 앞서 계산한 행렬의 모든 원소를 이 결정식으로 나눕니다. 그 결과로 얻어지는 행렬이 바로 원래 행렬의 역행렬입니다.
이처럼 역행렬을 손으로 직접 계산하는 것은 매우 번거롭고 시간이 오래 걸리는 작업입니다. 바로 이 지점에서 SciPy 라이브러리에 포함된 'inv' 함수가 유용하게 사용됩니다.
'inv' 함수의 문법
scipy.linalg.inv(matrix)
'matrix'는 역행렬을 구하고자 하는 행렬로, 'inv' 함수에 매개변수로 전달됩니다.
예제 코드
from scipy import linalg
import numpy as np
two_d_matrix = np.array([ [7, 9], [33, 8] ])
print("The inverse of the matrix is :")
print(linalg.inv(two_d_matrix ))실행 결과
The inverse of the matrix is : [[-0.03319502 0.0373444 ] [ 0.13692946 -0.02904564]]
코드 설명
- 필요한 라이브러리(scipy.linalg와 numpy)를 임포트합니다.
- 특정 값들을 가진 행렬을 정의합니다.
- 역행렬을 계산하는 'inv' 함수에 해당 행렬을 매개변수로 전달합니다.
- 함수를 호출하여 연산을 수행합니다.
- 연산 결과가 콘솔에 출력됩니다.