이번글은
2022.06.12 - [수학의 재미/아름다운 이론] - 해를 향하여 #1 : Bisection Method
해를 향하여 #1 : Bisection Method
이번 글에서는 해 찾기 방법을 소개할까 합니다. 그 중 널리 쓰이는 방법이 바로 Bisection Method (이분법) 방법입니다. 이어지는 내용을 보시면 알겠지만, 야구의 rundown과 유사합니다. Bisection Method
sine-qua-none.tistory.com
에서 이어집니다. 함수 f(x)가 있을 때,
f(x)=0
의 해를 구하는 방법입니다.

저번 글에서는 bisection method를 설명하였습니다. 이번 글에서는 접선의 방정식을 구하는 개념이 등장합니다. 따라서 함수 f(x)가 미분 가능하다는 조건이 필요합니다.

위와 같은 함수의 개형이 있다고 합시다. 오렌지색의 해를 구하는 것이 우리의 목적입니다. 해를 구하는 과정은 다음과 같습니다.
1. 초기값 x0 한 점을 아무 데나 찍어봅니다.

그러면 함수 위의 점 (x0,f(x0)) 이 있을 것입니다.
2. 함수위의 점 (x0,f(x0)) 에서 접선을 그려 이것의 x절편을 x1이라 합니다.

3. 다시 함수위의 점 (x1,f(x1))에서 접선을 그려 접선의 x절편을 x2 라 합니다.

4. 이 과정을 반복합니다. 언제까지 하냐면, 해를 구하는 사람의 tolerance를 허용할 때까지 합니다.
bisection method와 마찬가지로 아주 정확한 해를 구할 수는 없습니다. 다만 이 정도면 충분하다 싶은 tolerance가 있죠.
위 그림처럼 x0,x1,x2,⋯ 이렇게 x를 구해 나가면서
|f(xn)|<tolerance
가 되는 n에서 멈추면 되는 것입니다.
점화식으로 표현하여 볼까요? xn에서 xn+1를 얻어내는 과정입니다.
점 (xn,f(xn))에서의 접선의 방정식은
y−f(xn)=f′(xn)(x−xn)
입니다. x절편을 구하기 위해 y=0을 대입하면
x=xn−f(xn)f′(xn)
입니다. 이것이 바로 xn+1 인 것이죠. 따라서 정리하면
xn+1=xn−f(xn)f′(xn) , x0:initial value
python code를 보겠습니다. bisection code처럼 멋진 code를 발견하여 그대로 첨부하겠습니다.
import math
import numpy as np
import matplotlib.pyplot as plt
def my_newton(f, df, x0, tol):
# output is an estimation of the root of f
# using the Newton Raphson method
# recursive implementation
if abs(f(x0)) < tol:
return x0
else:
return my_newton(f, df, x0 - f(x0)/df(x0), tol)
if __name__ == '__main__':
f = lambda x: x ** 2 - 2
f_prime = lambda x: 2 * x
estimate = my_newton(f, f_prime, 1.5, 1e-6)
print("estimate =", estimate)
print("sqrt(2) =", np.sqrt(2))
달리 설명할 부분은 없고
return my_newton(f, df, x0 - f(x0)/df(x0), tol)
에 바로 점화식(1)이 쓰인 것입니다.
위 예제는 f(x)=x2−2=0 의 해를 구한 것이므로 당연히 해는 √2입니다. 이제 결과를 볼까요?
estimate = 1.4142135623746899
sqrt(2) = 1.4142135623730951
Process finished with exit code 0
estimate가 Newton-Raphson 방법으로 구한 것이고, sqrt(2)는 실제값입니다. 엄청 정확하죠?
지금까지 bisection method와 Newton-Raphson method를 알아봤습니다. 해 찾는 기법들은
- 정규분포 난수를 만들거나
- 옵션에서 내재변동성(implied volatility)을 추출하거나
등에 아주 많이 쓰이는 방법입니다. 차차 알아보기로 해요.
'수학의 재미 > 아름다운 이론' 카테고리의 다른 글
미분방정식을 연립방정식으로, FDM #1 (0) | 2022.07.22 |
---|---|
Ito의 보조정리 (0) | 2022.06.21 |
해를 향하여 #1 : Bisection Method (0) | 2022.06.12 |
테일러 전개 #2 - 다변수의 테일러 전개 (0) | 2022.05.27 |
테일러 전개 #2 : e에 대하여 (0) | 2022.05.19 |
댓글