【Python】圆周率 Pi (π) 的计算(蒙特卡罗法+公式法)
引言
圓周率(Pi)是圓的周長(zhǎng)與直徑的比值,一般用希臘字母 π 表示,是數(shù)學(xué)中最重要和最奇妙的數(shù)字之一。本文教你如何使用 Python 編程實(shí)現(xiàn)圓周率的簡(jiǎn)單計(jì)算。
計(jì)算
蒙特卡羅法
1×1 的正方形里面有一個(gè)內(nèi)切圓。向該正方形區(qū)域內(nèi)隨機(jī)散點(diǎn)(散點(diǎn)總數(shù)記為 S),對(duì)于每一個(gè)點(diǎn),其落在圓內(nèi)的概率是:π?0.521×1=0.25π\(zhòng)frac {\pi \cdot 0.5^2}{1×1}=0.25\pi1×1π?0.52?=0.25π,散點(diǎn)結(jié)束后,統(tǒng)計(jì)其落在圓內(nèi)的點(diǎn)數(shù),并記為 N。
一般來(lái)說(shuō),隨著實(shí)驗(yàn)次數(shù)的增多,頻率會(huì)接近于概率。當(dāng)實(shí)驗(yàn)次數(shù)趨向于無(wú)窮時(shí),頻率的極限就是概率。
因此,當(dāng) S 足夠大時(shí),我們可以簡(jiǎn)單認(rèn)為:0.25π=NS0.25\pi=\frac{N}{S}0.25π=SN?,即π=4NS\pi=\frac{4N}{S}π=S4N?
提示:如何判斷點(diǎn)在圓內(nèi)?計(jì)算點(diǎn)到圓心的歐式距離,比半徑小就在圓內(nèi),比半徑大就在圓外。
# 蒙特卡羅法(統(tǒng)計(jì)試驗(yàn)法) import random # 導(dǎo)入隨機(jī)模塊 S = 1e6 # 變量S為試驗(yàn)總次數(shù)(值設(shè)置得越大,PI的計(jì)算越準(zhǔn)確,即頻率越逼近于概率) N = 0 # 變量N用于統(tǒng)計(jì)落在圓內(nèi)的試驗(yàn)點(diǎn)的個(gè)數(shù) for i in range(int(S)):x = random.random() # 獲取0-1之間的隨機(jī)數(shù)y = random.random() # 獲取0-1之間的隨機(jī)數(shù)d = (x-0.5)**2+(y-0.5)**2 # 計(jì)算試驗(yàn)點(diǎn)到圓心的歐式距離的平方if d<=0.5**2: # 通過(guò)比較試驗(yàn)點(diǎn)到圓心的歐式距離與圓半徑的大小,判斷該點(diǎn)是否在圓內(nèi)N+=1else:pass PI = 4*N/S print(PI)公式法
π=∑n=0∞[116n(48n+1?28n+4?18n+5?18n+6)]\pi = \sum_{n=0}^\infty [\frac{1}{16^n}(\frac{4}{8n+1}-\frac{2}{8n+4}-\frac{1}{8n+5}-\frac{1}{8n+6})] π=n=0∑∞?[16n1?(8n+14??8n+42??8n+51??8n+61?)]
# 公式法(計(jì)算公式參上) PI = 0 N = 1000 for n in range(int(N)):PI += 1/pow(16,n) * (4/(8*n+1) - 2/(8*n+4) - 1/(8*n+5) - 1/(8*n+6)) print(PI)參考
https://baike.baidu.com/item/圓周率/139930
總結(jié)
以上是生活随笔為你收集整理的【Python】圆周率 Pi (π) 的计算(蒙特卡罗法+公式法)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: access quick 取消显示_如何
- 下一篇: web前端编辑所见即所得