科学

ニュートン-ラフソン法の収束条件は?発散する場合も解説!(収束の速さ:接線の傾き:導関数との関係など)

ニュートン-ラフソン法の収束条件
当サイトでは記事内に広告を含みます
いつも記事を読んでいただきありがとうございます!!! これからもお役に立てる各情報を発信していきますので、今後ともよろしくお願いします(^^)/

ニュートン-ラフソン法は、方程式の近似解を効率よく求めるために広く使われる数値計算法です。

初期値を一つ与えるだけで計算を繰り返せる手軽さがある一方、条件によっては解に近づかず、発散したり別の解へ移ったりすることがあります。

収束するかどうかは、関数の形、接線の傾き、導関数の値、初期値の位置と深く関係します。

本記事では、ニュートン-ラフソン法が収束する基本条件から、収束の速さ、発散の代表例、計算を安定させる工夫までを順番に説明します。

ニュートン-ラフソン法の収束条件

ニュートン-ラフソン法の収束条件

それではまず、ニュートン-ラフソン法が解へ近づくための条件について解説していきます。

真の解の近くに置く初期値

ニュートン-ラフソン法が安定して収束するために最も重要なのは、初期値を求めたい解の近くに置くことです。

方程式をf(x)=0と表したとき、真の解をαとすると、初期値x0がαの周辺にあるほど、計算は期待どおりに進みやすくなります。

この方法は、現在の点における接線とx軸の交点を次の値として採用します。

xn+1=xn-f(xn)/f'(xn)

この漸化式を繰り返し、f(xn)が十分に小さくなった時点で近似解と判断します。

初期値が解から遠いと、接線が思わぬ位置でx軸と交わり、次の計算値が大きく飛ぶ場合があります。

特に複数の解を持つ関数では、初期値によって収束先が変わることも珍しくありません。

解析的に解の位置を絞れない場合は、グラフの概形や符号変化を確認し、候補となる区間を先に探すことが実用的です。

導関数が零にならない条件

反復式にはf'(xn)で割る計算が含まれるため、導関数が零になる点ではそのまま計算できません。

また、導関数の絶対値が零に非常に近い場合も、割り算によって更新量が極端に大きくなり、不安定になりやすい傾向があります。

真の解αにおいてf'(α)が零ではないことは、局所的な収束を考えるうえでの代表的な条件です。

これは、解の近くでグラフがx軸を横切るか、十分な傾きを持って接していることを意味します。

反対に、グラフがx軸にほぼ水平に触れるような場所では、接線から次の点を求める操作が敏感になります。

ニュートン-ラフソン法では、解の候補付近でf'(x)が小さすぎないかを確認することが重要です。

導関数が小さい領域を初期値に選ぶ場合は、反復回数の上限や更新量の制限を設けると安全性が高まります。

なお、導関数が零であることが必ず失敗を意味するわけではありません。

ただし通常のニュートン-ラフソン法では二次収束が失われ、収束が著しく遅くなる、あるいは式そのものが定義できなくなる点に注意が必要です。

導関数と二階導関数の連続性

理論的な収束条件を扱う際には、関数f(x)が解の近傍で微分可能であり、導関数が十分になめらかであることも大切です。

一般には、f'(x)が連続で、二階導関数f”(x)も解の周辺で大きく乱れないことが望ましいと考えられます。

二階導関数はグラフの曲がり方を表す量です。

曲率が急激に変化する関数では、現在地の接線が近傍のグラフをうまく代表できず、次の更新値に誤差が入りやすくなります。

収束領域を見積もる目安として、ある区間でf'(x)が零にならず、f”(x)が有界であるかを確認する方法があります。

このとき、接線近似が大きく崩れにくくなり、初期値から解へ向かう道筋を作りやすくなります。

導関数は更新方向を決め、二階導関数は接線近似の信頼性に関わると整理すると理解しやすいでしょう。

接線と反復計算の仕組み

続いては、接線の傾きが反復計算にどのように働くかを確認していきます。

接線のx切片による更新

ニュートン-ラフソン法の考え方は、曲線そのものの解を直接追うのではなく、現在の点で引いた接線のx切片を次の候補にすることです。

現在の近似値をxnとすると、その点を通る接線は関数値f(xn)と接線の傾きf'(xn)から決まります。

接線をx軸まで延長した交点がxn+1です。

曲線が解の近くでなめらかなら、接線の交点も真の解に近い位置へ現れます。

この局所的な近似を何度も改善するため、適切な条件では少ない反復回数で高い精度を得られます。

ただし接線はあくまでその一点の情報に基づく直線です。

遠くまで外挿すると実際の曲線との差が大きくなり、予想外の位置へ移動する可能性があります。

傾きの大きさと更新幅

更新量は-f(xn)/f'(xn)で表されます。

したがって関数値が同じ程度でも、導関数の絶対値が小さければ更新幅は大きくなります。

傾きが緩い場所で接線を引くと、x軸との交点が遠くなりやすいためです。

状況 接線の特徴 反復計算への影響
導関数の絶対値が十分大きい 接線が比較的急 更新幅が過大になりにくい
導関数の絶対値が小さい 接線がほぼ水平 次の値が大きく飛ぶおそれ
関数値が小さい x軸に近い点 解の近傍なら高精度化しやすい
曲率が大きい 曲線と接線の差が出やすい 接線近似の誤差が増えやすい

小さな導関数は、大きな一歩につながるという点を覚えておくと、発散の原因を見つけやすくなります。

プログラムでは、導関数の絶対値が設定値より小さくなった場合に計算を停止し、別の手法へ切り替える設計がよく採用されます。

接線近似が有効になる範囲

接線は曲線のごく近くではよい近似になりますが、離れた位置まで正確さを保証するものではありません。

このため、ニュートン-ラフソン法は局所的な数値解法と呼ばれます。

たとえば初期値が解の近くなら、接線と曲線の差は小さく、反復のたびに近似精度が大きく改善します。

一方で、初期値が遠い場合や、途中で傾きが小さい領域に入った場合は、接線が別の枝や別の解の方向を示すことがあります。

f(x)=x2-2の場合、正の初期値から始めれば正の解√2へ近づきやすくなります。

更新式はxn+1=(xn+2/xn)/2となり、平方根を求める反復計算としても知られています。

この例ではxが零に近づくと2/xの項が大きくなるため、初期値を零に選べません。

式の形だけでなく、計算途中で通る領域まで想定することが、実装時には欠かせない視点です。

収束の速さと誤差評価

続いては、ニュートン-ラフソン法が速いといわれる理由と、誤差の見方を確認していきます。

二次収束の意味

単純根αの近くで条件が整うとき、ニュートン-ラフソン法は二次収束を示します。

二次収束とは、現在の誤差がおおむね二乗された大きさまで減少する性質です。

誤差en=xn-αを使うと、解の十分近くでは次のような関係が成り立ちます。

|en+1|≒C|en|2

Cは関数の導関数と二階導関数により決まる定数です。

たとえば誤差が10-2程度まで小さくなった後には、次の反復で10-4程度、その次には10-8程度へ進むことが期待できます。

実際の値は関数や丸め誤差に左右されますが、解の近くに入ってから桁数が急に増えることが二次収束の特徴です。

二分法のように区間を確実に半分ずつ縮める手法と比べると、局所的には圧倒的に少ない反復で済む可能性があります。

単純根と重根の違い

根の重複度は収束速度を大きく左右します。

単純根とは、f(α)=0であり、かつf'(α)が零ではない根です。

これに対して重根では、f(α)=0であると同時にf'(α)=0となります。

代表例としてf(x)=(x-a)mを考えると、aはm重根です。

通常のニュートン-ラフソン法を重根に適用すると、二次収束ではなく一次収束に近い遅い挙動になります。

近似値が解へ近づいていても、最後の数桁がなかなか改善しない場合は、重根や導関数の小ささを疑うとよいでしょう。

単純根では高速な二次収束が期待できますが、重根では通常の反復式だけでは速度が落ちます。

重複度mが既知なら、更新量にmを掛ける修正式を利用する選択肢があります。

重複度が不明なケースでは、関数値だけでなく導関数の変化も観察し、収束状況を記録することが役立ちます。

停止条件と実務上の精度

計算をいつ終了するかは、数値計算の品質を左右する重要な判断です。

よく使われる停止条件には、関数値の絶対値が小さいこと、更新値の差が小さいこと、反復回数が上限に達したことがあります。

停止条件 確認する内容 注意点
|f(xn)|が小さい 方程式をどの程度満たすか 傾きが小さいとxの誤差が残る場合があります
|xn+1-xn|が小さい 更新量が収まったか 停滞しているだけの可能性があります
相対誤差が小さい 値の大きさに応じた変化量 解が零付近では絶対誤差も併用します
反復回数の上限 無限反復の防止 上限到達時は収束失敗として扱います

一つの停止条件だけに頼るより、関数値と更新量を併用するほうが堅実です。

丸め誤差が支配的になる領域では、反復を続けても精度が上がらないことがあります。

要求精度に見合う許容誤差をあらかじめ決めることが、過剰な計算を避けるポイントです。

発散と不安定化の代表例

続いては、ニュートン-ラフソン法が発散する場合や、安定しない場合を確認していきます。

初期値が遠い場合

初期値が求めたい解から遠い場合、接線の交点が大きく離れた場所へ移り、反復列が解の周辺へ戻らないことがあります。

複雑な曲線では、最初の一回で別の領域へ飛び、その後に全く異なる根へ収束するケースもあります。

これは計算ミスではなく、ニュートン-ラフソン法が局所情報だけを使う手法であることから起こる現象です。

初期値ごとの収束先を色分けして表すと、境界が複雑な模様になる関数もあります。

そのため複数解を持つ非線形方程式では、単一の初期値だけで結果を判断しない姿勢が大切です。

事前にグラフを描けるなら、x軸との交点、極値、導関数が小さい地点を把握してから開始すると安心です。

周期振動と往復現象

発散の形は、値が無限に大きくなるものだけではありません。

二つ以上の値を往復し続け、どの解にも近づかない周期振動も代表的な失敗例です。

たとえばある点xaからの更新先がxbであり、xbからの更新先が再びxaになると、二周期の反復列が生じます。

この場合、更新値の差は小さくならず、関数値も零に近づかないまま計算が続きます。

反復回数だけでなく、直近の値が繰り返されていないかを監視すると、周期振動を早く発見できます。

収束判定では、関数値と更新量に加え、反復値の履歴を確認する方法が有効です。

同じ値の往復や更新量の増大が見られたら、その初期値での反復を打ち切る判断が必要になります。

数値の表示桁数が少ないと、異なる値が同じように見える場合もあります。

内部計算の精度を保ちつつ、十分な桁数で履歴を出力する設計が望まれます。

導関数が小さい領域への進入

反復の途中で導関数が小さい領域へ入ると、初期値が比較的よくても急に不安定になることがあります。

分母であるf'(xn)が小さくなるため、関数値がわずかでも更新量が大きくなるからです。

特に極大点や極小点の近くでは導関数が零になりやすく、接線がほぼ水平になります。

その接線は遠方でx軸と交わるため、計算値は解の候補領域から外れやすくなります。

関数に特異点や定義域の境界がある場合、飛んだ先で関数や導関数を評価できなくなることもあります。

このような問題を防ぐには、更新量をそのまま受け入れず、許容範囲を超える移動を抑える工夫が必要です。

導関数の小ささは、発散の予兆として扱うとよいでしょう。

収束を安定させる実践方法

続いては、発散を避けながらニュートン-ラフソン法を使うための実践方法を確認していきます。

グラフと符号変化による初期値選定

最も基本的な対策は、初期値を無作為に決めないことです。

関数のグラフを確認できる場合は、根の位置、極値、急激な変化、定義されない点を先に把握します。

グラフが使えない場合でも、複数点で関数値を計算し、符号が変わる区間を探す方法があります。

連続な関数であれば、符号が正から負、または負から正へ変わる区間には少なくとも一つの根が存在します。

その区間の中央付近や、関数値の絶対値が小さい点を初期値候補にすると、収束の可能性を高められます。

複数の初期値から試行し、得られた根と反復回数を比較する方法も、設計計算や解析業務では有効です。

減速係数を用いるダンピング

標準的な更新式では、接線が示す移動量をすべて採用します。

しかし更新幅が大きすぎる場合は、移動量に0より大きく1以下の係数を掛けて、一歩を小さくする方法があります。

xn+1=xn-λf(xn)/f'(xn)

ここでλは減速係数であり、通常は0より大きく1以下に設定します。

λを小さくすると一回ごとの進みは遅くなりますが、急激な飛びを抑えやすくなります。

関数値の絶対値が減少するかを確認しながらλを調整する手順は、ラインサーチを伴うニュートン法として利用されます。

速さよりも安定性を優先したい場面では、ダンピングが有力です。

ただし係数を常に小さくしすぎると、ニュートン-ラフソン法本来の高速な収束を活かせません。

二分法との併用

確実性を重視するなら、二分法とニュートン-ラフソン法を組み合わせる方法が実用的です。

まず符号変化のある区間を二分法で保持し、ニュートン法による更新値が区間外へ出た場合には二分法の更新へ戻します。

この方式では、ニュートン法が順調なときは高速に進み、危険な更新が出たときは区間の保証を利用できます。

初期段階では二分法で安全に根の周辺へ近づき、十分に近くなってからニュートン-ラフソン法へ切り替える方法が効果的です。

収束速度と頑健性の両方を求める数値計算で、よく使われる考え方です。

実装では、区間の端点における関数値の符号、ニュートン更新値の範囲、導関数の大きさを毎回確認します。

このように安全装置を持たせることで、単純な反復式だけでは扱いにくい関数にも対応しやすくなります。

ニュートン-ラフソン法の収束条件のまとめ

ニュートン-ラフソン法は、方程式f(x)=0の解を接線のx切片で次々に近似する数値計算法です。

真の解の近くに初期値を置き、解の周辺で導関数が零にならず、関数がなめらかであれば、高速な二次収束が期待できます。

収束の速さは大きな魅力ですが、初期値への依存性も大きい点が重要です。

導関数が小さい場所では更新量が大きくなり、発散、周期振動、別の根への収束といった現象が起こることがあります。

実際の計算では、関数のグラフや符号変化から初期値を選び、導関数の値、更新量、関数値、反復回数をあわせて監視しましょう。

必要に応じてダンピングや二分法との併用を取り入れれば、ニュートン-ラフソン法をより安全かつ効果的に活用できます。