NumPy Master Class

Chapter3 Mathematical Functions: Notebook1 Trigonometric Functions

Shin's Lab 2020. 1. 8. 21:33

 

 

 

NumPy Master Class

Chapter3 Mathematical Functions

Notebook1 Trigonometric Functions

 

NumPy에서는 물론 우리가 아는 sin, cos, tan 등 trigonometric function들을 한 번에 구할 수 있는 method들도 존재한다. trigonometric function에 대해서 살펴볼 method들은 다음과 같다.

1. np.sin()
2. np.cos()
3. np.tan()
4. np.arcsin()
5. np.arccos()
6. np.arctan()
7. np.deg2rad()
8. np.rad2deg()

위의 method들을 1-3, 4-6, 7-8로 묶어서 확인해보자.

참고로 위의 함수들의 input은 radian으로 받는다.

In [4]:
import numpy as np
import math
import matplotlib.pyplot as plt

PI = math.pi
 

np.sin(), np.cos(), np.tan()

In [15]:
radian_range = np.linspace(0, 4*PI, 300)

sin_np = np.sin(radian_range)
cos_np = np.cos(radian_range)
tan_np = np.tan(radian_range)

plt.figure(figsize = (8,5))
plt.plot(sin_np, label = 'sin')
plt.plot(cos_np, label = 'cos')
plt.plot(tan_np, label = 'tan')
plt.legend(facecolor = (0.8, 0.8, 0.8))
plt.ylim([-2, 2])
plt.grid()
plt.show()
 
 

위와 같이 우리가 알던 sin, cos, tan 함수를 만들어낼 수 있다.

NumPy에서 이렇게 함수를 만들 때 좋은 점은, 300개의 point에 대해서 한 번에 sin, cos, tan 값을 구할 수 있다는 점이다.

 

np.arcsin(), np.arccos(), np.arctan()

In [16]:
radian_range = np.linspace(-1, 1, 300)

arcsin_np = np.arcsin(radian_range)
arccos_np = np.arccos(radian_range)
arctan_np = np.arctan(radian_range)

plt.figure(figsize = (8,5))
plt.plot(arcsin_np, label = 'arcsin')
plt.plot(arccos_np, label = 'arccos')
plt.plot(arctan_np, label = 'arctan')
plt.legend(facecolor = (0.8, 0.8, 0.8))
plt.ylim([-2, 5])
plt.grid()
plt.show()
 
 

마찬가지로 우리가 알던 arcsin, arccos, arctan의 모습을 확인할 수 있다.

 

np.deg2rad(), np.rad2deg()

 

우리는 degree와 radian을 많이 사용한다.

사람에 따라 degree가 편한 사람이 있을 것이고, radian이 편한 사람이 있을 것이다.

그리고 같은 사람이라도 상황에 따라, degree, radian 모두를 사용하는 경우도 많다.

이때, 이 변환을 해주는 method들이 deg2rad(), rad2deg()이다.

이를 확인하기 위해 deg를 직접 rad으로 바꿔보고 deg2rad()을 이용하여 두 값을 비교해보자.

In [21]:
deg_np = np.array([0, 30, 45, 60, 90])
rad_np = deg_np/180*PI

print(rad_np)
print(np.deg2rad(deg_np))
 
[0.         0.52359878 0.78539816 1.04719755 1.57079633]
[0.         0.52359878 0.78539816 1.04719755 1.57079633]
 

위의 결과에서 알 수 있듯이, 실제 degree를 radian으로 바꿨을 때와 deg2rad()을 이용했을 때의 결과가 동일함을 알 수 있다. 따라서 sin 함수를 그릴 때 두 가지 모두 사용 가능하다.

In [27]:
rad_range = np.linspace(0, 4*PI, 300)
sin_np1 = np.sin(rad_range)

deg_range = np.linspace(0, 4*180, 300)
sin_np2 = np.sin(np.deg2rad(deg_range))

fig, (ax1, ax2) = plt.subplots(1,2, figsize = (15,5))
ax1.plot(sin_np1)
ax2.plot(sin_np2)
plt.show()