[新江灣城萬物課】Python與神奇的π

2021-02-13 萬物拓展課

      萬物拓展在新江灣城開設的線下小班課,是以少兒編程課為核心,融合了計算機、天文、地理和物理等多種學科的綜合性課程。

萬物所有課程的設計都講求拓展和互聯,尤其是與校內基礎學科的融合,Python編程亦是如此。

神奇的π

眾所周知,圓周率π是⼀個圓的周⻓與直徑之⽐,⽽且不論圓的⼤⼩,這個⽐值是常數,永遠不變。圓周率的近似值 π ≈ 3.14 家喻戶曉,關於它的⽂章和書籍更是多不勝數。

講故事才是激發興趣的第一要素3月14日, π 日, 偉大的科學家愛因斯坦在這一天出生,另一位偉大的物理學家霍金在這一天離世。

廣闊的宇宙像pai一樣無限。
兩位偉人生於凡塵,歸於群星。

我國數學家華羅庚,寫過一本數學小冊子《從祖衝之的圓周率談起》,其中有一個故事:從前有個教書先生,平日喜歡喝酒。一天,他把學生們關在教室裡,要他們背誦圓周率,自己卻提了一壺酒到山上的寺廟找老和尚對飲去了。先生回來後,考問學生有沒有把圓周率背下來。有個學生就回應道:「山巔一寺一壺酒,爾樂苦煞吾, 把酒吃,酒殺爾殺不死,樂爾樂」。

先生開始很生氣,以為學生是在諷刺他,但很快便意識到這其實是帶濃厚鄉音的普通話 3.1415926535897932384626,頓時轉怒為喜,把這個學生著實稱讚了一番。

π 值計算史

「誰能把π算的更多位,誰就更厲害」,這揭開了π值計算史。

最先對 π 值進行系統嚴格的估算者應當首推古希臘科學家阿基米德(公元前 287—前 212 年),他得出不等式 3 + 10/71 < π < 3 + 1/7,平均值就是 π ≈ 3.14 · · · 

在我國,三國後期魏國人劉徽(生於公元 250 年左右)留下了寶貴的數學遺產《九章算術注》和《海島算經》,並創始和使用了「割圓術」,即用圓的內接和外切正多邊形來逼近圓的周長。

割圓術為後來南北朝時期數學家祖衝之(公元 429—500 年)的估算 3.1415926 < π < 3.1415927 提供了最基本的方法。此外,祖衝之還以很簡單的分數形式給出了圓周率的約率 π ≈ 22/7 和密率 π ≈ 355/113。

古人計算圓周率,一般都是用正多邊形來逼近圓的。阿基米德用正 96 邊形逼近圓而得到 π 小數點後 3 位的精度,劉徽用正 3072 邊形逼近圓也只能得到 π 小數點後 5 位的精度。

由於這些計算方法的效率極低,估算 π 的歷史進程十分緩慢。直到微積分問世以後,情況才大為改觀。

1706 年,英國天文學家 John Machin 發現了一個簡單的解析公式,並用它計算 π 達到了小數點後 100 位的精確度。

π = 16 arctan(1/5) − 4 arctan(1/239)。

微積分的出現,不但給出了許多關於 π 的解析估計,更大大地加快了其數值計算。且不說優雅漂亮的 Gregory-Leibniz 和差公式

1/1 − 1/3 + 1/5 − 1/7 + 1/9 − · · · = π/4 
 
以及 Wallis 乘積公式 
 
2/1 × 2/3 × 4/3 × 4/5 × 6/5 × 6/7 × 8/7 × 8/9 × · · · = π/2 ,

後來發現能夠用來對 π 作快速近似計算的公式還有很多。

1914 年,自學成才的傳奇印度數學家拉馬努金就曾經寫下過 14 個關於 π 的無窮級數展開公式。

電子計算機出現以後,人類大規模、高精度的計算能力得到了無與倫比的飛躍,使得圓周率計算的進程突飛猛進,實現了計算 π 的(二進位)數字長度一次又一次重大突破。

1985 年,美國數學家 Bill Gosper 用拉馬努金的一個公式計算圓周率精確到了小數點後 17500000 位。

1994 年,蘇聯裔美國數學家 David 和 Gregory Chudnovsky

1994 年,蘇聯裔美國數學家 David 和 Gregory Chudnovsky 兄弟在同一個公式的基礎上計算 π 到了 4044000000 位。

1995 年以後,日本數學家金田康正及其團隊更在世界上遙遙領先,在 2003 年把對 π 的 計算提高到了 1.24 萬億位。

2010年1月, 法國程式設計師 Fabrice Bellard

上面的紀錄在 2010 年 1 月 8 日由法國一位程式設計師 Fabrice Bellard 打破。他改進了 Chudnovsky 兄弟的公式,用了 131 天在一部臺式計算機上成功地把 π 計算到 2.7 萬億位。

這個數字有多長呢?如果你平均用一秒鐘來報出一個數字的話,那麼需要 8.5 萬年才能讀完它的所有數字。

可是,這個世界紀錄到 8 月份又被打破了,日本工程師近藤茂與美國西北大學計算機系的香港學生餘智恆合作,把 π 值算到了 5 萬億位。

誰知道,當歡呼聲猶在耳際,9 月 17 日英國 BBC 又作出了驚人的報導,說雅虎科技公司的研究員、原香港科技大學畢業生施子和採用「雲計算」技術,利用 1000 臺計算機同時計算,歷時 23 天,將 π 計算到小數點後 2 千萬億位,為 8 個月前法國人 Bellard 記錄的近一千倍。

這可不是只增加了大約一千個數位,而是由一千個、每個都有 2.7 萬億位長的數字連接起來。施子和興奮無比地向全世界宣布了他的計算結果,還說他發現了「π 的小數點後第兩千兆位是 0!」

你能記住 π 小數點後多少位?

你或許不以為然,說用計算機來計算π不足為奇。那麼,用人腦進行計算和記憶就不容易了吧?如果我告訴你,有人能正確無誤地記住 π 的數值從 3.14 開始一直到小數點後幾萬位數字,你會覺得匪夷所思吧?

其實,多少年來一直有憑人腦記憶背誦 π 數值的金氏世界紀錄,目前領先的是中國人呂超。2005年11月20日,當時是西北農林科技大學研究生的呂超用了24小時零 4分的時間,連續背誦出 π 值到小數點後67890位。

讀到這裡,你如果不是數學粉絲的話其實並不會特別激動:知道 π ≈ 3.14 就已經足夠了,誰去關心它長長尾巴上的無窮多位數字呢?

說來也是,造物主有這麼多東西可以創造,為什麼偏偏造出這個神奇的 π 來,讓許許多多的數學家和粉絲們兩千多年來嘔心瀝血地去追尋不休呢?

其實,造物主並不是一些人所想像得那麼無聊。

無處不在的神奇數字

你可能早已聽說過,π 與地球上的許多河流有關:河流彎曲河道的曲線長度與河道首尾直線距離之比通常都接近於 3.14 —— 河道越是蜿蜒曲折,這個近似值就越好——亞馬遜河便是一個例子。

最令人驚嘆的是 2010 年11月《科學》雜誌上報導的,德國哥廷根大學馬克 · 普朗克動力學與自組織科學研究所和伯恩斯坦計算神經科學研究中心的科學家 Matthias Kaschube 及其團隊的一項研究成果。研究人員發現,相同哺乳類中的三種遠親動物嬰猴、 樹鼩和蒙眼貂的大腦中,它們視覺皮層的螺旋結構平均分布密度都是一樣的,而且都落在 π 值 3.14 的 95% 置信區間之中。

真的?這不會是巧合吧?雖然這個 3.14 不能與用計算機得到的兩千萬億位數字相提並論,但對於理論生物學家來說,3.14 已經是一個令他們難以置信的超級精確度了。

科學家們相信,今天的生物大腦都是經過漫長時間通過自組織演化過程而逐漸形成的,並且都具有某種最優的結構和功能。

如果是這樣的話,那些哺乳類動物大腦視覺皮層中基本螺旋結構分布都不約而同地呈現出以 3.14 為平均密度之特徵,是不是自然進化的最優結果呢?不會是造物主在創世開始時,不經意地在它們的大腦中寫下了那個神奇的數字 π 吧?

計算圓周率的方法1--蒙特卡羅的方法

利用蒙特卡羅分析法可用於估算圓周率,如圖,在邊長為 2 的正方形內作一個半徑為 1 的圓,正方形的面積等於 2×2=4,圓的面積等於 π×1×1=π,由此可得出,正方形的面積與圓形的面積的比值為 4:π圓和正方形的面積比是:現在讓我們用電腦生成若干組均勻分布於 0-2 之間的隨機數,作為某一點的坐標散布於正方形內,那麼落在正方形內的點數 N 與落在圓形內的點數 K 的比值接近於正方形的面積與圓的面積的比值,即,N:K ≈ 4:π,因此,π ≈ 4K/N 。(K是在圓內的,N是總的)

import random

num_all = 0         #隨機點總計數器
num_cir = 0         #隨機點在圓內的計數器
num_halt = 10000000 #每產生10,000,000個隨機點後,計算並列印一次目前的結果

print("將進行無限計算,請用Ctrl_C或其他方式強制退出!!!")
input("按回車(Enter)鍵開始...")
print("開始計算...,退出請用Ctrl_C或其他強制退出方式...")
print("\n實驗次數        計算結果")

while 1 :
    for i in range(num_halt): 
        x = random.random()         #獲得隨機點的橫坐標
        y = random.random()         #獲得隨機點的縱坐標
        if x*x + y*y < 1 :          #隨機點(x,y)在圓內
            num_cir = num_cir + 1   #圓內計數器+1
        num_all = num_all + 1       #總計數器+1
    pi = 4*num_cir/num_all
    print(num_all,"   ", pi)

割圓迭代法:也很直觀易懂,效率還不錯

現在我們用劉徽和祖衝之的割圓術試試。

割之彌細,所失彌少。割之又割,以至於不可割,則與圓周合體而無所失矣。

與阿基米德相似,劉徽也是從正六邊形開始計算的。不同的是,劉徽以面積來計算,他通過分割圓為192邊形,計算出圓周率在3.141024與3.142704之間,取其近似值157/50。

原理是這樣的:設想一個圓,半徑r=1,內接一個正n邊形,邊長為a,那麼當這個多邊形的邊數n越大,它的周長就越接近圓的周長。所以我們就可以用多邊形的周長代替圓的周長並應用圓的周長公式得到:

公式

圓的內接正n邊形邊長a可以迭代計算:

公式

我們從正六邊形開始,它的邊長a=r=1,然後計算正12邊形、正24邊形、正48邊形...逐漸逼近圓。

# 因為計算機精度原因,64位機算到49512邊形就無法繼續提高計算結果的精度了

import math

n=6
a=1
print("%-15s%-20s" % ("內接正n邊形","π計算結果"))
print("%-20d%-20.12f" % (n, n*a/2))
for i in range(100) :
  n=2*n
  a=math.sqrt(2-2*math.sqrt(1-(a/2)**2))
  print("%-20d%-20.12f" % (n, n*a/2))

思考:為什麼後面的值是0?????

3、梅欽級數法:不直觀但也易懂,效率超高

大Boss梅欽(John Machin)用他的神奇公式親手把π算到了小數點後100位,今天,我們藉助Python編程,可以遠遠超過這個精度。

梅欽公式:

公式

數學上可以進行級數展開,我們表示為:

公式

為了能做到高精度快速計算,我們把所有的級數都變成整數運算,因此,如果我們希望計算到π的小數點後面n位,就在上述公式兩邊乘以10的n次方,並全部運行整除運算(運算符號是「//」)。最後我們得到的一個π乘以10^n所形成的一個巨大的整數來表示計算結果(如果需要,可以通過字符變換把小數點加回去,這裡就略過了)。

基於這樣的思路,我們的代碼是:

n = int(input("請輸入想要計算到小數點後的位數:")) #輸入字符轉換為整數
t = n+10                                     #多計算10位,防止尾數取捨的影響
b = 10**t                                    #為算到小數點後t位,兩邊乘以10^t
x1 = b*4//5                                  #取整求含4/5的首項
x2 = b // -239                               #取整求含1/239的首項
s = x1+x2                                    #求第一大項
n *= 2                                       #設置下面循環的終點,即共計算n項
for i in range(3, n, 2):                     #循環初值=3,末值n,步長=2
    x1 //= -25                               #取整求每個含1/5的項及符號
    x2 //= -57121                            #取整求每個含1/239的項及符號
    x = (x1+x2) // i                         #求兩項之和,除以對應因子,取整
    s += x                                   #求總和
pai = s*4                                    #求出π
pai //= 10**10                               #舍掉後十位
print(pai)                                   #輸出圓周率π的值,不帶小數點

請運行,然後,請你大膽輸入10000,就是說要精確到10000位!

激動人心的時刻到了,不出意外的話,幾秒鐘就出結果,一萬位的π出爐了!

python 對於科學計算有著天然的優勢

這得益於Python對數學計算的支持,還有很多數學計算的公式可以直接在python的數學庫中找到,並直接使用。

在π的計算中,整數的處理方式,它能處理的整數大小不取決於寄存器大小(例如64位機=8B),而是取決於可用內存的大小(例如8GB,當然系統可能不會給用這麼多,但就算給你8MB就非常厲害了),所以能計算的整數是非常非常大的。

如果你願意等,也可以試試5萬位、10萬位、20萬位,時間會長一些,但現在的家用電腦一般也能算得出來!

若你想要嘗試100萬位,就不敢保證了,請做好死機的準備。


上課地點:橡樹灣小區或老師上門授課。



歡迎掃碼添加老師微信號(Zhaojz9687)。


[新江灣城萬物課]萬物少兒編程課體系介紹

相關焦點

  • [新江灣城萬物課]2019年萬物學員編程競賽獲獎榜
    以少兒編程課為核心,新江灣城萬物拓展課融合了計算機他們去年暑假參加萬物『Microbit硬體創客』課程,年底參加了『Microbit 全球公益挑戰賽』。孩子們結合自身的昆蟲愛好,將學到的Microbit微電腦編程應用到創客項目中,作品的完整性和科學性受到了評委的一致好評,這得益於孩子們濃厚的興趣愛好、強烈的好奇心和完整的項目學習。
  • 上海楊浦新江灣城周邊一日遊打卡攻略
    作為外地到上海旅遊的遊客,如果還有一天時間的話,可以到市區東北部楊浦區新江灣城周邊地區打卡遊玩這三個景點。上午:新江灣城溼地公園打卡交通:公共運輸的線路不多,自駕比較方便。景點:新江灣城溼地公園推薦理由:新江灣城溼地公園位於上海市區東北角新江灣城地區的國秀路上,是新江灣城地區的主要公共綠地和溼地,雖然建成時間不長,在大自然自我修復力量的作用下,原本的機場跑道悄然恢復為生機盎然的溼地。
  • 新江灣城·首府啟幕巔峰人居時代
    2013年,位居城市第三代國際住區中央,由無價生態景觀環繞的新江灣城·首府,稀世登場!以全城首創的199席城市宮殿,堪稱絕版的三公裡極致生活圈,啟幕嶄新的千萬級巔峰人居時代!開闊空間 驚嘆人生境界城市宮殿時代,不為浮誇的炫耀,只為低調不被打擾!
  • 新江灣城誹謗罪律師_範聖忠律師
    新江灣城誹謗罪律師,範聖忠律師,2009年度入選《中國律師年鑑》,2012年度入選《中國時代先鋒》(《恪盡職守,只為雙肩責任與使命》),2012年度入選《我以我血薦軒轅——中國大律師辦案紀實》(《公平不會垂手可得,無罪亦須堅持抗爭》)。新江灣城誹謗罪律師, 如何尋找合適的企業法律顧問?
  • 上海十年土地出讓史:以楊浦區新江灣城為例
    裡面提到王志綱當時在上海為城開集團的1480畝萬源項目做策劃,經上海城開董事長倪建達引薦,2003年6月14日,王志綱到達新江灣城項目現場,正式與上海城投接觸,王老師說「新江灣城的問題不是規劃的問題,而是要確定新江灣城在未來的上海扮演什麼角色的問題,一句話,新江灣城缺魂」。上海城投覺得王老師說的對,8月份籤了001號協議,據說是上海官方機構第一次和民間智庫合作。
  • 新民晚報數字報-新江灣城·首府別墅生活首度公開
    3月22日,上海首個純正法式宮廷住宅——新江灣城·首府別墅樣板間正式公開,於新江灣城首屈一指的核心地塊
  • 看楊浦新江灣城房價走勢
    其中楊浦新江灣城9月二手房參考均價72792元/平,環比8月上漲0.57%,同比去年同期上漲3.70%。一、新江灣城二手房房價走勢楊浦新江灣城9月二手房參考均價72792元/平,環比8月上漲0.57%,同比去年同期上漲3.70%。最近一年中,6個月房價上漲,6個月房價下跌。
  • 新民晚報數字報-新江灣城·首府打造千萬級巔峰人居樣本
    在外高橋自貿區方圓10公裡內,新江灣城板塊是目前唯一一個兼具稀缺原生態資源、醇熟生活配套的國際居住板塊,優質的自住環境、可以預見的發展空間,使新江灣城迎來十年後的新一輪價值爆發。  新江灣城·首府,位於新江灣城最核心區位,以三面環繞自然景觀的絕版地理優勢,成為城市千萬級置業最佳樣本,備受高端人群青睞。自9月首度亮相以來,項目認籌相當火爆,是區域內當仁不讓的明星樓盤。
  • 上海形成張江、紫竹和新江灣城三足鼎力高科技產業園區[圖]
    上海形成張江、紫竹和新江灣城三足鼎力高科技產業園區[圖] 2012年3月29日 新江灣城「灣谷」項目動工現場 東方網記者袁家福3月29日報導:繼張江、紫竹之後,上海又一國際化、高起點、高品質的高科技產業園區——新江灣城灣谷科技園今天上午動工興建。
  • 【Python 第53課】 數學運算
    今天從打飛機遊戲裡中斷一下,說些python的基礎。python自帶了一些基本的數學運算方法,這節課給大家介紹一二。python的數學運算模塊叫做math,再用之前,你需要import mathmath包裡有兩個常量:math.pi圓周率π:3.141592...math.e自然常數:2.718281...
  • 新江灣城首府聯排400平5房 均價10-11萬元/平
    新江灣城首府售完洋房 別墅電話:> 4008-163-163 轉 16300 網易房產05月17日報導 新江灣城首府(資料、團購、論壇)在售聯排別墅,戶型為
  • 從未停止生長,新江灣再次迭代背後玄機
    「國際社區」新江灣城,兼具「城市+生態」兩種形式,也一直代言著上海市中心理想的居住社區。隨著交通配套日趨完善,資源人才不斷導入,新江灣城即將邁入3.0的價值爆發期。01中環稀缺 生態資源1.0時期的新江灣城,綠色生態是不變的話題。
  • 新江灣城著名的誹謗罪律師需要多少錢_上海市百良律師事務所
    新江灣城著名的誹謗罪律師需要多少錢,上海市百良律師事務所,2009年度入選《中國律師年鑑》,2012年度入選《中國時代先鋒》(《恪盡職守,只為雙肩責任與使命》),2012年度入選《我以我血薦軒轅——中國大律師辦案紀實》(《公平不會垂手可得,無罪亦須堅持抗爭》)。
  • 楊浦7月推4地塊或攬金55億 新江灣城房價破10萬
    其中,新江灣城純宅地出讓價近21億,起拍樓板價3.5萬/平。7月入暑,上海土地市場進入「燥熱期」。楊浦區7月將推出4塊地,新江灣城推出1塊純宅地、定海社區將推1塊拆遷安置用地、平涼和長海各推1塊商辦用地。
  • 3.14:神奇的 π 日背後的神奇數學
    另外,因為 22/7 是比 3.14 對 π更為精確的近似,每年 7 月 22 日也被公認為「π 近似日」。儘管人類對 π 的認知可以追溯到遠古,最先對 π 值進行系統嚴格的估算者應當首推古希臘科學家 Archimedes(阿基米德,公元前 287—前 212 年),他得出不等式3 + 10/71 < π < 3 + 1/7,平均值就是 π ≈ 3.14 · · · 。
  • "π"節聊π丨那些你不曾了解過的它
    用希臘字母π來表示在幾何問題中圓周率扮演著非常重要的角色然而更神奇的是它也馳騁於幾何以外的其它數學領域歐拉恆等式這是整個數學領域中最偉大最神奇的公式這個公式用加法 乘法 乘方這三個最基礎的運算把數學中最神奇的三個常數圓周率 π 自然底數 e 虛數單位 i以及最根本的兩個數
  • 合景泰富地產首個購物中心亮相上海 上海悠方打造新江灣城社區悠樂...
    合景商業發力 打造新江灣城社區生活新典範上海悠方,地處上海城中心唯一一塊自然生態「綠寶石」——新江灣城。新江灣城作為上海新興豪宅熱點板塊,規劃定位中高檔知識型、生態型、花園式國際社區,開發建成後規劃人口逾10萬,匯集在此的城市精英階層們追求精緻的生活、有著旺盛的品質消費需求。擁有如此優質稀缺土地資源的上海悠方,是一個集合了近8萬方商業、6萬方寫字樓及酒店的商業綜合體。上海悠方交通四通八達,地鐵10號線直通商場地下二層,貫穿五角場虹橋、新天地、淮海路等熱點區域。
  • -新江灣城首府...
    新江灣城首府別墅小區一位業主將260平米的房子裝修成混搭風格四居室,裝修完之後獲的親戚好友的稱讚。讓我們一起來看看該業主是怎麼裝修的呢?兒童房以下就是本套新江灣城首府別墅小區260平米四居室房子的戶型圖。戶型圖260平米的房子如何裝修才好呢?看完上述業主的分享,你心裡是不是有了自己的想法呢?
  • 上海悠方三周年慶,見證新江灣城生活方式中心的成長!
    在上海,新江灣城除了被貼上「新富人區」的標籤,同時還是「綠色生態港、國際智慧城」的代名詞,是典型的宜居、休閒之地。2017年底,合景富力·悠方(上海)(簡稱:上海悠方)的正式亮相,不僅填補了區域內大型商業的空白,更為區域內的品質生活增添色彩。時至今日,上海悠方依然是生態型社區商業的典型代表。
  • 古北碧雲聯洋,又一個上海頂級富人區國際社區—大楊浦新江灣崛起
    古北,碧雲,聯洋,新江灣,這些在城市浩蕩發展進程中打磨出的國際社區,用其特有的方式,在有著國際印記的大都市的土壤中,記錄著時代的更迭。『古北:上海第一個國際社區』「 古北新區一期,被評為20世紀90年代上海十大新景觀之一。」