ニュートン法による求根

概要

求根アルゴリズムとして有名である頻繁に使用されるニュートン法(1次元の場合)について紹介します.ニュートン法によって関数の値がゼロになる値等を算出します.探索する初期値に依存し、解は一つしか見つけられませんが、比較的高速です.導関数が適切に得られる必要があります.
Facebookシェア Twitterツイート LINEで送る
この章を学ぶ前に必要な知識
なし
0
条件
  • 関数の導関数が求められること
  • 探索開始の初期値が解に近いこと(遠すぎると収束しない)
効果
  • 導関数が得られればどのような関数でも方程式の解が得られる
  • 多次元にも適用可能
ポイント
  • 得られる解は一つのみ.複数必要な場合は工夫が必要.
  • f(x)=g(x)の解が求めたい場合は移項してf(x)-g(x)=0とすればよい
  • 比較的高速だが初期値に強く依存
  • 毎回その点での傾きから数値を傾いている方に点を動かしていく
  • 二次収束となる

解 説

非線形な関数に適用できる求根アルゴリズムとして有名である頻繁に使用されるニュートン法について紹介します.ニュートン法によって関数の値がゼロになる値等を算出します(近似的に求めます). 求まる解が探索する初期値に依存しまた適切な初期値でないと収束しない(解がもとまらないこと)もあり得ます.他の球根アルゴリズムより比較的高速です 工夫がないと解は一つしか見つけられないため、何らかの方法で解を絞っていく方法が必要になります. ニュートン法概要 反復法による解の更新によってf(x)=0になるxを求める. 毎回現在のx座標での傾きから数値を傾いている方にx座標を更新していく. 上記のように傾きを扱うため、導関数が関数から求められる必要があります.
ニュートン法による求根について
Wikipediaより引用. ニュートン法によって解が少しずつ近いづいていることがわかる.
ニュートン法の更新式 解を求めるにあたり、以下の式に沿って反復計算を行う. xn+1=xnf(xn)f(xn) ニュートン法の手順 1. 適切な解に近い初期値x0を決める.(遠すぎると収束しないため) 2. 上記の更新式と初期値x0から次のx1を求める. 3. x1と更新式により新しいx2といった作業を繰り返し行う. 4. 十分な精度になったらxnを出力して処理を停止する. この式の導出は非常に簡単である. ニュートン法は、「解に近い点での接線」は「解となるx座標」と近いところでy=0と交わることを利用 して解を求める. そのため、繰り返す計算は 接線を計算してy軸との交点を求めること となる. 一般的に接線はx=αでの接線は以下で求められる.x=αを代入すれば、y=f(α)となることが確認できる. y=f(α)(xα)+f(α) この接線とy=0x=βと交わったとすると上記の式に代入して 0=f(α)(βα)+f(α) となる. βが次のx座標なのでこれを求める形に変形すると β=αf(α)f(α) と求められ、βが更新後の値、αが更新前の値なので、これを漸化式のように書き換えるとはじめに示した式となる xn+1=xnf(xn)f(xn)
ニュートン法
ニュートン法は、解の区間で微分可能な非線形の関数に対して用いることができ、 また比較的高速な上に、高次元に対しても容易に適用できることから重宝される. ただ、解は一つしかもとまらず、初期値に強く依存して解が決まるため、 複数の解を得るには何らかの工夫が必要となる.
ニュートン法の特徴
多項式の複数の解を求める方法として以下のような方法が考えられる. 多項式の複数解を全て求める 1. 多項式P(x)に対して初期値を与えてニュートン法により一つ解αを求める. 2. (x-α)で多項式P(x)を割る. (解なので必ず割り切れる) 3. 割った後の多項式Q(x)を新しいP(x)として1.より始める. 4. 割った後の多項式Q(x)の次数が1になるまで繰り返す. 具体的には 0. 以下の式の解を全てニュートン法で求めるとする. P(x)=f(x)=x32x2x+2 1. 1度目のニュートン法でx=2が決まったとする. 2. (x2)で多項式f(x)を割ることで Q(x)=x21 を得る. 3. 上記のQ(x)を新しいP(x)として次の解を求める. ここでx=1と新しい解が求まったとすると, Q(x)=x+1 となる. 4. 上記の式の次数は1なので f(x)=(x1)(x+1)(x2) と解がx=1,1,2であったことがわかる. 計算誤差がたまるため、精度高く解を求めないと他の解にも影響してくる.
多項式の解をニュートン法で全て求めるには
この章を学んで新たに学べる
求根アルゴによる非線形方程式の解 プログラムの割り算処理を早くしたい
Comments

Reasons
>>隠す