蒙特卡洛近似的一些例子
Monte Carlo Algorithms
Calculating Pi
-
假設(shè)我們有一個(gè)隨機(jī)數(shù)生成器,它可以隨機(jī)生成[-1,1]之間的實(shí)數(shù),我們每次生成兩個(gè)隨機(jī)數(shù),一個(gè)作為x,一個(gè)作為y,這樣我們就有了一個(gè)點(diǎn),所有的點(diǎn)都會(huì)落在藍(lán)色的正方形里面,由于x和y都是在[-1,1]之間均勻分布,所以正方形中所有的點(diǎn)都有相同的概率密度,正方形中包含一個(gè)綠色的原,半徑為1,圓心是原點(diǎn)。剛剛隨機(jī)生成的點(diǎn)可能會(huì)落在圓里面,可能會(huì)落在圓外面。這里我們不難得到落在圓中的概率為π4\frac{\pi}{4}4π?。
-
假設(shè)我們?cè)谡叫螀^(qū)域中隨機(jī)抽樣n個(gè)點(diǎn),那么點(diǎn)落在圓中的期望就是Pn=πn4Pn=\frac{\pi n}{4}Pn=4πn???。當(dāng)然這里只是期望,可能我們抽五個(gè)點(diǎn),他們都不在圓中。
-
那么我們?cè)趺磁袛帱c(diǎn)是不是在圓中呢?我們可以使用圓的方程可以得到下面一個(gè)不等式:x2+y2≤1x^2+y^2 \leq 1x2+y2≤1
-
假設(shè)我們均勻隨機(jī)抽樣n個(gè)點(diǎn),通過(guò)上述不等式,我們發(fā)現(xiàn)有m個(gè)點(diǎn)在圓中。如果我們的抽樣n非常大,這樣我們就可以觀測(cè)到m≈πn4m\approx \frac{\pi n}{4}m≈4πn?,所以我們得到π≈4mn\pi\approx\frac{4m}{n}π≈n4m?。大數(shù)定律保證蒙特卡洛的正確性,當(dāng)n→∞n \rightarrow \inftyn→∞?,4mn→π\(zhòng)frac{4m}{n}\rightarrow\pin4m?→π。
-
這樣我們可以得出結(jié)論,當(dāng)我們?cè)谡叫沃须S機(jī)抽樣n個(gè)點(diǎn),有m個(gè)點(diǎn)落在圓中,我們就可以將π\(zhòng)piπ近似為4mn\frac{4m}{n}n4m???。這里我們需要保證抽樣是均勻的,抽到所有點(diǎn)的概率都相同,否則就不成立。
Buffon’s Needle Problem
- 這也是一個(gè)計(jì)算Pi的例子,通過(guò)畫(huà)幾條平行線,然后撒一把針,通過(guò)針與平行線相交的個(gè)數(shù)可以推算出pi。
- 先畫(huà)一些平行線,兩個(gè)平行線之間的距離為d
- 取一些針,針的長(zhǎng)度為l。
- 隨機(jī)把針拋到紙上,針的長(zhǎng)度是l,針可能與平行線相交也可能不相交。
- 假設(shè)針的位置和角度都是均勻隨機(jī)的,那么針和平行線有一定概率相交,通過(guò)微積分可以計(jì)算出相交的概率為P=2lπdP=\frac{2l}{\pi d}P=πd2l??。
- 上面我們得到了針與平行線相交的概率$ P=\frac{2l}{\pi d}??,這樣我們就可以得到期望??,這樣我們就可以得到期望??,這樣我們就可以得到期望Pn = \frac{2ln}{\pi d},這樣我們不難計(jì)算,這樣我們不難計(jì)算,這樣我們不難計(jì)算\pi \approx \frac{2ln}{dm}$?
近似求積分
-
假設(shè)給我們一個(gè)函數(shù):f(x)=11+sin(x)?(logex)2f(x)=\frac{1}{1+sin(x)\cdot (log_e x)^2}f(x)=1+sin(x)?(loge?x)21?
-
計(jì)算定積分:I=∫0.83f(x)dxI = \int_{0.8}^{3} f(x)dxI=∫0.83?f(x)dx
-
這個(gè)函數(shù)太復(fù)雜了我們沒(méi)有辦法求它的定積分,這時(shí)候我們就需要用數(shù)值方法近似求它的定積分了,蒙特卡洛就是最常用的數(shù)值方法。
- 我們首先在[0.8,3]上均勻隨機(jī)抽樣n個(gè)樣本
- 然后我們計(jì)算n個(gè)樣本的函數(shù)值
- 然后用Qn=(b?a)?1nΣi=1nf(xi)Q_n=(b-a)\cdot\frac{1}{n}\Sigma_{i=1}^{n}f(x_i)Qn?=(b?a)?n1?Σi=1n?f(xi?)
- 然后就可以使用QnQ_nQn?來(lái)近似定積分。
-
剛剛計(jì)算的是一元函數(shù)的定積分,下面我們看看多元函數(shù)的定積分
- 假設(shè)f(x)是一個(gè)多元函數(shù),自變量是向量x
- 計(jì)算函數(shù)在集合Ω\OmegaΩ上的定積分:I=∫Ωf(x)dxI=\int_{\Omega}f(x)dxI=∫Ω?f(x)dx
- 從集合Ω\OmegaΩ中隨機(jī)抽樣n個(gè)向量
- 計(jì)算Ω\OmegaΩ集合的體積:V=∫ΩdxV=\int_{\Omega}dxV=∫Ω?dx
- 然后計(jì)算Qn=V?1nΣi=1nf(i)Q_n=V\cdot\frac{1}{n}\Sigma_{i=1}^nf(i)Qn?=V?n1?Σi=1n?f(i)
- 然后我們使用QnQ_nQn?來(lái)近似定積分
近似求期望
-
定義X為d維的隨機(jī)變量
-
P(x)為概率密度函數(shù),它描述了變量X在某個(gè)點(diǎn)附近取值的可能性。有這樣的性質(zhì):∫Rdp(x)dx=1\int_{\mathbb{R}^d}p(x)dx = 1∫Rd?p(x)dx=1
-
使用蒙特卡洛來(lái)近似求期望
- 根據(jù)概率密度函數(shù)p(x)p(x)p(x)來(lái)隨機(jī)抽樣
- 計(jì)算每個(gè)樣本f(xi)f(x_i)f(xi?)的值,然后求所有n個(gè)函數(shù)值的平均,將平均值記為:QnQ_nQn?
- 使用QnQ_nQn?作為期望的估計(jì)。
總結(jié)
以上是生活随笔為你收集整理的蒙特卡洛近似的一些例子的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: docker自动部署脚本
- 下一篇: 快速开发实用工具VRTK-011