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

Python NumPy로 각도의 삼각 탄젠트(tan) 구하기

삼각 탄젠트(trigonometric tangent)는 np.sin(x)/np.cos(x)와 요소별(element-wise)로 동일한 값입니다. Python Numpy에서 각도의 삼각 탄젠트를 구하려면 numpy.tan() 메서드를 사용하면 됩니다. 이 메서드는 첫 번째 매개변수 x의 각 요소에 대한 탄젠트 값을 반환하며, 입력이 스칼라라면 결과 역시 스칼라로 반환됩니다.

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

1. x (필수)

탄젠트를 계산할 각도입니다. 단위는 라디안(radian)이며, 2π가 360도에 해당합니다. 따라서 도(degree) 단위의 각도를 사용하려면 π/180을 곱해 라디안으로 변환해야 합니다.

2. out (선택)

결과를 저장할 위치를 지정하는 ndarray입니다. 제공할 경우 입력들이 브로드캐스팅되는 형태(shape)와 일치해야 하며, 지정하지 않거나 None으로 두면 새로 할당된 배열이 반환됩니다. 튜플을 전달할 때는 길이가 출력 개수와 같아야 합니다.

3. where (선택)

입력에 브로드캐스팅되는 조건입니다. 조건이 True인 위치에는 ufunc 연산 결과가 out 배열에 저장되고, 그 외의 위치에서는 out 배열이 원래 값을 유지합니다. 단, 기본값인 out=None으로 초기화되지 않은 배열을 생성한 경우, 조건이 False인 위치의 값은 초기화되지 않은 상태로 남게 되므로 주의해야 합니다.

구현 단계

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

import numpy as np

90도의 탄젠트를 구합니다.

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

60도의 탄젠트를 구합니다.

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

45도의 탄젠트를 구합니다.

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

30도의 탄젠트를 구합니다.

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

0도의 탄젠트를 구합니다.

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

180도의 탄젠트를 구합니다.

print("\nResult...", np.tan(np.pi))

-180도의 탄젠트를 구합니다.

print("\nResult...", np.tan(-np.pi))

전체 예제 코드

import numpy as np

# 삼각 탄젠트는 np.sin(x)/np.cos(x)와 요소별로 동일합니다.
# 각도의 삼각 탄젠트를 구하려면 numpy.tan() 메서드를 사용합니다.
print("Get the Trigonometric tangent...")

# 90도의 탄젠트
print("\nResult...", np.tan(np.pi/2.))

# 60도의 탄젠트
print("\nResult...", np.tan(np.pi/3.))

# 45도의 탄젠트
print("\nResult...", np.tan(np.pi/4.))

# 30도의 탄젠트
print("\nResult...", np.tan(np.pi/6.))

# 0도의 탄젠트
print("\nResult...", np.tan(0))

# 180도의 탄젠트
print("\nResult...", np.tan(np.pi))

# -180도의 탄젠트
print("\nResult...", np.tan(-np.pi))

실행 결과

Get the Trigonometric tangent...

Result... 1.633123935319537e+16

Result... 1.7320508075688767

Result... 0.9999999999999999

Result... 0.5773502691896257

Result... 0.0

Result... -1.2246467991473532e-16

Result... 1.2246467991473532e-16

결과 해석

출력 결과를 보면 수학적으로 알고 있는 특수각의 탄젠트 값과 거의 일치합니다. 60도는 √3(약 1.732), 45도는 1, 30도는 1/√3(약 0.577), 0도는 0입니다.

다만 90도의 결과가 무한대(inf)가 아닌 1.63e+16처럼 매우 큰 값으로 나오는 이유는, 부동소수점 방식으로는 π/2를 정확하게 표현할 수 없어 코사인 값이 정확히 0이 되지 않기 때문입니다. 마찬가지로 180도와 -180도의 결과가 0이 아닌 e-16 단위의 아주 작은 값으로 출력되는 것도 부동소수점 오차에 의한 것입니다. 이는 NumPy뿐 아니라 모든 부동소수점 기반 삼각함수 계산에서 나타나는 자연스러운 현상이므로, 필요에 따라 np.round()나 오차 허용 범위(epsilon) 비교를 활용해 처리하면 됩니다.