蒙特卡羅模擬 python實現

2021-09-25 21:02:26 字數 2293 閱讀 9762

基本原理

蒙特卡羅方法通過抓住事物運動的幾何數量和幾何特徵,利用數字方法來加以模擬,即進行一種數字模擬實驗。它是以乙個概率模型為基礎,按照這個模型所描繪的過程,通過模擬實驗的結果,作為問題的近似解。

主要步驟如下:

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 圓的...