何もないところから数を作る

104
何もないところから数を作る 2015/07/24 第4回プログラマのための数学勉強会 @taketo1024

Upload: taketo-sano

Post on 12-Aug-2015

1.744 views

Category:

Science


0 download

TRANSCRIPT

Page 2: 何もないところから数を作る

今日のテーマ

「数とは何か」

Page 3: 何もないところから数を作る

「万物の根源は数である」

ピタゴラス (BC 582~496)

Page 4: 何もないところから数を作る

ピタゴラス (BC 582~496)

「万物の根源は数である」

自然数とその比

Page 5: 何もないところから数を作る

無理数などないピタゴラス

死刑ピタゴラス

先生、これ無理数ですけど…

弟子A

1

1

√2

Page 6: 何もないところから数を作る

ピタゴラス教団のシンボル

1 黄金比 φ 👈 これも無理数ww

ぐぬぬ…

Page 7: 何もないところから数を作る

ユークリッド (BC 300~?)

『原論』の著者で「幾何学の父」。 「数」はやはり自然数のことになっている。

Page 8: 何もないところから数を作る

古代ギリシャの滅亡と共にギリシャ数学は衰退、 イスラム世界に引き継がれ代数学が発展していく。

Page 9: 何もないところから数を作る

代数方程式の解としての「無理数」

' : 1 = 1 : '� 1 , '('� 1) = 1

, '2 � '� 1 = 0

' =1±

p5

2

Page 10: 何もないところから数を作る

13世紀頃、数学はヨーロッパに再輸入され次第に復活。 16世紀のルネッサンス期にはアラビア数字も採用され、

印刷技術の発展と共に急速に発展していく。

Page 11: 何もないところから数を作る

17世紀:科学革命の時代

ニュートン、ライプニッツによって微積分学が発明される。 位置や速度など連続的に変化する量を解析する手段が確立される。

アイザック・ニュートン (1642 ~ 1727)

ゴットフリート・ヴィルヘルム・ライプニッツ (1646 ~ 1716)

Page 12: 何もないところから数を作る

連続的に変化する量としての「実数」

t

x

Page 13: 何もないところから数を作る

18世紀もさらに物理学への応用として微積分学が発展していくが、「無限小」「極限」などが曖昧なままで

変な結果が色々と出てきた。

Page 14: 何もないところから数を作る

1X

n=0

(�1)n = 1� 1 + 1� 1 + 1� 1 + 1� 1 + ...

= (1� 1) + (1� 1) + (1� 1) + (1� 1) + ...

= 0

= 1� (1� 1)� (1� 1)� (1� 1)� (1� 1)...

= 1

0 = 1

Page 15: 何もないところから数を作る

「解析学に幾何学で要求するような完全な厳密さを与えよう」

Page 16: 何もないところから数を作る

コーシーとワイエルシュトラウスによって無限小や極限が定式化される。 → 理系大学生殺しの εδ 論法の完成!

19世紀:数学の基礎と抽象化

"-�

オーギュスタン=ルイ・コーシー (1789 ~ 1857)

カール・ワイエルシュトラス(1815 ~ 1897)

Page 17: 何もないところから数を作る

「幾何学で要求するような完全な厳密さ」

経験や直観によらず、定義・公理から出発し、 論理的な手続きのみによって理論を展開していく方法。

Page 18: 何もないところから数を作る

数列や関数の極限を扱うためには、 そもそも「実数」とは何かを定式化しなければいけない!

Page 19: 何もないところから数を作る

実数の公理1.四則演算(+, -, ×, ÷)ができる。

2.実数同士で大小(≦)が比較できる。

3.実数全体はつながっている。

Page 20: 何もないところから数を作る

実数の公理

👆 この「連続性」が有理数との決定的な違い!   しかしこの事実を定式化するのはとても難しい…

1.四則演算(+, -, ×, ÷)ができる。

2.実数同士で大小(≦)が比較できる。

3.実数全体はつながっている。

Page 21: 何もないところから数を作る

「連続性」の定式化• R の空でない有界な部分集合は上限を持つ。

• R の上に有界な単調増加数列は収束する。

• R の有界な数列は収束部分列を持つ。

• 中間値の定理、最大値の定理が成り立つ。

• …

→ 実は全部同値になる。これが「定理」ではなく「公理」なのだ。 この辺でだいたいみんな数学に見放された気分になる。

Page 22: 何もないところから数を作る

難しい話はともかく…

Page 23: 何もないところから数を作る

実数の公理

1.四則演算(+, -, ×, ÷)ができる。

2.実数同士で大小(≦)が比較できる。

3.実数全体はつながっている。

→ 実数とはこういうものだとして、さらに極限や連続なども粛々と定義していけば、解析学は曖昧さや矛盾なく作り上げていくことができる。

Page 24: 何もないところから数を作る

うーん…

Page 25: 何もないところから数を作る

一方的に「これは公理です」って言われるのは、 「これは仕様です」って言われるモヤモヤに似てる。

Page 26: 何もないところから数を作る

【朗報】

Page 27: 何もないところから数を作る

実数は有理数を「完備化」することで作れる!

Page 28: 何もないところから数を作る

じゃ有理数はどうやって作るの?

Page 29: 何もないところから数を作る

有理数は整数同士の割り算で作れる!

Page 30: 何もないところから数を作る

整数は?

Page 31: 何もないところから数を作る

整数は自然数を二つ繋げて作れる!

Page 32: 何もないところから数を作る

自然数は?

Page 33: 何もないところから数を作る

自然数は…

Page 34: 何もないところから数を作る

「空集合」から作る!!!

Page 35: 何もないところから数を作る

何もないところから数を作る

@taketo1024

2015/07/24 第4回プログラマのための数学勉強会

Page 36: 何もないところから数を作る

自然数を作るには、 まず自然数とは何かを定める必要がある。

Page 37: 何もないところから数を作る

自然数の公理1. 最初の数 0 ∈ N が存在する

2. 任意の a ∈ N にはその「次」 a+ が存在する

3. a+ = 0 なる a は存在しない(N は 0 から始まる)

4. a ≠ b ならば a+ ≠ b+ (a+ は単射)

5. N では数学的帰納法が成立する

以上を満たす集合 N を自然数系と呼ぶ

Page 38: 何もないところから数を作る

フォン・ノイマンによる自然数系の構成

として順に作っていく。

1. 0 = {} (空集合)

2. a+ = a ∪ {a}

Page 39: 何もないところから数を作る

復習:集合の合併 ∪

={A, B, C} ∪ {D, E} {A, B, C, D, E}

={A, B, C} ∪ {} {A, B, C}

Page 40: 何もないところから数を作る

• 0 = {}

• 1 = 0+ = 0 ∪ {0} = {0}

• 2 = 1+ = 1 ∪ {1} = {0} ∪ {1} = {0, 1}

• 3 = 2+ = 2 ∪ {2} = {0, 1} ∪ {2} = {0, 1, 2}

• ...

1. 0 = {} (空集合) 2. a+ = a ∪ {a}

Page 41: 何もないところから数を作る

• 0 = {}

• 1 = {0}

• 2 = {0, 1}

• 3 = {0, 1, 2}

• ...

1. 0 = {} (空集合) 2. a+ = a ∪ {a}

Page 42: 何もないところから数を作る

• 0 = {}

• 1 = {0} = { {} }

• 2 = {0, 1} = { {}, { {} } }

• 3 = {0, 1, 2} = { {}, { {} }, { {}, { {} } } }

• ...

1. 0 = {} (空集合) 2. a+ = a ∪ {a}

Page 43: 何もないところから数を作る

ね、簡単でしょう?

Page 44: 何もないところから数を作る

→ 難しい場合は、空集合を 猫 に置き換えて考えましょう。

Page 45: 何もないところから数を作る

• 0 = 🐱

• 1 = {0} = { 🐱 }

• 2 = {0, 1} = { 🐱, { 🐱 } } 👈 さっきの写真

• 3 = {0, 1, 2} = { 🐱, { 🐱 }, { 🐱, { 🐱 } } } • ...

1. 0 = 🐱 (空集合) 2. a+ = a ∪ {a}

簡単でしょう?

Page 46: 何もないところから数を作る

はじまりは何でもいいので、 空集合にしとけば何も用意しなくて済むってだけ。

Page 47: 何もないところから数を作る

自然数系に順序と演算を入れて行きましょう!

Page 48: 何もないところから数を作る

• 0 = {}

• 1 = {0}

• 2 = {0, 1}

• 3 = {0, 1, 2}

• …

集合として 0 ⊂ 1 ⊂ 2 ⊂ 3 ⊂ … となっている。 ⊂ を ≦ とすれば自然数系には順序が入る。

Page 49: 何もないところから数を作る

• a + 0 = a

• a + (b+) = (a + b)+

和 a + b の定義

Page 50: 何もないところから数を作る

• a + 0 = a • a + (b+) = (a + b)+

和 a + b の定義

3 + 2 = (3 + 1)+

= ((3 + 0)+ )+

= (3+ )+

= 4+

= 5

Page 51: 何もないところから数を作る

• a × 0 = 0

• a × (b+) = (a × b) + a

積 a × b の定義

Page 52: 何もないところから数を作る

3 × 2 = (3 × 1) + 3

= ((3 × 0) + 3) + 3

= (0 + 3) + 3

= 3 + 3

= 6

積 a × b の定義• a × 0 = 0

• a × (b+) = (a × b) + a

Page 53: 何もないところから数を作る

…何やってんの?w

Page 54: 何もないところから数を作る

自然数はアルゴリズムで構成できるということ

ふざけたことを…

Page 55: 何もないところから数を作る

「空配列」を空集合と見て、 プログラムで実装しちゃいましょう。

Page 56: 何もないところから数を作る

struct N: Equatable, Printable { private let val: [Any] private init(_ val: [Any]) { self.val = val } static var zero: N { return N([]) } }

postfix operator + {} postfix func +(n: N) -> N { return N(n.val + [n.val]) }

func +(n: N, m: N) -> N { if(m.val.isEmpty) { return n } else { return (n + m-)+ } }

func *(n: N, m: N) -> N { if(m.val.isEmpty) { return N.zero } else { return (n * m-) + n } }

https://gist.github.com/taketo1024/d60e0b8ba479921f7b16

Page 57: 何もないところから数を作る

DEMO

Page 58: 何もないところから数を作る

何もないところから自然数が作れました!

Page 59: 何もないところから数を作る

作れた後は 0 が空集合だとかいうことは忘れて、普通の自然数として扱っていい。

(普段プログラミングするときに機械語のこと考えないようなモン)

N0 1 2 3 4 5 6 7 …

Page 60: 何もないところから数を作る

次、整数 Z を作ります。( Z はドイツ語の「数」を意味する Zahlen から)

Page 61: 何もないところから数を作る

N-N0 1 2 3 4 5 6 7-7 -6 -5 -4 -3 -2 -1

N を二つ 0 のところで貼り合わせて、 正負の場合に分けて演算を定義すればいいだけ。

Page 62: 何もないところから数を作る

もっとカッコイイやり方:

N0 1 2 3 4 5 6 7

7

6

5

4

3

2

1

N

Page 63: 何もないところから数を作る

0 1 2 3 4 5 6 7

もっとカッコイイやり方:

7

6

5

4

3

2

1

Page 64: 何もないところから数を作る

0 1 2 3 4 5 6 7

もっとカッコイイやり方:

7

6

5

4

3

2

1

x - y = 0x - y = 1x - y = 2x - y = 3x - y = 4x - y = 5x - y = 6x - y = 7

Page 65: 何もないところから数を作る

0 1 2 3 4 5 6 7

もっとカッコイイやり方:

7

6

5

4

3

2

1

0

1

2

3

4

5

6

7

x - y = -1-1-2-3-4-5-6-7

Page 66: 何もないところから数を作る

もっとカッコイイやり方:

0 1 2 3 4 5 6 7

7

6

5

4

3

2

1

0

1

2

3

4

5

6

7

-1-2-3-4-5-6-7

「直線上に並ぶ点たち」をまとめて一つの整数とすればいい。

👈 (n, 0) が n ≧ 0 に対応

(0, n) が n ≦ 0 に対応 👉

Page 67: 何もないところから数を作る

こうすることで演算が簡単に定まる:

例) 5 - 8 = (5, 0) + (0, 8) = (5, 8) = (0, 3) = -3

例)3 × (-2) = (3, 0) + (0, 2) = (3 × 0 + 0 × 2, 3 × 2 + 0 × 0) = (0, 6) = -6

Page 68: 何もないところから数を作る

Z0 1 2 3 4 5 6 7-7 -6 -5 -4 -3 -2 -1

先ほどと同様、もうこの先は普通の真っ直ぐな整数として扱っていい。

Z は +, -, × で閉じた「環」になる。

Page 69: 何もないところから数を作る

次、有理数 Q を作ります。( Q はイタリア語の「商」を意味する Quoziente から)

Page 70: 何もないところから数を作る

Z (分子)

Z (分母)

Page 71: 何もないところから数を作る

Z (分子)

1

Z (分母)2

34 1/1 = 2/2 = 3/3 = 4/4 = …2 = 2/1 = 4/2 = 6/3 = …

1/2

「 (0, 0) と (p, q) を結ぶ直線上の点をまとめたもの」が p/q

Page 72: 何もないところから数を作る

Z (分子)

Z (分母)

(p, q) を q = 1 に射影したものが p/q と考えても良い。

Q

(5, 4)

5/4

Page 73: 何もないところから数を作る

演算は小学校で習った通りに定義する

例) 2/3 + 3/5 = (2, 3) + (3, 5) = (10, 15) + (9, 15) 👈 通分 = (19, 15) = 19/15

例)3/4 × 2/7 = (3, 4) × (2, 7) = (3 × 2, 4 × 7) = (6, 28) = (3, 14) 👈 約分 = 3/14

Page 74: 何もないところから数を作る

Q は +, -, ×, ÷ で閉じた「体」になる。 限りなく密に分布しているが、まだ無理数の穴が空いている。

Q

Page 75: 何もないところから数を作る

ではいよいよ、実数 R を作りましょう!( R はもちろん Real Number の R)

Page 76: 何もないところから数を作る

Q に空いている無理数の穴はどうやったら埋められるか?

Q⇡ep

2

0 1 2 3 4

Page 77: 何もないところから数を作る

Q の中で目標の無理数に近づいていく数列を考える。

Qe

0 1 2 3 4

Page 78: 何もないところから数を作る

e

x =1X

n=0

x

n

n!

= 1 + x+x

2

2+

x

3

6+

x

4

24+ ...

ほぼチートだが、テイラー展開:

Page 79: 何もないところから数を作る

e

x =1X

n=0

x

n

n!

= 1 + x+x

2

2+

x

3

6+

x

4

24+ ...

e =1X

n=0

1

n!

= 1 + 1 +1

2+

1

6+

1

24+ ...

ほぼチートだが、テイラー展開:

より、 x = 1 として、

👈 有理数の無限和

Page 80: 何もないところから数を作る

e =1X

n=0

1

n!

= 1 + 1 +1

2+

1

6+

1

24+ ...

なので、有限部分和を取れば、

a0 = 1

a1 = 2

a2 = 2.5

a3 = 2.666...

a4 = 2.708...

...

Page 81: 何もないところから数を作る

a0 = 1

a1 = 2

a2 = 2.5

a3 = 2.666...

a4 = 2.708...

...

Qe

0 1 2 3 4

この数列は Q の中で e に近づいていくので、 この数列のことを e ってことにすればいい。

Page 82: 何もないところから数を作る

なんかずるい。

Page 83: 何もないところから数を作る

全ての無理数は有理数列の極限として表せるのか?

Page 84: 何もないところから数を作る

→ それは知らない。 そもそも「無理数」であることが分かってる数も一部。

ee, e⇡,⇡e などは無理数かどうかまだ知られていない。

Page 85: 何もないところから数を作る

じゃあダメじゃん。

Page 86: 何もないところから数を作る

人智を超えた「超越的」方法で作る

このような有理数列の「全体」を考え、色々な近づき方でも同じところに落ち着いていくものをまとめたものを、ひとつの実数ってことにする。

Qe

0 1 2 3 4

Page 87: 何もないところから数を作る

カントールの実数論

コーシーが定めた連続・極限の概念を元に、 1872年に「コーシー列」の極限として実数を定式化した。

ゲオルク・カントール (1845 ~ 1918)

Page 88: 何もないところから数を作る

「デーデキント・カット」 Q の「切断」一つ一つを実数ということにする。

Qe

0 1 2 3 4

もうひとつのやり方切断

リヒャルト・デーデキント(1831 ~ 1916)

Page 89: 何もないところから数を作る

これらの構成法によって作られた「数」は、 「連続性」を満たすことが証明できる(とても難しい)

Page 90: 何もないところから数を作る

なぜこんなに難しいのか?

Page 91: 何もないところから数を作る

実数の公理

👆 当たり前だと思ってたこの性質がそれだけ特別だから!

1.四則演算(+, -, ×, ÷)ができる。

2.実数同士で大小(≦)が比較できる。

3.実数全体はつながっている。

Page 92: 何もないところから数を作る

ちなみに

R から 複素数 C を作るのは簡単。 R×R に (0, 1) × (0, 1) = (-1, 0) となる掛け算を入れるだけ。

R

iR C

z

w

zw

Page 93: 何もないところから数を作る

まとめ

φ < N < Z < Q <<< R

空集合から出発して、順に実数まで構成していくことができた!しかし Q と R の間には、離散と連続の超えがたい壁があった。

Page 94: 何もないところから数を作る

まとめ

φ < N < Z < Q <<< R

空集合から出発して、順に実数まで構成していくことができた!しかし Q と R の間には、離散と連続の超えがたい壁があった。

👆 これはどうやって作るの?

Page 95: 何もないところから数を作る

「空っぽの集合」は実在するのか?

Page 96: 何もないところから数を作る

→ 公理論的集合論 (1908)

Page 97: 何もないところから数を作る

公理ばっかりやん…

Page 98: 何もないところから数を作る

19世紀以降、 なぜ数学はどんどん公理化されていったのか?

Page 99: 何もないところから数を作る

数学の独立と自由のため。

(…と僕は思う)

Page 100: 何もないところから数を作る

前提条件を徹底的に明確にする代わりに、 何を前提とするかを選べる自由を得た。

Page 101: 何もないところから数を作る

公理系は自由に採用していい(作ってもいい)。 6 + 7 = 1 でも 1 / 0 = ∞ でも良い。

Page 102: 何もないところから数を作る

ユークリッドの公理を満たさない 「非ユークリッド幾何学」も19世紀に確立された。

Page 103: 何もないところから数を作る

厳密な論理の上に広がる自由で創造的な 数学の世界を楽しみましょう…!