삼각 함수의 탄젠트(tangent)는 요소 단위로 np.sin(x)/np.cos(x)와 수학적으로 동일합니다. 도(degree) 단위로 주어진 각도 배열의 삼각 탄젠트를 구하려면 Python NumPy에서 제공하는 numpy.tan() 메서드를 사용하면 됩니다.
이 메서드는 첫 번째 매개변수 x의 각 요소에 대한 탄젠트 값을 반환합니다. 첫 번째 매개변수 x는 라디안(radian) 단위의 각도를 나타내며, 2π가 360도에 해당합니다. 따라서 도 단위의 각도 배열을 그대로 전달하면 안 되고, 반드시 라디안으로 변환한 후 사용해야 합니다.
numpy.tan()의 주요 매개변수
1. x (필수)
탄젠트를 계산할 각도입니다. 라디안 단위이며, 여기서는 각도들의 배열을 전달합니다.
2. out (선택)
결과가 저장될 ndarray입니다. 지정하는 경우 입력값들이 브로드캐스트될 수 있는 shape이어야 합니다. 지정하지 않거나 None이면 새로 할당된 배열이 반환됩니다. 튜플 형태로 전달할 수도 있으며(키워드 인자로만 가능), 이 경우 길이가 출력 개수와 같아야 합니다.
3. where (선택)
입력 전체에 브로드캐스트되는 조건입니다. 조건이 True인 위치에는 계산된 ufunc 결과가 저장되고, 그 외의 위치에서는 out 배열이 원래 값을 유지합니다. 참고로 기본값 out=None으로 초기화되지 않은 배열이 생성된 경우, 조건이 False인 위치의 값은 초기화되지 않은 상태로 남게 됩니다.
구현 단계
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
tan 0°, tan 30°, tan 45°, tan 60°, tan 90°, tan 180°, tan -180°를 구하기 위한 각도 배열을 생성합니다.
arr = np.array((0., 30., 45., 60., 90., 180., -180.))
배열을 화면에 출력합니다.
print("배열...\n", arr)배열의 데이터 타입을 확인합니다.
print("\n배열 데이터 타입...\n", arr.dtype)배열의 차원을 확인합니다.
print("\n배열 차원...\n", arr.ndim)배열의 요소 개수를 확인합니다.
print("\n배열 요소 개수...\n", arr.size)도 단위 각도 배열의 삼각 탄젠트를 구하기 위해 numpy.tan() 메서드를 사용합니다. 도를 라디안으로 변환하기 위해 π/180을 곱해줍니다.
print("\n결과...", np.tan(arr * np.pi / 180.))전체 예제 코드
import numpy as np
# 삼각 탄젠트는 요소 단위로 np.sin(x)/np.cos(x)와 동일합니다.
# 도 단위로 주어진 각도 배열의 삼각 탄젠트를 구하려면
# Python NumPy의 numpy.tan() 메서드를 사용합니다.
print("각도 배열의 삼각 탄젠트...")
# 각도 배열 생성
# tan 0, tan 30, tan 45, tan 60, tan 90, tan 180, tan -180 계산
arr = np.array((0., 30., 45., 60., 90., 180., -180.))
# 배열 출력
print("배열...\n", arr)
# 배열의 데이터 타입 확인
print("\n배열 데이터 타입...\n", arr.dtype)
# 배열의 차원 확인
print("\n배열 차원...\n", arr.ndim)
# 배열의 요소 개수 확인
print("\n요소 개수...\n", arr.size)
# 도 단위 각도 배열의 삼각 탄젠트 계산
# 도를 라디안으로 변환 후 numpy.tan() 적용
print("\n결과...", np.tan(arr * np.pi / 180.))실행 결과
각도 배열의 삼각 탄젠트... 배열... [ 0. 30. 45. 60. 90. 180. -180.] 배열 데이터 타입... float64 배열 차원... 1 요소 개수... 7 결과... [ 0.00000000e+00 5.77350269e-01 1.00000000e+00 1.73205081e+00 1.63312394e+16 -1.22464680e-16 1.22464680e-16]
결과 해석
실행 결과를 보면 tan 0°는 0, tan 30°는 약 0.577(=1/√3), tan 45°는 1, tan 60°는 약 1.732(=√3)로 수학적으로 정확한 값이 출력됩니다.
tan 90°의 값이 1.63312394e+16처럼 매우 큰 숫자로 표시되는데, 이는 부동소수점 연산 특성상 90°가 정확히 π/2로 표현되지 않아 발생하는 것입니다. 실제 수학적으로 tan 90°는 정의되지 않습니다(무한대). 마찬가지로 tan 180°와 tan -180°도 이론상 0이지만, 부동소수점 오차로 인해 -1.22464680e-16과 같은 아주 작은 값이 출력됩니다. 이러한 오차는 부동소수점 연산에서 자연스러운 현상이므로, 필요에 따라 np.round() 등으로 반올림하여 처리하면 됩니다.