蒙特卡洛方法 玩具例子 2 定積分

2021-07-24 11:59:40 字數 1603 閱讀 9958

蒙特卡洛方法可以計算任意乙個積分的值。

下面以求∫1

0x2d

x 的定積分,定義域為[0,1], x2

的值域為[0,1]。 在座標區域0≤

x≤1 ; 0≤

y≤1 內撒點,用縱座標j小於等於i2

的所有點(i

,j) 佔總點數的比例近似估計定積分的值。

# -*- coding:utf8 -*-

import numpy as np

import matplotlib.pyplot as plt

definterplote_exp

(up, down, n):

x = np.random.uniform(up, down, (n,))

y = np.random.uniform(up, down, (n,))

incircle = np.sum(y - np.power(x, 2) <= 0.0)

error = 1.0/3 - incircle * 1.0/n

######################################

fx = np.linspace(0.0, 1.2, 3600)

fy = np.power(fx, 2)

######################################

plt.fill_betweenx(fy, 1.0, fx, where=fx <= 1.0, facecolor='red')

rx = np.asarray([0.0, 1.0, 1.0, 0.0, 0.0], dtype = np.float)

ry = np.asarray([0.0, 0.0, 1.0, 1.0, 0.0], dtype = np.float)

plt.plot(rx,ry, color="g")

plt.plot([0.0, 1.2],[0.0, 0.0], color="b")

plt.plot([0.0, 0.0],[0.0, 1.2], color="b")

plt.plot(fx,fy, color="b")

cl = ["b"

if j - i**2

<= 0.0

else

"r"for i, j in zip(x,y)]

plt.scatter(x, y, c=cl)

plt.text(0.2, 1.4, s = r"$\int_^ x^2 dx=\frac$")

plt.text(0.2, 1.2, s = "error=, n=".format(n=n, error=error))

plt.show()

if __name__ == "__main__":

interplote_exp(0.0, 1.0, 10000)

pass

輸出的圖示為:

參考:

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

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

蒙特卡洛方法

蒙特卡洛方法 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 ...