내용
삼각함수(trigonometric functions)의 미분
sin, cos, tan의 미분
일반적으로 각을 표시하기 위해 그리스 문자 θ으로 사용합니다. 다음 함수를 고려해 봅니다.
이 함수에서 조사할 것은 그 함수의 변화량 (미분 계수)
import numpy as np import pandas as pd from sympy import * import matplotlib.pyplot as plt
plt.figure(figsize=(5, 5)) a=plt.axes(xlim=(-1.5, 2.5), ylim=(-1.5, 2.5)) r=plt.Circle((0, 0), 1, facecolor="none", edgecolor="navy", linewidth=2, label="radius=r") a.add_patch(r) plt.arrow(0, 0, 0.8, np.sqrt(1-(-0.8)**2), color="green", label=r"$\mathbf{degree=\theta}}$") plt.arrow(0, 0, 0.7, np.sqrt(1-(-0.7)**2), color="red", label=r"$\mathbf{degree=\theta+\Delta\theta}}$") plt.hlines(0, -1.5, 1.5, color="black") plt.vlines(0, -1.5, 1.5, color="black") plt.vlines(0.7, 0,np.sqrt(1-(-0.7)**2), linestyle="--", color="red", label=r"$\mathbf{y+\Delta y}}$") plt.vlines(0.8,0, np.sqrt(1-(-0.8)**2), linestyle="--", color="green", label=r"$\mathbf{y}}$") plt.legend(loc="best", prop={"weight":"bold"}) plt.text(0.5, -0.2, "X", size=12, weight="bold") plt.text(-0.2, 0.5,"Y", size=12, weight="bold") plt.xticks([]) plt.yticks([]) plt.show()
그림 1은 반지름 r의 원에서 y는 높이, θ 각을 나타낼 수 있으며 r = 1인 경우 높이와 각 사이 y= sin(θ) 관계가 성립합니다. θ 변화에 따른 sin(θ) 즉, 높이의 변화를 dy(Δ y)라 할 수 있습니다. 새로운 높이는 y+dy가 되고 각은 θ+dθ 될 것입니다.
위 식의 우항은 삼각함수의 합법칙을 적용하여 식 1과 같이 전개할 수 있습니다.
th=[0.001,0.0001, 0.00001, 0.000001] rad=np.deg2rad(th) np.around(rad, 8)
array([1.745e-05, 1.750e-06, 1.700e-07, 2.000e-08])
val=[N(sin(i), 8) for i in rad] pd.DataFrame([rad, val], index=["radian", "sin(x)"])
0 | 1 | 2 | 3 | |
---|---|---|---|---|
radian | 0.000017 | 0.000002 | 0.0 | 0.0 |
sin(x) | 1.74e-5 | 1.74e-6 | 1.74e-7 | 1.74e-8 |
그러므로 위 식은 다음과 같이 정리 됩니다.
위 함수
식 1과 동일한 과정으로 y=cos(θ)와 y=tan(θ)의 미분을 유도하면 각각 식2와 3과 같습니다.
simpy 함수 diff()
를 삼각함수의 미분에 적용할 수 있습니다.
theta=symbols("theta") diff(sin(theta))
diff(cos(theta))
diff(tan(theta))
위 결과 tan2(θ)+1를 정리하면 다음과 같습니다.
simplify(diff(tan(theta)))
원의 총 각도는 2π 또는 360도 입니다. 어떤 총 기간을 T로 할 때 일정한 시간 t에 따라 각도의 변화는 다음과 같이 나타낼 수 있습니다.
초당 주기(T)의 수를 주파수(frequency, n)라고 하면
예)
함수
이 식의 변수는
n, t=symbols("n, t") y=cos(2*pi*n*t) y.diff(t)
2차미분과 역함수 미분
삼각함수의 2차미분
sin과 cos의 미분은 각각 상호간의 함수가 전환됩니다. 이 관계를 사용하여 각 함수의 2차 미분을 계산할 수 있습니다.
theta=symbols("theta") diff(sin(theta), theta, 2)
diff(cos(theta), theta, 2)
simplify(diff(tan(theta), theta, 2))
sin(x), cos(x)함수의 2차 미분계수는 원함수와 부호만 반대인 결과를 갖습니다.
함수(y) | 1차 미분 | 2차 미분 |
---|---|---|
sin(θ) | cos(θ) | -sin(θ) |
cos(θ) | -sin(θ) | -cos(θ) |
tan(θ) | sec2(θ) | 2tan(θ)sec2(θ) |
역함수의 미분
식 7은 sin, cos, tan의 역함수를 나타낸 것입니다.
예를 들어
삼각함수의 합공식 sin2(y) + cos2(y) = 1을 적용하여 위 결과를 정리할 수 있습니다.
x, y=symbols("x, y") eq=y-asin(x) #원 식 eq_x=solve(eq, x) #원 식을 x에 대해 정리(역함수) eq_x
[sin(y)]
eq_y=solve(eq, y) #원 식을 y에 대해 정리 eq_y
[asin(x)]
dxdy=eq_x[0].diff(y) # 역함수 미분 dxdy
(1/dxdy).subs(y, eq_y[0])
eq_y[0].diff(x)#원 함수 미분
예)
cos-1(x)의 미분합니다.
이 함수 역시 위의 sin-1(x)와 동일한 방식으로 계산할 수 있습니다.
x, y=symbols("x, y") eq=y-acos(x) eq_x=solve(eq, x) eq_x
[cos(y)]
eq_y=solve(eq, y) #원 식을 y에 대해 정리 eq_y
[acos(x)]
dxdy=eq_x[0].diff(y) # 역함수 미분 dxdy
(1/dxdy).subs(y, eq_y[0])
eq_y[0].diff(x)#원 함수 미분
예)
tan-1(x)의 미분합니다.
x= symbols("x") diff(atan(x))
함수(y) | 1차 미분 |
---|---|
sin-1(x) | |
cos-1(x) | |
tan-1(x) |
예)
y = cos3(θ)을 미분해 봅니다.
이 식에서 cos3(θ) = (cos(θ))3이 성립하므로 cos(θ) = u로 치환하여 미분할 수 있습니다.
theta, u=symbols("theta u") u1=cos(theta) y=u**3 dydu=y.diff(u) dydu
dudth=u1.diff(theta) dudth
dydth=dydu*dudth dydth
dydth.subs(u, u1)
diff(cos(theta)**3, theta) #원 함수를 직접미분
예)
y = sin(x+a)를 미분합니다.
이 함수 역시 치환 방법을 적용합니다. 이 문제에 대한 미분 과정은 다음과 같습니다.
a, x=symbols("a x") y=sin(x+a) y.diff(x)
결과적으로 치환한 부분의 미분과 전체 미분을 곱한 것과 같습니다.
예)
y = log(sin(θ))를 미분합니다. sin(θ) = u로 치환하면 y = log(u)이 됩니다.
theta, u=symbols("theta u") y=log(sin(theta))#원 함수 y.diff(theta)
u1=sin(theta) #원함수의 부분을 u(=u1)로 치환 y1=log(u) dydu=y1.diff(u) dydu
dudth=u1.diff(theta) dudth
dydth=dydu*dudth dydth
dydth.subs(u, u1)
예)
y = cot(θ)를 미분합니다.
theta=symbols("theta") y=cot(theta) dy=diff(y, theta) simplify(dy)
예)
y=tan(3θ)를 미분합니다.
theta=symbols("theta") y=tan(3*theta) dy=diff(y, theta) simplify(dy)
예)
이 함수에서
theta, u=symbols("theta u") y=sqrt(1+3*tan(theta)**2) y.diff(theta)
u1=3*tan(theta)**2 y1=sqrt(1+u) dydu=y1.diff(u) dydu
dudth=u1.diff(theta) dudth
dydth=dydu*dudth dydth
dydth.subs(u, u1)
예)
y = sin(x)cos(x)를 미분합니다.
이 함수의 미분은 곱법칙을 적용합니다.
x=symbols("x") y=sin(x)*cos(x) dy=diff(y, x) dy
댓글
댓글 쓰기