ニュートン法

方程式の解を、接線をたどって数値で求める方法をニュートン法といいます1f(x)=x22f(x) = x^2 - 2 の正の解、つまり 2\sqrt{2} を求めます。

接線をたどる

x0=2x_0 = 2 から始めます。f(2)=2f(2) = 2f(2)=4f'(2) = 4 なので、(2,2)(2, 2) での接線は y=4x6y = 4x - 6 です。この接線が xx 軸と交わるのは x=1.5x = 1.5 で、これを次の値 x1x_1 にします。

同じことを繰り返します。f(1.5)=0.25f(1.5) = 0.25f(1.5)=3f'(1.5) = 3 なので接線は y=3x174y = 3x - \dfrac{17}{4}xx 軸との交点は x2=1712=1.41667x_2 = \dfrac{17}{12} = 1.41667 です。

一般の式

接線 y=f(xn)+f(xn)(xxn)y = f(x_n) + f'(x_n)(x - x_n)xx 軸と交わる点を求めます。

xn+1=xnf(xn)f(xn)x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}

f(x)=x22f(x) = x^2 - 2 では、次のように整理できます。

xn+1=xnxn222xn=12(xn+2xn)\begin{align*} x_{n+1} &= x_n - \frac{x_n^2 - 2}{2x_n} \\ &= \frac{1}{2}\left(x_n + \frac{2}{x_n}\right) \end{align*}

いまの値と 2xn\dfrac{2}{x_n} の平均をとる形になります。xnx_n2\sqrt{2} より大きければ 2xn\dfrac{2}{x_n} は小さくなるので、平均は必ず間に入ります。

収束の速さ

nnxnx_n誤差
00220.5860.586
111.51.50.0860.086
221.4166671.4166670.00250.0025
331.4142161.4142160.0000020.000002

2=1.414214\sqrt{2} = 1.414214 に対して、正しい桁数が 11 回ごとにほぼ倍になります。

うまくいかない場合

  • f(xn)=0f'(x_n) = 0 になると接線が水平になり、次の値が決まらない
  • 初期値が解から遠いと、別の解へ飛ぶことがある
  • 値が振動して収束しないこともある

方法の中身

接線が曲線の一次近似であることが、この方法の中身です。曲線を直線に置きかえて解き、得られた答えのところでまた置きかえ直す。それを繰り返しています。

グラフの放物線が y=x22y = x^2 - 222 本の直線が x0=2x_0 = 2x1=1.5x_1 = 1.5 での接線で、大きな点は接点と、接線が xx 軸を切る点です。

  1. Newton's method、Wikipedia