科学・計算関連

ニュートン・ラフソン法とは?非線形方程式の解法と計算手順を解説!

ニュートン・ラフソン法による非線形方程式の解法
当サイトでは記事内に広告を含みます
技術ブログ特化メルマガはこちら

非線形方程式を解く場面では、因数分解や解の公式だけでは対応できないケースが多くあります。

そこで活用される代表的な数値計算法が、ニュートン・ラフソン法です。

接線の傾きを利用して解に近づくこの方法は、工学、物理、プログラミング、金融計算など、幅広い分野で使われています。

一方で、初期値の選び方や微分係数の扱いを誤ると、計算が発散する場合もあります。

この記事では、ニュートン・ラフソン法の基本原理から具体的な計算手順、注意点までを順番に解説します。

ニュートン・ラフソン法による非線形方程式の解法

ニュートン・ラフソン法による非線形方程式の解法

それではまず、ニュートン・ラフソン法による非線形方程式の解法について解説していきます。

接線を使って近似解を更新する考え方

ニュートン・ラフソン法は、関数のグラフに引いた接線を利用して、方程式の解を少しずつ近似する手法です。

解きたい方程式を f(x)=0 の形に整理し、ある初期値 x0 を決めて計算を始めます。

初期値における関数の値と接線の傾きを求め、その接線が x 軸と交わる位置を次の近似値として採用します。

この更新を繰り返すことで、真の解に近い数値へ近づけていく仕組みです。

グラフ上では、曲線上の点から接線を引き、その交点を次の出発点にする動作を連続させるイメージになります。

接線の傾きが解の方向を示すため、適切な初期値なら非常に速く収束しやすい点が大きな特徴です。

ニュートン・ラフソン法の基本式は次のとおりです。

xn+1=xn−f(xn)÷f'(xn)

xn は現在の近似値、f(xn) は関数値、f'(xn) は微分係数を表します。

非線形方程式で利用される理由

非線形方程式とは、未知数が二乗や三乗になっていたり、指数関数、対数関数、三角関数などを含んでいたりする方程式です。

たとえば x3−2x−5=0 のような三次方程式は、一般的な二次方程式の解の公式では解けません。

また、sin x=x÷2 のような三角関数を含む式では、厳密な代数解を簡単に表せないこともあります。

このような問題に対して、コンピュータで反復計算を行い、必要な精度まで近似値を求める方法が数値計算です。

ニュートン・ラフソン法は、数値計算のなかでも計算回数を抑えやすく、実務で採用される機会が多い方法といえるでしょう。

二分法との違い

方程式の近似解を探す方法としては、二分法も広く知られています。

二分法は、関数値の符号が変わる区間を半分ずつに分けながら、解を含む範囲を狭める方法です。

計算の安定性が高い一方で、解に近づく速度はニュートン・ラフソン法より緩やかになる傾向があります。

比較項目 ニュートン・ラフソン法 二分法
必要な情報 関数と微分係数 関数値の符号
収束速度 速いことが多い 比較的ゆるやか
初期値の影響 大きい 比較的小さい
発散の可能性 ある 条件を満たせば小さい
実装の難易度 微分計算が必要 比較的簡単

精度と安定性のどちらを優先するかによって、選ぶべき手法は変わります。

実際には、二分法で安全な初期範囲を絞ってから、ニュートン・ラフソン法へ切り替える設計もよく用いられます。

反復計算の基本手順

続いては、ニュートン・ラフソン法における反復計算の基本手順を確認していきます。

方程式を f(x)=0 の形へ整理する作業

ニュートン・ラフソン法を使う最初の段階は、方程式を f(x)=0 の形に変形することです。

たとえば x3=2x+5 であれば、左辺へすべて移項して f(x)=x3−2x−5 と定義します。

この関数がゼロになる x を見つけることが、元の方程式を解くことと同じ意味になります。

関数の定義を間違えると、その後の微分や反復計算もすべて異なる結果になるため、符号の確認は欠かせません。

移項後の関数と微分係数は、計算を始める前に必ず書き出す習慣をつけるとミスを防げます。

初期値の設定

次に、解に近いと考えられる初期値 x0 を設定します。

初期値は任意の数値ではありますが、真の解から遠すぎる値を選ぶと、計算が別の解へ向かったり、大きく振動したりすることがあります。

グラフを描ける場合は、x 軸と関数の交点に近そうな位置を確認してから初期値を決めると安心です。

グラフがない場合でも、いくつかの x を代入して関数値の符号や大きさを調べると、おおよその解の位置を推測できます。

初期値の選定は、ニュートン・ラフソン法の成功率を左右する重要な工程です。

関数値が小さい地点や、解をはさむ区間に近い地点を選ぶと、反復計算が安定しやすくなります。

更新式による近似値の算出

初期値を決めたら、更新式に代入して次の近似値 x1 を求めます。

その後は x1 を使って x2 を計算し、同じ操作を繰り返します。

反復を終了する条件としては、前回との差が十分に小さくなった場合や、関数値の絶対値が指定した誤差より小さくなった場合が一般的です。

終了条件の例を示します。

|xn+1−xn|<0.000001

または |f(xn+1)|<0.000001

求める精度に合わせて、許容誤差を変更します。

反復回数にも上限を設けておくと、発散や無限ループへの対策になります。

プログラムでは、誤差判定と最大反復回数を組み合わせる実装が基本となります。

具体例による計算過程

続いては、具体例を通してニュートン・ラフソン法の計算過程を確認していきます。

x2−2=0 の近似解

ここでは、x2−2=0 の解をニュートン・ラフソン法で求めます。

この方程式の正の解は √2 であり、約 1.41421356 になることが知られています。

まず f(x)=x2−2 と置くと、微分係数は f'(x)=2x です。

初期値を x0=1.5 とすると、更新式へ代入して次の値を求められます。

x1=1.5−(1.52−2)÷(2×1.5)

x1=1.416666…

最初の計算だけでも、すでに √2 にかなり近い値になります。

さらに同じ計算を続けると、近似値は急速に正確になります。

この速さは、解の近くで誤差が二乗に近い割合で小さくなる性質と関係しています。

反復回数ごとの数値変化

初期値 1.5 から計算した場合の変化を表にまとめます。

反復回数 近似値 関数値の絶対値
0 1.500000000 0.250000000
1 1.416666667 0.006944444
2 1.414215686 0.000006007
3 1.414213562 ほぼゼロ

わずか三回の更新で、小数第九位程度まで正しい値に近づいていることが分かります。

解の近くに初期値を置けた場合、少ない反復回数で高い精度を得やすいことがニュートン・ラフソン法の魅力です。

三次方程式への応用

次に、x3−2x−5=0 を考えます。

この場合は f(x)=x3−2x−5、微分係数は f'(x)=3x2−2 です。

x=2 を代入すると関数値は負になり、x=3 を代入すると正になるため、実数解は 2 と 3 の間にあると分かります。

そこで初期値を x0=2 として更新式を実行すると、近似値は約 2.09455 へ収束します。

方程式の次数が上がっても、微分係数を求められる関数であれば、同じ考え方で計算できます。

微分係数と接線の関係

続いては、計算の中心となる微分係数と接線の関係を確認していきます。

微分係数が示す傾き

微分係数 f'(x) は、ある点における関数の変化の割合を表す値です。

グラフで見ると、その点に引いた接線の傾きに相当します。

傾きが正であれば右上がり、負であれば右下がり、ゼロに近ければほぼ水平な接線になります。

ニュートン・ラフソン法では、この傾きを使って x 軸までの移動量を推定します。

関数値が大きくても傾きが急なら移動量は小さくなり、傾きが緩やかなら大きく移動する可能性があります。

接線と x 軸の交点

現在の近似値を xn としたとき、その点の接線は一次式として表せます。

接線が x 軸と交わる位置を計算すると、それが次の近似値 xn+1 になります。

つまり、複雑な曲線そのものを直接解く代わりに、近くの直線として近似して解いているわけです。

直線の計算は扱いやすいため、非線形問題を段階的に解くことが可能になります。

ニュートン・ラフソン法は、曲線を接線で近似し続ける方法です。

各反復で接線を更新するため、解へ近づくほど近似の精度も高まりやすくなります。

微分係数がゼロに近い場合

注意したいのは、分母となる f'(xn) がゼロ、またはゼロに極めて近い場合です。

更新式では微分係数で割るため、傾きが小さいと移動量が極端に大きくなることがあります。

その結果、解から遠ざかったり、計算値が大きく飛んだりするおそれがあります。

特に極大点や極小点の近くでは接線が水平に近くなるため、初期値の設定には注意が必要です。

微分係数の絶対値が小さいときは、更新を中止する判定を設けると、プログラムの安全性を高められます。

収束条件と計算上の注意点

続いては、ニュートン・ラフソン法の収束条件と計算上の注意点を確認していきます。

初期値による収束先の違い

複数の解を持つ関数では、どの初期値を選ぶかによって、最終的に収束する解が変わることがあります。

たとえば三次関数には実数解が複数存在する場合があり、初期値の位置によって異なる根へ向かう可能性があります。

目的の解が決まっているときは、グラフや符号変化を確認し、その解に近い領域から開始することが大切です。

業務の計算では、過去の計算結果を次回の初期値に使う方法も有効です。

連続する条件下で解を求める場合、前回の解は次の計算にとって良い初期値になりやすいでしょう。

発散と振動への対策

反復計算で近似値が解から離れていく状態を発散と呼びます。

また、二つ以上の値を行き来して収束しない現象は振動として現れます。

原因には、初期値が不適切であること、関数の形が複雑であること、微分係数が小さすぎることなどがあります。

対策としては、更新量をそのまま使わず、一部だけ反映する緩和法を導入する方法があります。

たとえば新しい値を xn と xn+1 の中間に寄せれば、急激な移動を抑えられます。

発散を防ぐには、初期値の見直し、更新量の制限、最大反復回数の設定を組み合わせることが効果的です。

収束しない計算を無理に続けず、途中の値を確認して方法を切り替える判断も重要です。

停止条件と誤差管理

数値計算では、完全に誤差ゼロの解を得ることは難しいため、どの程度の誤差まで許容するかを決めます。

停止条件には、近似値の変化量を見る方法と、関数値の大きさを見る方法があります。

前者は値の更新が止まったかを確認し、後者は方程式をどれだけ満たしているかを確認する考え方です。

両方の条件を確認すると、見かけだけの収束を避けやすくなります。

求める精度、扱う数値の桁数、計算時間の上限を先に決めることで、実用的なアルゴリズムを設計できます。

プログラム実装と活用場面

続いては、ニュートン・ラフソン法のプログラム実装と活用場面を確認していきます。

基本的な実装の流れ

プログラムでは、関数 f(x) と微分係数 f'(x) を用意し、初期値から反復計算を開始します。

各ループで微分係数が十分大きいかを確認し、問題がなければ更新式を使って次の値を計算します。

続いて、更新前後の差や関数値を確認し、許容誤差以下になった時点で処理を終了します。

最大反復回数に達した場合は、収束しなかったことを呼び出し元へ返せるようにすると実用的です。

実装の流れは次のようになります。

初期値を設定します。

関数値と微分係数を計算します。

更新式で次の近似値を求めます。

誤差が基準以下なら終了し、満たさなければ繰り返します。

工学分野での利用

ニュートン・ラフソン法は、機械工学や電気工学における設計計算で広く利用されています。

たとえば、材料のたわみ計算、熱伝導の条件計算、流体の圧力計算では、非線形の関係式が現れることがあります。

電力分野では、送電網の電圧や電力のバランスを求める潮流計算にも応用されています。

構造解析やシミュレーションでも、反復計算によって条件を満たす状態を探す場面が少なくありません。

複雑な現象を数式でモデル化し、現実的な近似解を得る手段として重要な役割を担っています。

表計算ソフトと数値解析ソフトでの活用

専門的なプログラミング環境がなくても、表計算ソフトを使って反復計算を試すことは可能です。

セルに初期値、関数値、微分係数、次の近似値を順に配置すれば、更新過程を目で追えます。

数値解析ソフトやプログラミング言語では、関数を定義してループ処理を記述することで、より複雑な問題に対応できます。

ただし、計算結果だけを確認するのではなく、途中の値が不自然に大きくなっていないかも確認しましょう。

結果の妥当性を判断するには、グラフ、代入検算、別手法との比較が役立ちます。

ニュートン・ラフソン法の要点

ニュートン・ラフソン法は、関数の接線を利用しながら、非線形方程式の近似解を反復的に求める数値計算法です。

基本式は、現在の値から関数値を微分係数で割った量を差し引く形になります。

解の近くに適切な初期値を設定できれば、少ない計算回数で高精度な値を得られるでしょう。

一方で、微分係数がゼロに近い場合や初期値が不適切な場合には、発散や振動が起こる可能性があります。

初期値、停止条件、最大反復回数を適切に設計することが、安定した計算結果につながります。

まずは簡単な二次方程式で計算過程を確認し、接線と近似値の関係をつかむところから始めてみてください。