###### tags: `資訊科學教學法作業(2019)` # 實作報告三 # 利用隨機函式計算圓周率pi到小數第五位 :::success 奇聞軼事 - 2015年,印度的Rajveer Meena,背到圓周率第7萬小數位,是金氏世界紀錄保持人 - 2019年,任職谷歌(Google)的日本員工Emma Haruka Iwao,藉由谷歌雲端運算服務的幫助,算出小數點後31.4兆位的圓周率 ::: 從小我們都背過圓周率 = 3.141592653...,也會用在計算圓的周長或面積,但我們知道圓周率怎麼得到的嗎? ## 壹、蒙地卡羅求PI原理 一般來說,PI求法就是找半徑為1的圓面積 數學上可用積分法找 $𝑥^2+𝑦^2=1$  ### 是否有其他的解法呢? :::warning ### 蒙地卡羅法:不用數值計算方式來解題,而以機率(亂數)來解題的方式 假設正方形邊長為1,圓半徑也為1,那麼圓的面積為$𝐴=𝜋∗1^2=𝜋$  由上圖可知 $\frac{1}{4}$圓的面積為 :$\frac{ 1 }{ 4 } 𝐴=$ $\frac{ 1 }{ 4 } 𝜋∗1^2$=$\frac{ 𝜋 }{ 4 }$ 而正方形面積為:1x1=1  產生分布於0~1 之間的亂數,應當會均勻的分布於正方形之內 而分布於$\frac{1}{4}$圓內的數量假設為a ,分布於圓外的數量為b,N則是所產生的亂數總數為N=a+b。   那麼其亂數分布數量a與N的比值應與1/4圓面積及正方形面積成正比,於是: :::info $\frac{ 𝜋 }{ 4 }:1=𝑎:N$ $𝜋=4\frac{ a }{ N }$ ::: :::success 假設我們 N=100,飛鏢射出去命中了78 發,則我們就可以預估圓周率約為:(78/100)*4 = 3.12 ::: ### 如何判斷所產生的點落於圓內? :::warning 令亂數產生X與Y兩個數值,如果$\sqrt{𝑥^2+𝑦^2}<=1$就是落在圓內。 ::: ## 貳、在Python中求PI :::warning ==原理:以範圍0~1,先算出$\frac{ 1 }{ 4 }$圓的面積,乘以4後就是$𝜋$值== ### 算單次$𝜋$值  ### 測試輸出結果  :::info 多次執行後發現: 1.亂數值運算次數越多, $𝜋$越容易逼近正確值 2.亂數值運算次數太大時,運算會很慢 ::: :::warning ### 進階算法-算十次求平均值  :::info 缺點:亂數值運算次數太大時,運算會很慢 解決方法:可將十次步驟分給多台電腦運算 ::: ## 參、蒙特卡羅法缺點 :::danger ### 用蒙地卡羅方法近似計算圓周率的先天不足: 1. 電腦產生的亂數是受到儲存格式的限制的,是離散的,並不能產生連續的任意實數 2. 將平面分割成一個個網格,在空間不是連續的,由此計算出來的面積與圓或多或少有差距 ::: 課程結束----
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.