目錄蒙特卡羅積分法是一種利用模擬來近似計算定積分值\(\int_a^b f(x)dx\)的一種方法
公式是\[\int f(x) \mathrm x=\frac \sum_^ \frac\right)}\right)} \quad x_ \sim p(x)
\]\(\right)}\)是隨機變數服從分布的pdf在\(x_\)處的值
這裡以計算\(\int_0^\pi \sin(x)dx\)為例,這個定積分的精確值是2
步驟:1.取1000000個iid且[0,pi]均勻分布的r.v.,
2.分別計算\(\frac\right)}\right)}\),再對他們求平均值
clear["global`*"]
n = 1000000;
montecarlo[nn_] :=
module[,
total[sin[#] & /@ randomvariate[uniformdistribution, n]]/
n*pi];
table[montecarlo[n], 10]
結果如下
有幾點注意事項
使用蒙特卡洛積分法求積分涉及到兩個問題:1.如何對乙個任意分布函式進行抽樣; 2.如何減少方差。
首先是給定乙個概率密度函式,如何對其進行取樣,使取樣滿足其概率分布。其中有逆變換演算法和取捨演算法。更多的資訊可以看這篇部落格。
接著是如何減少方差。直觀的理解,pdf()形狀越接近f(),效果越好。更多的資訊可以看這篇部落格。
mcmc(markov chain monte carlo)。因為對於任意分布的概率函式的取樣不容易做到,可以構造乙個馬爾可夫鏈(怎麼構造?)之後在上面隨機遊走來取點。其中有metropolis-hasting 演算法和gibbs 取樣法。更多的資訊可以看這篇部落格
蒙特卡洛理解
蒙特卡羅演算法並不是一種演算法的名稱,而是是一類隨機方法的統稱。這類方法的特點是,可以在隨機取樣上計算得到近似結果,隨著取樣的增多,得到的結果是正確結果的概率逐漸加大,但在 放棄隨機取樣,而採用類似全取樣這樣的確定性方法 獲得真正的結果之前,無法知道目前得到的結果是不是真正的結果。從特性特性來說,我...
蒙特卡洛演算法
從今天開始要研究sampling methods,主要是mcmc演算法 contents 1.蒙特卡洛介紹 2.蒙特卡洛的應用 3.蒙特卡洛積分 1.蒙特卡洛介紹 蒙特卡羅方法 monte carlo method 也稱統計模擬方法,是二十世紀四十年代中期由於科學技術的 發展和電子計算機的發明,而被...
蒙特卡洛取樣
1.馬爾可夫鏈及其平穩分布 馬爾可夫鏈的定義很簡單,即後乙個狀態只與前面乙個狀態相關 p x t x cdots,x p x t x 2.馬氏鏈定理 如果乙個非週期馬爾可夫鏈具有狀態轉移矩陣 p 且它的任意兩個狀態都是連通的,那麼 mathop limits p n 存在且與 i 無關,記 math...