seegongsik
工業数学 わかりやすく

ニュートン法 わかりやすく

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

方程式 f(x)=0 の根を探す仕事です。きれいな公式がない場合がほとんどです。ニュートンの方法は、いまの点で曲線に接線を引き、その直線が x 軸と交わる場所を次の推定値にします。曲線は難しくても、直線なら 0 を簡単に見つけます。式は xn+1=xn - f(xn)/f'(xn) です。これを繰り返すと、推定値は根へ滑り降ります。うまくいけば一歩ごとに正しい桁がおよそ二倍になり、だから 2 次収束と呼びます。万能ではありません。傾きが平らだと接線は推定値を遠くへ投げ、曲線が厄介だと二点を巡るか発散します。開始点が少し違うだけで別の根に落ちることもあります。安全な二分法と並べると、ニュートンの速さがどれほど前に出るかが見えます。

灰色の曲線は f(x)=x²-2 で、その根は √2≈1.414 です。開始 x0 をスライダーで決め、一歩ボタンを押すと、現在の点から金色の接線が引かれ、その接線が x 軸と交わる小さな円が次の推定値になります。押すたびに点は根へ滑り降り、下の f(x) は 0 に近づきます。曲線の代わりに、やさしい直線の 0 をたどることが核心です。最初へを押すと開始に戻ります。

同じ式の誤差を対数の棒で見ます。一本の棒が、もう一歩あとの |xn - √2| です。対数目盛なので短いほど正確で、床に届けばほぼ完全です。x0 のスライダーを動かすと、どこから始めても棒は数歩で崖のように落ちます。一歩ごとに誤差がおよそ二乗されるからです。誤差 0.1 が 0.01 になるのではなく、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) が分かれます。よい開始点と、二分法のような安全装置を混ぜることが実務の使い方です。速いニュートンと頼もしい二分法の長所を一か所に置きます。
← 工業数学 わかりやすく
このページがお役に立ったなら支援する