[파이썬][Numpy] 행렬 분해, 역행렬 계산, 특이값 분해 예제

행렬 분해, 역행렬 계산 및 특이값 분해 예제를 제공하겠습니다. 이러한 작업은 선형 대수학에서 중요한 주제 중 하나입니다.

행렬 분해 (Matrix Factorization):

행렬 분해는 주어진 행렬을 여러 개의 특정한 형태의 행렬로 분해하는 과정입니다. 대표적인 행렬 분해 방법으로는 QR 분해, LU 분해 등이 있습니다. 아래는 QR 분해의 예제입니다.

import numpy as np

# 행렬 생성
A = np.array([[1, 2], [3, 4], [5, 6]])

# QR 분해
Q, R = np.linalg.qr(A)

print("Q 행렬:")
print(Q)
print("\nR 행렬:")
print(R)

역행렬 계산 (Matrix Inversion):

역행렬은 주어진 행렬 A에 대한 역행렬 A^(-1)을 찾는 것으로, 이를 사용하여 방정식을 해결하거나 선형 시스템을 풀 수 있습니다.

import numpy as np

# 행렬 생성
A = np.array([[2, 3], [1, 4]])

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

print("A의 역행렬:")
print(A_inv)

특이값 분해 (Singular Value Decomposition, SVD):

특이값 분해는 임의의 행렬을 세 개의 행렬의 곱으로 분해하는 기법으로, 주로 차원 축소, 데이터 압축, 잡음 제거 등에 사용됩니다.

import numpy as np

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

# 특이값 분해
U, S, Vt = np.linalg.svd(B)

print("U 행렬:")
print(U)
print("\nS 행렬 (특이값 배열):")
print(S)
print("\nVt 행렬 (V의 전치 행렬):")
print(Vt)

위의 코드에서 U, S, Vt는 각각 왼쪽 특이 벡터, 특이값 배열, 오른쪽 특이 벡터를 나타냅니다. 특이값 분해는 데이터 분석 및 차원 축소에 많이 사용되며, 이미지 압축 및 잡음 제거 등 다양한 응용 분야에서 활용됩니다.