「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。現在、コンサルタントの雛になるべく、少しずつ勉強中です(※2024年12月10日改訂)。

MENU

数値解析(03/XX)

はじめに

 プログラミング云々ばかり言っていても、それがどのように計算されているかを知らないと仕様が無い。ということで数値解析を学んでいく。
 基本的には

を参照しつつ、他書で補足する。

前回の復習

  • 反復法の基本的な構成手順を説明せよ。

     適当な初期値x0から出発し、求めたい解αに収束するような数列{xν}を構成し、xναに充分近づいたら計算を打ち切ってその値を近似解とする。

     方程式f(x)=0を変形して

    x=g(x)

    を得る。

     次に求めたい解αを含むような適当な閉区間Iにおいてφ(x)0になるように選び、
    g(x)=xφ(x)f(x)

    とおく。次にx0を適当に与えて

    xν+1=g(xν), ν=0,1,2,

    とおく。φ(x)を適当に与えることで様々な反復法を得る。
  • 関数f(x):IR,IRが縮小写像であることの定義を述べよ。

     関数f(x)が完備であるときに

     (1) xIg(x)I

     (2) Lipschitz条件

     
    x,xIλ[0,1) s.t. |g(x)g(x)|λ|xx|

    を満たす場合、f(x)は縮小写像であると呼ぶ。

2. 非線形方程式の解

2.2 具体的な反復法

2.2.1 2分法

 反復法の一種ではあるがより簡単な方法である2分法をまずは扱う。
 2分法は中間値の定理を数学的な基礎とする。すなわちf[min{a,b},max{a,b}]で連続であるとして、もしf(a)<0,f(b)>0となるようなa,bが存在すれば、f(α)=0となるようなαa,bの間に少なくとも1つ存在する。これを基に以下のようなアルゴリズムを基に近似解を求める。

  1. f(a)<0,f(b)>0を満たすようなとあるa,bxの値として取る。また収束判定用にε>0を設定する。
  2. 新たに
    c=a+b2
    を定義する。
  3. もし|ab|2<εならば5.に進む。そうでなければ4.に進む。
  4. もしf(c)>0ならばb=c,f(c)<0ならばa=cとして2.に進む。f(c)=0ならば5.に進む。
  5. α=cとする。

 収束判定条件に着目すると、初めて収束判定条件を満たすような反復回数をnとおくと

|ab|2n+1<ε

が成り立つ。したがってn>log2(|ab|ε)1を満たすような最小のnがこのアルゴリズムの計算量である。

2.2.2 Newton法

 二分法は安全確実ではあるものの計算に時間がかかる。より高速な方法がNewton法である。

 微分可能な関数y=f(x)のグラフの解αの付近の領域を考える。xの適当な初期値x0を取る。次に点(x0,f(x0))におけるf(x)の接線を引き、この接線とx軸の交点をx1とおく。更に点(x1,f(x1))におけるf(x)の接線を引き、この接線とx軸の交点を同様にx2とおく。この操作をn回続けることで得た交点をxnとすれば、点(xn,f(xn))におけるf(x)の接線は

y=f(xn)(xxn)+f(xn)

で与えられる。これとy=0との交点xn+1を求めれば、

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

が得られる。こうして定義できる数列{xn}を用いることで近似解を求めることができる。
 いま求めたい方程式の解αを含む適当な区間˜Iにおいてf(x)C2級かつf(x)0とすれば、

g(x)=1(f(x))2f(x)f(x)(f(x))2=f(x)f(x)(f(x))2, g(α)=0

を得る。したがってαを含む適当な区間I˜Iを取れば、系2の仮定が満たされるから、Newton法はf(x)=0の解αに収束する。

 Newton法では現在のxnの値が真の解に近づいているかを知る確実な方策が無い。そのため、ある正数ε>0を与え、

|xn+1xnxn+1|<ε

となった時点で計算を終了させ、αxn+1とする。

 以上をまとめると、Newton法は以下のようなアルゴリズムで定義できる:

  1. 初期値xおよびε>0を設定する。
  2. xnew=xf(x)f(x)とおく。
  3. |xnewx|<ε|xnew|ならば5.に移り、そうでなければ4.に移る。
  4. x=xnewとおき、2.に戻る。
  5. α=xnewとして計算を終了する。


 Newton法の計算量は、2分法よりも少なく高速である。求めたい方程式の解をαとし、εn=xnαとおく。このときεnεn+1との関係を考えると、


εn+1=xn+1α=(xnf(xn)f(xn))α=εnf(xn)f(xn)


である。xn=α+(xnα)=α+εnと書き換えることができることから、Taylorの定理より

{f(xn)=f(α)+εnf(α)+ε2n2!f(α)+ε3n3!f(ξ1)f(xn)=f(α)+εnf(α)+ε2n2!f(ξ2)

を満たすようなξ1,ξ2[xn,α]が存在する。これらを代入し、f(α)=0を考慮すれば、

εn+1=εnf(xn)f(xn)=εnf(α)+εnf(α)+ε2n2!f(α)+ε3n3!f(ξ1)f(α)+εnf(α)+ε2n2!f(ξ2)=εnεnf(α)+ε2n2!f(α)+ε3n3!f(ξ1)f(α)+εnf(α)+ε2n2!f(ξ2)=ε2n2f(α)εn3f(ξ1)f(α)+εnf(α)+ε2n2!f(ξ2)ε2nf(α)2f(α)

を得る。これはNewton法が急速に誤差を収束させていることを意味する(またこれは反復列{xν}が2次収束することを意味する。)。
 他方で2分法に比べ、Newton法は計算に失敗する確率が高い。これは与えられたf(x)と初期値x0に由来する。

 前回示した反復法の収束条件を基にNewton法の収束性を示す。



定理2.6 Newton法の収束 区間IRで定義されたC2級関数f(x)を考える。区間I内に方程式f(x)=0には唯一の解αIが存在し、f(a)0が成り立つと仮定する。このときNewton法は初期値をaの近くから取る限り収束する。
( φ(x)=xf(x)f(x)とおいて|φ(a)|<1を示す。fの連続性およびf(a)0であるから、f(x)0,xJIを満たすような有界区間Jが存在する。φJ上ではC1級である。このとき

φ(x)=1(f(x))2f(x)f(x)(f(x))2=f(x)f(x)(f(x))2, xJ

が成り立つから、φ(a)=0が成り立ち、特に|φ(a)|<1 である。)


 なおNewton法以外にも反復列を得る方法はいくつか存在する。
 反復する度にfxkを計算するのが難しければ、簡易Newton

xk+1=xkf(xk)f(x0)

を用いる方法がある。また微分値を求めること自体が難しい場合は、

f(x)=limxcf(x)f(c)xc

に注意して、セカント法

xk+1=xkxkxk1f(xk)f(xk1)f(xk)

が利用できる。1次収束も2次収束もしないものの、その中間くらいの収束性を示すことがある。ただしこの方法にはx0に加えx1も初期値として用いる必要がある。

今回の復習

  • 2分法の基礎となる定理を述べよ。
  • Newton法のアルゴリズムを説明せよ。

参考文献

プライバシーポリシー お問い合わせ