蒙特卡洛積分法(一)


今天我們來講一節數學課:蒙特卡洛積分
一般在工程實踐中,面對的函數千變萬化,我們很難直接計算得出某個函數的積分的解析解。為了求解函數積分的數值解,蒙特卡洛法是一種強大的積分方法。它的推導過程如下:
假設我們想去求得函數g的積分,首先根據大數定理,任意給定一個實數函數f和隨機變量x~p(x),可以得到:

令g=fp,代換上式可得:

它的期望值為:

也就是說,當N取的足夠大時,結果將無限逼近解析積分。
綜上所述,蒙特卡洛方法是一種可以近似計算任意函數積分的數值方法。它的計算分為以下步驟:
1.對一個滿足某種概率分布的隨機數進行抽樣
2.使用該抽樣計算g(x)/p(x)的值,作為樣本
3.最后對所有的樣本累加求平均

寫了一段代碼來驗證一下sin(x)在[0,pi]區間的積分,采用均勻分布:

import random
import math
count = 10000
sum = 0.0
pi = 3.14159265
for i in xrange(count):
	p = 1.0 / pi
	x = random.uniform(0.0, pi)
	sum += math.sin(x)/p
sum /= count
print sum
print math.cos(0) - math.cos(pi)

解析解為2,數值解為1.98730395714,可以說是很接近了。
用蒙特卡洛積分法求積分涉及到兩個問題:1.如何對一個任意分布函數進行抽樣; 2.如何減少方差,我們之后會對它進一步探討。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM