基於蒙特卡洛方法求解數值積分的乙個小例子

2022-05-09 02:42:08 字數 747 閱讀 1837

對隨機變數x的概率密度函式f(x)做積分運算,我們就可以通過

\[e(g(x))=\int_^dx

\]這樣的積分形式來表示指定函式g在引數x時函式值的期望值。

基於蒙特卡洛方法的數值積分正好是這種方法的逆推。如果我們需要計算某個定積分的值,只要將其變換為某一隨機變數的期望的形式,再借用蒙特卡洛方法即可。

例如,如果需要計算

\[c=\int_a^bdx

\]我們應令x遵從[a,b]上的均勻分布,且g(x)=(b-a)h(x),對g(x)施加蒙特卡洛方法,就可以得到e(g(x))=c。之後,只要將生成的偽隨機數序列x1,x2....xn來模擬[a,b]上的均勻分布,就可以通過計算(b-a)(h(x1)+....h(xn))/n來得到c的估計值。

下面通過例子來用蒙特卡洛方法來計算

\[\int_0^2dx\]故

\[g(x)=2x^2

\]已知c的理論解是8/3

python**:

import numpy as np

n=100000 #隨機數的數量

x=2*np.random.rand(n) #在[0,2]上的n個隨機數

可見,用蒙特卡洛法求得的積分值與理論解非常接近。

附:md編輯公式

蒙特卡洛方法

蒙特卡洛方法 monte carlo method,也有翻譯成 蒙特卡羅方法 是以概率和統計的理論 方法為基礎的一種數值計算方法,將所求解的問題同一定的概率模型相聯絡,用計算機實現統計模擬或抽樣,以獲得問題的近似解,故又稱隨機抽樣法或統計試驗法。上述就是蒙特卡洛方法的基本概念,比較抽象,下面結合實際...

蒙特卡洛方法

這個演算法是用來求解積分和一些運算的,主要就是通過概率模擬的方法,比如對於 或者積分 import random def calpai n 1000000 r 1.0 a,b 0.0,0.0 x neg,x pos a r,a r y neg,y pos b r,b r count 0 for i ...

python蒙特卡洛求定積分 蒙特卡洛定積分(一)

一 蒙特卡洛模擬法分類 蒙特卡洛法模擬法從其應用方面來劃分,可以分成以下三種形式 1 直接蒙特卡洛模擬。採用隨機數學咧來模擬複雜隨機過程的效應。2 蒙特卡洛定積分 間接蒙特卡洛模擬 利用隨機數序列計算積分的方法。積分維數越高,該方法的積分效率就越高。3 metropolis蒙特卡洛模擬。以 馬爾可夫...