2015年5月25日星期一

John Nash

RIP。

2015年5月1日星期五

數理人文-第四期

今期《數理人文》,其實可改名為《物理人文》。在雜誌開首編緝已明言,以科學為題材,不再局限於數學,變成一本科學雜誌,甚為可惜。台灣之大,居然不能容納一本數學雜誌嗎?這本也許是最後一本買的《數理人文》了。

今期主題,包括宇宙微中子和高溫超導體等等,不贅。最吸引的,是胡適與巴斯德的文章,當看到巴斯德這名字時,有點熟悉,想起盒裝牛奶上寫有巴斯德消毒法,才認識這位法國科學家。胡適對包斯德推崇備至,勉勵學生把自己鑄造成器,學巴斯德科學救國。讀畢,回想起半年前香港的雨傘運動,學生犧牲自己學業時間佔領街道,值得與否,因人而異。但佔領運動在乎的是當下,胡適所在乎的是將來。

另外,科學救港是否可行也是未知之數,香港推崇的只有金融和旅遊,在科學上有點成就也會出國實踐,留在這彈丸之地又有何發揮。

除此之外,伊朗女數學家Maryam Mizakhani的文章也是值得一讀。這篇在Quanta Magazine的文章本想鑽研一番,但看見這長篇英文文章,自不然睡意驟濃,難得有中文翻譯,方便不少。

還有一篇文章值得一薦,是有關Alan Turing的文章。不久前曾看了有關他生平的電影Imitation Game,當中有不少情節與歷史相違背。從這篇文章中,可以認真瞭解這位數學家的貢獻,而不只是將焦點放在他同性戀上。

2015年3月31日星期二

asyncio

上年寫咗一段code攞Hacker News 主題,跟住試改用requests,簡化如下:

import concurrent.futures
import requests

URL = 'https://hacker-news.firebaseio.com/v0/'

def get_hn_item(item_no):
    r = requests.get('{}item/{}.json'.format(URL, item_no))
    return r.json()

if __name__ == '__main__':
    r = requests.get(URL + 'topstories.json')
    toplist = r.json()[:10]
    with concurrent.futures.ProcessPoolExecutor() as executor:
        for c, i in enumerate(executor.map(get_hn_item, toplist), 1):
            print('{:>3}: {}'.format(c, i['title']))

其實冇乜點簡化到,只係方便過用urllib少少,於是試吓改用Python 3.4內置的asyncio,然後再裝aiohttp,不用開thread或process,再改良一下:

import asyncio
import aiohttp

URL = 'https://hacker-news.firebaseio.com/v0/'

@asyncio.coroutine
def fetch_page(url):
    response = yield from aiohttp.request('GET', url)
    return (yield from response.json())

@asyncio.coroutine
def fetch_item(item_no, seq):
    content = yield from fetch_page('{}item/{}.json'.format(URL, item_no))
    yield from asyncio.sleep(seq)
    print('{:>3}: {}'.format(seq, content['title']))

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    content = loop.run_until_complete(fetch_page(URL + "topstories.json"))
    tasks = [asyncio.async(fetch_item(i, c)) for c, i in enumerate(content[:10], 1)]
    loop.run_until_complete(asyncio.wait(tasks))
    loop.close()

有關asyncio和aiohttp的tutorial不多,較難學習。

2015年3月23日星期一

Google Noether

今天是德國數學家Emmy Noether生日,不google一下也不知道,原來她在Abstract algebra的貢獻是那麼大。

2015年3月6日星期五

Gamma function

Permutation是一個計算排列次序的方法,假設有一個element A,

(A)

它的排列次序只有一種。那麼假如有兩個element A和B,

(A, B)
(B, A)

這裡就有兩個排列次序。那麼三個呢,

(A, B, C)
(A, C, B)
(B, A, C)
(B, C, A)
(C, A, B)
(C, B, A)

總共有六種。如果有n個element,那麼有多少個不同的排列次序呢?

第一個element,有n個選擇,第二個element,有n - 1個選擇,第三個element,有n - 2個選擇,到最後第n個element,只得一個選擇。所以permutation就有n × (n - 1) × (n - 2) × ... × 1。這個數以n!表示,稱為n的factorial。

如果n是0呢,即是

()

這都一個排列方式,所以0! = 1。

2015年2月26日星期四

Visual approach

之前都介紹過條短片講解Fundamental theorem of Algebra,今次介紹呢個proof [PDF]方法好特別,係用color去proof。