In [16]:
%pylab inline
from itertools import islice
from IPython.html.services.config import ConfigManager
from IPython.utils.path import locate_profile
ConfigManager(profile_dir=locate_profile(get_ipython().profile)).update('livereveal', {
              'theme': 'sky2',
})
#import pandas as pd
import requests
import urllib.parse
from bs4 import  BeautifulSoup
from IPython.html.widgets import interact, fixed
from IPython.html import widgets
from IPython.display import HTML, YouTubeVideo, Image
from IPython.display import display
def show_html(html, noclass=False):
    if noclass and 'class' in html.attrs:
        html=BeautifulSoup(str(html)).body.contents[0]
        del html.attrs['class']
    display(HTML(str(html)))

def get_html(url):
    r = requests.get(url)
    soup = BeautifulSoup(r.content)
    for s in soup.findAll('span', attrs={'class':'sortkey'}):
        s.extract()
    return soup

def show_bio(name):
    # name=urllib.parse.quote(name)
    for url in ['http://en.wikipedia.org/wiki/', 'http://zh.wikipedia.org/zh-tw/']:
        try:
            table = get_html(url+name).find('table', attrs={'class':'vcard'})
            table.attrs['style']='width: 80%'
            for img in table.findAll('img'):
                img.parent.attrs['class']='zoom_img'
            for a in table.findAll('a'):
                if 'href' in a.attrs and a.attrs['href'].startswith('/wiki/'):
                    a.attrs['href']=url+a.attrs['href'][6:]
            show_html(table)
            break
        except:
            continue
Populating the interactive namespace from numpy and matplotlib

數學漫談

Week 6

魏澤人

沒有人能將我們從康托爾建立的樂園中逐出!

希爾伯特

In [19]:
show_bio('希爾伯特')
大衛·希爾伯特
David Hilbert 1886.jpg
大衛·希爾伯特 (1886年)
出生 1862年1月23日(1862-01-23)
普魯士柯尼斯堡
逝世 1943年2月14日(81歲)
德國哥廷根
居住地 德國
國籍 德國
研究領域 數學哲學
任職於 柯尼斯堡大學
哥廷根大學
著名成就 希爾伯特基底定理英語Hilbert's_basis_theorem
公理化幾何英語Hilbert's axioms
希爾伯特的23個問題
希爾伯特計劃
愛因斯坦-希爾伯特作用量
希爾伯特空間
受影響於 伊曼努爾·康德[1]
獲獎 羅巴切夫斯基獎章
柏林科學院榮譽院士
ForMemRS[2]
In [20]:
show_bio('康托爾')
格奧爾格·康托爾
Georg Cantor2.jpg
出生 格奧爾格·費迪南德·路德維希·菲利普·康托爾
1845年3月3日(1845-03-03)
俄羅斯帝國聖彼得堡
逝世 1918年1月6日(72歲)
德意志帝國薩克森省哈雷
居住地 俄羅斯帝國(1845–1856)
德意志帝國(1856–1918)
國籍 德國
研究領域 數學
任職於 哈雷-維滕貝格大學
母校 蘇黎世聯邦理工學院
柏林洪堡大學
博士導師 恩斯特·庫默爾
卡爾·魏爾斯特拉斯
著名成就 集合論

無窮大

In [14]:
YouTubeVideo('EfqVnj-sgcc')
Out[14]:
In [1]:
YouTubeVideo('skM37PcZmWE')
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-1-5e2a3e950332> in <module>()
----> 1 YouTubeVideo('P8SqtRTt4gM')

NameError: name 'YouTubeVideo' is not defined

$1-1+1-1+1-1+\cdots=?$

Thomson's Lamp

cc-by see source

In [6]:
YouTubeVideo('Uj3_KqkI9Zo')
Out[6]:

可數無窮大

元素可以 $1, 2, 3, 4, \ldots $ 編號完的集合

希爾伯特旅館

有可數無限多個房間的旅館

客滿了,來了個客人怎麼辦?

又來了可數無窮多個客人怎麼辦?

又來了可數無窮多台車

每台車有可數無窮多客人

或說 $\mathbb{N}^2$ 是否可數

In [25]:
from itertools import islice
def count_N2():
    x,y = (1,1)
    while 1:
        yield (x,y)
        x,y = (1,x+y) if y==1 else (x+1, y-1)
        
for x,y in islice(count_N2(), 20):
    print((x,y), x+y)
(1, 1) 2
(1, 2) 3
(2, 1) 3
(1, 3) 4
(2, 2) 4
(3, 1) 4
(1, 4) 5
(2, 3) 5
(3, 2) 5
(4, 1) 5
(1, 5) 6
(2, 4) 6
(3, 3) 6
(4, 2) 6
(5, 1) 6
(1, 6) 7
(2, 5) 7
(3, 4) 7
(4, 3) 7
(5, 2) 7
In [26]:
axes().set_aspect('equal')
grid(b=True, which='major', color='b', linestyle='-')
X = [x for x,y in islice(count_N2(), 55)]
Y = [y for x,y in islice(count_N2(), 55)]
plot(X, Y, "r", marker="o");

什麼東西可數?

  • $\mathbb{N}$, $\mathbb{Z}$, $\mathbb{Q}$
  • $\mathbb{N}^2$, $\mathbb{N}^3$, $\mathbb{N}^4$
  • $\mathbb{N}^{<\infty}$ (Hint $ 2^{a_1} 3^{a_2} 5^{a_3} \cdots $)

Ross–Littlewood paradox

實數不可數!

理髮師悖論

In [27]:
show_bio('伯特蘭·羅素')
伯特蘭·阿瑟·威廉·羅素,
第三代羅素伯爵Nobel prize medal.svg

伯特蘭·羅素
西方哲學家
20世紀哲學
出生 1872年5月18日(1872-05-18)
逝世 1970年2月2日(97歲)
國籍 英國
學派 分析哲學
主要領域 倫理學認識論邏輯數學語言哲學科學哲學宗教
著名思想 分析哲學理髮師悖論羅素悖論數理邏輯邏輯原子論

理髮師:「我將為本城所有不給自己刮臉的人刮臉,我也只給這些人刮臉。」

$ \text{Let } R = \{ x \mid x \not \in x \} \text{, then } R \in R \iff R \not \in R $

希爾伯特計劃

為數學提供一個安全的理論基礎

失敗了

In [28]:
show_bio('Kurt_Gödel')
Kurt Gödel
Kurt gödel.jpg
Born Kurt Friedrich Gödel
(1906-04-28)April 28, 1906
Brünn, Austria-Hungary
(now Brno, Czech Republic)
Died January 14, 1978(1978-01-14) (aged 71)
Princeton, New Jersey, U.S.
Residence United States
Citizenship Austria, United States
Fields Mathematics, Mathematical logic
Institutions Institute for Advanced Study
Alma mater University of Vienna
Thesis Über die Vollständigkeit des Logikkalküls
Doctoral advisor Hans Hahn
Known for Gödel's incompleteness theorems, Gödel's completeness theorem, the consistency of the Continuum hypothesis with ZFC, Gödel metric, Gödel's ontological proof
Notable awards Albert Einstein Award (1951); National Medal of Science (U.S.) in Mathematical, Statistical, and Computational Sciences (1974)
Fellow of the British Academy
Signature
In [29]:
show_bio('圖靈')
艾倫·麥席森·圖靈
Alan Turing cropped.jpg
出生 1912年6月23日(1912-06-23)
 英國倫敦
逝世 1954年6月7日(41歲)
 英國
國籍  英國
研究領域 數學邏輯學電腦科學
任職於 劍橋大學
曼徹斯特大學
母校 劍橋大學
普林斯頓大學
博士導師 阿隆佐·邱奇
著名成就 圖靈機圖靈測試(圖靈試驗)

停機問題

是否存在演算法 $H$ 給定任何一段程式碼 $P$ ,還有一段輸入 $I$, $H(P, I)$ 能判斷 $P(I)$ 是否會停?

In [12]:
def P(I):
    if H(P, I)==STOP:
        while 1:
            pass
    return        

又是對角線法則

In [13]:
def P(I):
    if H(I, I)==STOP:
        while 1:
            pass
    return 
H(P,P) #=?
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-13-88953e7c0c90> in <module>()
      4             pass
      5     return
----> 6 H(P,P) #=?

NameError: name 'H' is not defined

哥德爾不完備定理

謊言者悖論

A: 「我正在說謊」

A: 「B 總是說謊」 B: 「A 是對的」

「這句話不能被證明」

證明過程可以被「編碼」成數字

所以可以變成一個數論能處理的問題

希爾伯特第十個問題

能否判定 不定方程式 是否有解

$ x^2 + y^2 = xy $

所有演算法能用不定方程式實現

  • OR: $P_1 * P_2 = 0$
  • AND: $P_1^2 + P_2^2 = 0 $
  • $ (a, b, a^b) $ 也能看成是不定方程的解

End, Thanks