본문 바로가기

Python/AI 수학 with Python

[Python] 단위행렬, 행렬식, 역행렬 구현

 

numpy의 eye() 함수로 간단하게 단위행렬을 구현할 수 있다.

[In]

# 단위행렬
import numpy as np

print(np.eye(2)) # 2x2 단위행렬
print()
print(np.eye(3)) # 3x3 단위행렬
print()
print(np.eye(4)) # 4x4 단위행렬

[Out]

[[1. 0.]
 [0. 1.]]

[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

[[1. 0. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]]

 

numpy의 linalg.det() 함수에 의해 행렬식을 구할 수 있다.

[In]

# 행렬식
import numpy as np
a = np.array([[1,2],
              [3,4]]) # 2x2 행렬

b = np.array([[1,2],
              [0,0]]) # 2x2 행렬

det_a = np.linalg.det(a) # 행렬식
det_b = np.linalg.det(b) # 행렬식

print(det_a) # 행렬식이 0이 아닌 경우 -> 역행렬 존재!
print(det_b) # 행렬식이 0이 되는 경우 -> 역행렬 존재하지 않음

[Out]

-2.0000000000000004
0.0

 

 

numpy의 linalg.inv() 함수로 역행렬을 구할 수 있다.

[In]

# 역행렬 구현
import numpy as np
a = np.array([[1,2],
              [3,4]]) # 2x2 행렬

b = np.array([[1,2],
              [0,0]]) # 2x2 행렬

a_inv = np.linalg.inv(a)
# b_inv = np.linalg.inv(b)
# b는 역행렬이 존재하지 않으므로 에러가 발생

print(a_inv)
# print(b_inv)

[Out]

[[-2.   1. ]
 [ 1.5 -0.5]]