Python에서 scimath 기능을 활용해 역 코사인(arccos)을 계산하려면 numpy.emath.arccos() 메서드를 사용하면 됩니다. 이 메서드는 입력값 x에 대한 역 코사인의 '주값(principal value)'을 반환합니다.
x가 실수이면서 절댓값이 1 이하(abs(x) <= 1)라면, 결과는 닫힌 구간 [0, π] 안에 있는 실수가 됩니다. 반면 abs(x)가 1을 초과하는 경우에는 일반 arccos 함수처럼 오류를 발생시키지 않고, 복소수 형태의 주값을 자동으로 반환한다는 점이 큰 장점입니다.
반환값은 x 값들에 대한 역 코사인입니다. 입력 x가 스칼라라면 결과도 스칼라로, 배열이라면 배열 객체로 반환됩니다. 첫 번째 매개변수는 역 코사인을 구하고자 하는 값(또는 값들의 배열)입니다.
단계별 진행 과정
1. 필요한 라이브러리 임포트
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
2. NumPy 배열 생성
array() 메서드를 사용해 NumPy 배열을 생성합니다. 여기서는 의도적으로 abs(x) > 1인 값(2)을 포함시켜 복소수 반환 동작도 함께 확인합니다.
arr = np.array([1, -1, 2, 0])
3. 배열 정보 확인
생성한 배열과 데이터 타입, 차원을 출력해 확인합니다.
print("Array...\n", arr)
print("\nOur Array type...\n", arr.dtype)
print("\nOur Array Dimension...\n", arr.ndim)4. 역 코사인 계산
numpy.emath.arccos() 메서드를 호출하여 역 코사인을 계산합니다.
print("\nResult...", np.emath.arccos(arr))전체 예제 코드
import numpy as np
# array() 메서드로 NumPy 배열 생성
arr = np.array([1, -1, 2, 0])
# 배열 출력
print("Array...\n", arr)
# 배열의 데이터 타입 확인
print("\nOur Array type...\n", arr.dtype)
# 배열의 차원 확인
print("\nOur Array Dimensions...\n", arr.ndim)
# 배열의 요소 개수 확인
print("\nNumber of elements...\n", arr.size)
# numpy.emath.arccos()로 역 코사인 계산
print("\nResult...", np.emath.arccos(arr))실행 결과
Array... [ 1 -1 2 0] Our Array type... int64 Our Array Dimensions... 1 Number of elements... 4 Result... [0. -0.j 3.14159265-0.j 0. -1.3169579j 1.57079633-0.j ]
결과 해석
실행 결과를 살펴보면 다음과 같은 특징을 확인할 수 있습니다.
- arccos(1) → 0 (코사인 값이 1이 되는 각도는 0)
- arccos(-1) → π ≈ 3.14159265 (코사인 값이 -1이 되는 각도)
- arccos(2) → 0 - 1.3169579j (정의역을 벗어나므로 복소수로 반환)
- arccos(0) → π/2 ≈ 1.57079633
특히 일반적인 np.arccos() 함수에 2를 입력하면 NaN과 경고가 발생하지만, np.emath.arccos()는 유효한 복소수 결과를 자동으로 제공하므로 수학적 계산에서 정의역 문제를 우아하게 처리할 수 있습니다.