31
はじめに 数値計算と Scheme 数値実験とまとめ 再帰でつくる、計算の世界 最急降下法による最適化シミュレーションを通してKaz. Hishinuma ([email protected]) 明治大学情報科学科 数理最適化研究室 Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

再帰でつくる、計算の世界

Embed Size (px)

DESCRIPTION

再帰でつくる、計算の世界 –最急降下法による最適化シミュレーションを通して– 10LISP'00 LT 発表資料 cf. http://connpass.com/event/2933/

Citation preview

Page 1: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

.

.

. ..

.

.

再帰でつくる、計算の世界–最急降下法による最適化シミュレーションを通して–

Kaz. Hishinuma ([email protected])

明治大学情報科学科 数理最適化研究室

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 2: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

きょうの内容Scheme って、なにが得意?

.

.

きょうの内容

Schemeって、なにが得意?数学とSchemeは仲良しなの?√

2の値を求めてみよう!

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 3: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

きょうの内容Scheme って、なにが得意?

.

.

きょうの内容

Schemeって、なにが得意?数学とSchemeは仲良しなの?√

2の値を求めてみよう!

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 4: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

きょうの内容Scheme って、なにが得意?

.

.

Schemeが得意なこと

Schemeが得意なことは・・・

再帰プログラミング

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 5: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

きょうの内容Scheme って、なにが得意?

.

.

Schemeが得意なこと・・・

Schemeだと、好きなだけ再帰呼び出しができる!!1

1ただし末尾再帰に限るKaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 6: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

きょうの内容Scheme って、なにが得意?

.

.

Schemeが得意なこと・・・

\(>ヮ<)/きゃっほぉ♪

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 7: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

きょうの内容Scheme って、なにが得意?

.

.

Schemeが得意なこと・・・

( ˘⊖˘ ) 。o(それって、何が嬉しいんだろう・・・)

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 8: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

きょうの内容

Schemeって、なにが得意?数学とSchemeは仲良しなの?√

2の値を求めてみよう!

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 9: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

数学と Schemeは仲良しなの?

再帰を書くことが、Schemeと数学を仲良しにするよ!!

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 10: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

再帰だとどう書く?

xk =

{0 (k = 0)

2xk−1 + 1 (otherwise)

⇒ xn =???

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 11: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

C言語なら・・・

int x ( int k )

{

int r = 0;

while ( k-- )

r = 2 * r + 1;

return ( r );

}

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 12: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

Schemeだと・・・

(define (x k)

(cond ((zero? k) 0)

(else (+ (* (x (- k 1))

2)

1))))

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 13: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

Schemeは、

再帰を使って、数式をそのままプログラムにできるね!!

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 14: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

ほかにも・・・

正確な数を扱える! (有理数)

複素数や極座標も扱える!λ and λ and λ ...

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 15: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

数学と Schemeは仲良し!!

これは使うしかないねっ☆(ゝω・)vキャピ

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 16: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

きょうの内容

Schemeって、なにが得意?数学とSchemeは仲良しなの?√

2の値を求めてみよう!

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 17: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

制約なし最適化問題

目的関数f : Rn → Rが与えられたとき、

f (x) の値を最小にする

x(∈ Rn)をさがす

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 18: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

つまり・・・?

y

x

y=f(x)ここを求めたい

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 19: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

どうすればいいの・・・?

最急降下法を使おう!!

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 20: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

最急降下法

.

. .1 適当な初期点 x(0) ∈ Rnを選ぶ

.

..

2 x(k+1) = x(k) − t∇f(x(k)) を計算する

.

.

.

3 ||∇f(x(k))|| の値が良い感じに小さくなったら終了

たったの3ステップでとっても簡単だね

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 21: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

つまり・・・?

y

x

y=f(x)

適当な場所に玉

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 22: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

つまり・・・?

y

x

y=f(x)玉転がる

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 23: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

つまり・・・?

y

x

y=f(x)良い感じに収束する

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 24: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

そういえば・・・

なんの話してたっけ?!↓√

2の値を求めなきゃ

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 25: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.√

2の値を求めるには?

ある値xと√

2の値との、誤差 ||x −

√2||を2

最小化しよう!!

2実際は (x2 − 2)2 を最小化した方が良いかもKaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 26: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.√

2の値を求めるには?

最急降下法の定義は、

xk =

{x0 (k = 0)

xk−1 − t∇f(xk−1) (otherwise)

f(x) := (x2 − 2)2 とすると、

xk =

{2 (k = 0)

xk−1 − t(4x3k−1 − 8xk−1) (otherwise)

||4x3k − 8xk|| が良い感じに小さくなる xkが解

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 27: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数学と Scheme は仲良しなの?√2 の値を求めてみよう! (前編)√2 の値を求めてみよう! (中編)

.

.

この式・・・

再帰で書きやすい形だ!!

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 28: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数値実験結果まとめ

.

.

実験結果

x1000 = 1.4142135623730951

一夜一夜に人見頃!

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 29: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数値実験結果まとめ

.

.

値の動き

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

2

0 2 4 6 8 10 12 14

"expr.out"

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 30: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数値実験結果まとめ

.

.

まとめ

.

..

1 Schemeは再帰が得意!

.

.

.

2 再帰は数学を楽しくする!

.

.

.

3 Schemeを楽しく感じたら、Shibuya.lispへ再帰しよう!!

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界

Page 31: 再帰でつくる、計算の世界

はじめに数値計算と Scheme数値実験とまとめ

数値実験結果まとめ

Thanks forYour Listening!

Kaz. Hishinuma ([email protected]) 再帰でつくる、計算の世界