ニュートン-ラフソン法の例題は?計算手順や収束条件も!(初期値の選び方・反復計算・誤差など)

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

微分を利用して近似値を更新するため、適切な初期値を選べば短い計算回数で高精度な解に近づけます。

一方で、初期値や関数の形によっては収束しないこともあり、計算の途中で誤差や変化量を確認する姿勢が欠かせません。

この記事では例題を通じて、反復計算の式、初期値の考え方、収束条件、誤差の扱いまで順番に解説します。

ニュートン-ラフソン法の結論と基本式

ニュートン-ラフソン法の結論と基本式

それではまずニュートン-ラフソン法の結論と基本式について解説していきます。

接線を利用する数値計算法

ニュートン-ラフソン法は、非線形方程式 f(x)=0 の解を近似的に求める方法です。

ある近似値における関数の接線を考え、その接線がx軸と交わる位置を次の近似値として採用します。

曲線そのものの交点を直接求めにくい場合でも、接線という直線の交点であれば計算しやすい点が大きな特徴です。

この操作を繰り返すことで、近似値が真の解へ近づいていきます。

微分可能な関数を対象とするため、関数値だけでなく導関数も準備しておく必要があります。

xのn回目の近似値をx_nとすると、次の近似値は以下の式で表されます。

x_(n+1)=x_n-f(x_n)÷f'(x_n)

f'(x_n)は、x=x_nにおける導関数の値です。

この更新式では、分母となる導関数が0に近づかないことが重要になります。

導関数が小さいと修正量が極端に大きくなり、解から遠ざかる可能性があるためです。

計算速度と利用場面

解の近くから反復を始められた場合、ニュートン-ラフソン法は非常に速く収束する傾向があります。

誤差が二乗の割合で小さくなる性質があり、これを二次収束と呼びます。

たとえば誤差が0.01程度まで小さくなった後は、次の反復で0.0001程度へ急速に減少する場面もあります。

この性質により、工学計算、最適化、流体解析、構造解析、電気回路の計算、統計モデルの推定などで広く使われています。

コンピュータで反復処理を実装する際にも、少ない回数で必要な精度に届きやすい点は実用的な利点でしょう。

二分法との違い

数値計算法には二分法もあります。

二分法は解を挟む区間を半分ずつ絞る方法で、収束は比較的遅いものの、連続関数で符号の変化を確認できれば安定しやすい方法です。

対してニュートン-ラフソン法は、微分値を使って解へ大きく近づくため、高速な計算が期待できます。

ただし、解を必ず挟み込むわけではないため、初期値の置き方を誤ると発散や別の解への収束が起こります。

比較項目 ニュートン-ラフソン法 二分法
必要な情報 関数値と導関数 関数値と符号変化する区間
収束の速さ 解の近くでは速い 一定の速さで進む
初期設定 初期値の影響が大きい 初期区間の設定が重要
安定性 条件次第で発散する 比較的安定しやすい
向く場面 微分可能で解の見当が付く問題 確実性を優先する問題

平方根を求める例題と反復計算

続いては平方根を求める例題と反復計算を確認していきます。

xの二乗から2を引く関数

例題として、xの二乗が2となる正の値を求めます。

これは平方根2を求める問題であり、方程式はxの二乗から2を引いたものが0になる形です。

関数をf(x)=xの二乗-2と置くと、導関数はf'(x)=2xになります。

したがって更新式は、x_(n+1)=x_n-(x_nの二乗-2)÷2x_nとなります。

式を整理すると、x_(n+1)=(x_n+2÷x_n)÷2です。

この形は平方根の近似計算でもよく知られており、平均を取る操作として理解することもできます。

求める方程式はxの二乗-2=0です。

初期値をx_0=1.5とすると、反復式はx_(n+1)=(x_n+2÷x_n)÷2になります。

真の解は約1.41421356です。

初期値1.5からの計算手順

初期値を1.5とした場合、最初の関数値は1.5の二乗-2となり、0.25です。

導関数の値は2かける1.5で3になります。

よって第1回目の更新値は、1.5-0.25÷3となり、およそ1.41666667です。

第2回目では、この値を新たなxとして同じ計算を行います。

反復回数 近似値 x_n f(x_n) 前回値との差
0 1.50000000 0.25000000 設定値
1 1.41666667 0.00694444 0.08333333
2 1.41421569 0.00000601 0.00245098
3 1.41421356 ほぼ0 0.00000212

わずか3回程度の更新で、平方根2の小数点以下多数の桁に近い値が得られます。

これが、解の近傍で発揮されるニュートン-ラフソン法の高速性です。

ただし、速い計算結果だけを見るのではなく、関数値と近似値の変化量の両方を確認することが大切です。

手計算で確認する際の注意点

手計算では、各段階で丸め誤差が生じます。

途中の値を少ない桁数で切り捨てると、その後の反復結果にも影響が出ることがあります。

特に導関数の値が小さい問題では、わずかな丸め誤差が修正量を大きく変える場合があります。

途中計算では必要な桁数を残し、最終表示の段階で指定桁へ丸める流れが安心です。

表を作り、反復回数、近似値、関数値、誤差を並べると、計算過程を見失いにくくなります。

初期値の選び方とグラフの確認

続いては初期値の選び方とグラフの確認を確認していきます。

解に近い値を選ぶ考え方

ニュートン-ラフソン法では、初期値x_0が計算の成否を左右します。

基本的には、求めたい解に近いと見込まれる値を選ぶことが理想です。

関数のグラフを描けば、x軸との交点のおおよその位置を読み取れます。

グラフを使えない場合でも、いくつかの値を代入して関数値の符号や大きさを確かめる方法があります。

たとえばf(1)が負でf(2)が正なら、連続性を前提として1と2の間に解がある可能性が高いと判断できます。

その範囲の中央付近を初期値にする方法は、実務でも有効です。

初期値に迷うときは、まず関数値の符号が変わる区間を探します。

次にグラフや試算で解の位置を絞り、その近くを初期値に設定すると収束しやすくなります。

複数の解がある関数では、どの解を求めたいかを先に決めることも重要です。

導関数が小さい地点の回避

更新式には導関数f'(x_n)が分母として現れます。

そのため、初期値の近くで導関数が0、または0に非常に近い場合は注意が必要です。

接線がほぼ水平になると、x軸との交点が遠い位置になり、次の近似値が大きく飛ぶことがあります。

関数値が小さいから安全とは限らず、導関数の大きさも見ることがポイントです。

微分値の符号が変わる付近や極大値、極小値の近くでは、初期値を少しずらして複数回試す判断も必要になります。

複数解を持つ方程式の扱い

三次方程式や三角関数を含む方程式には、複数の実数解が存在することがあります。

このとき同じ反復式であっても、初期値が異なれば収束先の解も変わります。

たとえばxの三乗-x=0には、-1、0、1という三つの解があります。

正の側から始めれば1へ近づきやすく、負の側から始めれば-1へ近づきやすい傾向があります。

初期値を設定する前に、対象範囲と必要な解を明確にすることが、別の根への収束を防ぐ基本です。

収束条件と発散が起こる理由

続いては収束条件と発散が起こる理由を確認していきます。

解の近傍における条件

ニュートン-ラフソン法が安定して収束するためには、求める解の近くで関数が十分になめらかであることが望まれます。

具体的には、関数が微分可能であり、解における導関数が0でないことが代表的な条件です。

解をαとすると、f(α)=0かつf'(α)が0でない場合、αの近くから始めた反復は良好に進みやすくなります。

これは接線がx軸と適切な角度で交わり、次の予測値が解の方向へ向かいやすいためです。

二次微分が大きく変動する関数では、接線近似の精度が落ちやすく、初期値の影響がより強く表れます。

反復値が往復するケース

反復計算では、近似値が二つの値の間を行き来するケースがあります。

これを振動と呼び、真の解へ近づく場合もあれば、いつまでも収束しない場合もあります。

原因の一つは、接線による修正が大きすぎることです。

関数の曲がり方が強い領域では、現在地で引いた接線が実際の曲線を十分に表せません。

その結果、反対側へ飛び過ぎて、次の反復でまた戻る挙動が起こります。

反復値の推移を表に記録し、値が一定の範囲で往復していないかを確認しましょう。

発散を防ぐための対策

収束しない場合は、初期値を変更することが最初の対策になります。

さらに、更新量をそのまま採用せず、一部だけ反映する緩和法も利用できます。

たとえば新しい値と古い値の中間を取ることで、一度の移動量を抑えられます。

緩和係数をλとし、0より大きく1以下の値を選びます。

x_(n+1)=x_n-λf(x_n)÷f'(x_n)

λを小さくすると安定しやすい一方、収束までの反復回数は増えます。

また、二分法で解を挟む区間を先に見つけ、その後にニュートン-ラフソン法へ切り替える方法も有効です。

高速性と安定性を両立させたい場面では、こうした組み合わせが役立つでしょう。

誤差の判定と停止条件

続いては誤差の判定と停止条件を確認していきます。

近似値の差による判定

反復計算をいつ止めるかは、あらかじめ停止条件として決めておきます。

よく使われる基準は、連続する近似値の差の絶対値です。

絶対値記号を使う代わりに説明すると、x_(n+1)とx_nの差を正の大きさとして見て、その値が許容誤差より小さくなったら停止します。

たとえば許容誤差を0.000001と設定し、前回値との差がそれ未満になれば、近似値が十分に安定したと判断できます。

近似値の変化量は、計算が落ち着いたかを示す指標です。

関数値の大きさによる判定

近似値の差だけでは、真の解に近いかを十分に判断できないことがあります。

そのため、f(x_n)の大きさも併せて確認します。

方程式f(x)=0を解く目的なので、関数値が0に近いほど条件を満たしていると考えられます。

近似値の変化が小さくても、関数値が大きい場合は、平坦な場所で動きにくくなっている可能性があります。

実装では、変化量の条件と関数値の条件を両方満たしたときに終了する設計が堅実です。

停止条件は一つに絞らず、近似値の差と関数値の両方を確認すると安心です。

前回値との差が小さく、かつ関数値も十分に0へ近い状態を収束と判定します。

反復回数の上限も設定し、無限ループを防ぎましょう。

相対誤差と有効桁数

値の規模が大きく異なる問題では、絶対誤差だけでは精度を比べにくい場合があります。

たとえば1000000付近の値で0.01だけずれる場合と、0.001付近の値で0.01だけずれる場合では、意味合いが大きく異なります。

このようなときは、値に対する誤差の割合を見る相対誤差が役立ちます。

相対誤差は、近似値の差を近似値の大きさで割って評価する考え方です。

必要な有効桁数から逆算して許容誤差を決めると、目的に合わない過剰計算を避けられます。

測定値を扱う計算では、入力データ自体の精度を超える桁数を求めても意味が薄い点にも注意が必要です。

実装時の手順とトラブル対策

続いては実装時の手順とトラブル対策を確認していきます。

反復処理の基本的な流れ

プログラムでは、関数f(x)、導関数f'(x)、初期値、許容誤差、最大反復回数を用意します。

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

その後、近似値の差と関数値を評価し、停止条件を満たせば結果を返します。

満たさない場合は、新しい値を現在値として次の反復へ進みます。

処理の順序を固定しておくと、計算ログを確認する際にも原因を追いやすくなります。

手順 確認する内容 注意点
初期設定 初期値と許容誤差 解の近くかを試算する
関数評価 f(x_n)とf'(x_n) 導関数が小さすぎないかを見る
更新計算 x_(n+1)の算出 桁落ちやオーバーフローに注意する
収束判定 変化量と関数値 二つの条件を組み合わせる
終了処理 結果と反復回数 上限到達時は警告を残す

ゼロ除算と計算不能への備え

導関数の値が0なら、更新式では0による除算が発生します。

厳密に0でなくても、極端に小さい値では更新量が不自然に大きくなることがあります。

そのため実装では、導関数の絶対値が設定した小さな基準より下回った場合に計算を中断する処理が必要です。

また、更新後の値が非常に大きくなった場合や、計算結果が数値として扱えない状態になった場合も、異常として処理します。

例外処理は収束計算の信頼性を支える要素であり、単なる補助機能ではありません。

計算結果を検証する方法

得られた近似解は、そのまま採用せず元の方程式へ代入して確認します。

代入した結果の関数値が十分に小さければ、求めた値は方程式をよく満たしていると判断できます。

可能であれば、別の初期値からも計算し、同じ解へ収束するかを比べる方法も有効です。

二分法やグラフの交点と照らし合わせれば、ニュートン-ラフソン法の結果が妥当かをより確かめやすくなります。

計算結果の確認では、近似値だけで判断しません。

元の関数へ代入した値、反復回数、初期値を記録し、再現できる状態を残すことが大切です。

特に設計計算や品質管理では、検証可能な計算過程が求められます。

ニュートン-ラフソン法のまとめ

ニュートン-ラフソン法は、関数の接線を利用して方程式の解へ近づく数値計算法です。

更新式はx_(n+1)=x_n-f(x_n)÷f'(x_n)で表され、解の近くに適切な初期値を置ければ、少ない反復回数で高精度な結果を得やすくなります。

平方根2の例題では、初期値1.5から数回の反復を行うだけで、1.41421356に近い値へ到達しました。

ただし、導関数が0に近い地点、解から遠い初期値、複数解を持つ関数には注意が必要です。

初期値、導関数、停止条件の三つを意識することが、正確で安定した反復計算につながります。

近似値の差だけでなく関数値も確認し、最大反復回数や異常時の処理も設ければ、実装でも安心して活用できるでしょう。

ABOUT ME
white-circle7338
私自身が今まで経験・勉強してきた「エクセル」「ビジネス用語」「生き方」などの情報を、なるべくわかりやすく、楽しく、発信していきます。 一緒に人生を楽しんでいきましょう