SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
はじめに
数値計算と 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) 再帰でつくる、計算の世界

Contenu connexe

Tendances

Tendances (20)

Coursera "Neural Networks"
Coursera "Neural Networks"Coursera "Neural Networks"
Coursera "Neural Networks"
 
【第34回数学カフェの予習会#1】微分と代数学のつながり
【第34回数学カフェの予習会#1】微分と代数学のつながり【第34回数学カフェの予習会#1】微分と代数学のつながり
【第34回数学カフェの予習会#1】微分と代数学のつながり
 
AtCoder Regular Contest 019 解説
AtCoder Regular Contest 019 解説AtCoder Regular Contest 019 解説
AtCoder Regular Contest 019 解説
 
AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Regular Contest 046
AtCoder Regular Contest 046
 
Sengoku
SengokuSengoku
Sengoku
 
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説
 
AtCoder Regular Contest 024 解説
AtCoder Regular Contest 024 解説AtCoder Regular Contest 024 解説
AtCoder Regular Contest 024 解説
 
Arc041
Arc041Arc041
Arc041
 
k-センター
k-センターk-センター
k-センター
 
不動点×不動点×不動点コンビネータ
不動点×不動点×不動点コンビネータ不動点×不動点×不動点コンビネータ
不動点×不動点×不動点コンビネータ
 
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説
 
AtCoder Regular Contest 017
AtCoder Regular Contest 017AtCoder Regular Contest 017
AtCoder Regular Contest 017
 
折り紙とコンパスで計算してみよう@ノラヤ・サイエンス・バー
折り紙とコンパスで計算してみよう@ノラヤ・サイエンス・バー折り紙とコンパスで計算してみよう@ノラヤ・サイエンス・バー
折り紙とコンパスで計算してみよう@ノラヤ・サイエンス・バー
 
2015年度秋学期 応用数学(解析) 第12回 複素関数・正則関数 (2015. 12. 10)
2015年度秋学期 応用数学(解析) 第12回 複素関数・正則関数 (2015. 12. 10)2015年度秋学期 応用数学(解析) 第12回 複素関数・正則関数 (2015. 12. 10)
2015年度秋学期 応用数学(解析) 第12回 複素関数・正則関数 (2015. 12. 10)
 
2015年度秋学期 応用数学(解析) 第13回 孤立特異点と留数 (2015. 12. 17)
2015年度秋学期 応用数学(解析) 第13回 孤立特異点と留数 (2015. 12. 17)2015年度秋学期 応用数学(解析) 第13回 孤立特異点と留数 (2015. 12. 17)
2015年度秋学期 応用数学(解析) 第13回 孤立特異点と留数 (2015. 12. 17)
 
競技プログラミングの楽しみ
競技プログラミングの楽しみ競技プログラミングの楽しみ
競技プログラミングの楽しみ
 
2014年度秋学期 応用数学(解析) 第4部・複素関数論ダイジェスト / 第13回 孤立特異点と留数 (2015. 1. 8)
2014年度秋学期 応用数学(解析) 第4部・複素関数論ダイジェスト / 第13回 孤立特異点と留数 (2015. 1. 8)2014年度秋学期 応用数学(解析) 第4部・複素関数論ダイジェスト / 第13回 孤立特異点と留数 (2015. 1. 8)
2014年度秋学期 応用数学(解析) 第4部・複素関数論ダイジェスト / 第13回 孤立特異点と留数 (2015. 1. 8)
 
数学を数学で数学した人々
数学を数学で数学した人々数学を数学で数学した人々
数学を数学で数学した人々
 
AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説
 
折り紙と正多角形と三次方程式 数学カフェ #math_cafe
折り紙と正多角形と三次方程式 数学カフェ #math_cafe 折り紙と正多角形と三次方程式 数学カフェ #math_cafe
折り紙と正多角形と三次方程式 数学カフェ #math_cafe
 

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

Similaire à 再帰でつくる、計算の世界 (11)

【Zansa】第12回勉強会 -PRMLからベイズの世界へ
【Zansa】第12回勉強会 -PRMLからベイズの世界へ【Zansa】第12回勉強会 -PRMLからベイズの世界へ
【Zansa】第12回勉強会 -PRMLからベイズの世界へ
 
Introduction to NumPy & SciPy
Introduction to NumPy & SciPyIntroduction to NumPy & SciPy
Introduction to NumPy & SciPy
 
6 Info Theory
6 Info Theory6 Info Theory
6 Info Theory
 
行列計算アルゴリズム
行列計算アルゴリズム行列計算アルゴリズム
行列計算アルゴリズム
 
数式をnumpyに落としこむコツ
数式をnumpyに落としこむコツ数式をnumpyに落としこむコツ
数式をnumpyに落としこむコツ
 
Algorithm 速いアルゴリズムを書くための基礎
Algorithm 速いアルゴリズムを書くための基礎Algorithm 速いアルゴリズムを書くための基礎
Algorithm 速いアルゴリズムを書くための基礎
 
Math in Machine Learning / PCA and SVD with Applications
Math in Machine Learning / PCA and SVD with ApplicationsMath in Machine Learning / PCA and SVD with Applications
Math in Machine Learning / PCA and SVD with Applications
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
 
T77 episteme
T77 epistemeT77 episteme
T77 episteme
 
代数的実数とCADの実装紹介
代数的実数とCADの実装紹介代数的実数とCADの実装紹介
代数的実数とCADの実装紹介
 
機械学習モデルの列挙
機械学習モデルの列挙機械学習モデルの列挙
機械学習モデルの列挙
 

Plus de Kazuhiro Hishinuma

Lisper は競プロを楽しめるか?
Lisper は競プロを楽しめるか?Lisper は競プロを楽しめるか?
Lisper は競プロを楽しめるか?
Kazuhiro Hishinuma
 
#upcamp '12 Hack-a-thon Result
#upcamp '12 Hack-a-thon Result#upcamp '12 Hack-a-thon Result
#upcamp '12 Hack-a-thon Result
Kazuhiro Hishinuma
 

Plus de Kazuhiro Hishinuma (16)

Properties of a Convex Set in Linear Space
Properties of a Convex Set in Linear SpaceProperties of a Convex Set in Linear Space
Properties of a Convex Set in Linear Space
 
大学生活概論
大学生活概論大学生活概論
大学生活概論
 
床下からCommon Lisp
床下からCommon Lisp床下からCommon Lisp
床下からCommon Lisp
 
すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~
すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~
すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~
 
What Does R7RS Change Programming in Scheme?
What Does R7RS Change Programming in Scheme?What Does R7RS Change Programming in Scheme?
What Does R7RS Change Programming in Scheme?
 
最急降下法で制約つき最適化問題を解いてみた
最急降下法で制約つき最適化問題を解いてみた最急降下法で制約つき最適化問題を解いてみた
最急降下法で制約つき最適化問題を解いてみた
 
Implementation of Counters in ScopedBASIC
Implementation of Counters in ScopedBASICImplementation of Counters in ScopedBASIC
Implementation of Counters in ScopedBASIC
 
Lisper は競プロを楽しめるか?
Lisper は競プロを楽しめるか?Lisper は競プロを楽しめるか?
Lisper は競プロを楽しめるか?
 
GaucheでCGIプログラミング
GaucheでCGIプログラミングGaucheでCGIプログラミング
GaucheでCGIプログラミング
 
How to Implement a CPU Emulator in Scheme
How to Implement a CPU Emulator in SchemeHow to Implement a CPU Emulator in Scheme
How to Implement a CPU Emulator in Scheme
 
明治大の活動2
明治大の活動2明治大の活動2
明治大の活動2
 
明治大の活動予告
明治大の活動予告明治大の活動予告
明治大の活動予告
 
The Programming Language Scheme
The Programming Language SchemeThe Programming Language Scheme
The Programming Language Scheme
 
情報と職業プレゼン予告
情報と職業プレゼン予告情報と職業プレゼン予告
情報と職業プレゼン予告
 
#upcamp '12 Hack-a-thon Result
#upcamp '12 Hack-a-thon Result#upcamp '12 Hack-a-thon Result
#upcamp '12 Hack-a-thon Result
 
Scoped BASIC Presentation1
Scoped BASIC Presentation1Scoped BASIC Presentation1
Scoped BASIC Presentation1
 

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