[Python] 파이썬으로 미분하기 (평균변화율 , 미분계수)


pip install sympy

파이썬으로 미분을 위해선 sympy 모듈 설치가 필요합니다.

 

 

평균변화율

 

 

 

평균변화율 공식을 이용하여 함수의 평균변화율을 구할 수 있습니다.

두 점의 평균 변화율은 두 점을 지나는 직선의 기울기와 같습니다.

 

 

b 점과 a 점의 평균변화율은 다음과 같은 식으로 구할 수 있습니다.

 

 

다음은 함수 x^2 + 2x + 4 위의 점 (0 , 4) 와 (2, 12) 의 평균 변화율을 구하는 함수입니다.

 

 

from sympy import symbols

def average(a,b):
    m = max(a,b)
    n = min(a,b)

    x = symbols('x') #기호변수 선언

    fx = x ** 2 + 2 * x + 4 # x^2 + 2x + 4 라는 함수 정의
    fb = fx.subs(x, m) #함수에 m대입
    fa = fx.subs(x, n) #함수에 n대입

    result = (fb - fa) / (b - a)
    return result


print(average(0,2))

>>> 4

sympy의 symbols 를 이용해 x를 기호변수로 바꾸고

fx 를 정의한후 fx.subs(변수, 대입값) 을 이용하여 y값을 구합니다.

그후 공식을 이용해 평균변화율을 구합니다.

미분계수

함수 f(x)의 한점 a 점에서의 순간변화율을 구하면 그것이 즉 a점에서의 접선의 기울기가 됩니다. 

f(x)를 미분하여 얻은 함수를 도함수라고 하고 이 함수는 f(x) 그래프 기울기의 순간적인 변화율을 나타냅니다.

(위 수식에서 델타 x를 변수 x로 변경하고 lim x -> 0으로 보낸 식입니다.)

 

도함수를 구한후 a를 대입하게 되면 a점에서의 순간변화율을 구할 수 있습니다.

 

 

from sympy import Derivative, symbols

x = symbols('x') #x를 기호변수화
fx = 4 * x ** 4 + 3 * x ** 3 +  2 * x ** 2 + x + 1

fprime = Derivative(fx, x).doit() #x에 대해서 미분
print("fx 의 도함수는 : ", fprime, "입니다")
n = fprime.subs({x: 3})
print("fx에서 x = 3 에서의 순간변화율(미분계수는) ", n , "입니다")


>>> fx 의 도함수는 :  16*x**3 + 9*x**2 + 4*x + 1 입니다
>>> fx에서 x = 3 에서의 순간변화율(미분계수는)  526 입니다

Derivative 함수를 이용하여 정의한 fx 를 간편하게 도함수로 바꿀 수 있습니다.

기호로 나타내다보니 함수가 보기 좀 힘들지만.. 이해가 바로 안되시면 종이에 한번써보는걸로 ㅎㅎ...

 

 

from sympy import Derivative, symbols

x = symbols('x') #x를 기호변수화
fx = 4 * x ** 4 + 3 * x ** 3 +  2 * x ** 2 + x + 1

fprime = Derivative(fx, x) #x에 대해서 미분
print("fx 의 도함수는 : ", fprime, "입니다")
n = fprime.doit().subs({x: 3})
print("fx에서 x = 3 에서의 순간변화율(미분계수는) ", n , "입니다")

>>> fx 의 도함수는 :  Derivative(4*x**4 + 3*x**3 + 2*x**2 + x + 1, x) 입니다
>>> fx에서 x = 3 에서의 순간변화율(미분계수는)  526 입니다

끝에 .doit()을 붙여주지 않으면 객체만 생성되고 도함수로 바뀌지 않음을 출력값을 확인해 알 수 있습니다.

값을 구할때 끝에 doit 을 붙여주고 subs를 이용해 값 대입을 처리하면 똑같이 구할 수 있음을 알 수 있습니다.

 

어떻게하든 끝에 doit 을 넣어주시면 됩니다.

 

이계 도함수

from sympy import Derivative, symbols

x = symbols('x') #x를 기호변수화
fx = 4 * x ** 4 + 3 * x ** 3 +  2 * x ** 2 + x + 1

fprime = Derivative(fx, x).doit() #x에 대해서 미분
print("fx 의 도함수는 : ", fprime, "입니다")
fdoubleprime = Derivative(fprime, x).doit() # fprime 에 대하여 미분
print("fx의 이계도함수는 : ", fdoubleprime, "입니다")

>>> fx 의 도함수는 :  16*x**3 + 9*x**2 + 4*x + 1 입니다
>>> fx의 이계도함수는 :  48*x**2 + 18*x + 4 입니다

이계 도함수는 도함수의 값을  한번더 미분한 함수입니다. 이차 도함수라고도 합니다.

정의에 의해 그냥 한번더 Derivative 를 이용해 미분해주면 구할 수 있습니다 

COMMENT WRITE