本文通過五個例子,介紹蒙特卡羅方法(monte carlo method)。
蒙特卡羅方法是一種計算方法。原理是通過大量隨機樣本,去了解乙個系統,進而得到所要計算的值。
它非常強大和靈活,又相當簡單易懂,很容易實現。對於許多問題來說,它往往是最簡單的計算方法,有時甚至是唯一可行的方法。
它誕生於上個世紀40年代美國的"曼哈頓計畫",名字**於賭城蒙特卡羅,象徵概率。
第乙個例子是,如何用蒙特卡羅方法計算圓周率π。
正方形內部有乙個相切的圓,它們的面積之比是π/4。
現在,在這個正方形內部,隨機產生10000個點(即10000個座標對 (x, y)),計算它們與中心點的距離,從而判斷是否落在圓的內部。
如果這些點均勻分布,那麼圓內的點應該佔到所有點的 π/4,因此將這個比值乘以4,就是π的值。通過r語言指令碼隨機模擬30000個點,π的估算值與真實值相差0.07%。
上面的方法加以推廣,就可以計算任意乙個積分的值。
比如,計算函式 y = x2 在 [0, 1] 區間的積分,就是求出下圖紅色部分的面積。
這個函式在 (1,1) 點的取值為1,所以整個紅色區域在乙個面積為1的正方形裡面。在該正方形內部,產生大量隨機點,可以計算出有多少點落在紅色區域(判斷條件 y < x2)。這個比重就是所要求的積分值。
用matlab模擬100萬個隨機點,結果為0.3328。
蒙特卡羅方法不僅可以用於計算,還可以用於模擬系統內部的隨機運動。下面的例子模擬單車道的交通堵塞。
根據 nagel-schreckenberg 模型,車輛的運動滿足以下規則。
在一條直線上,隨機產生100個點,代表道路上的100輛車,另取概率 p 為 0.3 。上圖中,橫軸代表距離(從左到右),縱軸代表時間(從上到下),因此每一行就表示下一秒的道路情況。
可以看到,該模型會隨機產生交通擁堵(圖形上黑色聚集的部分)。這就證明了,單車道即使沒有任何原因,也會產生交通堵塞。
某產品由八個零件堆疊組成。也就是說,這八個零件的厚度總和,等於該產品的厚度。
已知該產品的厚度,必須控制在27mm以內,但是每個零件有一定的概率,厚度會超出誤差。請問有多大的概率,產品的厚度會超出27mm?
取100000個隨機樣本,每個樣本有8個值,對應8個零件各自的厚度。計算發現,產品的合格率為99.9979%,即百萬分之21的概率,厚度會超出27mm。
**市場有時交易活躍,有時交易冷清。下面是你對市場的**。
已知你的成本在每股5.5元到7.5元之間,平均是6.5元。請問接下來的交易,你的淨利潤會是多少?
取1000個隨機樣本,每個樣本有兩個數值:乙個是**的成本(5.5元到7.5元之間的均勻分布),另乙個是當前市場狀態(冷清、活躍、溫和,各有三分之一可能)。
模擬計算得到,平均淨利潤為92, 427美元。
數值概率演算法(轉 用來說明演算法導論題目!!!)
順便再ps一下,小傑也是我論壇的c c 問題求助板塊的版主,c c 小牛 這一章我就把書中的乙個例子舉出來了,感覺雖然很簡單,但是很有意思。用隨機投點法計算pi值 設有一半徑為r的圓及其外切四邊形。向該正方形隨機地投擲n個點。設落入圓內的點數為k。由於所投入的點在正方形上均勻分布,因而所投入的點落入...
蒙特卡洛演算法
從今天開始要研究sampling methods,主要是mcmc演算法 contents 1.蒙特卡洛介紹 2.蒙特卡洛的應用 3.蒙特卡洛積分 1.蒙特卡洛介紹 蒙特卡羅方法 monte carlo method 也稱統計模擬方法,是二十世紀四十年代中期由於科學技術的 發展和電子計算機的發明,而被...
蒙特卡洛演算法
問題描述 在數值積分法中,利用求單位圓的1 4的面積來求得pi 4從而得到pi。單位圓的1 4面積是乙個扇形,它是邊長為1單位正方形的一部分。只要能求出扇形面積s1在正方形面積s中佔的比例k s1 s就立即能得到s1,從而得到pi的值。怎樣求出扇形面積在正方形面積中佔的比例k呢?乙個辦法是在正方形中...