ニュートン-ラフソン法とは?仕組みや計算式をわかりやすく解説(数値解析・収束条件・アルゴリズムなど)
ニュートン-ラフソン法とは?仕組みや計算式をわかりやすく解説(数値解析・収束条件・アルゴリズムなど)
ニュートン-ラフソン法は、方程式の解をコンピュータで近似的に求める数値解析の代表的な手法です。
関数の接線を利用して解に近づくため、条件が整えば少ない計算回数で高い精度を得られます。
一方で、初期値や微分係数の状態によっては収束しない場合もあるため、仕組みと注意点をあわせて理解することが大切です。
ニュートン-ラフソン法の意味と結論

それではまずニュートン-ラフソン法の意味と、利用時に押さえたい結論について解説していきます。
非線形方程式の近似解を求める方法
ニュートン-ラフソン法とは、方程式 f(x)=0 を満たす値、つまり関数の根を反復計算によって求める方法です。
解析的に解ける二次方程式とは異なり、三角関数、指数関数、対数関数、複雑な多項式を含む方程式では、解を式だけで表せないことが少なくありません。
そのようなときに、解に近いと考えられる初期値を用意し、計算結果を更新し続けて近似解へ近づけます。
数値計算の分野ではニュートン法、Newton method、ニュートン反復法と呼ばれることもあります。
名称はアイザック・ニュートンとジョゼフ・ラフソンに由来し、工学、物理学、金融計算、機械学習の最適化など幅広い領域で活用されています。
接線とx軸の交点を繰り返し使う考え方
この手法の中心となる考え方は、曲線そのものを扱う代わりに、現在の位置で引いた接線を使うことです。
ある推定値 xn における関数の接線は、元の曲線の近くでは曲線の形をよく近似します。
そこで、その接線がx軸と交わる位置を次の推定値 xn+1 とします。
解の近くでは曲線と接線のずれが小さくなるため、更新を重ねるほど根へ近づきやすくなります。
接線の傾きから修正量を計算する点が、ニュートン-ラフソン法の大きな特徴です。
ニュートン-ラフソン法は、解の近くに適切な初期値を置ければ高速に収束しやすい手法です。
ただし、初期値が不適切な場合や接線の傾きが小さい場合には、解から遠ざかることもあります。
実務で求められる判断のポイント
実務で重要なのは、計算式を暗記することではなく、どのような条件なら信頼できる結果になりやすいかを判断することです。
特に、関数が微分可能か、初期値を妥当に設定できるか、求める精度と計算回数の上限をどう決めるかが重要になります。
また、得られた値をそのまま採用するのではなく、f(x) の値が十分にゼロへ近いかを確認する必要があります。
収束判定と異常時の処理まで含めて設計することで、計算アルゴリズムとしての信頼性が高まるでしょう。
計算式と導出の考え方
続いてはニュートン-ラフソン法の計算式と、その導出の考え方を確認していきます。
基本となる反復式
ニュートン-ラフソン法の基本式は、次のように表されます。
xn+1 = xn - f(xn) / f′(xn)
xn は現在の推定値、f′(xn) はその点での微分係数です。
式の右側にある f(xn) は、現在の推定値が根からどの程度ずれているかを示します。
それを接線の傾きである f′(xn) で割ることで、x方向にどれだけ修正すべきかを求めます。
更新式は一見短いものの、関数値と導関数の両方が必要になる点が特徴です。
導関数を簡単に計算できる問題では非常に使いやすく、反復法のなかでも強力な選択肢になります。
テイラー展開から理解する導出
式の意味を理解するには、現在の推定値の周辺で関数を一次式として近似する考え方が役立ちます。
xn の近くにある次の値 xn+1 について、関数はおおよそ f(xn)+f′(xn)(xn+1-xn) と表せます。
ここで次の推定値が根であると仮定し、この近似式をゼロと置いて整理すると、基本となる更新式が得られます。
二次以上の項を省略しているため、解から離れた場所では近似の誤差が大きくなりやすい点に注意が必要です。
反対に、根の近くでは一次近似がよく働き、更新の精度が急速に上がります。
微分係数が果たす役割
微分係数は、関数がその地点でどの程度の勢いで増減しているかを示す値です。
傾きが大きければ、関数値のずれを比較的小さなx方向の移動で修正できます。
一方、傾きがゼロに近いと、割り算の結果が非常に大きくなり、次の推定値が大きく飛んでしまいます。
そのため、f′(xn) が小さすぎる場合は計算を停止したり、別の手法へ切り替えたりする設計が必要です。
分母となる微分係数の監視は、安定した実装に欠かせません。
具体例による反復計算
続いては具体例を通じて、反復計算がどのように進むのかを確認していきます。
平方根を求める計算例
たとえば、2の平方根を求める場合を考えます。
求めたい値を x とすると、x2-2=0 を満たせばよいため、関数は f(x)=x2-2 です。
この導関数は f′(x)=2x になります。
xn+1 = xn - (xn2-2) / 2xn
整理すると xn+1 = (xn+2/xn)/2 です。
初期値を 1.5 とすると、次の値はおよそ 1.4167 になります。
さらに更新すると 1.4142 に近づき、2の平方根の近似値を短い回数で得られます。
このように、正しい解の近くで始めると、誤差が目立って小さくなる様子を確認できます。
計算過程を表で確認する方法
反復法を理解するときは、各回の推定値、関数値、更新量を表にまとめるとわかりやすくなります。
| 反復回数 | 推定値 x | 関数値 x2-2 | 更新後の推定値 |
|---|---|---|---|
| 初期値 | 1.500000 | 0.250000 | 1.416667 |
| 1回目 | 1.416667 | 0.006944 | 1.414216 |
| 2回目 | 1.414216 | 0.000006 | 1.414214 |
| 3回目 | 1.414214 | ほぼ0 | 収束値 |
表を見ると、最初の更新で誤差が大きく減り、次の更新ではさらに細かな桁まで整っていることがわかります。
この速さは、ニュートン-ラフソン法が持つ二次収束の性質と深く関係しています。
複数の解を持つ関数での注意
方程式によっては、根が一つではなく複数存在します。
その場合、どの根に収束するかは初期値によって変わることがあります。
たとえば三次関数では、開始位置が少し変わるだけで、別の根へ向かう可能性があります。
目的とする解の近くに初期値を置くためには、グラフを描画したり、区間を事前に調べたりする方法が有効です。
複数解が想定される問題では、一つの初期値だけに頼らず、複数の開始点で検証する姿勢が求められます。
収束条件と失敗しやすいケース
続いてはニュートン-ラフソン法の収束条件と、失敗しやすいケースを確認していきます。
解の近くで発揮される二次収束
ニュートン-ラフソン法は、一定の条件を満たすと二次収束します。
二次収束とは、誤差が十分に小さくなった段階で、次の反復によって誤差のおおよその二乗に比例して小さくなる性質です。
単純な反復法や二分法と比べると、必要な反復回数が少なくなる場合があります。
ただし、この優れた性質は最初から必ず得られるものではありません。
根の周辺で関数がなめらかであり、その根が重根ではなく、導関数がゼロではないことなどが重要になります。
高速な収束を期待するには、根の近くに初期値を置き、根の周辺で微分係数が極端に小さくならないことが重要です。
収束速度だけでなく、収束する範囲を見極める視点も欠かせません。
初期値による発散と振動
初期値が解から遠い場合、接線が予想外の方向へx軸を横切り、推定値が解から離れることがあります。
更新値が二つの領域を行き来してしまう振動や、値が大きくなり続ける発散も起こり得ます。
特に曲線の形が複雑な関数では、接線近似だけでは安定して根を追えない場合があります。
こうした状況を避けるには、グラフや符号変化を使って根のありそうな範囲を先に絞る方法が有効です。
初期値は単なる開始値ではなく、計算結果を左右する設定として扱う必要があります。
重根と導関数ゼロの問題
重根とは、同じ解が複数回現れる根のことです。
たとえば f(x)=(x-a)2 のような関数では、根 a において導関数もゼロになります。
この場合、通常のニュートン-ラフソン法は二次収束を保てず、収束が遅くなる傾向があります。
また、反復の途中で導関数がゼロになると、更新式の分母がゼロとなり、計算を続けられません。
重根の可能性がある場合は、重複度を考慮した修正式を使う、あるいは別の数値解法を併用することが検討されます。
アルゴリズムと実装時の設計
続いてはニュートン-ラフソン法をプログラムで扱う際の、アルゴリズムと設計上の要点を確認していきます。
基本的な処理の流れ
実装は、初期値を設定し、関数値と微分係数を計算し、更新式で次の値を求める流れになります。
その後、更新前後の差または関数値の絶対値が許容誤差より小さいかを判定します。
条件を満たせば反復を終了し、満たさなければ新しい推定値を使って処理を繰り返します。
理論式は簡潔でも、実用的なアルゴリズムには終了条件と例外処理が必要です。
最大反復回数を設定しない実装では、収束しない問題で処理が終わらないおそれがあります。
初期値を設定します。
関数値と導関数を計算します。
微分係数が小さすぎる場合は異常として処理します。
更新式で新しい推定値を求めます。
誤差が許容範囲内なら終了し、それ以外は反復します。
収束判定に使う代表的な基準
収束判定には、推定値の変化量を見る方法と、関数値の大きさを見る方法があります。
前者では、|xn+1-xn| が十分小さいかを確認します。
後者では、|f(xn+1)| が十分小さいかを確認します。
推定値の差だけが小さくても、傾きの影響で関数値が十分にゼロへ近づいていない場合があるため、両方を確認すると安心です。
許容誤差は、必要な有効数字、入力データの精度、計算機の浮動小数点誤差を踏まえて決めます。
| 判定項目 | 確認する内容 | 主な目的 |
|---|---|---|
| 更新量 | 新旧の推定値の差 | 値の変化が落ち着いたか確認 |
| 残差 | 関数値の絶対値 | 方程式をどれだけ満たすか確認 |
| 最大回数 | 反復回数の上限 | 無限ループの防止 |
| 微分係数 | 分母の大きさ | 不安定な更新の検出 |
精度と計算コストのバランス
許容誤差を非常に小さくすれば、理論上はより細かな近似値を狙えます。
しかし、入力値そのものに誤差が含まれている場合、過度に細かな桁を求めても実務上の意味が薄いことがあります。
また、導関数の計算が高コストな問題では、反復回数が少なくても全体の処理時間が大きくなる場合があります。
数値微分を利用する場合は刻み幅の選び方も精度に影響するため、可能であれば解析的な導関数や自動微分の利用が望ましいでしょう。
必要十分な精度を定義することが、性能と信頼性を両立させる近道になります。
他の数値解法との違い
続いては他の数値解法との違いを確認していきます。
二分法との比較
二分法は、連続関数において関数値の符号が変わる区間を用意し、その区間を半分ずつ狭めて根を探す方法です。
収束速度はニュートン-ラフソン法より遅い傾向があるものの、条件を満たす区間を正しく設定できれば安定して根へ近づきます。
ニュートン-ラフソン法は微分を必要とし、初期値に敏感である一方、解の近くでは圧倒的に速くなる場合があります。
確実性を重視するなら二分法、速度を重視し導関数を利用できるならニュートン-ラフソン法が候補になります。
割線法との比較
割線法は導関数を明示的に使わず、二つの点における関数値から接線の傾きを近似する方法です。
導関数を計算しにくい問題に使える点が利点ですが、二つの初期値が必要になります。
ニュートン-ラフソン法ほどの収束速度は期待しにくいものの、微分計算の手間を減らせるため、問題によっては実用的です。
関数評価は可能でも導関数が得られない場合、割線法は有力な選択肢になるでしょう。
利用可能な情報に応じて手法を選ぶことが、数値解析の基本です。
ハイブリッド法という実践的な選択
実際のソフトウェアでは、一つの手法だけを使わず、複数の解法を組み合わせることがあります。
たとえば初期段階では二分法で根を含む区間を安全に狭め、十分に近づいた時点でニュートン-ラフソン法へ切り替える方法です。
この構成なら、二分法の安定性とニュートン法の高速性を両立しやすくなります。
更新値があらかじめ決めた区間の外へ出た場合は、ニュートン法の更新を採用せず、二分法の更新へ戻す設計もあります。
不確実な入力を扱う業務システムでは、こうした安全策を組み込んだ反復計算が特に重要です。
ニュートン-ラフソン法は万能ではありません。
高速性を活かしながら、二分法や割線法との使い分け、最大反復回数、残差確認を組み合わせることが実務的な運用につながります。
まとめ
ニュートン-ラフソン法は、関数の接線を利用し、方程式の根を反復的に求める数値解析手法です。
基本式は xn+1=xn-f(xn)/f′(xn) であり、現在の誤差を接線の傾きで補正する考え方に基づいています。
解の近くで適切な初期値を与えられれば、少ない反復回数で高精度な近似解を得られる可能性があります。
その反面、初期値が悪い場合、導関数がゼロに近い場合、重根を扱う場合には、発散や収束速度の低下が起こり得ます。
実装では、更新量と残差による収束判定、最大反復回数、微分係数の監視を用意することが大切です。
二分法や割線法との違いを理解し、問題の性質に応じて組み合わせれば、ニュートン-ラフソン法は多くの計算課題で頼りになる手法となるでしょう。