###### 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
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up