计算此二重积分可得 r倒=/以a- g(x)dr 也即积分g(x)dx的计算归结为考察上述事件B发生的概 率。 由Bernoulli大数定律可知,可用重复试验中事件B发 生的频率近似表示事件B发生的概率。 12/52 (1)产生服从[0,1]上均匀分布的随机数。 (2)模拟实验:考察n次投点实验,记录事件{w:Y≤ 9(X)}发生的频率,用来近似表示其发生的概率,目 即得到积 分值0g(x)d. 例如,我们计算标准正态分布的密度函数在[0,1]上的积 分合e学d,使用R软件来实现这个试验过程,代码如 GoBack FullScreen Close Quit
12/52 kJ Ik J I GoBack FullScreen Close Quit Oéd»©å P(B) = Z 1 0 [ Z g(x) 0 1dy]dx = Z 1 0 g(x)dx è=»© R 1 0 g(x)dxOé8(è ˛„ØáBu)V «" dBernoulliåͽÆåßå^E£•ØáBu )™«CqL´ØáBu)V«" £1§)—l[0, 1]˛˛!©ŸëÅÍ" £2§[¢µ ng›:¢ßP¹Øá{w : Y ≤ g(X)}u)™«ß^5CqL´Ÿu)V«ß=» ©ä R 1 0 g(x)dx. ~Xß·ÇOéIO©Ÿó›ºÍ3[0, 1]˛» ©√ 1 2π R 1 0 e −x 2 2 dxß¶^R^á5¢y˘á£LßßìËX
下 液 mcl <-function(n) +{ +k <-0;x <-runif(n);y <-runif(n) +for (i in 1:n) +{ 13/52 +if (yli]<exp(-x[i]2/2)/sgrt(2 pi)) +k<-k+1 +} +k/n +} >mc1(10000) GoBack FullScreen Close Quit
13/52 kJ Ik J I GoBack FullScreen Close Quit eµ > mc1 < −function(n) +{ +k < −0; x < −runif(n); y < −runif(n) +f or (i in 1 : n) +{ +if (y[i] < exp(−x[i] 2 /2)/sqrt(2 ∗ pi)) +k < −k + 1 +} +k/n +} > mc1(10000)
另一方面,我们采用R软件中的内置函数integrate计 算此积分 >integrate(function(x)exp(-x2/2)/sqrt(2 *(p1.11) 0.3413447 with absolute error 3.8e-15 (11.1.2) 两种方法计算出的积分值非常接近。 14/52 GoBack FullScreen Close Quit
14/52 kJ Ik J I GoBack FullScreen Close Quit ,òê°ß·ÇÊ^R^á•SòºÍintegrateO éd»© > integrate(function(x) exp(−x 2 /2)/sqrt(2 ∗(11.1.1) pi), 0, 1) 0.3413447 with absolute error < 3.8e − 15 (11.1.2) ¸´ê{Oé—»©äö~C
例11.1.3 (平均值法)计算定积分g(x)dx. 花 解假设随机变量X服从[O,1]上的均匀分布,由随机变 量的函数的期望值的求法可知,Y=9(X)的期望值为 Ey=EgxI-人9edk 也即积分0g(c)dc的计算归结为计算g(X)的数学期望值。 15/52 有辛钦大数定律知,若X是独立同分布的随机变量序列, 则品∑”1X:依概率收敛E[X,故可用g(X)的观察值的均 值来估计g(X)的期望值。 (1)产生服从[0,1]上均匀分布的随机数x. (2)对每个x计算g(c),即可得到积分0g(x)dx的估 计值为员工19(c). GoBack FullScreen Close Quit
15/52 kJ Ik J I GoBack FullScreen Close Quit ~ 11.1.3 £²˛ä{§Oé½»© R 1 0 g(x)dx. ) bëÅC˛X—l[0, 1]˛˛!©ŸßdëÅC ˛ºÍœ"ä¶{åßY = g(X)œ"äè E[Y ] = E[g(X)] = Z 1 0 g(x)dx è=»© R 1 0 g(x)dxOé8(èOég(X)ÍÆœ"ä" k"àåͽÆßeXn¥’·”©ŸëÅC˛Sß K1 n Pn i=1 XiùV«¬ÒE[Xi]ßå^g(X)* ä˛ ä5Og(X)œ"ä" £1§)—l[0, 1]˛˛!©ŸëÅÍxi. £2§ÈzáxiOég(xi)ß=廩 R 1 0 g(x)dx Oäè1 n Pn i=1 g(xi)
计算标准正态分布的密度函数在0,上的积分合e学d, 使用R软件来实现这个试验过程,代码如下: mc3 <-function(n) +{ +x<-runif(n);f<-1:n +for (i in 1:n) 16/52 +fli]<-exp(-x[i]2/2)/sgrt(2 pi) +sum(f)/n +} >mc3(10000) 用平均值法计算出的结果与随机投点法以及直接计算定积分 GoBack 的值非常接近。 FullScreen Close Quit
16/52 kJ Ik J I GoBack FullScreen Close Quit OéIO©Ÿó›ºÍ3[0, 1]˛»©√ 1 2π R 1 0 e −x 2 2 dxß ¶^R^á5¢y˘á£LßßìËXeµ > mc3 < −function(n) +{ +x < −runif(n); f < −1 : n +f or (i in 1 : n) +f[i] < −exp(−x[i] 2 /2)/sqrt(2 ∗ pi) +sum(f)/n +} > mc3(10000) ^²˛ä{Oé—(JÜëÅ›:{±9ÜOé½»© äö~C