newton1

March 20, 2018 | Author: Anonymous | Category: SCIENCE AND NATURE
Share Embed


Short Description

Download newton1...

Description

非線形方程式の数値解法   〜ニュートン法〜 荻田 武史

目的 •  非線形方程式  f(x)  =  0  の解を数値計算で求める。    (例)  f(x)  =  x2  -­‐  4  であれば、x=-­‐2,  2のとき  f(x)  =  0    f(x)は、多項式から三角関数、指数関数などを含んで良い。     •  数値計算によって、厳密に f(x*)  =  0  を満たす真の解  x*を 求めることは難しいが、x*に近い値(近似解)を求めること は可能。   •  本講義では、非線形方程式の反復解法であるニュートン 法によって、f(x)  =  0  の近似解を求める方法を学習し、その アルゴリズムを理解した上で、プログラミングを行う。

インライン関数を定義する方法 <例>  f(x)  =  cos  x  -­‐  x2  の場合   >>  f=inline('cos(x)  -­‐  x^2')   f  =            Inline  func8on:            f(x)  =  cos(x)  -­‐  x^2   >>  f(0)   ans  =            1   >>  ezplot(f,[-­‐1,1])   ←  f(x)のグラフを  -­‐1  ≦  x  ≦  1の     範囲で見る。

練習問題 以下をインライン関数で定義して、グラフを描いてみよ う(xの範囲も適当に変更してみよう)。  

(1) f(x) = x2 - 2



(2) f(x) = x2 - 3x + 2



(3) f(x) = x - sin x  

! 2π $ (4)

f (x) = sin # x & " 1+ e %

反復解法について ・f(x)  =  0  について、x0を初期値として与えた後、決めら れた手順を繰り返して(反復)、x1  ,  x2  ,  …  ,  xn  と真の解x* へ近づける(収束)。     ・反復の停止条件:  f(xn)が、ある程度0に近づいたら    反復を止めることにする。     f (xn ) ≤ ε    ε:十分に小さい正の数(たとえば、10-­‐6など。プログラ ムでは、1e-­‐6  のように書く)  

ニュートン法 •  連続で1回微分可能な関数  y  =  f(x)  を考える。   •  ある点xnでの導関数f’(xn)が与えられるとき、     (xn,f(xn))を通り、傾きがf'(xn)の直線方程式は  

y = f '(xn )(x − xn ) + f (xn ) •  これをf(x)の近似解とみなすと、f(x)  =  0の近似解は     y  =  0  のとき(x軸との交点)なので

f (xn ) xn+1 = xn − f '(xn )

ニュートン法(つづき) •  このように、1次式で近似することを繰り返し、   •  以下を満たすまで行う。  

f (xn ) ≤ ε x1,  x2,  x3と反復する毎に 真の解x*に近づいていく

x*

初期値

【実習】ニュートン法のプログラム •  プログラム作成のポイント   –  関数f(x)と導関数f'(x)をインライン関数で定義する。    (f'(x)は手計算で求める)   –  初期値x0を引数として与える。   –  for文で反復を行う。    (収束しない場合もあるので、反復回数に上限を設ける)   –  以下の反復条件を満たしたら、反復をbreakで止 めて、解を出力する。

f (xn ) ≤ ε

ニュートン法のプログラム func8on  [x,k]  =  mynewton1(f,fd,x0)   eps1  =  1e-­‐6;  %  許容誤差   kmax  =  50;  %  最大反復回数   x  =  x0;  %  xの初期値   for  k=1:kmax          fv  =  f(x);          fg  =  fd(x);          if    abs(fv)  <  eps1   ←  反復停止条件                break;          end          if  (abs(fg)  
View more...

Comments

Copyright © 2017 DOCUMEN Inc.