【Python】圆周率 Pi (π) 的计算(蒙特卡罗法+公式法)
引言
圓周率(Pi)是圓的周長與直徑的比值,一般用希臘字母 π 表示,是數學中最重要和最奇妙的數字之一。本文教你如何使用 Python 編程實現圓周率的簡單計算。
計算
蒙特卡羅法
1×1 的正方形里面有一個內切圓。向該正方形區域內隨機散點(散點總數記為 S),對于每一個點,其落在圓內的概率是:π?0.521×1=0.25π\frac {\pi \cdot 0.5^2}{1×1}=0.25\pi1×1π?0.52?=0.25π,散點結束后,統計其落在圓內的點數,并記為 N。
一般來說,隨著實驗次數的增多,頻率會接近于概率。當實驗次數趨向于無窮時,頻率的極限就是概率。
因此,當 S 足夠大時,我們可以簡單認為:0.25π=NS0.25\pi=\frac{N}{S}0.25π=SN?,即π=4NS\pi=\frac{4N}{S}π=S4N?
提示:如何判斷點在圓內?計算點到圓心的歐式距離,比半徑小就在圓內,比半徑大就在圓外。
# 蒙特卡羅法(統計試驗法) import random # 導入隨機模塊 S = 1e6 # 變量S為試驗總次數(值設置得越大,PI的計算越準確,即頻率越逼近于概率) N = 0 # 變量N用于統計落在圓內的試驗點的個數 for i in range(int(S)):x = random.random() # 獲取0-1之間的隨機數y = random.random() # 獲取0-1之間的隨機數d = (x-0.5)**2+(y-0.5)**2 # 計算試驗點到圓心的歐式距離的平方if d<=0.5**2: # 通過比較試驗點到圓心的歐式距離與圓半徑的大小,判斷該點是否在圓內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?)]
# 公式法(計算公式參上) 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
總結
以上是生活随笔為你收集整理的【Python】圆周率 Pi (π) 的计算(蒙特卡罗法+公式法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: access quick 取消显示_如何
- 下一篇: web前端编辑所见即所得