方程式の解を数値的に求める方法として有名なニュートン法は、非常に高速に収束する手法として知られています。しかし、どんな関数でも同じように速く解に近づくわけではなく、初期値や関数の性質によっては収束が遅くなったり、失敗したりする場合もあります。
この記事では、ニュートン法がどれほど効率的なアルゴリズムなのか、二次収束とは何を意味するのか、さらにニュートン法の収束速度が悪くなる具体的な関数例について分かりやすく解説します。
ニュートン法とはどのような方法なのか
ニュートン法は、方程式f(x)=0の解を近似的に求める反復法の一つです。現在の近似値で関数の接線を引き、その接線とx軸との交点を次の近似値として利用します。
ニュートン法の更新式は以下のように表されます。
x(n+1)=x(n)-f(x(n))/f'(x(n))
この計算を繰り返すことで、解に近づいていきます。特に解の近くから開始した場合、非常に少ない回数で高精度な答えを得ることができます。
ニュートン法の収束速度は二次収束で非常に高速
ニュートン法の最大の特徴は、一般的な条件下で「二次収束」と呼ばれる高速な収束を示すことです。
一次収束の場合、誤差が毎回一定の割合で減少します。例えば誤差が半分ずつになる方法では、10倍の精度を得るために多くの反復回数が必要になります。
一方、二次収束では誤差が次のステップでおおよそ現在の誤差の2乗に比例して小さくなります。例えば誤差が0.01なら、次の誤差はおよそ0.0001程度になる可能性があります。
そのため、解の近くではニュートン法は非常に急激に精度を上げることができます。
ニュートン法の実際の収束効率
例えば平方根を求める問題でニュートン法を利用すると、数回の計算で非常に高い精度に到達します。コンピューターによる数値計算でも、この高速性が大きな利点となっています。
単純な例として、x²-2=0の解を求める場合、初期値を1としてニュートン法を適用すると、以下のように急速に√2へ近づきます。
| 反復回数 | 近似値 |
|---|---|
| 0回 | 1 |
| 1回 | 1.5 |
| 2回 | 1.416666… |
| 3回 | 1.414215… |
わずか数回で小数点以下数桁が正確になることが分かります。このような高速性がニュートン法が広く利用される理由です。
ニュートン法が最悪の収束をするケース
しかし、ニュートン法は万能ではありません。特定の関数や初期値では、収束速度が非常に悪くなる場合があります。
代表的な例として、重根を持つ関数があります。例えばf(x)=x²では、解x=0は2重根です。この場合、通常のニュートン法では二次収束ではなく一次収束になります。
f(x)=x²に対するニュートン法は、
x(n+1)=x(n)-x(n)²/(2x(n))=x(n)/2
となります。つまり、毎回誤差が半分になるだけで、ニュートン法本来の高速な二次収束が失われます。
さらに収束しない危険な関数例
ニュートン法では、収束速度が遅いだけでなく、まったく解に近づかない場合もあります。
例えばf(x)=x³-2x+2という関数では、初期値によってニュートン法が周期的な振動を起こし、同じ値を繰り返して収束しないことがあります。
このような例では、関数の形と初期値の組み合わせによって接線近似が適切な方向へ進まなくなります。ニュートン法は局所的には非常に強力ですが、大域的には必ず成功する方法ではありません。
ニュートン法の収束を悪化させる原因
ニュートン法がうまく働かない主な原因には、いくつかのパターンがあります。
- 初期値が解から遠すぎる
- 導関数f'(x)が0または非常に小さい
- 解が重根になっている
- 関数の形が複雑で接線近似が外れる
例えば、f'(x)が小さい場所では更新式の分母が小さくなるため、大きく飛んだ値へ移動することがあります。その結果、解から遠ざかったり、発散したりする場合があります。
実際の数値計算では、ニュートン法単独ではなく、二分法や割線法などと組み合わせて安定性を高めることもあります。
ニュートン法はどれくらい効率がよい方法なのか
ニュートン法は、解の近くという条件が満たされれば、数値計算法の中でもトップクラスに高速な方法です。二次収束によって、少ない反復回数で非常に高い精度へ到達できます。
一方で、最悪の場合には一次収束まで低下したり、まったく収束しなかったりすることもあります。そのため、「常に高速な方法」ではなく、「条件が整ったときに非常に強力な方法」と考えるのが適切です。
まとめ:ニュートン法は高速だが関数と初期値が重要
ニュートン法は一般的な状況では二次収束を示し、誤差を急速に減らせる非常に効率の良い数値解法です。特に解の近くから開始した場合、その性能は圧倒的です。
しかし、重根を持つ関数や特殊な初期値では収束速度が低下し、場合によっては発散することもあります。f(x)=x²のような重根の例や、周期的に振動する関数の例は、ニュートン法の弱点を示す代表例です。
ニュートン法を効果的に使うには、アルゴリズムの速さだけを見るのではなく、関数の性質や初期値の選び方を理解することが重要です。


コメント