newton法による非線形数値解析と 非線形回帰 版 線形回帰(j6 版) m.shimura...
TRANSCRIPT
Newton法による非線形数値解析と非線形回帰 (J6版)
M.Shimura
平成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