열렬히.뛰기

수치미분

수학 & 통계 > 최적화이론 > 수치미분

뉴튼-랩슨 방법

미분가능한 함수 f(x)의 해를 수치적으로 접근해 근사해를 구하는 방법

컴퓨터를 이용해 계산한다.

과정 및 공식

  1. f(x)의 한 점 ( a, f(a) ) 에서 접선의 기울기를 갖는 f`(x)의 절편을 찾는다.

    이 절편이 (b, 0)이라고 하자.

  2. b에서의 함수 값 f(b)가 0에 근접한지 판단한다.

  3. 만약 허용오차 안이라면 근사해로 채택

    아니라면 점 ( b, f(b) ) 에서 다시 1~3 과정 반복

x_n = x_{n-1} - \dfrac{f(x_{n-1})} {f^{\prime}(x_{n-1})}

주의할 점

  • 초기값에 따라 근사해가 달라질 수 있다.
  • 경우에 따라 발산하는 경우도 있다.

파이썬 구현

python
import sympy as sp

x = sp.symbols('s')

f_x = x**2 - 4
f_prime = sp.diff(f_x)

x_init = 5
Tolerance = 1e-6

x_tmp = x_init
i = 0

while True:
		i += 1
		a = float(f_x.subs(x, x_tmp)) / float(fp_x.subs(x, x_tmp))
		x_numeric = float(x_tmp) - a
		error = f_x.subs(x, x_numeric)

		if error <= tolerance:
				break
		x_tmp = x_numeric

print('반복횟수 :' + str(i))
print("근사해 :" + str(x_numeric))