非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大...

30
1 非線形方程式の解法:2分法,ニュートン法 非線形方程式 f(x)=0 f(x)は一般の関数 ó 線形方程式 f(x)は1次関数 ここでは主に、 1変数の実関数、解の近傍で連続なものを考える ひとつの解について考える f(x) 0 f(x)=0

Upload: others

Post on 06-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

1

非線形方程式の解法:2分法,ニュートン法 非線形方程式 f(x)=0 f(x)は一般の関数

ó 線形方程式 f(x)は1次関数

ここでは主に、1変数の実関数、解の近傍で連続なものを考えるひとつの解について考える

f(x)

0 f(x)=0

Page 2: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

2

非線形方程式の解法:二分法 y=f(x)と x=0 の交点を求める 一般に f(x)が連続であれば 解 x=α の前後で符号が反転 二分法はこの関係を利用

a b

e=(c+d)/2 d=(a+c)/2

c=(a+b)/2

解の範囲

f(x)

x

解α

Page 3: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

3

二分法

a b

e=(c+d)/2 d=(a+c)/2

c=(a+b)/2

解の範囲

f(x)

x

解α

手順 1 適当なa,bを選ぶ 2 f(a) x f(b) > 0 時は1へ戻る

そうでないなら次へ進む3 c=(a+b)/24 f(c) < ξ ならば 解をcとして計算完了

そうでないなら次へ進む5 f(a) x f(c) < 0 時は b=c、

そうでないならは a=c とする6 2へ戻る

Page 4: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

収束の速さ: 毎回半分 ->1次収束と呼ばれる |α-cn| ≦(1/2)n |b-a| cn : n回目の推定値 α:方程式の解

(定数 x 繰り返し回数 で誤差が低減)

二分法

a b

e=(c+d)/2

d=(a+c)/2

c=(a+b)/2

解の範囲

f(x)

x

解α

Page 5: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

二分法の特徴  収束の速さ:1次収束(遅い)  関数が計算できれば必ず解が求められる  導関数など不要  初期値は2つ必要  偶数の重根を持つときは、解が求まらない

解の前後の符号の反転がない

Page 6: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

6

二分法 Fortranによるプログラム: Fortranを理解する必要はない。流れを理解する。 例

ε:基準 α:解 a,b:初期値 n:繰り返しカウント

出力手続き

cn: n回目の推定値(a,bの更新) fcn: cnに対する関数値(別途定義)

出力

解の前後の値が正 ->20行へ (b=cn) 0, 負 ->30行,40行へ(a=cn)

Page 7: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

7

非線形方程式の解法:二分法,ニュートン法

二分法

f (x) = x 2 + 2x −1 = 0

解の前後の値が正 ->20行へ (b=cn) 0, 負 ->30行,40行へ(a=cn)

それらの操作のあと 50行へ

nを増分、絶対値がεより小さければ終了

出力

f(x) を計算するための部分

Page 8: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

8

二分法

初期値 a=0, b=1 f(a)=-1, f(b)=2 c=0.5 解 α = -1+√2

f (x) = x 2 + 2x −1 = 0

Page 9: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

9

ニュートン法

x0が、f(x)=0 の解の近傍とするy=f(x)上でx=x0 において引いた接線とx軸の交点の座標x1は、x0 より解に近いことが期待できる。

x=x1 において引いた接線とx軸の交点の座標x2は、x1 より解に近いことが期待できる。

一般的には下の漸化式による繰り返し計算を行う

この漸化式は、接線とx軸の交点を求める式

xk+1 = xk − f (xk ) / f '(xk )

Page 10: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

10

ニュートン法

x1 = x0 − f (x0 ) / f ' (x 0 )

Page 11: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

11

ニュートン法

Page 12: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

12

ニュートン法

変数の定義

εの設定 N:繰替し回数 aを初期値としてx0へ xk+1 = xk − f (xk ) / f '(xk )

f()は関数 f_d()は導関数 x0の更新

nの増加delta(変化分)が十分小さいとき終了:それまでは繰り替えし

f(x)=x2 –aのaを入力

Page 13: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

13

ニュートン法 サブルーチン f(x)の値を計算する

f_d(x)は 導関数f’(x)を計算する

f(x)=x2 -a

f'(x)=2x

Page 14: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

break

Page 15: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

Alex (parrot)Alex could even add, to a limited extent, correctly giving the number of like objects on a tray.Wise, Steven M. (2002). Drawing the Line. Cambridge, MA: Perseus Books. p. 108. ISBN 0-7382-0340-8

Page 16: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式
Page 17: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

収束の速さ

εk = xk − a = xk−1 − (xk−12 − a) / 2xk−1 − a

= (1 / 2xk−1 )(2xk−12 − x 2k−1 + ( a )

2 − 2xk−1 a )

= (1 / 2xk−1 )(xk−1 − a )2 = (1 / 2xk−1 )(εk−1 )2

解√aへの収束の速さを求める。 εk:: kばんめの近似値 xkの誤差

であるため,k番目の近似値の誤差は,その直前のk-1番目の近似値の誤差の2乗に比例する。この例題に関しては,ニュートン法は2次収束の性質も持っているように見える。

f (x) = x2 − af '(x) = 2xxk+1 = xk − (xk

2 − a) / 2xk = (xk + a / xk ) / 2

Page 18: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

ニュートン法一般の場合の 収束の速さ

εk = xk −α = g(xk−1 ) − g(α )

= g '(α )(xk−1 −α ) + g ''(α )(xk−1 −α )2 / 2!+•••

= g '(α )εk−1 + g ''(α )(εk−1 )2 / 2!+g (3) (α )(εk−1 )

3 / 3!+•••

g(x) = x − f (x) / f '(x)f(x)=0の解 α、

g(xk-1)を解αの周りでテイラー展開

g '(x) =1−[( f '(x))2 − f (x) f ''(x)] / ( f '(x))2

= f (x) f ''(x) / ( f '(x))2

であり、f(α)=0.g’(α)=f(α) f ’’(α)/(f’(α))2=0である。したがってεk ≅ g ''(α)(εk−1)

2 / 2

Page 19: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

20

テイラーの定理

Page 20: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

21

15桁まで正当

Page 21: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

22

ニュートン法の特徴 ・単根の場合、収束が速い(2次収束) ・初期値によっては収束しない ・二分法である程度近傍の値を求め、そこからニュートン法を利用方法もある ・導関数の値を明示的に計算できる必要がある

二分法の特徴 ・収束の速さ:1次収束(遅い) ・関数が計算できれば必ず解が求められる ・導関数など不要 ・初期値は2つ必要 ・偶数の重根を持つときは、解が求まらない

解の前後の符号の反転がない

Page 22: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

23

ニュートン法のプログラム例

手順 1 適当な初期値a(=x0)を選ぶ 2 x=a-f(a)/f’(b) を計算する3 |x-a|< ε ならば xを解として計算完了

そうでないなら次へ進む4 a=xとして2へ戻る

Page 23: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

24

非線形方程式の解法:割線法 ニュートン法では導関数が必要 割線法は、導関数の値の近似を利用する方法 解近傍の2点を結ぶ直線は、f(x)の近似となり、 その勾配は、導関数の値の近似値となる 導関数の値は、2点、(x0, f(x0)), (x1, f(x1))、を結ぶ直線の勾配として、近似できる。

f’(x0)≒ ( f(x1) - f(x0))/(x1 - x0)

ニュートン法の公式のf’(xk)を上の式で置き換えるとxk+1 = xk - f(xk)(xk – xk-1)/(f(xk) - f(xk-1))の漸化式が得られる。

Page 24: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

割線法

x0 x1 x2 x3 α

勾配:(f(x1)-f(x0))/(x1-x0)

x2 =x1-f(x1)(x1 – x0)/(f(x1)-f(x0))

Xk+1 =xk-f(xk)(xk – xk-1)/(f(xk)-f(xk-1))

Page 25: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

27

非線形方程式の解法:割線法の収束

εk ∝εk−1( 5+1)/2

Page 26: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

28

非線形方程式の解法:割線法の収束

ε k ∝ εk −1( 5 +1) /2

ニュートン法よりも収束が遅いが、計算回数で有利 ニュートン法:2次収束

: f(xk)とf’(xk) /1 反復:導関数が必要:初期値1つ

割線法 :1.618次収束 : f(xk)/1 反復、 f(xk-1)は前回の計算を利用

:導関数が不必要:初期値2つ

本日の出席:ニュートン法と割線法の違いをのべよ

Page 27: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

10/25 演習 演習:二分法,ニュートン法,割線法による方程式の解法 まず    を解いてみよう。 次に各自適当な方程式を考えて解いてみること。 プログラムはMatLabを想定していますが,別の言語でも結構です。 今回の演習をレポート1とします。 何をしたか、結果がどうなったか,それからなにがわかったかも書いて下さい。計算結果は必ず載せること。能力,進度に応じて,さらに追求してみて下さい。特に手法による違い(収束に必要な回数,初期値の影響など)について考察してみて下さい。 レポートは次回の授業開始前に,紙媒体で提出して下さい。 (A4 2ページ以内 + ソースコード)(本日の出席とする)

f (x) = x2 + 2x −1= 0

Page 28: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

%ループ fcn=a; while fcn < -epsilon | epsilon < fcn, %fcnの更新 end

グラフ化 x=1:0.1:100; fx=x.^2+2*x-1; figure(1); plot(x,fx);

Matlab 入力 a = input('a = ?: '); epsilon = 1.e-6; n = 0;

%ループ while 1, %fcnの更新 if fcn < -epsilon | epsilon < fcn, continue; else break; end end

出力 disp('-------------------------------------------------'); disp(n); disp('-------------------------------------------------');

Page 29: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

31

レポートの構成例 目的: 非線形方程式の解法には,~などの手法がある。 それぞれ~といった特徴が知られている。本報告では,実際にそれぞれの手法を用いて解を求め,手法による違いを調べる。 方法:Matlabのプログラムによって各手法による解法を計算し,手法による相違を検討した。作成したコードは別紙に添付する。 問題:利用した方程式は下記の通り。 方程式1(共通): 方程式2:~ 方程式3:~

f (x) = x2 + 2x −1= 0

結果:各方程式に関して,それぞれの手法について,回数解と誤差を表1に示す。いずれの手法においても,回数に伴う誤差の減少が見られるが,減少の速さは異なる。方程式の種類によって違いも見られる。 (結果を見て記載すること) 考察: 方程式1,2,3すべてにおいて,~法相対誤差が最小であり,~法の収束が速いことがわかる。また,方程式?では,~法の収束が悪く,~~~の問題には向かないと考えられる。 (結果を見て記載すること) 結果と考察 とまとめてもよい

Page 30: 非線形方程式 f(x)=0 f(x)は一般の関数 ó f(x) - 東北大 …shioiri/SHIOIRI/For_Classes_files/...1 非線形方程式の解法:2分法,ニュートン法 非線形方程式

32

レポートの構成例

結果:各方程式に関して,それぞれの手法について,回数解と誤差を表1に示す。いずれの手法においても,回数に伴う誤差の減少が見られるが,減少の速さは異なる。方程式の種類によって違いも見られる。 (結果を見て記載すること) 考察: 方程式1,2,3すべてにおいて,~法相対誤差が最小であり,~法の収束が速いことがわかる。また,方程式?では,~法の収束が悪く,~~~の問題には向かないと考えられる。 (結果を見て記載すること) 結果と考察 とまとめてもよい