蒙地卡羅 np 版

      在〈蒙地卡羅 np 版〉中尚無留言

蒙地卡羅方法  (Monte Carlo method)又統計類比方法,於1940年因電腦問世而發展出一種以機率統計數值的計算方法。

在電腦的世界,就是要想盡辦法將類比轉成數位。而蒙地卡羅反其道而行,要將數位轉換成類比。此法使用亂數 (偽亂數) 來解決很多計算問題的方法。

蒙地卡羅方法是為了核武計劃所產生的一個演算法,由科學家 馮·紐曼、斯塔尼斯拉夫·烏拉姆 和 尼古拉斯·梅特羅波利斯於 洛斯阿拉莫斯國家實驗室發明。烏拉姆的叔叔經常在摩納哥的蒙地卡羅賭場輸錢,故以此地命名。

蒙地卡羅方法常運用在 金融工程學、總體經濟學、生物醫學、計算物理學 (如粒子輸運計算、量子熱力學計算、空氣動力學計算)、機器學習等領域。

求 $(\pi)$ 值

蒙地卡羅方法使用學術名詞來講解的話,的確是艱深難懂。所以本篇不講學術理論,直接使用數學圓周率 $(\pi)$ 值求法來解釋其用途。

小學的數學老師總是教我們圓面積的公式為 $(\pi r^{2})$,然後叫我們要把 $(\pi = 3.14159265)$ 這個數字背起來,但從來都沒有講 3.14159265 這個數字是怎麼來的。

本人深刻記得小學老師補了一句話~~”這個 $(\pi)$ 值必需到了上大學時,學會高等數學才能求的出來,你們現在無法懂,所以必需背下來”。

底下我們也不使用高等數學求$(\pi)$值,而是使用蒙地卡羅法 (Monte Carlo method) 求取 $(\pi)$ 值。

原理

如下圖示,假設有一個正方型,長寬皆為2cm,中間有一個圓,直徑也為 2cm。為了方便計算,我們只專注右下角那個區塊,也就是黃色的部份。黃色區塊面積為 $(1cm^2)$,而1/4圓面積為 $(\frac{\pi r^{2}}{4} = \frac{\pi}{4})$

首先在右下角中產生 n 個亂數點,然後計算亂數點在圓內的數量(x)及 n 的比例 (area=x/n),這個比例就是圓的面積。也就是說 $(area=\frac{\pi }{4})$,因此 $(\pi = area*4)$。

由上可知,n 的數值愈大,求出的 $(\pi)$ 值就會愈準確

底下代碼每次 (epoch) 產生 1億 (batch) 個點,然後計算 Epoch 200次,也就是總共計算 200 億個點。Epoch 不用設太大,因為每次產生1億個亂數就要花費約 0.5 秒以上,然後再計算 1 億個點又要花費約要 0.5 秒以上,200 次就要 200 秒以上。

本代碼由本人開發,效能更高更精準,若要連結,請註明出處~ mahaljsp

🔒 底下內容僅限會員閱讀。

立即登入

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *