내용
지수와 로그 함수의 미분
지수와 로그가 포함된 함수들을 미분합니다. 다음은 로그 함수입니다.
$$\begin{equation} y = \log_ex \; \text{또는} \; \log(x) \end{equation}$$위 함수 y의 역함수는 지수함수가 됩니다. 지수 급수의 미분은 원래 형태와 같으므로 식 1과 같이 나타낼 수 있습니다.
$$\begin{align}\tag{1} y &=\log_ex \rightarrow e^y=x\\ e^y &=\frac{dx}{dy}\\ \frac{dy}{dx}&=\frac{1}{\frac{dx}{dy}}\\ &=\frac{1}{e^y}\\ &=\frac{1}{x} \end{align}$$결과적으로 로그함수의 미분은 식 2와 같이 나타낼 수 있습니다.
$$\begin{equation}\tag{2} \frac{d(\log_e x)}{dx}=\frac{dy}{dx}=x^{-1} \end{equation}$$import numpy as np import pandas as pd from sympy import * import matplotlib.pyplot as plt
예 1) $\displaystyle y=\log(x+a)$를 미분합니다.
$$\begin{align} x+a&=e^y\\ \frac{d(x+a)}{dy}&=e^y \rightarrow \frac{dx}{dy}=e^y\\ \frac{dy}{dx}&=\frac{1}{e^y}\\ &=\frac{1}{x+a} \end{align}$$a, x=symbols('a, x') y=log(x+a) diff(y, x)$\quad \small \color{blue}{\frac{1}{a + x}}$
예 2) $y = \log_{10}x$를 미분합니다.
이 함수는 대수로그입니다. 대수로그를 자연로그로 변환하기 위해 다음 식 1에서 나타낸 로그 규칙을 적용합니다.
$$\begin{equation}\tag{3} \log_ab=\frac{\log_eb}{\log_ea} \end{equation}$$ $$\begin{align} y&=\log_{10}x\\ &=\frac{\log_ex}{\log_e10}\\ &=\frac{1}{\log_e10}\log_ex\\ \frac{dy}{dx}&=\frac{1}{\log_e10}\frac{1}{x} \end{align}$$a, x=symbols('a, x') y=log(x, 10) dy=diff(y, x) dy$\quad \small \color{blue}{\frac{1}{x \log{\left(10 \right)}}}$
N(dy, 5)$\quad \small \color{blue}{\frac{0.43429}{x}}$
지수함수와 유사한 형태이지만 e 대신 다른 수에 대한 x 거듭제곱 형태의 미분에 대해 알아봅니다. 즉, y=ax (a: 상수)형태의 함수로서 위에서 소개한 로그 규칙(식 9)을 적용하여 자연로그로 전환하여 미분 계산을 할 수 있습니다.
$$\begin{align} y&=a^x\\ \log_ey&=x \cdot \log_ea\\ x&=\frac{log_ey}{x \cdot \log_e10}\\ \frac{dx}{dy}&=\frac{1}{\log_ea}\frac{1}{y}\\ &=\frac{1}{\log_ea \cdot a^x}\\ \frac{dy}{dx}&=\log_ea \cdot a^x \end{align}$$a, x=symbols('a, x') y=a**x dy=diff(y, x) dy$\quad \small \color{blue}{a^{x} \log{\left(a \right)}}$
예 3) 다음 함수들의 $\displaystyle \frac{dy}{dx}$를 계산하여 봅니다.
(1) $y = e^{-ax}$는 두 가지 방법을 적용할 수 있습니다. $$\begin{align} \text{방법 1}&\\ & \begin{aligned} -ax = z & \rightarrow y = e^z\\ \frac{dy}{dz} = e^z & , \frac{dy}{dx} = -a\\ \therefore& \frac{dy}{dx} = -a·e^{-ax} \end{aligned}\\ \text{방법 2}&\\ &\begin{aligned} \log_ey &= -ax \\ d(\log_ey)dy & = d(-ax)dx\\ \frac{dy}{y} & = -a·dx \\ \frac{dy}{dx} & = -ay \\ & = -a \cdot e^{-ax} \end{aligned} \end{align}$$
a, x=symbols('a, x') y=exp(-a*x) dy=diff(y, x) dy$\quad \small \color{blue}{- a e^{- a x}}$
(2)$\displaystyle y = e^{\frac{2x}{x+1}}$의 미분
$$\begin{align} \log_ey& =\frac{2x}{x+1}\\ d(\log_ey)dy& =d\left(\frac{2x}{x+1}\right)dx \end{align}$$a, x=symbols('a, x') y=exp(2*x/(x+1)) dy=diff(y, x) dy$\quad \small \color{blue}{\left(- \frac{2 x}{\left(x + 1\right)^{2}} + \frac{2}{x + 1}\right) e^{\frac{2 x}{x + 1}}}$
(3)$\displaystyle y = e^{\sqrt{x^2+a}}$
위의 함수 중 $\displaystyle \sqrt{x^2+a}$의 미분은 연쇄법칙을 적용합니다.
$$\begin{align} y &= \exp(\sqrt{x^2+a})\\ \log_ey &=\sqrt{x^2+a}\\ d(\log_ey)dy &= d(\sqrt{x^2+a})dx\\ \frac{1}{y}dy&= \frac{2x}{2 \sqrt{x^2+a}}dx\\ \frac{dy}{dx} &= \frac{y}{\sqrt{x(x^2+a)}}\\ &= \frac{x⋅\exp(\sqrt{x^2+a})}{\sqrt{x^2+a}} \end{align}$$a, x, u=symbols('a, x, u') y=exp(u) u1=sqrt(x**2+a) dydu=diff(y, u) dydu$\quad \small \color{blue}{ e^{u}}$
dudx=diff(u1, x) dudx$\quad \small \color{blue}{\frac{x}{\sqrt{a + x^{2}}}}$
dydx=(dydu)*(dudx) dydx$\quad \small \color{blue}{\frac{x e^{u}}{\sqrt{a + x^{2}}}}$
dydx.subs(u, u1)$\quad \small \color{blue}{\frac{x e^{\sqrt{a + x^{2}}}}{\sqrt{a + x^{2}}}}$
위 함수를 diff()
에 직접 적용할 수 있습니다.
yo=exp(sqrt(x**2+a)) yo.diff(x)$\quad \small \color{blue}{\frac{x e^{\sqrt{a + x^{2}}}}{\sqrt{a + x^{2}}}}$
(4)$\displaystyle y = \log(a + x^3)$의 미분은 $\displaystyle a + x^3 = u$로 치환하여 실행합니다.
a, x, u=symbols('a, x, u') y=log(u) u1=a+x**3 dydu=diff(y, u) dydu$\quad \small \color{blue}{\frac{1}{u}}$
dudx=diff(u1, x) dudx$\quad \small \color{blue}{3x^2}$
dydx=(dydu)*(dudx) dydx$\quad \small \color{blue}{\frac{3x^2}{u}}$
dydx.subs(u, u1)$\quad \small \color{blue}{\frac{3x^2}{a+x^3}}$
yo=log(a+x**3) yo.diff(x)$\quad \small \color{blue}{\frac{3x^2}{a+x^3}}$
(5)$\displaystyle y = \log(3x^2 +\sqrt{a + x^2})$
위 함수의 미분은 $\displaystyle 3x^2 + \sqrt{a + x^2} = u$로 치환하여 실행합니다.
a, x, u=symbols('a, x, u') yo=log(3*x**2+sqrt((a+x**2))) yo.diff("x")$\quad \small \color{blue}{\frac{6 x + \frac{x}{\sqrt{a + x^{2}}}}{3 x^{2} + \sqrt{a + x^{2}}}}$
y=log(u) dydu=y.diff(u) dydu$\quad \small \color{blue}{\frac{1}{u}}$
u1=3*x**2+sqrt((a+x**2)) dudx=u1.diff(x) dudx$\quad \small \color{blue}{6 x + \frac{x}{\sqrt{a + x^{2}}}}$
dydx=dydu*dudx dydx$\quad \small \color{blue}{\frac{6 x + \frac{x}{\sqrt{a + x^{2}}}}{u}}$
dydx.subs(u, u1)$\quad \small \color{blue}{\frac{6 x + \frac{x}{\sqrt{a + x^{2}}}}{3 x^{2} + \sqrt{a + x^{2}}}}$
(5) $\displaystyle y = (x + 3)^2\sqrt{x - 2}$
위 함수의 미분은 양변에 로그화하여 미분을 실시합니다. 이 함수는 종속 변수 y와 독립 변수 x에 대한 모든 미분을 고려해야 합니다. 즉, 다음과 같은 음함수를 고려해야 합니다.
$$\begin{align} \log(y)&=\log((x+3)^2 \sqrt{x-2})\\ \rightarrow &d(\log(y))dy=d(\log((x+3)^2 \sqrt{x-2}))dx \end{align}$$음함수 형태의 미분은 sympy 함수 idiff()
를 적용합니다. 물론 원함수를 diff()
에 적용해도 동일한 결과를 나타냅니다.
a, x, y=symbols('a, x, y') yo=(x+3)**2*sqrt(x-2) dyo=yo.diff(x) simplify(dyo)$\quad \small \color{blue}{\frac{5 \left(x - 1\right) \left(x + 3\right)}{2 \sqrt{x - 2}}}$
#양변을 로그화하여 미분을 실시 eq=log(y)-log((x+3)**2*sqrt(x-2)) deq=idiff(eq, y, x) deq$\quad \small \color{blue}{\frac{5 y \left(x - 1\right)}{2 \left(x^{2} + x - 6\right)}}$
simplify(deq.subs(y, yo))$\quad \small \color{blue}{\frac{5 \left(x^{2} + 2 x - 3\right)}{2 \sqrt{x - 2}}}$
(6) $\displaystyle y=\frac{\sqrt{a+x^2}}{\sqrt[3]{x^3-a}}$
함수 y는 분수 형태로 로그화하여 계산할 수 있습니다. 또한 미분의 나눗셈 법칙을 적용할 수 있습니다.
a, x, y=symbols('a, x, y') yo=sqrt(x**2+a)/(x**3-a)**(Rational('1/3')) yo$\quad \small \color{blue}{\frac{\sqrt{a + x^{2}}}{\sqrt[3]{- a + x^{3}}}}$
dyo=yo.diff(x) #원함수의 미분 simplify(dyo)$\quad \small \color{blue}{- \frac{a x \left(x + 1\right)}{\left(- a + x^{3}\right)^{\frac{4}{3}} \sqrt{a + x^{2}}}}$
eq=log(y)-log(sqrt(x**2+a))+log((x**3-a)**(Rational('1/3'))) eq #원 함수를 로그화$\quad \small \color{blue}{ \log{\left(y \right)} + \log{\left(\sqrt[3]{- a + x^{3}} \right)} - \log{\left(\sqrt{a + x^{2}} \right)}}$
deq=idiff(eq, y, x) deq$\quad \small \color{blue}{\frac{a x y \left(x + 1\right)}{a^{2} - a x^{3} + a x^{2} - x^{5}}}$
deq=deq.subs(y, yo) simplify(deq)$\quad \small \color{blue}{\frac{a x \sqrt{a + x^{2}} \left(x + 1\right)}{\sqrt[3]{- a + x^{3}} \left(a^{2} - a x^{3} + a x^{2} - x^{5}\right)}}$
위 결과에 의하면 원래의 함수와 로그화로 변환된 함수의 미분의 형태는 같지 않습니다. 그러나 정의적으로 두 결과는 같아야 합니다. 이를 확인하기 위해 일정한 값을 대응 시켜봅니다.
dyo.subs({a:1, x:3})==deq.subs({a:1, x:3})
True
나눗셈 규칙을 적용합니다.
ynu=numer(yo) ynu$\quad \small \color{blue}{\sqrt{a + x^{2}}}$
yde=denom(yo) yde$\quad \small \color{blue}{\sqrt[3]{- a + x^{3}}}$
dy=(ynu.diff(x)*(yde)-(ynu*yde.diff(x)))/yde**2 simplify(dy)$\quad \small \color{blue}{- \frac{a x \left(x + 1\right)}{\left(- a + x^{3}\right)^{\frac{4}{3}} \sqrt{a + x^{2}}}}$
(7) $\displaystyle y=\left( \frac{1}{a^x} \right)^{ax}$
a, x, y=symbols('a, x, y') yo=(1/a**x)**(a*x) yo$\quad \small \color{blue}{(a^{-x})^{ax}}$
dyo=yo.diff(x) #원함수의 미분 dyo$\quad \small \color{blue}{\left(- a x \log{\left(a \right)} + a \log{\left(a^{- x} \right)}\right) \left(a^{- x}\right)^{a x}}$
eq=log(y)-log((1/a**x)**(a*x)) eq$\quad \small \color{blue}{\log{\left(y \right)} - \log{\left(\left(a^{- x}\right)^{a x} \right)}}$
deq=idiff(eq, y, x) deq$\quad \small \color{blue}{a y \left(- x \log{\left(a \right)} + \log{\left(a^{- x} \right)}\right)}$
deq=deq.subs(y, yo) deq$\quad \small \color{blue}{a \left(- x \log{\left(a \right)} + \log{\left(a^{- x} \right)}\right) \left(a^{- x}\right)^{a x}}$
로그 곡선(Logarithmic Curve)
방정식 $y = bp^x$의 그래프를 작성해봅니다. b는 y의 초기값이며 x에 따른 y의 변화는 다음과 같습니다.
b, p, x=symbols('b, p, x') y=b*p**x re={} for i in range(6): re[i]=y.subs(x, i) re
{0: b, 1: b*p, 2: b*p**2, 3: b*p**3, 4: b*p**4, 5: b*p**5}
위 결과를 표의 형태로 나타내면 다음과 같습니다.
x | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
y | b | bp | $\text{bp}^2$ | $\text{bp}^3$ | $\text{bp}^4$ | $\text{bp}^5$ |
그림 1은 b=2, p=1.5로 치환한 상태에서 위 코드의 지수함수와 그 함수를 로그화한 경우를 작성한 것입니다. 지수함수의 경우 y 값은 x에 따라 p배 만큼의 변화를 보입니다. 이와 같이 두 개의 연속하는 좌표들이 일정한 비율로 연결된 경우 그 식을 로그화하면 일정한 변화를 보입니다.
plt.figure(dpi=100) x=np.linspace(0, 6, 100) y=2*1.5**x y1=np.log(2)+x*log(1.2) plt.plot(x, y, label=r"$\mathbf{y=2 \cdot 1.5^x}$") plt.plot(x, y1, label=r"$\mathbf{\log(y)=\log(2)+ x\log(1.5)}$") plt.xlabel("x", size=12, weight="bold") plt.ylabel("y, log(y)", size=12, weight="bold") plt.legend(loc="best") plt.grid(True) plt.show()
결과적으로 지수함수를 로그함수로 전환하면 y축 역시 log(y)로 전환하여 기울기가 상수인 직선의 방정식으로 나타낼 수 있습니다.
댓글
댓글 쓰기