科学

ニュートン-ラフソン法とは?意味や仕組みは?(数値解析:反復法:方程式の近似解など)

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

ニュートン-ラフソン法は、方程式の解を数値的に求める代表的な反復法です。

解析的に解けない方程式でも、初期値と微分を利用して近似解を少しずつ更新できるため、工学、物理、情報科学、金融計算など幅広い分野で活用されています。

一方で、初期値の選び方や関数の形によっては計算がうまく進まないこともあります。

この記事では、ニュートン-ラフソン法の意味、計算の仕組み、具体例、収束条件、実装時の注意点まで、数値解析の基礎として理解しやすい形で解説します。

ニュートン-ラフソン法の意味

ニュートン-ラフソン法の意味

それではまずニュートン-ラフソン法の意味と結論にあたる考え方について解説していきます。

接線を利用する反復計算

ニュートン-ラフソン法とは、関数のグラフに引いた接線を使い、方程式の解に近づいていく数値解析の反復法です。

求めたい対象は、一般に f(x) = 0 を満たす x です。

関数の値がゼロになる位置はグラフが横軸と交わる点であり、この点を根、零点、方程式の解などと呼びます。

二次方程式のように公式で解ける場合もありますが、高次方程式、三角関数、指数関数、対数関数を含む式では、厳密な解を簡単に書けないケースが少なくありません。

そのような場面で、解に近そうな値から出発し、より正確な値へ更新を繰り返す手法がニュートン-ラフソン法です。

近似解を高速に絞り込む特徴

この方法の大きな特徴は、条件が整ったときの収束の速さにあります。

解の近くで適切な初期値を設定できれば、誤差がおおむね二乗の勢いで小さくなる二次収束が期待できます。

たとえば誤差が 0.1 から 0.01、さらに 0.0001 のように急速に減ることがあり、単純に少しずつ探索する方法より計算回数を抑えられる可能性があります。

ただし、いつでも高速とは限りません。

関数の傾きが小さい地点や、根から遠い初期値では、更新値が大きく飛んだり、別の根へ近づいたりする場合があります。

方程式の近似解を求める位置づけ

ニュートン-ラフソン法は、答えを一度で求める公式ではなく、近似値を改善し続ける計算手順です。

したがって、計算結果には許容誤差、最大反復回数、停止条件といった設定が必要になります。

数値解は有限桁の近似値であることを理解しておくと、手法の使い分けがしやすくなります。

実務では、設計値の計算、非線形方程式の解析、最適化問題の途中計算、機械学習の数値処理などで考え方が応用されています。

ニュートン-ラフソン法は、現在の近似値における接線と横軸の交点を次の近似値にする方法です。

解の近くから始められれば非常に速く収束する一方、初期値と微分値の確認が重要になります。

更新式と接線の仕組み

続いては更新式と、接線を用いて解へ近づく仕組みを確認していきます。

基本となる更新公式

ニュートン-ラフソン法の更新式は次の形です。

xの次の値 = xの現在値 - f(xの現在値) ÷ fの微分値(xの現在値)

現在の近似値を xk と書く場合は、xkの次の値 = xk - f(xk) ÷ fの微分値(xk) と表せます。

ここで重要なのは、関数値だけでなく導関数を使う点です。

導関数はグラフの傾きを表し、現在位置から見たときに、どちらの方向へどの程度動けば横軸へ近づくかを推定する役割を持ちます。

接線近似から式が生まれる流れ

現在値 xk の周辺では、複雑な曲線でも接線なら直線として扱えます。

関数 f(x) を xk の近くで一次近似すると、f(x) はおおよそ f(xk) + fの微分値(xk) 掛ける x - xk と考えられます。

この近似直線がゼロになる x を求めると、更新公式が得られます。

つまり、曲線そのものの根を直接探す代わりに、局所的な直線の根を求め、その位置へ移動する考え方です。

移動先で再び接線を引き直せば、より根に近い直線近似を作れるでしょう。

傾きが更新幅を決める理由

関数値が大きくても傾きが急なら、横軸までの距離は比較的短いと推定されます。

反対に、傾きが緩やかな場所では、同じ関数値でも横軸まで遠いと判断され、大きな更新が起こりやすくなります。

微分値がゼロ、またはゼロに極めて近い場合、割り算ができないか、更新値が不安定になります。

このため、実装では微分値の絶対値が小さすぎないかを確認する処理が欠かせません。

要素 役割 計算上の注意点
現在値 反復計算の出発点 初期値の選択で結果が変わります
関数値 根からのずれを示す値 ゼロに近いほど解に近い状態です
導関数 接線の傾き ゼロ付近では更新が不安定になります
更新値 次の近似解 発散や振動の有無を確認します

平方根を求める計算例

続いては平方根を例に、ニュートン-ラフソン法の反復計算を確認していきます。

平方根二の方程式への変換

平方根二を求める問題は、xの二乗 - 2 = 0 という方程式を解く問題に置き換えられます。

このとき関数を f(x) = xの二乗 - 2 とします。

導関数は fの微分値(x) = 2x です。

更新式に代入すると、次の値は現在値 - 現在値の二乗 - 2 ÷ 2掛ける現在値 となります。

整理すると、次の値は 現在値 + 2 ÷ 現在値 を二で割った形になります。

平方根二の計算式

次の近似値 = 現在の近似値 + 2 ÷ 現在の近似値 を二で割る

初期値からの反復過程

初期値を 1.5 とすると、最初の更新で約 1.4167 になります。

さらに更新すると約 1.4142 となり、平方根二の値である約 1.41421356 に急速に近づきます。

この例では初期値が正の解に近く、導関数も安定しているため、少ない反復回数で高い精度が得られます。

反復回数 近似値 関数値のおおよその大きさ
開始時 1.500000 0.250000
一回目 1.416667 0.006944
二回目 1.414216 0.000006
三回目 1.414214 ほぼゼロ

停止条件の決め方

計算をいつ終えるかは、数値計算で必ず考えるべきポイントです。

代表的な停止条件には、関数値の絶対値が十分小さい場合、前回値と今回値の差が許容誤差未満の場合、反復回数が上限に達した場合があります。

関数値だけを見ると、傾きが非常に小さい領域で判断を誤る可能性があります。

一方で、更新値の差だけを見ると、停滞しているだけなのに収束と見なすこともあります。

実装では複数の条件を組み合わせると、信頼性の高い停止判定につながります。

平方根の例では計算が順調に進みますが、すべての関数で同じ挙動になるわけではありません。

反復値、関数値、導関数の大きさを合わせて監視することが、実用的な数値計算の基本です。

初期値と収束条件

続いては初期値の重要性と、反復法が収束する条件を確認していきます。

初期値が結果を左右する場面

ニュートン-ラフソン法では、どの値から計算を始めるかが非常に重要です。

方程式に複数の根がある場合、初期値によって近づく根が変わることがあります。

また、根から遠い位置では接線が大きく外れ、想定外の場所へ更新される場合もあります。

グラフの概形を確認して初期値を決めることは、手計算でもプログラムでも有効です。

グラフが使えない場合には、区間を細かく調べて符号が変わる範囲を探し、その近くを初期値にする方法が考えられます。

二次収束が期待できる条件

真の解の近くで導関数がゼロではなく、関数が十分滑らかであれば、ニュートン-ラフソン法は二次収束を示すことがあります。

これは誤差が次の反復でおおむね二乗程度になる性質です。

精度を上げる終盤では特に効率がよく、数桁の精度から十数桁の精度へ素早く到達できることもあります。

ただし、重根の近くでは収束の速さが落ちる場合があります。

重根とは、同じ解が複数回現れる根であり、その地点では導関数がゼロになりやすいためです。

発散と振動が起こるケース

初期値が不適切な場合、反復値が根から離れていく発散が起こることがあります。

二つの値を行き来する振動や、別の根への収束も代表的な現象です。

たとえば関数の接線が横軸と遠くで交わる形では、一度の更新で大きく飛ぶことがあります。

このような場合は、更新量に上限を設ける、初期値を変更する、二分法など別の手法と組み合わせる方法が有効です。

安全性を高める考え方

根を含む区間を先に二分法で絞り込み、その後にニュートン-ラフソン法へ切り替えると、収束速度と安定性を両立しやすくなります。

数値解析での実装手順

続いてはプログラムや計算シートで扱う際の実装手順を確認していきます。

反復処理の基本構造

実装では、関数、導関数、初期値、許容誤差、最大反復回数を用意します。

各反復で関数値と導関数を計算し、更新式によって次の近似値を求めます。

更新後の値が停止条件を満たしたら処理を終え、満たさなければ次の反復へ進む流れです。

特に最大反復回数は重要であり、収束しない処理が無限に続くことを防ぎます。

収束しなかったこと自体も計算結果として扱い、失敗理由を記録できる設計が望まれます。

許容誤差の設定方法

許容誤差は、求める精度と計算コストのバランスで決めます。

たとえば測定値が小数第三位までしか意味を持たないなら、極端に小さな誤差まで追い込んでも実務上の価値は限られます。

反対に、シミュレーションの途中結果が後段の計算へ大きく影響する場合は、より厳しい誤差設定が必要になるでしょう。

絶対誤差に加えて相対誤差を使うと、値の大きさが大きく異なる問題にも対応しやすくなります。

浮動小数点演算の注意点

コンピュータでは実数を有限の桁数で表すため、丸め誤差を完全になくすことはできません。

非常に近い二つの数を引く計算では、有効桁が失われることがあります。

また、導関数が小さいときの除算は丸め誤差を増幅しやすい点にも注意が必要です。

計算途中の値が極端に大きくなっていないか、数値として扱えない状態になっていないかを確認しましょう。

実装時には、微分値の下限チェック、有限値チェック、反復履歴の保存を加えると、不具合の原因調査がしやすくなります。

実装では正しい更新式だけでなく、停止条件、例外処理、最大反復回数をセットで設計する必要があります。

計算結果が返った場合でも、残差と反復回数を確認して品質を判断しましょう。

他の反復法との比較

続いては二分法や割線法など、他の数値解法との違いを確認していきます。

二分法との違い

二分法は、関数値の符号が異なる二点の間に根があることを利用し、区間を半分ずつ狭める手法です。

連続関数で符号変化を確認できるなら、比較的確実に根へ近づける点が魅力です。

ただし、区間を半分にする速度でしか誤差が減らないため、ニュートン-ラフソン法より収束は遅くなりやすいでしょう。

一方、ニュートン-ラフソン法は導関数を必要としますが、良い初期値があれば高速な高精度計算に向いています。

割線法との違い

割線法は導関数を直接計算せず、二つの近似値から傾きを見積もる方法です。

微分式を作りにくい問題や、導関数の計算コストが高い場合に選択肢となります。

ニュートン-ラフソン法ほどの二次収束は一般に期待しにくいものの、導関数が不要という実装上の利点があります。

数値微分で導関数を近似する方法もありますが、差分幅の選択によって誤差が増える場合があるため、可能なら解析的な導関数を用意するほうが安定しやすい傾向です。

手法選択の目安

手法 導関数 収束の特徴 向いている場面
ニュートン-ラフソン法 必要 条件が良ければ非常に速い 高精度を短時間で求めたい場合
二分法 不要 比較的安定して進みやすい 根を含む区間が分かる場合
割線法 不要 ニュートン法よりやや緩やか 導関数を使いにくい場合

実務では一つの手法だけにこだわらず、問題の性質に応じて選ぶことが大切です。

安定して根の近くまで到達した後にニュートン-ラフソン法で精度を高める組み合わせは、よく使われる考え方です。

まとめ

ニュートン-ラフソン法は、方程式 f(x) = 0 の近似解を、接線の考え方で反復的に求める数値解析手法です。

現在の近似値、関数値、導関数を用いて次の値を計算し、解に近づけていきます。

良い初期値と適切な条件がそろえば、二次収束による優れた計算速度が期待できます。

その一方で、導関数がゼロに近い場合、初期値が根から遠い場合、重根を扱う場合には、発散や停滞が起こる可能性があります。

実装では許容誤差、最大反復回数、微分値の確認、残差の監視を組み合わせることが重要です。

二分法や割線法との特徴も理解し、問題に応じて使い分けることで、ニュートン-ラフソン法をより安全かつ効果的に活用できるでしょう。