seegongsik
単語帳
工業数学

ニュートン法は接線で根を追う

接線の指す先へ跳んで根へ速く収束、失敗の場合と引き込み領域も

方程式 f(x)=0 の根をどう見つけるか。多くの場合きれいな公式はありません。ニュートンの答えは優雅です。今の点で曲線に接線を引き、その直線が x軸と交わる所を次の推定値にします。曲線は難しくても、直線なら自分の零点を簡単に見つけるからです。式では xn+1=xn - f(xn)/f'(xn)。これを繰り返すと推定値は根へ滑り落ちます。うまくいけば恐ろしく速い。毎歩、正確な桁数がほぼ二倍に増えます。2次収束と呼びます。しかし万能ではありません。傾きが平らな所では接線が推定値を遠くへ飛ばし、厄介な曲線では二点を巡ったり永遠に発散したりします。開始点が少し違うだけで別の根に落ちることもあります。それでも、安全で地道な二分法と並べれば、ニュートンの速さがいかに圧倒的かが一目でわかります。

灰の曲線は f(x)=x²-2、その根は √2≈1.414 です。スライダーで開始 x0 を決め、一歩ボタンを押してみてください。現在の点で金色の接線が引かれ、それが x軸と交わる所(小さな円)が次の推定値になります。押すたびに点は根へ滑り落ち、下の f(x) が0へ近づきます。曲線ではなく、易しい直線の零点を追うのが肝です。リセットで最初から見直せます。

同じ式の誤差を対数棒で見ます。各棒は一歩後の |xn - √2| です。対数スケールなので短いほど正確で、底に届けばほぼ完璧です。x0 スライダーを動かしてください。どこから始めても棒は数歩で崖のように落ちます。毎歩、誤差がほぼ二乗されるからです。誤差0.1 が0.01 ではなく、その二乗の勢いで縮みます。リードアウトの正確な桁数が毎歩倍に跳ねるのが2次収束です。

速いことは常に安全とは限りません。三つの失敗を選んでください。飛び越しは x0 が0に近く f'(x)≈0 のとき、接線がほぼ水平で推定値を画面外へ飛ばします。循環は f=x³-2x+2 を0から始めると、0 と1 を永遠に往復し根に届きません。発散は arctan のように遠くで平らになる曲線で、歩みが次第に大きくなり離れていきます。接線の矢印がどう外れるか見てください。だからニュートンには良い開始点と安全装置が要ります。

今度は f=x³-x、根は -1、0、+1 の三つです。スライダーで開始 x0 を動かすと、ニュートンがどの根へ落ちるかを色が示します。緑は -1、金は 0、青は +1、灰は発散です。帯全体が各開始点の運命を塗った地図です。中央付近はきれいに0へ向かいますが、±1/√5 のあたりでは色が髪のように細かく絡みます。そこでは開始点をほんの少し動かすだけで落ちる根が変わります。同じ単純な規則がこれほど繊細な境界を刻むのは見事です。

最後に速さを比べます。f=x²-2 を [1,2] で解き、一歩ボタン一つでニュートン(金、x0=2)と二分法(青、区間 [1,2])を同時に進めます。二分法は符号が変わる半分を毎回選び、区間を半分ずつ縮めます。安全ですが一歩で桁数が約0.3個ずつ、ゆっくり増えます。ニュートンは同じ歩数で誤差が急降下します。リードアウトの二つの誤差を比べてください。三、四歩でニュートンは二分法をはるか後方に引き離します。安全性は二分法、速さはニュートン。実務では両者を混ぜて使います。

実際に使うニュートン法は f(x)=0 の根を接線で追います。現在の点の接線が x軸と交わる所を次の推定値にします。公式は xn+1=xn - f(xn)/f'(xn)。うまくいけば2次収束で、正確な桁数が毎歩ほぼ倍に増え、毎回誤差を半分にするだけの二分法をはるか後方に置き去りにします。ただし万能ではありません。f' が0に近いと遠くへ飛び、厄介な曲線では循環や発散を起こし、開始点で落ちる根が変わります(basin)。だから良い開始点と、二分法のような安全装置を混ぜて使うのが実務の知恵です。速いニュートンと頼れる二分法、両者の長所を合わせるのです。
工業数学
このページがお役に立ったなら支援する