Python/Utils

파이썬 미분 구현 예제(미분계수, 도함수)

jimmy_AI 2022. 6. 30. 13:17
반응형

Python 미분계수, 도함수 계산하기

파이썬에서 주어진 함수의 특정 점에서 미분계수를 정의를 통해서 구해보고

sympy 모듈을 활용하여 도함수를 직접 얻어내는 방법에 관하여도 다루어 보겠습니다.

 

 

미분계수 구하기

우선 예시로, 아래와 같은 간단한 함수 f(x)를 가정해 보겠습니다.

$$ f(x) = e^x + 5x^2 - 6x - 5 $$

함수 f(x)에 대한 x = a에서의 미분계수는 아래와 같이 정의가 됩니다.

$$ f'(a) = \lim_{h \to 0} \frac{f(a + h) - f(a)}{h}$$

위의 정의를 통하여 미분계수를 계산하는 과정을 파이썬으로 구현하면 다음과 같습니다.

import numpy as np

def f(x): # 함수 선언
    return np.exp(x) + 5 * x ** 2 - 6 * x - 5 

def diff_x(a, h = 1e-6): # 위의 함수에서 x = a일 때 미분계수 반환
    return (f(a + h) - f(a)) / h

print(diff_x(0)) # -4.999994500209937

h 값을 0에 가깝게 만들수록 결과는 실제 미분의 결과와 거의 비슷해질 것입니다.

여기서는 실제 미분계수의 값인 -5와 거의 유사한 값이 반환된 것을 볼 수 있었습니다.

 

반응형

 

도함수 구하기

위 방법으로 각 점에서 미분계수를 일일이 구하여 도함수를 유추할 수도 있겠지만

sympy 모듈의 기능을 활용하면 도함수를 바로 구해내는 것이 가능합니다.

 

우선, 위의 함수 f(x)의 선언은 sympy에서 다음과 같이 할 수 있습니다.

import sympy as sy

x = sy.symbols('x') # x를 변수로 사용함을 선언

f = sy.exp(x) + 5 * x ** 2 - 6 * x - 5
f

 

이후, sympy 모듈의 diff 메소드를 통하여 도함수를 바로 반환받을 수 있습니다.

diff(함수, 변수) 형태로 input을 지정해주시면 됩니다.

f_prime = sy.diff(f,x)

f_prime

 

subs(변수, 지점) 형태의 메소드를 통하여 해당 지점의 값을 도함수에 대입하여

미분계수를 구하는 것도 가능합니다.

# x = 0에서의 미분계수
f_prime.subs(x, 0) # -5