newton法による非線形数値解析と 非線形回帰 版 線形回帰(j6 版) m.shimura...

31
Newton による (J6 ) M.Shimura [email protected] 18 9 26 目次 1 Newton 法による数値解析 3 1.1 Newon ..................... 3 1.1.1 Working Example .................. 3 1.1.2 Working Example .................. 4 1.2 ......................... 6 2 Newton 法による非線形回帰 7 2.1 .................... 7 2.2 ........................ 9 2.3 Newton による ................ 12 2.3.1 Worked Example ................... 12 2.3.2 Working Example .................. 13 2.3.3 Newton Script ................. 14 2.4 Reference .......................... 14 3 連立方程式とニュートン法 14 3.1 D. いる .................... 14 3.1.1 2 ........................ 15 3.1.2 3 ...................... 15 3.2 ニュートン ヤコ アン ................. 16 1

Upload: lenhan

Post on 23-Mar-2018

231 views

Category:

Documents


5 download

TRANSCRIPT

Newton法による非線形数値解析と非線形回帰 (J6版)

M.Shimura

[email protected]

平成18年 9月 26日

目次

1 Newton法による数値解析 31.1 多項式とNewon法 . . . . . . . . . . . . . . . . . . . . . 3

1.1.1 Working Example. . . . . . . . . . . . . . . . . . 31.1.2 Working Example. . . . . . . . . . . . . . . . . . 4

1.2 非線形関数 . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 Newton法による非線形回帰 72.1 指数回帰と対数回帰 . . . . . . . . . . . . . . . . . . . . 72.2 指数の重回帰 . . . . . . . . . . . . . . . . . . . . . . . . 92.3 Newton法による非線形回帰 . . . . . . . . . . . . . . . . 12

2.3.1 Worked Example. . . . . . . . . . . . . . . . . . . 122.3.2 Working Example. . . . . . . . . . . . . . . . . . 132.3.3 Newton法の Script . . . . . . . . . . . . . . . . . 14

2.4 Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3 連立方程式とニュートン法 143.1 微分関数D.を用いる . . . . . . . . . . . . . . . . . . . . 14

3.1.1 2変数 . . . . . . . . . . . . . . . . . . . . . . . . 153.1.2 3変数の例 . . . . . . . . . . . . . . . . . . . . . . 15

3.2 ニュートン法とヤコビアン . . . . . . . . . . . . . . . . . 16

1

3.2.1 例題 . . . . . . . . . . . . . . . . . . . . . . . . . 173.3 ヤコビアンを直接定義するニュートン法 . . . . . . . . . 183.4 Broyden法 . . . . . . . . . . . . . . . . . . . . . . . . . . 213.5 Script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4 Newton法と最適化 264.1 二階偏微分 . . . . . . . . . . . . . . . . . . . . . . . . . 264.2 制約条件無しの最適化 . . . . . . . . . . . . . . . . . . . 28

4.2.1 過程と結果 . . . . . . . . . . . . . . . . . . . . . 294.3 SCRIPT . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.4 Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2

1 Newton法による数値解析

1.1 多項式とNewon法

NEWTON法は f(x)は極狭い範囲では、1次式で近似できるというアイデアから成り立っている。関数をテーラー展開して 3次から先の項を無視する。

Tn(x) = f(x0) + f′(x0)(x − x0) +

f′′(x0)

2(x − x0)

2 +f′′′(x0)

3!(x − x0)

3 +

· · ·+ fn(x0)

n!(x − x0)

n

f(xk + ∆x) = f(xk) + f′(xk)∆x

∆x = −f(xk)

f′(xk)

xx+1 = xk −f(xk)

f′(xk)

1.1.1 Working Example

f(x) = x2 − 3 = 0

f′(x) = 2x

fk+1 = xk −x2

k− 3

2xk

Jの p.を用いると多項式の値が直ちに求められる。p.の場合記述が逆になる。f(x) = x2 − 3 → _3 0 1 &p.先ず図を描いて関数の形をつかむ。Jの numericに入っている stepsを用いると細かく X軸の指定範囲の数を描ける。

1

plot a; _3 0 1&p. (a=.steps 0 5 100)

_3 0 1&p. newton >:i.5

1.73205 1.73205 1.73205 1.73205 1.73205

1J6で epsで図を出力すると画面では潰れているように見えるが、印刷すると細密な数字が入っている。

3

-5 -4 -3 -2 -1 0 1 2 3 4 5

0

5

10

15

20

図 1:

2

1.1.2 Working Example

x3 + x − 1

f=. _1 0 1 1&p. NB.定数, 1次, 2次,3次の係数

(i:5),: _1 1 0 1 &p. i:5

_5 _4 _3 _2 _1 0 1 2 3 4 5

_131 _69 _31 _11 _3 _1 1 9 29 67 129

’axes 1’ plot (i:5); _1 1 0 1 &p. i:5

次にNewon法で解いてみよう。i : 5は-5から 5までの数列を打ち出す。これを初期値として用いる。

(i:5),. _1 1 0 1 &p. newton i:5

_5 0.682328 NB. この初期値で 0.682328 を得る。_4 0.682328

_3 0.682328

2初期値に 0を加えるとエラーになる。

4

-5 -4 -3 -2 -1 0 1 2 3 4 5

-100

-50

0

50

100

図 2:

_2 0.682328

_1 0.682328

0 0.682328

1 0.682328

2 0.682328

3 0.682328

4 0.682328

5 0.682328

グラフで確認してみると、0.68で X軸と交わっている。

図 3:

jac=:1 : ’x D.1’

x3 + x − 1の微分は 3x2 + 1で、同様に計算すると、

5

1 0 3&p. i:3

28 13 4 1 4 13 28

となる。Jは微分関数D.1を備えており、ヤコビアンを直ちにに生成できる。

_1 1 0 1&p. jac i:3

28 0 0 0 0 0 0

0 13 0 0 0 0 0

0 0 4 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 4 0 0

0 0 0 0 0 13 0

0 0 0 0 0 0 28

newton=:1 : ’]- x % x D.1’(ˆ:_)("0)

_1 1 0 1&p. newton i:5

0.682328 0.682328 0.682328 0.682328 0.682328 0.682328 0.682328 ...

1.2 非線形関数

f(x) = x − cosx

f=. 3 : ’ y - cos y’

f newton _3 _2 _1 0 1 2 3 4 5

0.739085 0.739085 0.739085 0.739085 0.739085 0.739085 0.739085 0.739085 0.739085

6

-5 -4 -3 -2 -1 0 1 2 3 4 5

-6

-4

-2

0

2

4

図 4:

2 Newton法による非線形回帰

2.1 指数回帰と対数回帰

次のデータはN.Thomsonが提示した単なる数値である。

5 4 $ DT1

4.745 4.653 4.604 4.007

4.086 4.569 3.806 3.191

3.098 3.676 3.876 3.433

4.106 3.007 2.631 3.694

3.293 2.418 3.445 3.195

DT2=: (i.20);DT1

reg0 ˆ. DT1

1.53001 _0.0232633

y = 1.53001 − 0.0232633lnx

y = 1.53001e-0:0232633x

と回帰方程式で表現できる。対数と指数は双子の兄弟姉妹である。対数を用いると線形関数として扱うことができ、便利である。

7

0 2 4 6 8 10 12 14 16 18

2

2.5

3

3.5

4

4.5

図 5: DT1

Jのˆ.は対数の値を求める動詞であり、単項の場合は eを基底にとり、両項の場合は左引数を基底とした対数の値が得られる。対数は通常はeを基底とした自然対数が用いられ、lnと書くが logと書いてある場合も多い。10を基底とした常用対数は地震のマグニチュードを表すときに見受けられた。対数から自然数に戻すときにはˆを用いる。

3

1x1 NB.e 1x2 NB.eˆ2 2x1 NB. 2*e

2.71828 7.38906 5.43656

自然対数

ˆ.100

4.60517

ˆ 4.60517

100

1x1 ˆ 4.60517

100

常用対数

10ˆ.100

2

10ˆ2

100

3Jの 1x1に eの数値が入っている。

8

0 2 4 6 8 10 12 14 16 18

0.8

0.9

1

1.1

1.2

1.3

1.4

1.5

図 6: linefit DT1

対数を用いないで、指数回帰で完結することもできる。

reg_exp DT1

1.53001 _0.0232633

y = 1.53001e-0:0232633x

plot DT1,: estim_exp DT1

pd ’eps temp/linefit_1.eps’

2.2 指数の重回帰

データは四半期の小さな需要を表している。ダミー変数を用いた四半期データである。

NB. Delurgio table5.7DD0=:72 110 117 172 76 112 130 194 78 119 128 201 81 134 141 216estim exp mregtag seasonDD0

reg0 tag_season DD0

4.25357 0.0143442 0.420002 0.489297 0.890812

9

0 2 4 6 8 10 12 14

60

80

100

120

140

160

180

200

220

図 7: linefit DD0

対数重回帰の場合は次のようになる。Lny = 4.25357+0.0143442T +0.420002Q1 +0.489297Q2 +0.890812Q3

これを指数で推計すると次のようになる。y = e4:25357e0:0143442Te0:420002Q1e0:489297Q2e0:890812Q3

4

Scriptを次に示す。

tag_season=: 3 : 0

NB. data is ln

NB. u. y (=DD0)

TMP0=:;(4%˜# y )# <0 0 0 , =/˜i.3

(i.# y),.TMP0,. ˆ. y

)

estim_exp_mreg=: 3 : 0

NB. y is tag_season y

REG=: reg0 y

;*/ (L:0) 1x1 ˆ L:0 ({1,.}:"1 y)* L:0 REG

)

4野鳥の目白を多数篭に入れると一本の止り木に群をなして順に止まる習性があり、目白押しの所以である。

10

tag season DD0

T Q Q Q lnDemand

0 0 0 0 4.27667

1 1 0 0 4.70048

2 0 1 0 4.76217

3 0 0 1 5.14749

4 0 0 0 4.33073

5 1 0 0 4.7185

6 0 1 0 4.86753

7 0 0 1 5.26786

8 0 0 0 4.35671

9 1 0 0 4.77912

10 0 1 0 4.85203

11 0 0 1 5.3033

12 0 0 0 4.39445

13 1 0 0 4.89784

14 0 1 0 4.94876

15 0 0 1 5.37528

DD0,. estim_exp_mreg tag_season DD0

DD0 estimation

72 70.3564

110 108.627

117 118.103

172 179.006

76 74.5113

112 115.042

130 125.078

194 189.577

78 78.9116

119 121.836

128 132.464

201 200.773

81 83.5717

134 129.031

141 140.287

216 212.629

11

(S.A.DeLurgio [Forcasting Principles and Aplication] Mcgraw-Hill 1998]table 5.7)

2.3 Newton法による非線形回帰

非線形回帰も最小二乗法を用いるが、逆行列で直ちにとは行かないので、NewtonN法などの暫近法を用いる。非線形回帰ではデータの他に関数の鋳型と初期値を必要とする。Jには微分関数D.1が用意されており、Newton法を用いる場合、形のいい解析関数はヤコビアンをD.1が計算してくれるが、D.1は力業に強くはないので、そのときは手で偏微分を行い、ヤコビアンを組む必要がある。

2.3.1 Worked Example

求める関数は動詞で定義する。ここではデータは plotのX; Yの逆のY;Xの形で用いるのため、(|. X;Y)としている。

求める関数 (鋳型) y = c0 + c1exp-c2x

鋳型の Newton法による定義 fn0=: 4 : ’ (0{y)+(1{y)* ˆ-x * 2{y’

初期値 C0=:3 4 0.4

(|.DT2)&(fn0 sub_a2) newton_fit C0

2.89046 1.93904 0.118559

f = 2.89046 + 1.93904e-0:118559x

plot DT1 ,:2.89046+ 1.93904* 1x1 ˆ -0.118559*i.20

12

0 2 4 6 8 10 12 14 16 18

2

2.5

3

3.5

4

4.5

図 8: Newtonfit

2.3.2 Working Example

小国「新数値計算法」サイエンス社 1997p149の例求める関数 y = c0e

c1x

Newton 法での定義 fn=: 4 : ’ (0{y)* ˆx * 1{y’

初期値 C2=:1.3 -1

DATA

,. DO_0

+----------------------------------+

|0.1 0.2 0.3 0.4 0.5 |

+----------------------------------+

|1.1112 0.8232 0.6099 0.4518 0.3347|

+----------------------------------+

13

(|.DO_0)&(fn2 sub_a2)newton_fit C2

1.49993 _2.9998

1.49993e-2:9998x NB. true value is1.5e-3

2.3.3 Newton法の Script

NB. --------newton_curve_fit--------------------------------------

NB. Norman Thomson 1994

NB. slightly modified by M.Shimura

NB. x is |. plot x;y data

NB. y is syokiti

newton_fit=: 1 : ’] + (>@{. @x)(%.|:)(>@{:@x) D.1’(ˆ:5)

sub_a0=: 1 : ’ (>@{: @[) x ]’

sub_a1=: 1 : ’ ((>@{. @[)- x);x ’

sub_a2=: 1 : ’(x sub_a0) sub_a1’

2.4 Reference

Norman Thomson [Applying Matrix Divide in APL and J] APL Quote Quad9/1994小国「新数値計算法」サイエンス社 1997

3 連立方程式とニュートン法

3.1 微分関数D.を用いる

Jは微分のプリミティブ (D.)を備えている。N.Thomsonが 1994年にこのD.を用いる簡潔な多変数のニュートン法を発表している。

14

NB. N.Thomson

new_2=: 1 : ’] - x (%.|:) x D.1’(ˆ:17)("1)

(ˆ:17)は反復回数を指定する任意の整数で、例として 17が与えられている。このスクリプトについては以前にも紹介しているが、再度レビューしてみよう。ニュートン法で解く関数は動詞で定義する。

3.1.1 2変数

f0 = ex + xy − 1

g0 = sinxy + x + y + 2

Tacitと Explicitの表現。どちらを用いても良い。

Tacit Explicit

f00=: 3 : ’(ˆ{.y )+(*/y )-1’

g00=: 3 : ’2+(+/ y )+1&o.*/ y ’

f0=: 3 : ’(ˆ{.y )+(*/y )-1’

g0=: 3 : ’2+(+/ y )+1&o.*/ y ’

連立では (f0,g0)とカンマで動詞を連結して用いる。

(f0,g0) new_2 1 1

_9.4112e_6 _2

3.1.2 3変数の例

15

h1(x, y, z) = 16x4 + 16y4 + z4 − 16

h2(x, y, z) = x2 + y2 + z2 − 3

h3(x, y, z) = x3 − y

h1=:3 : ’ (16 16 1 +/ . * y ˆ4)- 16’

h2=:3 : ’3- +/ y ˆ2 ’

h3=:3 : ’ (1{y )-˜(({. y )ˆ3)’

(h1,h2,h3) new_2 1 1 1

0.877966 0.676757 1.33086

(h1,(h2,h3)) new_2 1 1 1

0.877966 0.676757 1.33086

(h1,(h2,h3))としても結果は同じである。h1,h2,h3,h4...と続けていけば,多変数に適用できる。

3.2 ニュートン法とヤコビアン

ニュートン法の反復公式

ニュートン法の反復式 マトリクスの場合 F is vector-valued

xn+1 = xn −f(xn)

f′(xn)

x(n+1) = x(n) −F(x(n))

F′(x(n))

dF = F′(xn)∆x

x + ∆xは次により求める、

df=∂f

∂x1

∆x1 +∂f

∂x2

∆x2 +∂f

∂x3

∆x3 + · · ·+ +∂f

∂xm

∆xm

16

F(x)の偏微分 F′(x)は Jacobianと呼ばれる。そのスカラ表現

F′=

∂f1

∂x1

∂f1

∂x2

∂f1

∂x3

· · · ∂f1

∂xm∂f2

∂x1

∂f2

∂x2

∂f2

∂x3

· · · ∂f2

∂xm∂f3

∂x1

∂f3

∂x2

∂f3

∂x3

· · · ∂f3

∂xm...

...∂fm

∂x1

∂fm

∂x2

∂fm

∂x3

· · · ∂fm

∂xm

次の部分を反復させることがNEWTON法のキーポイントである。[J(x(n))]v(n) = −F(x(n))

ニュートン法の反復は次による。x(n+1) = x(n) − [J(x(n))]-1F(x(n))

v(n) = −[J(x(n))]-1F(x(n))

[J(x(n))]v(n) = −F(x(n))

x(n+1) = x(n) + v(n)

3.2.1 例題

x3

1− 2x2 − 2 = 0

x31− 5x2

3− 7 = 0

x2x23− 1 = 0

17

f1(x1, x2, x3) = x31− 2x2 − 2 = 0

f1(x1, x2, x3) = x31− 5x2

3− 7 = 0

f1(x1, x2, x3) = x2x23− 1 = 0

F(x)=

f1(x1, x2, x3)

f1(x1, x2, x3)

f1(x1, x2, x3)

=

x3

1− 2x2 − 2

x31− 5x2

3− 7

x2x23− 1

Starting from initial vectorx(0) = [ 1 1 1 ]

Jacobian Matrix

J(x)=

3x2

1−2 0

3x21

0 −10x3

0 x23

2x2x3

3.3 ヤコビアンを直接定義するニュートン法

N.Thomsonの連立方程式の NEWTON解法は Jの微分関数 (D.)を用いたこのエレガントな方法で、解析関数には有効であるが頑強ではない。

new_2=: 1 : ’] - x (%.|:) x D.1’(ˆ:17)("1)

D.が通らない場合はヤコビアンを直接手で作って、反復する。この方法は手数はかかるが頑強である。

18

F(x)を動詞で定義する。 f0=: 3 : ’_2 + 1 _2 +/ . *(ˆ&3 1 )0 1 { y’

f1=: 3 : ’7 + 1 _5 +/ . *(ˆ&3 2 )0 2{ y’

f2=: 3 : ’_1+ */(ˆ& 1 2)1 2 { y’

fnewx=: f0,f1,f2

初期値 1 1 1を与える fnewx 1 1 1

_3 3 0

ヤコビアンを直接,定義する NB. J(x)

j0=: 3 : ’(3 * (ˆ&2)0{y ),_2,0’

j1=: 3 : ’(3 *(ˆ&2 )0 {y ),0,_10*2{y ’

j2=: 3 : ’0,((ˆ&2)(2{y )),2 * */1 2 {y ’

jnewx=: 3 : ’;("1) ,.(j0;j1;j2) L:0 y ’

初期値 1 1 1を与える

jnewx 1 1 1

3 _2 0

3 0 _10

0 1 2

v(0) =−F(x0)

J(x0)

(- fnewx 1 1 1 ) %. jnewx 1 1 1

0.428571 _0.857143 0.428571

19

x(1) = x(0) + v(0)

X=. 1 1 1 + (- fnewx 1 1 1 ) %. jnewx 1 1 1

1.42857 0.142857 1.42857

Fx(1)

fnewx X

0.629738 _0.28863 _0.708455

Jx(1)

jnewx X

6.12245 _2 0

6.12245 0 _14.2857

0 2.04082 0.408163

v(1) =−F(x1)

J(x1)(- fnewx X)%. jnewx X

0.0115397 0.350195 _0.0152585

x(2) = x(1) + v(1)

X=. X+ (- fnewx X)%. jnewx X

1.44011 0.493052 1.41331

v(2) =−F(x1)

J(x1)(- fnewx X)%. jnewx X

0.00214417 0.00695637 0.000902039

x(3) = x(2) + v(2)

X+ (- fnewx X)%. jnewx X

1.44226 0.500008 1.41421

20

ニュートンの反復法のスクリプト。fnewx,jnewxの名称は固定している。反復回数は 20回としている。(適宜変更する)

newton_iteration=: 3 : 0

X=: y

COUNTER=: 0

ANS=: <’’

while. COUNTER < 20 do.

V=: (- fnewx X) %. jnewx X

X=: X + V

ANS=: ANS,<X

COUNTER=. >:COUNTER

end.

;("1)}.,.ANS

)

4回の反復で収束している。

newton_iteration 1 1 1

1.42857 0.142857 1.42857

1.44011 0.493052 1.41331

1.44226 0.500008 1.41421

1.44225 0.5 1.41421

1.44225 0.5 1.41421

1.44225 0.5 1.41421

1.44225 0.5 1.41421

1.44225 0.5 1.41421

(20回まで反復)

3.4 Broyden法

Brain Bradie [A friendly Introduction to Numeric Analsis] Pearson 2006はNewton法の別の解法としてBroyden法を紹介している。Broyden法の原典として次のような文献が紹介されている。

21

C.G.Broyden [Quasi Newton Method and their application to function min-imization] ’Mathematics of Computing 19’ 1967

Broyden法はヤコびアンを用いるのは最初の一回のみで、次からは F(x)

の差分から求める反復解法である。

Ak(x(k) − x(k-1)) = F(x(k)) − F(x(k-1))

f ’(x k) =f(xx) − f(x(k-1))

xk − xk-1

Ak = Ak-1 −y − Ak-1∆

∆T∆∆T

y=F(xk) − F(xk-1)

∆ = xk − xk-1

A-1

k=

(Ak-1

y − Ak-1∆

∆T∆∆T

)-1

=A-1

k-1+

(∆ − A-1

k-1y)∆TA-1

k-1

∆TA-1

k-1y

F(x(0))

fnewx 1 1 1

_3 3 0

A0 = J(x(0))

jnewx 1 1 1

3 _2 0

3 0 _10

0 1 2

22

A-1

0

%. jnewx 1 1 1

0.238095 0.0952381 0.47619

_0.142857 0.142857 0.714286

0.0714286 _0.0714286 0.142857

v(0) = −A-1

0F(x(0))

(%. jnewx 1 1 1) +/ . * -fnewx 1 1 1

0.428571 _0.857143 0.428571

x(1) = x(0) + v(0)

1 1 1 + (%. jnewx 1 1 1) +/ . * -fnewx 1 1 1

1.42857 0.142857 1.42857

F(x(1))

fnewx x0

0.629738 _0.28863 _0.708455

y = F(x(1)) − F(x(0))

(fnewx x0) - fnewx 1 1 1

3.62974 _3.28863 _0.708455

A-1

0y

(%. jnewx 1 1 1) +/ . * y

0.213661 _1.49438 0.392961

∆ = v(0)

∆TA(0)y v0 +/ . * (%. jnewx 1 1 1) +/ . * y

1.54088

23

Ak = Ak-1 −y − Ak-1∆

∆T∆∆T %. DELTA broyden_sub0 Y;jnewx 1 1 1

0.276741 0.133884 0.785355

_0.108758 0.176956 0.987078

0.0782484 _0.0646088 0.197416

v(1) = −A-1

1F(x(1))

x(2) = x(1) + v(1)

broyden 1 1 1

1 1 1

1.42857 0.142857 1.42857

1.84933 0.961721 1.50051

1.28191 0.844231 1.44359

1.66612 0.478836 1.39738

1.31599 0.667999 1.45464

1.56872 0.472869 1.39122

1.34922 0.557366 1.43495

1.4907 0.45568 1.39655

1.40136 0.518196 1.42501

1.46108 0.478744 1.40543

1.42285 0.503729 1.41856

1.44784 0.48762 1.40993

1.43177 0.497942 1.41557

1.4422 0.491276 1.41191

1.43548 0.495565 1.41428

1.43982 0.492796 1.41275

1.43702 0.494581 1.41374

1.43883 0.493428 1.4131

1.43766 0.494171 1.41351

1.43842 0.493692 1.41324

1.43793 0.494001 1.41342

1.43824 0.493802 1.4133

1.43804 0.49393 1.41338

1.43817 0.493847 1.41333

1.43809 0.493901 1.41336

1.43814 0.493866 1.41334

1.43811 0.493889 1.41335

1.43813 0.493874 1.41334

1.43812 0.493884 1.41335

1.43812 0.493878 1.41335

1.43812 0.493881 1.41335

1.43812 0.493879 1.41335

1.43812 0.493881 1.41335

1.43812 0.493879 1.41335

1.43812 0.49388 1.41335

1.43812 0.49388 1.41335

1.43812 0.49388 1.41335

24

3.5 Script

NB. ----NEWTON ----------------------------------

NB. F(x)

NB. OK fixed _2 7 _1

f0=: 3 : ’_2 + 1 _2 +/ . *(ˆ&3 1 )0 1 { y’

f1=: 3 : ’7 + 1 _5 +/ . *(ˆ&3 2 )0 2{ y’

f2=: 3 : ’_1+ */(ˆ& 1 2)1 2 { y’

fnewx=: f0,f1,f2

NB. ------------------------------------

NB. J(x)

j0=: 3 : ’(3 * (ˆ&2)0{y ),_2,0’

j1=: 3 : ’(3 *(ˆ&2 )0 {y ),0,_10*2{y ’

j2=: 3 : ’0,((ˆ&2)(2{y )),2 * */1 2 {y ’

jnewx=: 3 : ’;("1) ,.(j0;j1;j2) L:0 y ’

NB. -------------------------------------

newton_iteration=: 3 : 0

X=: y

COUNTER=: 0

ANS=: <’’

while. COUNTER < 20 do.

V=: (- fnewx X) %. jnewx X

X=: X + V

ANS=: ANS,<X

COUNTER=. >:COUNTER

end.

;("1)}.,.ANS

)

NB. -------------------------------------

broyden=: 3 : 0

NB. Broyden method

NB. init calc

25

JN=: jnewx y

DELTA=: V=. - (%.JN) +/ . * FN=: fnewx y

ANS=:(<y ), < X=.V+y

Y=:( fnewx X)-FN

NB. --------------------

COUNTER=. 0

while. COUNTER < 50 do.

JN=. DELTA broyden_sub0 Y;JN

DELTA=. -(fnewx X) %. JN

X=. X+DELTA

ANS=. ANS,<X

COUNTER=. >: COUNTER

end.

;("1),.ANS

)

broyden_sub0=: 4 : 0

NB. x is delta

’Y JN’=: y

JN-((Y - JN +/ . * x ) % x +/ . * x )+/ . * x

)

4 Newton法と最適化非線形方程式の条件無しの最適化法の一つとして、newton法がある。

4.1 二階偏微分

newton法による最適化は一階偏微分と二階偏微分(ヘッセ行列)を用いる。5

偏微分を求めるスクリプトは、C.Reiterのスクリプトを用いる。

52階偏微分係数を要素とする行列は、目的関数に対してはヘッセ行列、勾配ベクトルに対してはヤコビ行列と呼ばれる

26

これは、2変数の一階偏微分をマトリックスに表し、接続詞 Pで一階偏微分を、P jacで二階偏微分を求める。

f(x) = x21− 2x1x2 + 1

4x4

2− 1

3x3

2

∇f(x) =  2x1 − 2x2

−2x1 + x32− x2

2

a1=:4 4 $ _2 2 ( 1 4 )} 16#0

a2=:4 4 $ _1 1 _2 ( 2 3 4)} 16#0

N=: 4

a3=. a1,:a2

a3

27

x20 x2

1 x22 x2

3

x10 0 2 0 0 

x11 2 0 0 0

x12 0 0 0 0

x13 0 0 0 0

x10 0 0 1 1

x11 2 0 0 0

x12 0 0 0 0

x13 0 0 0 0

6

初期点 x0 = (3, 3)より ∇f(x0)を求める。 

a3 P 3 3

0 12

初期点 x0 = (3, 3)よりHf(x0)を求める。 

a3 P jac 3 3

2 _2

_2 21

xn0 = 1とする。

4.2 制約条件無しの最適化

制約無し最適化の解法としての newton法は反復法によるものである。newton法は正則なヘッセ行列の逆行列が必要である。ヘッセ行列の解は、x. P jac y.で求めることが出来る。x0を初期値とすると、ニュートン方向(ベクトル)はd = −Hf(x0)-1∇f(x0)を計算し、  xk+1 ← xk + dk の反復を収束するまで行う。

6xn0 = 1

28

4.2.1 過程と結果

(最初に N =左引数のマトリクスサイズ(1 { $ x.) は手動で指定する。)

Hf(x0)-1

(%. a3 P jac 3 3)

0.552632 0.0526316

0.0526316 0.0526316

∇f(x0)

a3 P 3 3

0 12

d0 = Hf(x0)-1∇f(x0)

( %. a3 P jac 3 3) +/ . * a3 P 3 3

0.631579 0.631579

x1 = x0 + d0 = x0 − Hf(x0)-1∇f(x0)

3 3 - ( %. a3 P jac 3 3) +/ . * a3 P 3 3

2.36842 2.36842

値を初期値に代入し、反復する

c=. 2.36842 2.36842

c - (%. a3 P jac c) +/ . * a3 P c

2.07716 2.07716

「結果」a3 new_ml 3 3    NB. 10回反復2 2

ニュートン法の計算には、正定置で正則なヘッセ行列が必要である。

29

4.3 SCRIPT

NB. =======================

NB. Partial differential

NB. by C.Reiter

NB. ==========================

P=: 1 : ’((m ("_) +/ . * {:) +/ . * {.)@(ˆ/&(i.1{$ m ))’ NB. modified by Shimura

NB. f=: a P

jac=: (D.1)("1)

NB. ===========================================

NB. Script is written by M. Shimura 08 July 2002

NB. ============================================

new_ml=: 4 : 0

NB. Newton method for Maximum Likelyhood function

NB. x Partial derivative matrix

NB. y Start value

NB. N=: Matrix size

Y0=: y

NR=: 0

while. NR < 10 do. NB. repeat 10 times (change if you wish)

D=: (%. x P jac Y0) +/ . * x P Y0

Y0=:NT=: Y0 - D

NR=: >: NR

end.

NB. 1!:2&2 Y0

Y0

)

NB. =============================

NB. data block

NB. ==============================

a=: 3 5 2 *"1 (i.2 3 3 )e. 5 7 12

NB. a is defined in C. reiter

NB. a3 and a6 is in Tamura & Muramatsu

30

a1=: 4 4 $ _2 2 ( 1 4) } 16#0

a2=: 4 4 $ _1 1 _2 ( 2 3 4 ) } 16#0

a3=: a1,:a2

4.4 Reference

C. Reiter [ Fractal Visualization with J]田村明久 村松正和「最適化法」工系数学講座 Vol17 共立出版 

2002

31