수치미분
: 임의의 두 점에서 함숫값들의 차이를 차분이라고 한다. 이 차분을 통해 미분하는 것을 수치 미분이라고 한다. 해석미분(수식을 풀어 미분하는 것: 오차가 없음)을 사용할 수 없을 때, 정답은 아니지만 근삿값을 구하는 방법이다.
수치미분은 3가지 방법으로 나눌 수 있다.
- 전향차분
- 후향 차분
- 중앙 차분 (Centered Difference) <- 가장 많이 사용한다.
델타 x를 무한히 0으로 근사 시킬 수 없기에 우리가 근사로 구한 접선과 진짜 접선 사이의 오차가 발생한다.
이 오차를 극복하기 위해 (x+델타 x)와 (x-델타엑스) 사이의 함수, f의 차분을 계산한다. x를 중심으로 전후를 계산하기에 이 방법을 중앙 차분이라고 부르며 가장 오차가 적다.
아래 파이썬 공식을 통해 이해해 보자.
def numerical_differentiation(f, x, method='central'):
# 미분하려는 함수 f
# x값
# 수치미분 버전
delta_x = 1e-4 # 0에 가까운 근사값. 반올림 오차를 개선한 값이기에 가장 많이 사용.
if method == 'central':
result = (f(x + delta_x) - f(x - delta_x)) / (2 * delta_x)
elif method == 'forward':
result = (f(x + delta_x) - f(x)) / delta_x
elif method == 'backward':
result = (f(x) - f(x - delta_x)) / delta_x
return result
# f(x) = x^3
def function_1(x):
return x ** 3
print("중앙차분의 값은 {} 입니다.".format(numerical_differentiation(function_1, 2))) # 기본이 중앙차분.
print("전향차분의 값은 {} 입니다.".format(numerical_differentiation(function_1, 2, 'forward')))
print("후향차분의 값은 {} 입니다.".format(numerical_differentiation(function_1, 2, 'backward')))
미분한 값은 3*(2**2) = 12로 중앙 차분의 값이 가장 적은 오차를 가진 근삿값임을 보여준다.
참고 블로그
https://rphabet.github.io/posts/numerical_differentiation/
python으로 하는 수치미분 (Numerical Differentiation)
BigBen’s Log, BBlog
rphabet.github.io
https://amber-chaeeunk.tistory.com/11
딥러닝) 수치 미분 , 해석적 미분 , 편미분
1. 수치 미분미분이란 한 점에서의 기울기를 의미한다. 기울기는 두 점 사이에서 발생하는 경사인데, 미분을 '한 점에서의 기울기'라고 하는 이유는 그 두 점 사이의 거리를 매우 좁혀서 한 점으
amber-chaeeunk.tistory.com
'ML > 기타' 카테고리의 다른 글
Simple Linear Regression 실습 (0) | 2023.02.01 |
---|