기본 콘텐츠로 건너뛰기

벡터와 행렬에 관련된 그림들

미분의 기하학적 의미

미분의 기하학적 의미

미분 계수는 변화율을 의미하는 것으로서 그림 1과 같이 기하학적으로 나타내면 보다 명확해 집니다.

그림 1. y=x2+a.

그림 1에서 곡선 PQR은 X, Y의 축에 대해 작성된 곡선의 일부입니다. 이 곡선에서 점의 가로 좌표가 x이고 세로 좌표가 y인 점 Q가 x가 변할 때 y가 어떻게 변하는지 관찰할 수 있습니다. x가 작은 증분 dx 만큼 증가하면 오른쪽에서 y도 작은 증분 dy 만큼 증가하는 것을 관찰할 수 있습니다. 이것은 이 곡선이 상승 곡선이기 때문에 일어나는 현상입니다. 이 상태에서 dy와 dx의 비율은 곡선이 두 점 Q와 T 사이에서 위로 기울어지는 정도를 측정 한 것입니다. 사실 그림에서 Q와 T 사이의 기울기는 일정하지 않습니다. 즉, Q, T 사이에는 직선이 아닌 곡선이므로 다양한 기울기들 존재하기 때문입니다. 결과적으로 일정한 간격인 dy, dx에 의해 계산된 비율은 각 지점의 변화율에 대한 평균값입니다. 그러나 Q와 T가 직선이라고 간주할 수 있을 만큼 곡선의 작은 부분이라면 비율 $\displaystyle \frac{dy}{dx}$은 QT에서의 곡선의 기울기라고 말할 수 있습니다.

QT가 매우 작다면 점 Q에서의 곡선의 기울기는 그 구간의 기울기 $\displaystyle \frac{dy}{dx}$에 근접하게 되고 그 구간이 지속적으로 작아지면 결국 이 비율은 점 Q에서의 기울기로 간주할 수 있습니다. 이것을 접선의 기울기 (slope of tangent)라고 합니다. 그림 2는 곡선의 기울기와 미분계수의 관계를 나타낸 것으로 각각은 다음과 같습니다.

  • 그림 2의 a는 곡선의 작은 부분의 기울기가 45°보다 큰 경우로서 접선의 기울기 $\frac{dy}{dx} \gt 1$
  • 그림 2의 b과 같이 특정 지점에서의 기울기가 45°라면 $\displaystyle \frac{dy}{dx}=1$
  • 그림 2의 c와 같이 특정 지점에서의 기울기가 45°보다 작으면 $\displaystyle \frac{dy}{dx} \lt 1$
그림 2. 그래프 기울기와 미분계수.

곡선에서의 수평이 이루어지는 지점은 dy = 0이 됩니다. 즉, y의 변화가 없는 경우는 $\displaystyle \frac{dy}{dx}=0$이 됩니다. 그림 2를 일반화하면 그림 3과 같이 나타낼 수 있습니다.

  • 그림 3의 a와 같이 곡선이 하향일 경우 dy는 감소하므로 $\displaystyle \frac{dy}{dx} \lt 0$ 로서 음수
  • 그림 3의 b와 같이 기울기가 직선일 경우 모든 부분에서 $\displaystyle \frac{dy}{dx}$는 동일하므로 상수
  • 그림 3의 c의 경우 기울기는 상승하며 경사도가 증가할수록 계속 증가$\displaystyle \left(\frac{dy}{dx} \gt 0\right)$
그림 3. 그래프의 기울기.

그림 3의 c와는 달리 그림 4와 같이 $\displaystyle \frac{dy}{dx}>0 $이지만 x의 증가와 함께 $\displaystyle \frac{dy}{dx}$는 감소하는 경우도 존재합니다.

그림 3. 접선의 기울기가 감소하는 경우.
표 1. 곡선의 형태와 미분계수
곡선의 형태 미분결과
곡선의 하향 $\displaystyle \frac{dy}{dx} \lt 0$
곡선의 수평$\displaystyle\frac{dy}{dx}=0$
곡선의 상향 $\displaystyle\frac{dy}{dx} \gt 0$

그림 5의 a에서와 같이 이 그림의 최소점인 $y_{min}$을 기준으로 곡선이 내려 가는 부분, 수평인 부분, 다시 올라가는 부분으로 구분하여 생각할 수 있으며 각 구간에서의 기울기의 변화는 다음과 같습니다. 곡선의 방향이 하향에서 상향으로 변화되는 지점을 극소값(minimum value)이라고 합니다. 이 극소값은 그 함수에 의한 모든 값 중에 가장 작은 값이라는 의미보다는 지정된 구간에서의 가장 작은 값이라는 의미가 더욱 정확합니다. 그러한 의미에서 곡선이 하향 후 상향의 형상에서 극소값은 존재한다고 할 수 있습니다. 극소값 y를 생성하는 x에서 y의 값의 변화는 없기 때문에 $\displaystyle \frac{dy}{dx}=0$이 성립합니다.

그림 5의 b와 같이 곡선이 처음에 상승하다가 내려가는 경우 상승하는 동안의 $\displaystyle \frac{dy}{dx}>0$이 되며 정상에 도달하면 0이 되고 이후 하강하는 영역에서는 음수가 됩니다. 이렇게 기울기의 부호가 양(positive)에서 음(negative)으로 전환되는 지점에서 y 값을 극대값(maximum value)이라고 하지만 위에서 소개한 최소값과 같이 이 값은 지정한 영역에서의 값을 의미합니다. 다시말하면 y값 중에 가장 큰 값을 의미하는 것은 아닙니다. 극소값의 경우와 같이 극대값 y를 생성하는 x에서 $\displaystyle \frac{dy}{dx}=0$이 성립합니다.

그림 5. 곡선의 극점.

그림 6과 같은 독특한 형태의 곡선에서 $\displaystyle \frac{dy}{dx}$는 항상 양수입니다. 이러한 경향에서도 경사가 가장 가파르지 않는 지점이 존재할 것이며 그 지점의 $\displaystyle \frac{dy}{dx}$가 극소가 될 것입니다.

그림 6. 기울기의 부호가 변화 없는 상태에서의 극소.

그림 7의 경우 Q를 기준으로 위쪽의 $\displaystyle \frac{dy}{dx}$는 음수이고 아래쪽은 양수입니다. 점 Q에서 dx는 0에 근접하므로 무한히 커집니다.

그림 7. 접선의 기울기 부호 변화.

위에서 나타낸 여러 그래프들로부터 $\displaystyle \frac{dy}{dx}$는 곡선의 한 지점에서 가파름의 정도를 측정하는 것임을 알 수 있습니다. 몇 개의 예제를 통해 함수의 그래프와 미분 계수의 관계를 알아봅니다.

import numpy as np
import pandas as pd
from sympy import *
import matplotlib.pyplot as plt

예 1)
  가장 간단한 경우로 $y = x + b$의 그래프는 그림 8과 같습니다.

그림 8. 미분계수 = 상수.

이 함수의 그래프는 x와 y에 대해 동일한 스케일을 사용하여 작성됩니다. x = 0을 입력하면 해당 세로 좌표는 y = b가 됩니다. 즉, 곡선은 높이 b에서 y 축과 교차합니다. 여기에서 45°로 올라갑니다. x에 어떤 값을 주든, y는 동일한 기울기로 상승합니다. 즉, 선의 기울기는 1입니다. 이 값은 함수를 미분한 값과 같습니다.

b, x=symbols('b, x')
y=x+b
diff(y, x) #=dy/dx
1

함수의 미분 계수는 상수이므로 그래프의 모든 지점에서 동일한 기울기를 나타냅니다.

예 2)
  함수 $y = ax + b$로서 그림 9와 같이 표현됩니다.

그림 8의 경우와 마찬가지로 일정한 높이 b에서 시작됩니다. 이 함수 역시 예 1과 같이 미분 계수는 상수입니다.

그림 9. 직선의 기울기.
a, b, x=symbols('a, b, x')
y=a*x+b
diff(y, x) #= dy/dx
a

함수의 기울기인 상수 a를 임의적으로 $\displaystyle \frac{1}{3}$라 한다면 그림 6.10에서 나타낸 것과 같이 dx는 dy의 3 배가 되는 것입니다.

그림 10. 기울기 = $\frac{1}{3}$.

예 3)
  이차 함수 $y = ax^2 + b$는 그림 11과 같이 작성됩니다.

그림 11. 곡선 $y=ax^2+b$.

식에서 알 수 있듯이 이 함수의 가장 작은 y 값이 b가 됩니다. 먼저 미분해 보면 다음과 같습니다.

a, b, x=symbols('a,b,x')
y=a*x**2+b
diff(y, x)
2ax

이 결과는 다음과 같이 곡선의 미분 계수를 나타냅니다. 경사도 즉, 기울기는 x에 의존됨을 나타냅니다. 그러므로 상수가 아닙니다.

$$\frac{dy}{dx}=2ax$$

그림 11은 위 결과를 잘 반영합니다. 즉, x에 따라 기울기는 증가 또는 감소를 보입니다. 또한 x = 0 인 시작점 P에서 곡선의 경사도가 없습니다. 즉, 수평입니다. x = 0 즉, y 축을 기준으로 왼쪽의 경우 곡선은 왼쪽에서 오른쪽으로 내려갑니다. 그러므로 그 영역에서 $\displaystyle \frac{dy}{dx}$는 음수 값을 가집니다. 반대로 x가 양수 부분에서는 미분 계수는 양수가 됩니다.

예 4)
  그림 12는 함수 $\displaystyle \frac{1}{4}x^2+3$을 그래프화 한 것입니다. 이 함수의 미분 계수는 다음과 같습니다.

그림 12. $\displaystyle y=\frac{1}{4}x^2+3$.

이제 몇 개의 연속 값들 예를 들어 0에서 5의 범위를 x에 할당합니다. 각 x에 대응하는 원함수의 y값과 미분 계수$\displaystyle \left(\frac{dy}{dx}\right)$를 정리하면 표 6.2과 같습니다.

표 1. $\displaystyle y=\frac{1}{4}x^2+3$의 값과 미분 계수
x y $\displaystyle \frac{dy}{dx}$
0 3 0
1$\displaystyle 3\frac{1}{4}$ $\displaystyle \frac{1}{2}$
2 4 1
3$\displaystyle 5\frac{1}{4}$ $\displaystyle 1\frac{1}{2}$
4 7 2
5$\displaystyle 9\frac{1}{4}$$\displaystyle 2\frac{1}{4}$

위의 결과 $\displaystyle \frac{dy}{dx}$를 그래프화하면 그림 13과 같이 나타납니다. 지정된 x 값에 대한 세로 좌표의 높이는 그림 6.12에서 나타낸 곡선의 기울기에 비례한다는 것을 알 수 있습니다.

그림 13. $\displaystyle y=\frac{1}{4}x^2+3$ 의 미분계수들.

그림 14와 같이 곡선이 정점에서 급격한 변화를 나타내는 경우 기울기는 양수에서 음수로 급격한 전환이 이루어집니다. 즉, $\displaystyle \frac{dy}{dx}$가 양수에서 음수로 갑작스러운 변화가 나타냅니다.

그림 14. 미분계수의 급격한 변화.

다음 예제들은 원래의 함수와 그 함수의 미분 계수의 다양한 관계를 나타내기 위한 것입니다.

예 5)
  함수 $\displaystyle \frac{1}{2x}+3$의 $x = -1$에서 접선의 기울기와 이 접선과 곡선 $g(x) = 2x^2 + 2$에 의해 생성되는 각도를 계산해 봅시다.

x, b=symbols('x, b', real =True)
y=Rational('1/2')*1/x+3
dydx=diff(y, x)
dydx
$\quad \small \color{blue}{−\frac{1}{2x^2}}$
dydx.subs(x, -1)
$\quad \small \color{blue}{−\frac{1}{2}}$

위 결과에 의하면 x = -1에서의 이 함수의 미분계수는 $\displaystyle -\frac{1}{2}$입니다. 이 기울기를 가진 접선의 방정식을 y = ax + b이라고 하면 기울기는 $\displaystyle \frac{dy}{dx} = a = -\frac{1}{2}$가 됩니다. $\displaystyle x = -1,\; y = \frac{5}{2}$가 되므로 이 값을 접선의 방정식에 대입하면 b 값을 계산할 수 있습니다. 접선의 방정식은 다음과 같습니다.

#x=-1에서의 접점 y
y_t=y.subs(x, -1)
y_t
$\quad \small \color{blue}{\frac{5}{2}}$

그러므로 접선은 $\displaystyle y = -\frac{1}{2}x + b$으로 설정할 수 있으며 $\displaystyle \left(-1, \; \frac{5}{2}\right)$좌표를 통과합니다. 이 조건으로 부터 b를 계산할 수 있습니다. sympy 함수 solve() 식의 해를 계산하기 위한 것으로 계산에 적용할 수 있습니다.

y1=-1/2*x+b
eq=(y1).subs(x,-1)
eq
b+0.5
eq2=Eq(eq, y_t)
eq2
$\quad \small \color{blue}{b+0.5=\frac{5}{2}}$
b1=solve(eq2, b)
b1 #=b
[2.00000000000000]
y1=y1.subs(b, b1[0])
y1
2.0−0.5x

$\displaystyle \left(-1, \frac{5}{2}\right)$에서의 접선의 방정식($y_1$)은 다음과 같습니다.

$$y_1=\frac{1}{2}x+2$$

그림 15는 접선의 방정식과 다른 방정식을 작성한 것으로 두 점에서 교차됩니다.

그림 15. 접선과 다른 곡선과의 교차.

그림 16에서 접선식과 다른 함수 $g(x) = 2x^2 + 2$는 두 점에서 교차됩니다. 각 교차점에서 두 함수가 이루는 각도는 접선식의 기울기와 두 식이 교차된 지점 g(x)의 미분계수(기울기)의 사이에 형성됩니다. 먼저 두 식의 접점은 sympy 함수 solve()를 사용하여 계산합니다.

g=2*x**2+2
y1_g=y1-g
y1_g
−2x2-0.5x
meetP=solve(y1_g, x)
meetP
[-0.250000000000000, 0.0]
meetP_xy=[(N(i, 3), N(g.subs(x, i), 3)) for i in meetP]
meetP_xy
[(-0.250, 2.13), (0, 2.00)]
그림 16.직선과 곡선의 사잇각.

그림 16과 같이 곡선 g(x)와 접선이 만나는 두 점들에서 생성되는 각은 그 점에서 g(x)의 접선과 $y_1$과의 기울기 차이로 계산됩니다. 각 접선의 방정식의 기울기를 각으로 변환하기 위해 역삼각함수를 사용합니다.

$$\begin{equation} y = \tan(x) \rightarrow \tan^{-1}(y) = x \end{equation}$$

이 계산은 sympy함수 atan()를 적용합니다. 또한 sympy의 삼각함수에 관련된 인수들은 각(degree)이 아니라 라디안(radian)이므로 deg(radian)함수를 사용하여 각으로 전환할 수 있습니다.

#접점 x=-0.25
g1=diff(g, x)
g1_p1=g1.subs(x, meetP[0])
g1_p1
−1.0
(-deg(atan(-1))--(deg(atan(-1/2)))).evalf(4)
18.44
#접점 x=0
g1_p1=g1.subs(x, meetP[1])
g1_p1
0
(deg(atan(0))--(deg(atan(-1/2)))).evalf(4)
−26.56

예 5)
 식 $y = x^2 - 5x + 6$와 좌표 $\; x = 2, \; y = -1$를 통과하고 y의 접선이 되는 직선과의 접점을 계산합니다.

이 예의 경우 다음 과정에 의해 계산할 수 있습니다.

  1. y의 미분계수 $\displaystyle \; \frac{dy}{dx}$
  2. 좌표 (2,-1)를 통과하는 직선 g(x) = ax + b라고 하면이 그 좌표(2, -1)을 대입하여 b를 a로 정리할 수 있습니다.
  3. 함수 y의 미분계수가 좌표(2, -1)을 통과하는 직선의 기울기가 됩니다. 즉, $\displaystyle \; \frac{dy}{dx} = a$
  4. y = g(x)에서 x를 계산하고 그에 대응하는 y값을 발견합니다.

이 과정을 코드화하면 다음과 같습니다.

a, b, x=symbols("a, b, x", real=True)
y=x**2-5*x+6
g=a*x+b
dydx=diff(y, x)
dydx
2x−5

위의 결과는 함수 y의 미분계수입니다. 이 값은 변수 x에 의존합니다. 다음 과정은 g(x)에 (2,-1)을 대입하여 b를 a의 형태로 전환합니다.

b1=solve(Eq(g.subs(x, 2), -1),b)
b1
[-2*a - 1]
g=g.subs(b, b1[0])
g
ax−2a−1

g(x)의 기울기를 y의 미분계수로 치환합니다. 이 과정에 의해 g(x)의 상수 a와 b는 모두 변수 x로 치환됩니다.

g=g.subs(a, dydx)
g
x(2x−5)−4x+9

최종적으로 y = g(x)를 계산합니다.

x_con=solve(Eq(y, g), x)
x_con
[1, 3]
y_con=[y.subs(x, i) for i in x_con]
y_con
[2, 0]

댓글

이 블로그의 인기 게시물

[Linear Algebra] 유사변환(Similarity transformation)

유사변환(Similarity transformation) n×n 차원의 정방 행렬 A, B 그리고 가역 행렬 P 사이에 식 1의 관계가 성립하면 행렬 A와 B는 유사행렬(similarity matrix)이 되며 행렬 A를 가역행렬 P와 B로 분해하는 것을 유사 변환(similarity transformation) 이라고 합니다. $$\tag{1} A = PBP^{-1} \Leftrightarrow P^{-1}AP = B $$ 식 2는 식 1의 양변에 B의 고유값을 고려한 것입니다. \begin{align}\tag{식 2} B - \lambda I &= P^{-1}AP – \lambda P^{-1}P\\ &= P^{-1}(AP – \lambda P)\\ &= P^{-1}(A - \lambda I)P \end{align} 식 2의 행렬식은 식 3과 같이 정리됩니다. \begin{align} &\begin{aligned}\textsf{det}(B - \lambda I ) & = \textsf{det}(P^{-1}(AP – \lambda P))\\ &= \textsf{det}(P^{-1}) \textsf{det}((A – \lambda I)) \textsf{det}(P)\\ &= \textsf{det}(P^{-1}) \textsf{det}(P) \textsf{det}((A – \lambda I))\\ &= \textsf{det}(A – \lambda I)\end{aligned}\\ &\begin{aligned}\because \; \textsf{det}(P^{-1}) \textsf{det}(P) &= \textsf{det}(P^{-1}P)\\ &= \textsf{det}(I)\end{aligned}\end{align} 유사행렬의 특성 유사행렬인 두 정방행렬 A와 B는 'A ~ B' 와 같...

[sympy] Sympy객체의 표현을 위한 함수들

Sympy객체의 표현을 위한 함수들 General simplify(x): 식 x(sympy 객체)를 간단히 정리 합니다. import numpy as np from sympy import * x=symbols("x") a=sin(x)**2+cos(x)**2 a $\sin^{2}{\left(x \right)} + \cos^{2}{\left(x \right)}$ simplify(a) 1 simplify(b) $\frac{x^{3} + x^{2} - x - 1}{x^{2} + 2 x + 1}$ simplify(b) x - 1 c=gamma(x)/gamma(x-2) c $\frac{\Gamma\left(x\right)}{\Gamma\left(x - 2\right)}$ simplify(c) $\displaystyle \left(x - 2\right) \left(x - 1\right)$ 위의 예들 중 객체 c의 감마함수(gamma(x))는 확률분포 등 여러 부분에서 사용되는 표현식으로 다음과 같이 정의 됩니다. 감마함수는 음이 아닌 정수를 제외한 모든 수에서 정의됩니다. 식 1과 같이 자연수에서 감마함수는 factorial(!), 부동소수(양의 실수)인 경우 적분을 적용하여 계산합니다. $$\tag{식 1}\Gamma(n) =\begin{cases}(n-1)!& n:\text{자연수}\\\int^\infty_0x^{n-1}e^{-x}\,dx& n:\text{부동소수}\end{cases}$$ x=symbols('x') gamma(x).subs(x,4) $\displaystyle 6$ factorial 계산은 math.factorial() 함수를 사용할 수 있습니다. import math math.factorial(3) 6 a=gamma(x).subs(x,4.5) a.evalf(3) 11.6 simpilfy() 함수의 알고리즘은 식에서 공통사항을 찾아 정리하...

sympy.solvers로 방정식해 구하기

sympy.solvers로 방정식해 구하기 대수 방정식을 해를 계산하기 위해 다음 함수를 사용합니다. sympy.solvers.solve(f, *symbols, **flags) f=0, 즉 동차방정식에 대해 지정한 변수의 해를 계산 f : 식 또는 함수 symbols: 식의 해를 계산하기 위한 변수, 변수가 하나인 경우는 생략가능(자동으로 인식) flags: 계산 또는 결과의 방식을 지정하기 위한 인수들 dict=True: {x:3, y:1}같이 사전형식, 기본값 = False set=True :{(x,3),(y,1)}같이 집합형식, 기본값 = False ratioal=True : 실수를 유리수로 반환, 기본값 = False positive=True: 해들 중에 양수만을 반환, 기본값 = False 예 $x^2=1$의 해를 결정합니다. solve() 함수에 적용하기 위해서는 다음과 같이 식의 한쪽이 0이 되는 형태인 동차식으로 구성되어야 합니다. $$x^2-1=0$$ import numpy as np from sympy import * x = symbols('x') solve(x**2-1, x) [-1, 1] 위 식은 계산 과정은 다음과 같습니다. $$\begin{aligned}x^2-1=0 \rightarrow (x+1)(x-1)=0 \\ x=1 \; \text{or}\; -1\end{aligned}$$ 예 $x^4=1$의 해를 결정합니다. solve() 함수의 인수 set=True를 지정하였으므로 결과는 집합(set)형으로 반환됩니다. eq=x**4-1 solve(eq, set=True) ([x], {(-1,), (-I,), (1,), (I,)}) 위의 경우 I는 복소수입니다.즉 위 결과의 과정은 다음과 같습니다. $$x^4-1=(x^2+1)(x+1)(x-1)=0 \rightarrow x=\pm \sqrt{-1}, \; \pm 1=\pm i,\; \pm1$$ 실수...