Python/NumPy

NumPy 선형대수 기초: 역행렬, 전치행렬, 행렬식

임베디드 친구 2025. 10. 14. 21:57
반응형

NumPy 선형대수 기초: 역행렬, 전치행렬, 행렬식

NumPy는 파이썬에서 과학 계산 및 데이터 분석을 위한 강력한 라이브러리입니다. 이 포스팅에서는 NumPy의 선형대수 기능 중에서도 역행렬, 전치행렬, 행렬식을 다룹니다. 각 개념에 대해 설명하고, 코드를 통해 예제를 살펴보겠습니다.


1. 역행렬 (Inverse Matrix)

역행렬은 어떤 정사각행렬 ( A )에 대해 다음을 만족하는 행렬 ( B )를 의미합니다:

[ A \times B = B \times A = I ]

여기서 ( I )는 단위행렬(Identity Matrix)입니다. 역행렬은 행렬이 정칙(Determinant가 0이 아님)일 때만 존재합니다.

NumPy에서의 역행렬 계산

NumPy의 numpy.linalg.inv 함수를 사용하면 역행렬을 쉽게 구할 수 있습니다.

import numpy as np

# 정사각행렬 정의
A = np.array([[1, 2], [3, 4]])

# 역행렬 계산
A_inv = np.linalg.inv(A)

print("원본 행렬:")
print(A)
print("역행렬:")
print(A_inv)

# 확인: A * A_inv는 단위행렬
I = np.dot(A, A_inv)
print("단위행렬 확인:")
print(I)

실행 결과

원본 행렬:
[[1 2]
 [3 4]]
역행렬:
[[-2.   1. ]
 [ 1.5 -0.5]]
단위행렬 확인:
[[1. 0.]
 [0. 1.]]

주의사항

  • 역행렬은 행렬식이 0이 아닐 때만 계산할 수 있습니다. 만약 행렬식이 0이면 LinAlgError가 발생합니다.

2. 전치행렬 (Transpose Matrix)

전치행렬은 행과 열을 뒤바꾼 행렬을 의미합니다. ( A )의 전치행렬 ( A^T )는 다음과 같이 정의됩니다:

[ A^T[i, j] = A[j, i] ]

NumPy에서의 전치행렬 계산

NumPy는 배열 객체의 .T 속성을 사용하여 전치행렬을 계산합니다.

# 행렬 정의
B = np.array([[1, 2, 3], [4, 5, 6]])

# 전치행렬 계산
B_T = B.T

print("원본 행렬:")
print(B)
print("전치행렬:")
print(B_T)

실행 결과

원본 행렬:
[[1 2 3]
 [4 5 6]]
전치행렬:
[[1 4]
 [2 5]
 [3 6]]

3. 행렬식 (Determinant)

행렬식은 정사각행렬에서 계산되는 값으로, 행렬의 여러 성질을 나타냅니다. 예를 들어, 행렬식이 0이면 해당 행렬은 역행렬이 존재하지 않습니다.

NumPy에서의 행렬식 계산

NumPy의 numpy.linalg.det 함수를 사용하여 행렬식을 계산할 수 있습니다.

# 행렬 정의
C = np.array([[1, 2], [3, 4]])

# 행렬식 계산
C_det = np.linalg.det(C)

print("행렬:")
print(C)
print("행렬식:")
print(C_det)

실행 결과

행렬:
[[1 2]
 [3 4]]
행렬식:
-2.0000000000000004

부동소수점 오차

행렬식 계산 결과는 부동소수점 연산의 특성상 약간의 오차가 있을 수 있습니다.


4. 세 가지 개념을 활용한 종합 예제

다음은 역행렬, 전치행렬, 행렬식을 함께 사용하는 예제입니다:

# 3x3 행렬 정의
D = np.array([[2, 4, 6], [1, 3, 5], [7, 8, 9]])

# 역행렬 계산 (가능한 경우에만)
try:
    D_inv = np.linalg.inv(D)
    print("역행렬:")
    print(D_inv)
except np.linalg.LinAlgError:
    print("역행렬을 계산할 수 없습니다.")

# 전치행렬 계산
D_T = D.T
print("전치행렬:")
print(D_T)

# 행렬식 계산
D_det = np.linalg.det(D)
print("행렬식:")
print(D_det)

실행 결과

역행렬을 계산할 수 없습니다.
전치행렬:
[[2 1 7]
 [4 3 8]
 [6 5 9]]
행렬식:
0.0

해석

  • 이 행렬은 행렬식이 0이므로 역행렬이 존재하지 않습니다.
  • 전치행렬은 정상적으로 계산됩니다.

결론

이 포스팅에서는 NumPy를 활용하여 역행렬, 전치행렬, 행렬식을 계산하는 방법을 살펴보았습니다. 선형대수는 데이터 과학, 기계 학습, 물리 시뮬레이션 등 다양한 분야에서 중요한 역할을 합니다. NumPy를 사용하면 이러한 계산을 빠르고 효율적으로 수행할 수 있습니다.

이제 여러분도 NumPy를 사용해 직접 다양한 선형대수 계산을 시도해 보세요!

반응형