はじめに
数値計算と Scheme
数値実験とまとめ
.
.
再帰でつくる、計算の世界
–最急降下法による最適化シミュレーションを通して–
Kaz. Hishinuma (kazh@acm.org)
明治大学情報科学科 数理最適化研究室
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
きょうの内容
Scheme って、なにが得意?
きょうの内容
Schemeって、なにが得意?
数学とSchemeは仲良しなの?
√
2の値を求めてみよう!
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
きょうの内容
Scheme って、なにが得意?
きょうの内容
Schemeって、なにが得意?
数学とSchemeは仲良しなの?
√
2の値を求めてみよう!
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
きょうの内容
Scheme って、なにが得意?
Scheme が得意なこと
Schemeが得意なことは・・・
再帰プログラミング
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
きょうの内容
Scheme って、なにが得意?
Scheme が得意なこと・・・
Schemeだと、好きなだけ
再帰呼び出しができる!!1
1
ただし末尾再帰に限る
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
きょうの内容
Scheme って、なにが得意?
Scheme が得意なこと・・・
\(>ヮ<)/きゃっほぉ♪
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
きょうの内容
Scheme って、なにが得意?
Scheme が得意なこと・・・
( ⊖ ) 。o(それって、
何が嬉しいんだろう・・・)
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
きょうの内容
Schemeって、なにが得意?
数学とSchemeは仲良しなの?
√
2の値を求めてみよう!
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
数学と Scheme は仲良しなの?
再帰を書くことが、
Schemeと数学を
仲良しにするよ!!
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
再帰だとどう書く?
xk =
{
0 (k = 0)
2xk−1 + 1 (otherwise)
⇒ xn =???
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
C 言語なら・・・
int x ( int k )
{
int r = 0;
while ( k-- )
r = 2 * r + 1;
return ( r );
}
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
Scheme だと・・・
(define (x k)
(cond ((zero? k) 0)
(else (+ (* (x (- k 1))
2)
1))))
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
Scheme は、
再帰を使って、
数式をそのまま
プログラムにできるね!!
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
ほかにも・・・
正確な数を扱える!(有理数)
複素数や極座標も扱える!
λ and λ and λ ...
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
数学と Scheme は仲良し!!
これは使うしかないねっ
☆(ゝω・)vキャピ
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
きょうの内容
Schemeって、なにが得意?
数学とSchemeは仲良しなの?
√
2の値を求めてみよう!
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
制約なし最適化問題
目的関数f : Rn
→ R
が与えられたとき、
f(x) の値
を最小にする
x(∈ Rn
)をさがす
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
つまり・・・?
y
x
y=f(x)
ここを求めたい
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
どうすればいいの・・・?
最急降下法を使おう!!
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と 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 (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
つまり・・・?
y
x
y=f(x)
適当な場所に玉
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
つまり・・・?
y
x
y=f(x)玉転がる
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
つまり・・・?
y
x
y=f(x)良い感じに
収束する
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
そういえば・・・
なんの話してたっけ?!
↓√
2の値を求めなきゃ
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
√
2 の値を求めるには?
ある値xと
√
2の値との、
誤差||x −
√
2||を2
最小化しよう!!
2
実際は (x2
− 2)2
を最小化した方が良いかも
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と 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(4x3
k−1 − 8xk−1) (otherwise)
||4x3
k − 8xk|| が良い感じに小さくなる xk が解
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数学と Scheme は仲良しなの?√
2 の値を求めてみよう! (前編)√
2 の値を求めてみよう! (中編)
この式・・・
再帰で書きやすい形だ!!
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数値実験結果
まとめ
実験結果
x1000 = 1.4142135623730951
一夜一夜に人見頃!
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と 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 (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数値実験結果
まとめ
まとめ
.
1
Schemeは再帰が得意!
.
2
再帰は数学を楽しくする!
.
3
Schemeを楽しく感じたら、
Shibuya.lispへ再帰しよう!!
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界
はじめに
数値計算と Scheme
数値実験とまとめ
数値実験結果
まとめ
Thanks for
Your Listening!
Kaz. Hishinuma (kazh@acm.org) 再帰でつくる、計算の世界

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