코딩 수학


sympy ¸ðµâÀ» ºÒ·¯¿À°í, »ç¿ëÇÒ ±âÈ£ º¯¼ö¸¦ ¼±¾ðÇÑ´Ù. ¸ËÇ÷Ը³ ¸ðµâÀ» ºÒ·¯¿Â´Ù.

In [1]:
from sympy import *
init_printing()          

x, y, z, t = symbols('x y z t')
n = symbols('n', integer=True)
c = symbols('c', constant=True)

f, g, h = symbols('f, g, h', cls=Function)

%matplotlib inline 

도함수

ÇÔ¼ö $f(x)=x^n$ ÀÇ µµÇÔ¼ö $$f'(x)=nx^{n-1}$$

In [2]:
diff( x**n, x )
Out[2]:
$$\frac{n x^{n}}{x}$$
In [3]:
simplify( _ )
Out[3]:
$$n x^{n - 1}$$

»ó¼ö ÇÔ¼öÀÇ µµÇÔ¼ö´Â $0$ ÀÌ´Ù.

In [4]:
diff( c, x )
Out[4]:
$$0$$

¾î¶² µÎ ÇÔ¼ö $f(x)$¿Í $g(x)$ ¿¡ ´ëÇÏ¿©

In [5]:
f(x)
Out[5]:
$$f{\left (x \right )}$$
In [6]:
g(x)
Out[6]:
$$g{\left (x \right )}$$

µÎ ÇÔ¼öÀÇ ÇÕÀÇ ¹ÌºÐ $$ \{ f(x)+g(x) \}' = f'(x)+g'(x) $$

In [7]:
diff( f(x) + g(x), x )
Out[7]:
$$\frac{d}{d x} f{\left (x \right )} + \frac{d}{d x} g{\left (x \right )}$$

ÇÔ¼öÀÇ ½Ç¼ö¹èÀÇ ¹ÌºÐ $$ \{ cf(x) \}' = cf'(x) $$

In [8]:
diff( c * f(x), x )
Out[8]:
$$c \frac{d}{d x} f{\left (x \right )}$$

µÎ ÇÔ¼öÀÇ °öÀÇ ¹ÌºÐ $$ \{ f(x) g(x) \}' = f'(x)g(x)+f(x)g'(x) $$

In [9]:
diff( f(x) * g(x), x )
Out[9]:
$$f{\left (x \right )} \frac{d}{d x} g{\left (x \right )} + g{\left (x \right )} \frac{d}{d x} f{\left (x \right )}$$

ÇÔ¼ö $f(x)=x^3-3x-1$ ÀÇ ±Ø´ë°ª°ú ±Ø¼Ò°ªÀ» ±¸ÇÑ´Ù.

µµÇÔ¼ö¸¦ ±¸Çϸé

In [10]:
fx = x**3 -3*x - 1
fp = diff( fx, x )
fp
Out[10]:
$$3 x^{2} - 3$$

µµÇÔ¼ö°¡ $0$ ÀÌ µÇ´Â $x$ °ªÀ» ã´Â´Ù

In [11]:
xs = solve( fp, x )
xs
Out[11]:
$$\left [ -1, \quad 1\right ]$$

±Ø´ë°ªÀº

In [12]:
fx.subs( x, xs[0] ) 
Out[12]:
$$1$$

±Ø¼Ò°ªÀº

In [13]:
fx.subs( x, xs[1] ) 
Out[13]:
$$-3$$
In [14]:
plot( fx, xlim=(-2,2), ylim=(-4,4) )
Out[14]:
<sympy.plotting.plot.Plot at 0x7464b90>

이계도함수

In [15]:
diff( f(x), x, x )
Out[15]:
$$\frac{d^{2}}{d x^{2}} f{\left (x \right )}$$
In [16]:
diff( f(x), x, 2 )
Out[16]:
$$\frac{d^{2}}{d x^{2}} f{\left (x \right )}$$

°î¼± $y=x^3-3x^2-x+1$ ÀÇ º¯°îÁ¡À» ±¸ÇÑ´Ù.

À̰赵ÇÔ¼ö¸¦ ±¸Çϸé

In [17]:
y = x**3 - 3*x**2 - x + 1
ypp = diff( y, x, 2 )
ypp
Out[17]:
$$6 \left(x - 1\right)$$
In [18]:
xs = solve( ypp, x )
xs
Out[18]:
$$\left [ 1\right ]$$
In [19]:
y.subs( x, xs[0] )
Out[19]:
$$-2$$
In [20]:
plot( y, xlim=(-6,6), ylim=(-6,2) )
Out[20]:
<sympy.plotting.plot.Plot at 0x74a1f90>

¿¬»êÀ» ³¡³½ ÈÄ¿¡, y ¸¦ ¸®¼ÂÇϱâ À§ÇØ Àç¼±¾ðÇÑ´Ù.

In [21]:
y = Symbol('y')   

유리함수, 무리함수의 미분

µÎ ÇÔ¼öÀÇ ¸òÀÇ ¹ÌºÐ $$ \left \{ \frac {f(x)} {g(x)} \right \} ' = \frac {f'(x)g(x)-f(x)g'(x)} { \{g(x) \} ^2} $$

In [22]:
 diff( f(x) / g(x), x )
Out[22]:
$$- \frac{\frac{d}{d x} g{\left (x \right )}}{g^{2}{\left (x \right )}} f{\left (x \right )} + \frac{\frac{d}{d x} f{\left (x \right )}}{g{\left (x \right )}}$$
In [23]:
simplify( _ )
Out[23]:
$$\frac{1}{g^{2}{\left (x \right )}} \left(- f{\left (x \right )} \frac{d}{d x} g{\left (x \right )} + g{\left (x \right )} \frac{d}{d x} f{\left (x \right )}\right)$$

´ÙÀ½ ºÐ¼öÇÔ¼öÀÇ µµÇÔ¼ö¿Í À̰赵ÇÔ¼ö¸¦ ±¸ÇÑ´Ù. $$f(x)= \frac 1 {1+x^2}$$

In [24]:
diff( 1/( 1 + x**2 ), x )
Out[24]:
$$- \frac{2 x}{\left(x^{2} + 1\right)^{2}}$$
In [25]:
diff( 1/( 1 + x**2 ), x, 2 ).simplify()
Out[25]:
$$\frac{6 x^{2} - 2}{\left(x^{2} + 1\right)^{3}}$$

ÇÔ¼ö $f(x)= \sqrt[3] {x}$ ÀÇ µµÇÔ¼ö¸¦ ±¸Çϸé

In [26]:
diff( x**(1/3), x )
Out[26]:
$$\frac{0.333333333333333}{x^{0.666666666666667}}$$

1/3 À» À¯¸®¼ö·Î ÀÔ·ÂÇϸé, °á°úµµ À¯¸®¼ö·Î ³ª¿Â´Ù.

In [27]:
diff( x**Rational(1,3), x )
Out[27]:
$$\frac{1}{3 x^{\frac{2}{3}}}$$

삼각함수의 미분

$$ \begin{align} \frac d {dx} \sin x &= \cos x \\ \frac d {dx} \cos x &= - \sin x \\ \frac d {dx} \tan x &= \frac 1 {\cos ^2 x} \\ \end{align} $$

In [28]:
diff( sin(x), x )
Out[28]:
$$\cos{\left (x \right )}$$
In [29]:
diff( cos(x), x )
Out[29]:
$$- \sin{\left (x \right )}$$
In [30]:
diff( tan(x), x )
Out[30]:
$$\tan^{2}{\left (x \right )} + 1$$

À§ÀÇ °á°ú¸¦ ÄÚ»çÀÎÇÔ¼ö·Î Ç¥½ÃÇϸé

In [31]:
_.rewrite(cos)
Out[31]:
$$\frac{\sin^{2}{\left (x \right )}}{\cos^{2}{\left (x \right )}} + 1$$

´õ °£´ÜÈ÷ Çϸé

In [32]:
_.simplify()
Out[32]:
$$\frac{1}{\cos^{2}{\left (x \right )}}$$

지수함수의 미분

$$ \begin{align} \frac d {dx} e ^ {\,x} &= e^ {\,x} \\ \frac d {dx} a ^ {\,x} &= a^ {\,x} \ln a \quad \,\, (a>1) \\ \end{align} $$

ÇÔ¼ö $f(x)= 2^ {x}$ ÀÇ µµÇÔ¼ö¸¦ ±¸ÇÑ´Ù.

In [33]:
diff( 2**x, x )
Out[33]:
$$2^{x} \log{\left (2 \right )}$$

ÇÔ¼ö $f(x)= e^ {-x^2}$ ÀÇ µµÇÔ¼ö¸¦ ±¸ÇÑ´Ù.

In [34]:
diff( exp(-x**2), x )
Out[34]:
$$- 2 x e^{- x^{2}}$$
In [35]:
plot( exp(-x**2), xlim=(-3,3), ylim=(-2,2) )
Out[35]:
<sympy.plotting.plot.Plot at 0x89c8290>

로그함수의 미분

$$ \begin{align} \frac d {dx} \ln x &= \frac 1 x \\ \frac d {dx} \log _ a x &= \frac 1 {x \ln a} \quad \,\, (a>1) \\ \end{align} $$

ÇÔ¼ö $f(x)= \ln x $ ÀÇ µµÇÔ¼ö´Â

In [36]:
diff( ln(x), x )
Out[36]:
$$\frac{1}{x}$$

ÇÔ¼ö $f(x)= \log _ 2 x $ ÀÇ µµÇÔ¼ö´Â

In [37]:
diff( log(x,2), x )
Out[37]:
$$\frac{1}{x \log{\left (2 \right )}}$$

ÇÔ¼ö $f(x)= x ^ x $ ÀÇ µµÇÔ¼ö´Â

In [38]:
diff( x**x, x )
Out[38]:
$$x^{x} \left(\log{\left (x \right )} + 1\right)$$

곡선과 미분

음함수의 미분

¿øÀÇ ¹æÁ¤½ÄÀº À½ÇÔ¼ö ÇüÅ·ΠÁÖ¾îÁø´Ù. ¿¹¸¦ µé¾î¼­,

$$ x^2 + y^2 = 4 $$

$x$ ¿¡ ´ëÇÏ¿© ¹ÌºÐÇϸé

$$ 2x + 2y \frac {dy} {dx} = 0 $$

ÀÌ ½ÄÀ» Á¤¸®Çϸé

$$ \frac {dy} {dx} = - \frac x y $$

À­ ½ÄÀ» $\,\, g(x,y) = 0 \,\,$ ÇüÅ·Π¹Ù²Û´Ù.

In [39]:
eqn = x**2 + y**2 - 4
eqn
Out[39]:
$$x^{2} + y^{2} - 4$$

idiff( ) ÇÔ¼ö´Â ÁÖ¾îÁø À½ÇÔ¼ö $\, g(x,y) \,$ ¿¡ ´ëÇÏ¿© $\frac {dy} {dx} $ ¸¦ ±¸ÇØÁØ´Ù.

In [40]:
dydx = idiff( eqn, y, x )
dydx
Out[40]:
$$- \frac{x}{y}$$

Á¡ $(1, \sqrt 3 )$ ¿¡¼­ÀÇ ±â¿ï±â¸¦ ±¸Çغ¸¸é

In [41]:
dydx.subs( [ (x,1), (y,sqrt(3)) ] )
Out[41]:
$$- \frac{\sqrt{3}}{3}$$

< 다른 풀이법 >

$y$ ¸¦ $x$ ÀÇ ÇÔ¼ö $\, y(x)$ ·Î µÎ°í Ǫ´Â ¹æ¹ý

In [42]:
y = Function('y')(x)
y
Out[42]:
$$y{\left (x \right )}$$
In [43]:
diff( y, x )
Out[43]:
$$\frac{d}{d x} y{\left (x \right )}$$
In [44]:
eqn = x**2 + y**2 - 4
eqn
Out[44]:
$$x^{2} + y^{2}{\left (x \right )} - 4$$
In [45]:
deq = diff( eqn, x )
deq
Out[45]:
$$2 x + 2 y{\left (x \right )} \frac{d}{d x} y{\left (x \right )}$$
In [46]:
solve( deq, diff(y,x) )
Out[46]:
$$\left [ - \frac{x}{y{\left (x \right )}}\right ]$$

ÇÔ¼ö $\, y(x)$ ¸¦ ±âÈ£ $y$ ·Î ±ò²ûÇÏ°Ô ´ëüÇÏ¿©, µµÇÔ¼ö $\frac {dy} {dx} $ ¸¦ ±¸ÇÑ´Ù.

¸ÕÀú [ ] ¸¦ ¹þ±â°í, ÇÔ¼ö $y(x)$ ¸¦ ±âÈ£ $z$ ·Î Àӽ÷Π´ëüÇÑ ´ÙÀ½¿¡

In [47]:
dydx = _ [0].subs( y, z )
dydx
Out[47]:
$$- \frac{x}{z}$$

$y$ ¸¦ ±âÈ£·Î ´Ù½Ã ¼±¾ðÇϰí, ÃÖÁ¾ÀûÀ¸·Î $z$ ¸¦ $y$ ·Î ´ëüÇÑ´Ù.

In [48]:
y = Symbol('y')
dydx = _.subs( z, y )
dydx
Out[48]:
$$- \frac{x}{y}$$
In [49]:
dydx.subs( [ (x,1), (y,sqrt(3)) ] )
Out[49]:
$$- \frac{\sqrt{3}}{3}$$

매개변수로 나타낸 함수

¿øÀÇ ¹æÁ¤½Ä $ x^2+y^2=1$ À» ¸Å°³º¯¼ö $t$ ¸¦ ÀÌ¿ëÇÏ¿© $x, y$ ¸¦ Ç¥ÇöÇϸé

$\qquad x = f(t) = \cos t \,, \quad y = g(t) = \sin t $

In [50]:
from sympy.plotting import plot_parametric

plot_parametric( cos(t), sin(t), (t, 0, 2*pi),  xlim=(-3,3), ylim=(-2,2) )
Out[50]:
<sympy.plotting.plot.Plot at 0x89a9110>

매개변수로 나타낸 함수의 미분

ÇÔ¼ö $ x = f(t) $ ¿Í $ y = g(t) $ ¿¡ ´ëÇÏ¿© $$ \frac {dy} {dx} = \frac {g'(t)} {f'(t)} $$

¸Å°³º¯¼ö·Î ³ªÅ¸³½ °î¼±¿¡ ´ëÇÏ¿© $ \frac {dy} {dx}$ ¸¦ ±¸Çغ»´Ù.

$$x=t^2+2t, \quad y=t-1$$
In [51]:
ft = t**2 + 2*t
ft
Out[51]:
$$t^{2} + 2 t$$
In [52]:
gt = t - 1
gt
Out[52]:
$$t - 1$$
In [53]:
fp = diff( ft, t )
fp
Out[53]:
$$2 t + 2$$
In [54]:
gp = diff( gt, t )
gp
Out[54]:
$$1$$
In [55]:
dydp = gp / fp
dydp
Out[55]:
$$\frac{1}{2 t + 2}$$

À§ÀÇ ÇÔ¼ö¸¦ ±×·¡ÇÁ·Î ±×·Áº¸¸é

In [56]:
plot_parametric( t**2 + 2*t, t-1, (t, -4, 4),  xlim=(-6,6), ylim=(-6,2) )
Out[56]:
<sympy.plotting.plot.Plot at 0x8b89930>