日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蒙特卡罗方法介绍( 二)

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蒙特卡罗方法介绍( 二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

蒙特卡羅方法介紹( 二)

一、蒙特卡羅求解定積分

蒙特卡洛方法求解定積分有兩種方法,一種是上一節中講的投點法,另外一種是期望法(也稱平均值法)。

1.1 投點法

給出如下曲線f(x)f(x)f(x),求f(x)f(x)f(x)a,ba,ba,b上的積分,即xxxa,ba,ba,b上與曲線f(x)f(x)f(x)圍成的面積。隨機在如下矩形中進行投點,假設綠色點數為ggg,紅色點數為rrr,矩陣的面積為AAA,則綠色部分的面積SSS就是:
S=A?gr+gS = A*\frac{g}{r+g} S=A?r+gg?

注意,蒙特卡羅方法所求的數值是一個近似值,而不是精確值。

1.2 期望法(平均值法)

1.2.1 無意識統計學家定律(Law of the unconscious statistician,LOTUS)

統計學中期望描述了隨機變量的平均取值的大小特征,計算期望過程:試驗中每次可能結果的概率值乘以其結果的總和,也就是數值乘以其發生的概率的和。理解無意識統計學家定律就是告訴我們,事件萬物相互之間是有相互聯系的,一個事件的發生概率一定程度上可以用另一個事件的發生概率進行描述,比如函數F(X)=(X?3)2F(X) = (X-3)^2F(X)=(X?3)2中,XXX是一個隨機變量,XXX的概率密度函數是影響到F(X)F(X)F(X)取值的概率密度函數的。

無意識統計學加定律,則是告訴已知隨機變量XXX的概率分布fx(x)f_x(x)fx?(x),但不知道g(X)g(X)g(X)的分布,此時用LOTUS公式能計算出函數g(X)g(X)g(X)的數學期望。

XXX是離散分布時
E[g(X)]=∑xg(X)fx(x)E[g(X)] = \sum_xg(X)f_x(x) E[g(X)]=x?g(X)fx?(x)

XXX是連續分布時
E[g(X)]=∫g(X)fx(x)dxE[g(X)] = \int g(X)f_x(x)dx E[g(X)]=g(X)fx?(x)dx

常見的分布變換如下:

1.2.2 期望法

還是上邊的例子,我們用期望法求解曲線的面積。
任意選取一組獨立的、同分布的隨機變量Xi{X_i}Xi?,Xi{X_i}Xi?[a,b][a,b][a,b]上服從分布律fxf_xfx?,也就是說fxf_xfx?是隨機變量XXX的概率密度函數(PDF)或者PMF。令:
g?(x)=g(x)fx(x)g^*(x) = \frac{g(x)}{f_x(x)} g?(x)=fx?(x)g(x)?
g?(x)g^*(x)g?(x)也是一組獨立同分布的隨機變量。因為g?(x)g^*(x)g?(x)xxx的函數,所以,根據LOTUS得:
E[g?(Xi)]=∫abg?(x)fx(x)dx=∫abg(x)dx=IE[g^*(X_i)] = \int_a^b g^*(x)f_x(x)dx = \int_a^b g(x)dx = I E[g?(Xi?)]=ab?g?(x)fx?(x)dx=ab?g(x)dx=I

由強大數定理知:
Pr(lim?N→∞1N∑g?(Xi)=I)=1P_r(\lim_{N \to \infty} \frac{1}{N} \sum g^*(X_i) = I) = 1 Pr?(Nlim?N1?g?(Xi?)=I)=1
上式理解為所有概率值和為1.

假設若計算的積分有如下形式:
I=∫abg(x)dxI = \int_a^b g(x)dx I=ab?g(x)dx
其中,被積函數g(x)g(x)g(x)在區間[a,b][a,b][a,b]內可積,任意選擇一個有簡便方法可以抽樣的函數fx(x)f_x(x)fx?(x),滿足以下條件:
{fx(x)≠0(a≤x≤b),g(x)≠0∫abg(x)dx=1\begin{cases} f_x(x) \neq 0& (a \le x \le b),g(x)\neq 0\\ \int_a^b g(x)dx=1& \\ \end{cases} {fx?(x)?=0ab?g(x)dx=1?(axb),g(x)?=0?
記:
g?(x)={g(x)fx(x),fx(x)≠00,fx(x)=0g^*(x) = \begin{cases} \frac{g(x)}{f_x(x)} &,f_x(x)\neq 0\\ 0,& f_x(x) = 0\\ \end{cases} g?(x)={fx?(x)g(x)?0,?,fx?(x)?=0fx?(x)=0?
那么原積分可以寫成:
I=∫abg?(x)fx(x)dxI=\int_a^b g^*(x)f_x(x)dx I=ab?g?(x)fx?(x)dx
計算積分的步驟為:

  • 產生服從分布fx(x)f_x(x)fx?(x)的隨機變量Xi,i=1,2,3...NX_i,{i=1,2,3...N}Xi?,i=1,2,3...N
  • 計算均值
    I?=1N∑1Ng?(Xi)I^*=\frac{1}{N} \sum_1^N g^*(X_i) I?=N1?1N?g?(Xi?)
  • I?I^*I?作為III的近似值。

    如果a,ba,ba,b為有限值,取fx(x)f_x(x)fx?(x)為均勻分布
    fx(x)={1b?a,a≤x≤b0,otherwisef_x(x) = \begin{cases} \frac{1}{b-a} &,a \le x \le b\\ 0,& otherwise\\ \end{cases} fx?(x)={b?a1?0,?,axbotherwise?

    則:
    I=∫abg(x)dx=(b?a)?1b?a∫abg(x)dx=(b?a)∫abg(x)1b?adxI=\int_a^b g(x)dx = (b-a) * \frac{1}{b-a}\int_a^b g(x)dx=(b-a)\int_a^b g(x)\frac{1}{b-a}dx I=ab?g(x)dx=(b?a)?b?a1?ab?g(x)dx=(b?a)ab?g(x)b?a1?dx
    計算積分的步驟為:

  • 產生服從均勻分布fx(x)f_x(x)fx?(x)的隨機變量Xi,i=1,2,3...NX_i,{i=1,2,3...N}Xi?,i=1,2,3...N
  • 計算均值
    I?=b?aN∑1Ng(Xi)I^*=\frac{b-a}{N} \sum_1^N g(X_i) I?=Nb?a?1N?g(Xi?)
  • I?I^*I?作為III的近似值。

    二、理解平均值法

    給出如下問題,如圖所示:已知曲線f(x)f(x)f(x),求
    F=∫abf(x)dxF=\int_a^b f(x)dx F=ab?f(x)dx

    以上問題,即求解陰影部分的面積。這里,我們使用一種近似的方法來求積分,任意選取a,ba,ba,b之間的一點xxx,函數值為f(x)f(x)f(x),則陰影部分的面積約等于:
    S=f(x)?(b?a)S=f(x)*(b-a) S=f(x)?(b?a)

    以上隨機選取了一個點,如果隨機選取4個點,那我們分別計算4個面積,然后取平均值,作為陰影部分的面積,如下圖所示:

    我們選取的點越多,計算出來的值也就越接近真實值。假設隨機選取NNN個點,則根據以上,我們可以得出:
    S=1N∑1Nf(xi)?(b?a)=b?aN∑1Nf(xi)S=\frac{1}{N} \sum_1^N f(x_i)*(b-a) = \frac{b-a}{N} \sum_1^N f(x_i) S=N1?1N?f(xi?)?(b?a)=Nb?a?1N?f(xi?)
    當然,這也是一種近似方法。

    參考文獻

  • https://www.scratchapixel.com/lessons/mathematics-physics-for-computer-graphics/monte-carlo-methods-in-practice/monte-carlo-integration
  • https://blog.csdn.net/qq_32618327/article/details/90452846
  • https://blog.csdn.net/baimafujinji/article/details/53869358
  • https://blog.csdn.net/qq_36931982/article/details/92788754
  • 總結

    以上是生活随笔為你收集整理的蒙特卡罗方法介绍( 二)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。