파이썬(Python)

사인, 역사인, 코사인,역코사인, 탄젠트, 역탄젠트 파이썬으로 계산하고 그리기 (Sine, Arcsine, Cosine, Arccosine, Tangent, Arctangent)

끄적끄적아무거나 2021. 10. 6. 08:50
반응형

Sine, Inverse Sine(Arcsine) 파이썬으로 계산하고 그리기

 

사인과 아크사인을 계산하기 위해서는 numpy 모듈이 필요하고 그래프로 그리기 위해서는 matplotlib 모듈이 필요하다. 없다면 "pip install 모듈명" 으로 설치하길 바란다. 

 

 

  • numpy
  • matplotlib

 


사인 계산 및 그래프 구현 하기

 

코드>>

import matplotlib.pyplot as plt
import numpy as np

# x값 설정

x = np.arange(-10,10,0.1);

# y값 설정
amplitude = np.sin(x)
print("amp: ", amplitude)

# 축 이름 설정
plt.xlabel('x axis(radian)')
plt.ylabel('y axis')

# 그리드 추가
plt.grid(color = "gray", alpha=.5,linestyle='--')
plt.plot(x,amplitude,label='arc sine')

# 범례 작성
plt.legend()
plt.show()

 

결과>>

반응형

 

 

역사인 계산 및 그래프 구현 하기

 

코드>>

import matplotlib.pyplot as plt
import numpy as np

# x값 설정

# x = np.array(range(-10,10,0.01))
x = np.arange(-1,1.01,0.01);
print("x: ", x)

# y값 설정
amplitude = np.arcsin(x)
print("amp: ", amplitude)

# 축 이름 설정
plt.xlabel('x axis')
plt.ylabel('y axis(radian)')

# 그리드 추가
plt.grid(color = "gray", alpha=.5,linestyle='--')
plt.plot(x,amplitude,label='arc sine')

# 범례 작성
plt.legend()
plt.show()

 

결과>>

c:\Users\forgo\Documents\python_ex\test03.py:11: RuntimeWarning: invalid value encountered in arcsin
  amplitude = np.arcsin(x)
amp:  [-1.57079633e+00 -1.42925685e+00 -1.37046148e+00 -1.32523081e+00
 -1.28700222e+00 -1.25323590e+00 -1.22263031e+00 -1.19441284e+00
 -1.16808049e+00 -1.14328406e+00 -1.11976951e+00 -1.09734517e+00
 -1.07586220e+00 -1.05520232e+00 -1.03526967e+00 -1.01598529e+00
 -9.97283222e-01 -9.79107684e-01 -9.61411019e-01 -9.44152115e-01
 -9.27295218e-01 -9.10808997e-01 -8.94665817e-01 -8.78841152e-01
 -8.63313115e-01 -8.48062079e-01 -8.33070358e-01 -8.18321951e-01
 -8.03802319e-01 -7.89498209e-01 -7.75397497e-01 -7.61489053e-01
 -7.47762635e-01 -7.34208787e-01 -7.20818761e-01 -7.07584437e-01
 -6.94498266e-01 -6.81553212e-01 -6.68742703e-01 -6.56060591e-01
 -6.43501109e-01 -6.31058841e-01 -6.18728691e-01 -6.06505855e-01
 -5.94385800e-01 -5.82364238e-01 -5.70437109e-01 -5.58600565e-01
 -5.46850951e-01 -5.35184790e-01 -5.23598776e-01 -5.12089753e-01
 -5.00654712e-01 -4.89290778e-01 -4.77995199e-01 -4.66765339e-01
 -4.55598673e-01 -4.44492777e-01 -4.33445320e-01 -4.22454062e-01
 -4.11516846e-01 -4.00631593e-01 -3.89796296e-01 -3.79009021e-01
 -3.68267893e-01 -3.57571104e-01 -3.46916898e-01 -3.36303575e-01
 -3.25729487e-01 -3.15193032e-01 -3.04692654e-01 -2.94226838e-01
 -2.83794109e-01 -2.73393031e-01 -2.63022203e-01 -2.52680255e-01
 -2.42365851e-01 -2.32077683e-01 -2.21814470e-01 -2.11574960e-01
 -2.01357921e-01 -1.91162147e-01 -1.80986451e-01 -1.70829669e-01
 -1.60690653e-01 -1.50568273e-01 -1.40461415e-01 -1.30368980e-01
 -1.20289882e-01 -1.10223050e-01 -1.00167421e-01 -9.01219450e-02
 -8.00855800e-02 -7.00572931e-02 -6.00360584e-02 -5.00208568e-02
 -4.00106744e-02 -3.00045018e-02 -2.00013336e-02 -1.00001667e-02
  8.88178420e-16  1.00001667e-02  2.00013336e-02  3.00045018e-02
  4.00106744e-02  5.00208568e-02  6.00360584e-02  7.00572931e-02
  8.00855800e-02  9.01219450e-02  1.00167421e-01  1.10223050e-01
  1.20289882e-01  1.30368980e-01  1.40461415e-01  1.50568273e-01
  1.60690653e-01  1.70829669e-01  1.80986451e-01  1.91162147e-01
  2.01357921e-01  2.11574960e-01  2.21814470e-01  2.32077683e-01
  2.42365851e-01  2.52680255e-01  2.63022203e-01  2.73393031e-01
  2.83794109e-01  2.94226838e-01  3.04692654e-01  3.15193032e-01
  3.25729487e-01  3.36303575e-01  3.46916898e-01  3.57571104e-01
  3.68267893e-01  3.79009021e-01  3.89796296e-01  4.00631593e-01
  4.11516846e-01  4.22454062e-01  4.33445320e-01  4.44492777e-01
  4.55598673e-01  4.66765339e-01  4.77995199e-01  4.89290778e-01
  5.00654712e-01  5.12089753e-01  5.23598776e-01  5.35184790e-01
  5.46850951e-01  5.58600565e-01  5.70437109e-01  5.82364238e-01
  5.94385800e-01  6.06505855e-01  6.18728691e-01  6.31058841e-01
  6.43501109e-01  6.56060591e-01  6.68742703e-01  6.81553212e-01
  6.94498266e-01  7.07584437e-01  7.20818761e-01  7.34208787e-01
  7.47762635e-01  7.61489053e-01  7.75397497e-01  7.89498209e-01
  8.03802319e-01  8.18321951e-01  8.33070358e-01  8.48062079e-01
  8.63313115e-01  8.78841152e-01  8.94665817e-01  9.10808997e-01
  9.27295218e-01  9.44152115e-01  9.61411019e-01  9.79107684e-01
  9.97283222e-01  1.01598529e+00  1.03526967e+00  1.05520232e+00
  1.07586220e+00  1.09734517e+00  1.11976951e+00  1.14328406e+00
  1.16808049e+00  1.19441284e+00  1.22263031e+00  1.25323590e+00
  1.28700222e+00  1.32523081e+00  1.37046148e+00  1.42925685e+00
             nan]

 

 

주석>>

사인파형에서 x 축은 radian 값을 가졌고 아크사인파형에서 y축 값이 radian 값을 가진다. 이는 sine과 inverse sine의 차이다.

 

참고로 라다안 값 3.14 = pi 이다. 아크사인에서 x값이 -1일 때 -1.57 radian 이고 이는 pi/2 이다. 

 

그리고 1일때는 값이 nan으로 나오지 않았는데 arrange 값을 1.000000 이런식으로 표기하면서 오류가 생긴 듯하다. 그냥 np.arcsin(1) 을 넣으면 1.57이 나온다.

 

그리고 참고로 x 값을 구할 때 아래 와같이 range로 가져오면 정수값을 가져오기때문에 아래와 같은 에러문이 발생한다.

x = np.array(range(-10,10,0.01))

에러발생>>
Traceback (most recent call last):
  File "c:\Users\forgo\Documents\python_ex\rpa_basic\test04.py", line 6, in <module>
    x = np.array(range(-10,10,0.01))
TypeError: 'float' object cannot be interpreted as an integer

 


코사인, 아크코사인, 탄잰트, 아크탄젠트 계산 및 그래프 그리기

 

앞서 코드에서 아래 코드만 변경하면 된다.

amplitude = np.cos(x)

 

변경할 코드는 아래와 같다.

amplitude = np.cos(x)
amplitude = np.arccos(x)
amplitude = np.tan(x)
amplitude = np.arctan(x)

 

 

반응형