ニュートン法

提供: testwiki
ナビゲーションに移動 検索に移動

数値解析の分野において、ニュートン法(ニュートンほう、テンプレート:Lang-en-short)またはニュートン・ラフソン法テンプレート:Lang-en-short[1])は、方程式系を数値計算によって解くための反復法による求根アルゴリズムの1つである。対象とする方程式系に対する条件は、領域における微分可能性と2次微分に関する符号だけであり、線型性などは特に要求しない。収束の速さも2次収束なので古くから数値計算で使用されていた。名称はアイザック・ニュートンジョゼフ・ラフソンに由来する。ニュートン法を複素平面に適用し、初期値がどの解に収束するかについて色分けした結果としてニュートン・フラクタルを描くことができる(初期値の境界における挙動の予測が難しいことを示している)[2]

導入

ニュートン法の一手順の概念図 (青い線が関数 f のグラフで、その接線を赤で示した). xn よりも xn+1 のほうが、 f(x)=0 の解 x についてのよりよい近似を与えている.

この方法の考え方は以下のようである:まず初めに、予想される真の解に近いと思われる値をひとつとる。次に、そこでグラフの接線を考え、その x 切片を計算する。このx切片の値は、予想される真の解により近いものとなるのが一般である。以後、この値に対してそこでグラフの接線を考え、同じ操作を繰り返していく。

上の考え方は次のように定式化される。 ここでは、考える問題を f: RR, xRとして

f(x)=0

となる x を求めることに限定する。このとき、x の付近に適当な値 x0 をとり、次の漸化式によって、x収束する数列を得ることができる場合が多い。

テンプレート:Anchorsxn+1=xnf(xn)f(xn)(1)

例として、2 を計算で求める場合に、

f(x)=x22

とおき、f(x) = 0 の解を求めることを考える。

f(x)=2x

であるので、(1) の式は

xn+1=xnxn222xn=12(xn+2xn)

と書き表せる。たとえば x0 = 2 とおくと、この数列は 2 に収束するが、その収束の仕方は

xテンプレート:Sub = 2
xテンプレート:Sub = テンプレート:Underline.5
xテンプレート:Sub = テンプレート:Underline6666…
xテンプレート:Sub = テンプレート:Underline56862745…
xテンプレート:Sub = テンプレート:Underline46899… (下線部は2と一致する部分)

となる。

また、x0 = −1 とおくと、この数列は 2に収束する。

理論

局所収束定理

初期値x0を解の十分近くに選ぶことを要求した上で、

f(x)=0

の解を考える(解の存在を仮定する)。 f(x)x=x0 でのテーラー展開をすると

f(x)=f(x0)+f(x0)(xx0)+O((xx0)2)

このとき、(右辺)=0の解は、(左辺)=0の根の x0での多項式次数一次の近似となっている。 右辺の解は

x=x0f(x0)f(x0)

次に、この近似値が、x0より根に近づいている ということに関する意味を考える。 上式を、次のような離散力学系として考える。

xn+1=g(xn), ただし g(x)=xf(x)f(x)

この力学系において、f(x*)=0 となるx*は明らかに固定点である。

したがって|g(x*)|<1、つまりx*が沈点(アトラクター、安定固定点)であり、 与えられた初期条件x0が、このアトラクターの吸引領域に属していれば xnω-極限(n)は f(x*)=0となるx*に収束する。

x*が沈点である保証は、常に担保されてはいない。 例えばx軸の漸近線や関数f(x)極値近傍では固定点が不安定になる事が知られている。 [3]

たとえばf(x*)を、適当な近傍の点xnで展開するとf(x*)0なら、二次の余剰項R2=f(ξn)2(xnx*)2として

xn+1x*=f(ξn)2f(xn)(xnx*)2

よって2次で収束する。

半局所収束定理

テンプレート:See also 前節では解の存在を仮定した上で初期値x0を解の十分近くに選ぶことを要求した。これに対して、解の存在を仮定せず、初期値x0がある条件を満たすときに解の存在と反復の収束を示す定理を半局所収束定理(テンプレート:En)という。1次元の場合での半局所収束定理はコーシーによって1829年に示され、n次元ユークリッド空間での場合はファイン[4]によって1916年に示された。その後、バナッハ空間での半局所収束定理がカントロヴィチによって1948年に示され、現代ではニュートン=カントロヴィチの定理と呼ばれている[5]。この定理にはいくつかの変種が知られており、テンプレート:Harv[6]にまとめられている。

高次元の場合

ニュートン法は、接線を一次近似式、接線のx切片を一次近似式の零点と考えることにより、より高次元の関数の場合に一般化できる。 対象となる関数を f: RmRm, xRm とし、

f(𝐱)=𝟎

なる点 x を求めるには次のようにする。(f が同じ次元の空間の間の関数であることに注意せよ。)

まず、今 x0Rm が既知であるとする。x0における f(x) の一次近似式

f(𝐱0)+f(𝐱0)(𝐱𝐱0)

を考える。ただし、∂f(x0) は、m × mヤコビ行列である。

この一次近似式の零点を求める。ヤコビ行列∂f(x0) が正則行列であるとして、

f(𝐱0)+f(𝐱0)(𝐱𝐱0)=𝟎

を解いて、

𝐱=𝐱0f(𝐱0)1f(𝐱0)

となる。

コンピュータで計算を行う場合 ∂f(x0)-1f(x0) を直接求めることは困難なので、

f(𝐱0)𝐫=f(𝐱0)

という方程式をガウスの消去法などの解法によって線形方程式系を解き r を求め、x = x0 - r によって x を求める。

ここで求めた xx0よりも f(x) = 0 の解に近いことが見込まれる。そこで、今求めた xx1 として、再び同様の計算を繰り返す。計算を繰り返すことによって xnf(x) = 0 の解に近づいていく。

逆行列を求めることを避けるために共役勾配法を用いることがある。

注意

ニュートン法により近似値を求めようとする場合にはヤコビ行列が陽に分からなければ計算できない。しかし、関数 f によってはヤコビ行列が陽に分からない場合もある。この場合にはヤコビ行列を必要としない準ニュートン法を用いる。

また、テンプレート:Math を満たす真の解 テンプレート:Math において導関数が テンプレート:Math であった場合、収束の速さは1次に退化する[7]

改良

ニュートン法の考え方を少し改良することにより、(1) の代わりに次の式を用いる方法を得る。

xk+1=xk[f(xk)]2f(xk)[f(xk)f(xkf(xk)f(xk))]

この方法は、場合によっては従来の方法より速い[8]

平野の変形ニュートン法

ニュートン法の局所的な2次収束性を保ちつつ、不安定な振る舞いを抑えるように工夫した方法として平野の変形ニュートン法が知られている[9]

簡易ニュートン法

ニュートン法における導関数の計算を簡略化したものが簡易ニュートン法である:

xn+1=xnf(xn)f(x0).

簡易ニュートン法に対する半局所収束定理は占部の定理として知られる。占部の定理は元々数学的帰納法を使って示されたが、その後、バナッハの不動点定理を使った別証明が与えられた[10]

クラフチック法

簡易ニュートン法に対する半局所収束定理の条件をより容易に評価するために開発された簡易ニュートン法の変種がクラフチック(Krawczyk)法である[11][12]

区間ニュートン法

テンプレート:Main ニュートン法に対する半局所収束定理の条件をより容易に評価するために開発されたニュートン法の変種が区間ニュートン法である[13]

テンプレート:Mvar-ニュートン法

ニュートン法において微分の代わりに微分のq-類似テンプレート:Mvar-微分)を使う反復をテンプレート:Mvar-ニュートン法という[14]:

xn+1=xnf(xn)Dq(xn).

テンプレート:Mvar-ニュートン法に対する半局所収束定理がテンプレート:Mvar-ニュートン-カントロビッチの定理である[15]

脚注

テンプレート:脚注ヘルプ

出典

テンプレート:Reflist

関連項目

テンプレート:Commonscat

外部リンク

テンプレート:Calculus topics テンプレート:Normdaten