Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 SciPy – scipy.linalg.sinm() 함수로 행렬 사인 계산하기

scipy.linalg 패키지의 sinm() 함수는 입력으로 주어진 행렬에 대한 사인(sine) 값을 계산하는 데 사용됩니다. 이 루틴은 내부적으로 expm() 함수를 활용하여 행렬 지수(matrix exponential)를 기반으로 결과를 도출합니다.

문법(Syntax)

scipy.linalg.sinm(x)

여기서 x는 사인 값을 계산할 입력 배열(행렬)입니다.

예제 1

다음 예제를 통해 sinm() 함수의 기본적인 사용법을 살펴보겠습니다.

# 필요한 라이브러리 임포트
from scipy import linalg
import numpy as np

# 입력 배열 정의
X = np.array([[110, 12], [79, 23]])
print("입력 행렬 X:\n", X)

# 행렬의 사인 값 계산
n = linalg.sinm(X)

# 결과 출력
print("X의 사인 값:\n", n)

출력 결과

위 코드를 실행하면 다음과 같은 결과가 생성됩니다.

입력 행렬 X:
 [[110 12]
 [ 79 23]]
X의 사인 값:
 [[ 0.41972171 -0.02196579]
 [-0.14460811 0.57897368]]

예제 2

이번에는 역행렬을 구한 뒤 해당 행렬에 대한 사인 값을 계산하는 또 다른 예제를 살펴보겠습니다.

# 필요한 라이브러리 임포트
from scipy import linalg
import numpy as np

# 입력 배열 정의
p = np.array([[87 , 15] , [48 , 12]])
q = linalg.inv(p)
print("입력 행렬(역행렬):\n", q)

# 사인 값 계산
n = linalg.sinm(q)

# 행렬의 사인 값 출력
print("Q의 사인 값:\n", n)

출력 결과

위 코드를 실행하면 다음과 같은 결과가 생성됩니다.

입력 행렬(역행렬):
 [[ 0.03703704 -0.0462963 ]
 [-0.14814815 0.26851852]]
Q의 사인 값:
 [[ 0.03663868 -0.04560274]
 [-0.14592875 0.26465236]]

이처럼 scipy.linalg.sinm() 함수를 사용하면 복잡한 행렬 연산 없이도 간단하게 행렬의 사인 값을 구할 수 있습니다. 역행렬(linalg.inv()) 등 다른 SciPy 함수와 조합하면 다양한 수치 해석 문제를 효율적으로 해결할 수 있습니다.