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

Python NumPy의 np.arcsinh()로 역쌍곡사인 계산하기

역쌍곡사인(arcsinh)은 다중값(multivalued) 함수입니다. 즉, 각 x에 대해 sinh(z) = x를 만족하는 z는 무수히 많이 존재합니다. 일반적인 관례에 따르면 허수부가 [-π/2, π/2] 범위에 속하는 z를 반환합니다.

실수(real-valued) 타입의 입력 데이터에 대해서는 arcsinh이 항상 실수 출력을 반환합니다. 다만 실수 또는 무한대로 표현할 수 없는 값이 입력되면 nan을 반환하고 유효하지 않은 부동 소수점(invalid floating point) 오류 플래그를 설정합니다. 복소수(complex-valued) 입력의 경우 arcsinh은 [1j, infj]와 [-1j, -infj] 두 개의 분지 절단(branch cut)을 가진 복소 해석 함수로, 전자 구간에서는 오른쪽 방향으로, 후자 구간에서는 왼쪽 방향으로 연속입니다.

역쌍곡사인은 asinh 또는 sinh⁻¹이라고도 불립니다. 파이썬 NumPy에서 역쌍곡사인을 계산하려면 numpy.arcsinh() 메서드를 사용하면 됩니다. 이 메서드는 입력 x와 동일한 형태(shape)의 배열을 반환하며, x가 스칼라라면 결과 역시 스칼라로 반환됩니다.

numpy.arcsinh()의 주요 매개변수

1. x (필수)

연산을 수행할 입력 배열입니다.

2. out (선택)

결과를 저장할 ndarray 위치입니다. 지정하는 경우 입력들이 브로드캐스팅(broadcasting)된 결과와 호환되는 형태여야 합니다. 생략하거나 None을 전달하면 새로 할당된 배열이 반환됩니다.

3. where (선택)

입력 전체에 브로드캐스팅되는 조건(condition)입니다. 조건이 True인 위치에는 ufunc 연산 결과가 out 배열에 기록되고, 그 외의 위치에서는 out 배열이 원래 값을 그대로 유지합니다.

구현 단계

먼저 필요한 라이브러리를 임포트합니다.

import numpy as np

삼각 역쌍곡사인을 구해 보겠습니다. 먼저 복소수 πi에 대한 arcsinh 값입니다.

print("\nResult...", np.arcsinh(np.pi*1j))

90도(π/2)에 대한 arcsinh 값입니다.

print("\nResult...", np.arcsinh(np.pi/2.))

60도(π/3)에 대한 arcsinh 값입니다.

print("\nResult...", np.arcsinh(np.pi/3.))

45도(π/4)에 대한 arcsinh 값입니다.

print("\nResult...", np.arcsinh(np.pi/4.))

30도(π/6)에 대한 arcsinh 값입니다.

print("\nResult...", np.arcsinh(np.pi/6.))

0도에 대한 arcsinh 값입니다.

print("\nResult...", np.arcsinh(0))

자연상수 e(np.e)에 대한 arcsinh 값입니다.

print("\nResult...", np.arcsinh(np.e))

전체 예제 코드

import numpy as np

# 역쌍곡사인 계산에는 Python NumPy의 numpy.arcsinh() 메서드를 사용합니다.
# 이 메서드는 x와 같은 shape의 배열을 반환하며, x가 스칼라이면 스칼라를 반환합니다.

print("Get the Trigonometric inverse Hyperbolic sine...")

# 복소수 pi*i에 대한 arcsinh
print("\nResult...", np.arcsinh(np.pi*1j))

# 90도에 대한 arcsinh
print("\nResult...", np.arcsinh(np.pi/2.))

# 60도에 대한 arcsinh
print("\nResult...", np.arcsinh(np.pi/3.))

# 45도에 대한 arcsinh
print("\nResult...", np.arcsinh(np.pi/4.))

# 30도에 대한 arcsinh
print("\nResult...", np.arcsinh(np.pi/6.))

# 0도에 대한 arcsinh
print("\nResult...", np.arcsinh(0))

# 자연상수 e에 대한 arcsinh
print("\nResult...", np.arcsinh(np.e))

실행 결과

Get the Trigonometric inverse Hyperbolic sine...

Result... (1.8115262724608532+1.5707963267948966j)

Result... 1.233403117511217

Result... 0.9143566553928859

Result... 0.7212254887267798

Result... 0.5022189850346115

Result... 0.0

Result... 1.725382558852315