基本原理
蒙特卡羅方法通過抓住事物運動的幾何數量和幾何特徵,利用數字方法來加以模擬,即進行一種數字模擬實驗。它是以乙個概率模型為基礎,按照這個模型所描繪的過程,通過模擬實驗的結果,作為問題的近似解。
主要步驟如下:
1.構造或描述概率過程
2.實現從已知概率分布抽樣
3.建立各種估計量
示例一:π值的計算
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
% matplotlib inline
# π的計算
n=30000
r=1.0
#半徑a,b=
(0.0
,0.0
)#圓心
xmin,xmax=a-r,a+r
ymin,ymax=b-r,b+r
x=np.random.uniform(xmin,xmax,n)
y=np.random.uniform(ymin,ymax,n)
fig=plt.figure(figsize=(6
,6))
axes=fig.add_subplot(1,
1,1)
plt.plot(x,y,
'ro'
,markersize=1)
plt.axis(
'equal'
)d=np.sqrt(
(x-a)**2
+(y-b)**2
)res=
sum(np.where(d
0))print
('落在圓內的點有%i個'
% res)
pi =
4*res/n
print
("π的近似值為:"
,pi)
#繪製圓形
示例二:計算積分y=x^2
n=
10000
#投點次數
#矩形區域邊界
x_min,x_max=
0.0,
1.0y_min,y_max=
0.0,
1.0#在矩形區域內隨機投點
x=np.random.uniform(x_min,x_max,n)
y=np.random.uniform(y_min,y_max,n)
#建立函式y=x**2
deff
(x):
return x**
2#統計落在函式y=x^2影象下方的點的數目
res=
sum(np.where(y
,0))
#計算定積分的近似值
integral=res/n
print
('integral:'
,integral)
#繪製散點圖
fig=plt.figure(figsize=(6
,6))
axes=fig.add_subplot(1,
1,1)
axes.plot(x,y,
'ro'
,markersize=1)
plt.axis(
'equal'
)#繪製y=x^2面積圖
蒙特卡羅模擬
最優化問題的計算方法是很重要的,因為很多最優化的問題難於解析地解出來,對於動態模擬,通常人們能夠解析地確定定常態的行為,但是關於瞬態行為的研究則需要計算機模擬,概率模型更加複雜,不具有時間動態特性的模擬有時能夠解析地求解出來,且對於簡單的隨機模型,定常態的結果通常是可用的,但是對於許多情況,概率模型...
蒙特卡羅模擬 蒙特卡羅模擬案例1演示
案例1 在座標象限 中,選取橫座標軸0 1區域和縱座標軸0 1區域形成乙個面積為1的正方形。在這個正方形區域內,隨機產生乙個散點,使它以等可能性隨機出現在區域內任何乙個位置。解決方法 為了隨機產生案例1中要求的散點,先分別定義兩個隨機變數x和y,使得它們都服從 0,1 均勻分布,即對x和y的隨機抽樣...
蒙特卡羅方法 python 實現
蒙特卡羅 monte carlo 方法的精髓 用統計結果去計算頻率,從而得到真實值的近似值。import numpy as np import matplotlib.pyplot as plt from matplotlib.patches import circle 投點次數 n 10000 圓的...