미분 - 특정 순간의 변화량
좌변은 f(x)의 x에 대한 미분을 나타내는 기호 → x의 ‘작은 변화’가 함수 f(x)를 얼마나 변화시키느냐를 의미
이때 시간의 작은 변화, 즉 시간을 뜻하는 h를 한없이 0에 가깝게 한다는 의미로 lim로 나타냄
def numerical_diff(f, x):
h = 10e-50
return (f(x+h)-f(x))/h
위 함수는 문제가 없어 보이나 개선점 2개가 존재
이 오차를 극복하기 위해 x+h와 x-h사이의 함수 f의 차분을 계산
x를 중심으로 전후를 계산하므로 중심 차분 혹은 중앙 차분으로 불림
위 두가지 문제점을 개선한 함수
def numerical_diff(f,x):
h = 1e-4
return (f(x+h)-f(x-h))/(2*h)
y = 0.01x^2 + 0.1x를 미분 후 그래프 그리기
def function_1(x):
return 0.01*x**2 + 0.1*x
x = np.arange(0.0, 20.0, 0.1)
y = function_1(x)
plt.xlabel('x')
plt.ylabel('f(x)')
plt.plot(x, y)
plt.show()
x=5일 때와 10일 때 위 함수의 미분 계산
print(numerical_diff(function_1, 5))
print(numerical_diff(function_1, 10))
위처럼 계산한 미분 값이 x에 대한 f(x)의 변화량, 즉 함수의 기울기에 해당
f(x0, x1) = x0^2 + x1^2
앞의 예와 달리 변수가 2개인 함수의 미분
def function_2(x):
return x[0]**2 + x[1]**2
def function_tmp1(x0):
return x0*x0 + 4.0**2.0
numerical_diff(function_tmp1, 3.0)
def function_tmp2(x1):
return 3.0**2.0 + x1*x1
numerical_diff(function_tmp2, 4.0)