ゆるゆるプログラミング

・ニュートン法

ニュートン法、またはニュートン・ラフソン法)は、関数f(x)が与えられたときf(x)=0となるxを数値計算の反復によって求めるアルゴリズムの1つです。

f(x)=0のxは?

それでは、ニュートン法の考え方を説明します。

はじめに、f(x)=0となるxと予想値x0(任意)を決めて、その値x0でf(x0)の接線を求めます。

次に、接線とx軸の交点の座標(x1,0)を計算し、f(x1)の接線を求めます。

さらに、接線とx軸の交点の座標(x2,0)を計算し、f(x2)の接線を求めます。

以後、接線とx軸の交点を繰り返し計算し、交点のx座標xnの値が変化しなくなれば(収束)、そのx座標xnが求めるxとなります。ただし、関数f(x)=0となるxが存在しない場合は、正しいxは求められません。また、関数f(x)=0となるxが複数存在する場合は、初期値x0の値にって求まるxが変わります。

ニュートン法の考え方

上の図は、接線とx軸の交点を繰り返し計算していく様子を示しています。計算した値が、求めたいxに近づいている様子が確認できます。

f'(x)はf(x)をxで微分したものでf(x)の傾きを表しています。

ここから、ニュートン法を実現するための式について説明していきます。

f(xn)をxnで微分すると、xnの接線の傾きf'(xn)を求めることができます。その傾きf'(xn)をxの増加分⊿x、yの増加分⊿yを使って以下のようにおくと、

ニュートン法 接線の傾き

この接線とx軸との交点は、

ニュートン法 計算式

で求められます。(下図)

ニュートン法 xnの求め方

接線の傾きf'(xn)を⊿y/⊿xとおくと、xn+1は、xnからf(xn)×(⊿x/⊿y)を引いた値になります。

最後に、⊿xと⊿yをf'(xn)に置き換えてニュートン法の漸化式にします。

ニュートン法 漸化式

ニュートン法のJavaソースコードはこちらを参照してください。「ニュートン法で平方根」

■関連コンテンツ

ニュートン法で平方根 その2 ニュートン法で平方根(数値微分)

■新着情報

2019.06.14 円模様1 円の縦横整列模様の画像作成方法を紹介
2019.05.24 ニュートン法で平方根 その3 ニュートン法で平方根(メソッド化)
2019.05.23 ニュートン法で平方根 その2 ニュートン法で平方根(数値微分)
2019.05.22 ニュートン法 ニュートン法について
2019.05.22 ニュートン法で平方根 ニュートン法で平方根を計算

■広告

法人向けのETC専用カード

~約8,000名の受講生と80社以上の導入実績~ 企業向けプログラミング研修ならCodeCamp

日本最大級ショッピングサイト!お買い物なら楽天市場

Topへ