뉴튼-랩슨법으로 방정식의 해 구하기

뉴튼-랩슨법으로 방정식의 해 구하기

f(x) 방정식의 해를 뉴튼-랩슨법(Newton Raphson's method)으로 구해보겠습니다. 뉴튼-랩슨법은 최초 값 x₁을 가정해야 합니다. x₁을 대입하여 f(x₁)를 구합니다. f(x₁)의 값이 0이아니면 다음 값 x₂을 넣어야 합니다. 이 때 x₂는 아래와 같이 구합니다. \[x_2=x_1-\frac{f(x_1)}{f'(x_1)}\]여기서 f'(x₁)은 f(x)를 직접미분하여 x₁를 대입하여 구할 수 있고 다음과 같은 개념을 이용하여 구할 수 있습니다. (dx는 아주 미소한 값을 말하고  f'(x)는 아주 미소한 값변화에 대한 변화율 즉 미분이 됩니다)

\[f'(x)=\frac{f(x+dx)-f(x)}{dx}\]
\[f'(x_1)=\frac{f(x_1+dx)-f(x_1)}{dx}\]
이제 f'(x₁)를 구해서 x₂도 구합니다. 다시 f(x₂) 계산하여 0인지 확인하고, 아니면 x₃을 위와 같은 방법으로 대입하여 동일하게 확인합니다. 반복적으로 계산 및 확인하여 n번째 x에서 0에 거의 근접하게 되면 그 값이 방정식의 해가 됩니다.
 
아래에 예를 들어 보겠습니다. 3차 방정식이 있습니다.
\[f(x)=2x^3+3x^2+5x+850\]
 
x₁ = 30으로 가정합니다.
\[f(x_1)=2(30)^3+3(30)^2+5(30)+850 = 57700.00000\]
0 에서 한참 먼 값이 나왔네요. x₂를 구하기 위해 먼저 f'(x₁)을 구해야 하고 이를 위해 f(x₁+dx)를 구해야 합니다. dx는 미소한 값 0.00001으로 사용하겠습니다.
\[f(x_1+dx)=f(30+0.00001)\]
\[=2(30.00001)^3+3(30.00001)^2+5(30.00001)+850 = 57700.055850\]
\[f'(x_1)=\frac{f(x_1+dx) - f(x_1)}{dx}=\frac{57700.055850 - 57700.00000}{0.00001}=5585.001830\]
\[x_{2}=x_1 - \frac{f(x_1)}{f'(x_1)}=30 - \frac{57700.055850}{5585.001830}=19.6687590\]
f(x₂) 를 구해보면
\[f(x_2)=f(19.6687590)=17327.03937\]
아직 답이 0가까이 가질 못 구했습니다.  x₃ 부터 계속 반복해 보면
\[x_3=12.5796411\]
\[f(x_3)=f(12.5796411)=5369.03054\]
... ... ...
\[x_{10}=-7.9350620\]
\[f(x_{10})=f(-7.9350620)=-0.04534\]
\[x_{11}=-7.9349267\]
\[f(x_{11})=f(-7.9349267)=0.00000\]
해가 찾아졌습니다. x=-7.9349267 입니다. 이상의 방법은 초기값(x₁)과 dx값에 따라 반복횟수가 달라집니다. 엑셀로 확인할 수 있도록 아래 링크시켰습니다.

댓글

Designed by JB FACTORY