[파이썬][Scipy] scipy.linalg 예제

scipy.linalg 모듈은 선형 대수 관련 작업을 수행하는데 사용됩니다. 이 모듈을 사용하여 선형 방정식을 해결하거나 행렬 연산을 수행하는 예제를 제공하겠습니다.

먼저, 필요한 모듈을 가져옵니다:

mport numpy as np
from scipy import linalg

예제 1: 선형 방정식 해결

이 예제에서는 다음과 같은 선형 방정식을 해결합니다:

2x + y = 5
x - 3y = -7
# 선형 방정식의 계수 행렬 (A)와 상수 벡터 (b) 정의
A = np.array([[2, 1], [1, -3]])
b = np.array([5, -7])

# 선형 방정식 해결
x = linalg.solve(A, b)

print("선형 방정식의 해:")
print("x =", x[0])
print("y =", x[1])

이 코드는 주어진 선형 방정식을 해결하고 결과를 출력합니다.

예제 2: 역행렬 계산

이 예제에서는 행렬의 역행렬을 계산합니다. 역행렬은 행렬 A에 대해 A_inv.dot(A) ≈ I를 만족하는 행렬입니다.

# 역행렬 계산할 행렬 정의
A = np.array([[2, 1], [1, -3]])

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

# 결과 확인
identity_matrix = A_inv.dot(A)
print("A의 역행렬:")
print(A_inv)
print("A_inv * A:")
print(identity_matrix)

이 코드는 행렬 A의 역행렬을 계산하고 결과를 확인합니다.

예제 3: 특이값 분해 (SVD)

특이값 분해는 행렬을 세 개의 행렬 곱으로 분해하는 기술입니다. 여기서는 임의의 행렬을 생성하고 특이값 분해를 수행합니다.

# 임의의 행렬 생성
np.random.seed(0)
A = np.random.rand(3, 3)

# 특이값 분해 수행
U, S, Vt = linalg.svd(A)

print("행렬 A:")
print(A)
print("U 행렬:")
print(U)
print("S 행렬 (특이값):")
print(S)
print("Vt 행렬 (V의 전치 행렬):")
print(Vt)

이 코드는 임의의 3x3 행렬에 대한 특이값 분해를 수행하고 U, S, Vt 행렬을 출력합니다.

scipy.linalg 모듈은 더 복잡한 선형 대수 작업을 수행하는 데도 사용될 수 있으며, 위의 예제는 기본적인 작업을 소개한 것입니다.