2019.05.22

ニュートン法

はじめに

ニュートン法、またはニュートン・ラフソン法)は、関数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)に置き換えてニュートン法の漸化式にします。

ニュートン法 漸化式

以上です。

関連コンテンツ

関数f(x)が与えられたときf(x)=0となるxを数値計算の反復によって求める方法を詳しく解説しています。

2019.05.22

数値微分を使ったニュートン法で平方根を計算する方法を紹介しています。興味のあるかたは是非ご覧ください。

2019.05.23

反復計算の回数の上限があるニュートン法の解法ソースコードを紹介しています。

2019.05.24

画像フォーマット形式・色・大きさ・傾きなどの変更、特定の図形(文字・記号など)を見つけたり、取り出したりする画像処理について詳しく解説。

2015.11.29

Javaのプログラムを作ってみませんか?プログラミングに必要なものの用意から実行までを説明しています。

2020.03.23

Javaの学習に役立つソースコードを多数紹介しています。是非、ご覧ください。

2022.09.10

Swingパッケージを使ってグラフィック表示を行う方法を解説しています。

2020.03.23

繰り返し処理を使ったJavaのソースコードサンプルを紹介しています。

2020.03.23

配列を使うJavaソースコードを多数紹介しています。

2021.05.18

数学に関係するJavaのメソッドやソースコードなどを紹介しています。

2022.10.25

三角形、台形、円などいろいろな図形の面積を計算するプログラムを紹介しています。詳しくは、記事をご覧ください。

2021.05.18

StringクラスとStringBuilderクラスを利用したプログラミングの仕方を紹介しています。

2016.12.16

Javaを使った簡単な応用プログラム(生年月日から年齢を計算プログラムなど)を紹介しています。

2022.07.07

プログラミング、ITに関する用語をまとめています。

2022.10.17

日本で使われてきた伝統文様「和柄」について解説しています。

2022.07.27

アルゴリズムって何?

2022.12.29

基本的な計算である足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)を行うプログラム作成。

2020.03.23

平面上の位置を表す座標系の1つXY座標系について詳しく解説。

2020.03.23

「ゆるゆるプログラム」のコンテンツを紹介しています。興味のある方はこの記事をご覧ください。

2020.03.23

JavaのMath.sqrtメソッドを使わない平方根の計算方法を解説。ソースコードを使って詳しく解説しています。

2022.12.16

広告