基于蒙特卡洛方法求数值积分与RWord格式.docx
- 文档编号:4641431
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:28
- 大小:207.13KB
基于蒙特卡洛方法求数值积分与RWord格式.docx
《基于蒙特卡洛方法求数值积分与RWord格式.docx》由会员分享,可在线阅读,更多相关《基于蒙特卡洛方法求数值积分与RWord格式.docx(28页珍藏版)》请在冰点文库上搜索。
作为概率积分的近似值,即
2.2平均值法
任取一组相互独立、同分布的随机变量,在[a,b]内服从分布率p(x),令,则也是一组相互独立、同分布的随机变量,而且
由强大数定理
若记,则依概率1收敛到I,平均值法就是用作为I的近似值。
假如所需计算积分为,其中被积函数在[a,b]内可积,任意选择一个有简单办法可以进行抽样的概率密度函数p(x),使其满足条件:
l
记则所求积分为
因而MonteCarlo近似求积算法为:
(1)产生服从分布率p(x)的随机数
(2)计算均值,即有
2.3重要性采样法
从数学角度上看定积分可以看成
其中g(x)是某个随机变量X的密度函数,因此积分值I可看成随机变量Z=f(x)/g(x)的数学期望值
为了减少模拟实验的方差应适当选取g(x),使Var(I)尽可能小,如果被积函数f(x)>
0,可取g(x)=cf(x),当c=1/I时就有Var(I)=0.一般应选取和f(x)相似的密度函数g(x),使f(x)/g(x)接近于常数,故而Var(I)接近于0,以达到降低模拟实验的方差,这种减少方差的模拟试验法为重要抽样法。
2.4分层抽样法
分层抽样法是利用贡献率大小来降低估计方差的方法。
它首先把样本空间D分成一些不交的小区间,然后在各个小区间内的抽样数由其贡献大小决定。
即,定义,则内的抽样数应与成正比。
考虑积分将[0,1]分成m个小区间:
则
记为第i个小区间的长度,i=1,2,...,m,在每个小区间上的积分值可用均值法估计出来,然后将其相加即可给出的一个估计。
具体步骤为:
1)独立产生U(0,1)随机数
2)计算
3)计算
于是的估计为,其方差为
其中,
2.5对偶变量法
控制变量法利用数学上积分运算的线性特性:
选择函数g(x)时要考虑到:
g(x)在整个积分区间都是容易精确算出,
并且在上式右边第一项的运算中对(f-g)积分的方差应当要比第二项对f积分的方差小。
在应用这种方法时,在重要抽样法中所遇到的,当g(x)趋于零时,被积函数(f-g)趋于无穷大的困难就不再存在,因而计算出的结果稳定性比较好。
该方法也不需要从分布密度函数g(x),
解析求出分布函数G(x)。
由此我们可以看出选择g(x)所受到的限制比重要抽样法要小些。
模拟过程:
2)计算
2.6控制变量法
通常在蒙特卡洛计算中采用互相独立的随机点来进行计算。
对偶变量法中却使用相关联的点来进行计算。
它利用相关点间的关系可以是正关联的,也可以是负关联的这个特点。
两个函数值和之和的方差为
如果我们选择一些点,它们使和是负关联的。
这样就可以使上
式所示的方差减小。
当然这需要对具体的函数和有充分的了解
2)计算,找g(x),f(x)是相关的,且E[g(x)]=
3程序及实现结果
3.1的求解
3.1.1随机投点法
先利用R软件产生服从[0,1]上均匀分布的随机数X,Y,,计算的个数,即事件发生的频数,求出频率,即为积分的近似值。
R程序
s1<
-function(n)
{
f<
-function(x)exp(-x)
a<
-0
b<
-1
x<
-runif(n)
y<
m<
-sum(y<
f(x))
j=m/n
var<
-1/n*var(y<
lis<
-list(j,var)
return(lis)
}
s1(10^4)
s1(10^5)
s1(10^6)
s1(10^7)
对模拟次数n调试了4次,分别为,得到精确值和模拟值。
表3.1.1随机投点法的模拟次数和模拟值
n
模拟值
0.6269
0.63235
0.632503
0.6319298
方差
2.32599e-05
2.32414e-06
2.32713e-07
2.32477e-08
精确值为0.6321206
3.1.2平均值法
先用R软件产生n个服从[0,1]上均匀分布的随机数,计算,再计算的平均值,即为定积分的近似值
R程序
p1<
y<
-mean(f(x))
-1/n*var(f(x))
lis<
-list(y,var)
return(lis)
p1(10^4)
p1(10^5)
p1(10^6)
p1(10^7)
对模拟次数n调试了4次,分别为,得到精确值和模拟值。
表3.1.2平均值法的模拟次数和模拟值
0.6310117
0.6322643
0.6318199
0.632079
3.25430e-06
3.27162e-07
3.2805e-08
3.27536e-09
3.1.3重要性抽样法
R程序
z1<
x<
-1-(sqrt(1-r))
g<
-function(x)(2*(1-x))
r<
s=mean(f(x)/g(x))
-1/n*var(f(x)/g(x))
-list(s,var)
z1(10^4)
z1(10^5)
z1(10^6)
z1(10^7)
表3.1.3重要性抽样法法的模拟次数和模拟值
0.6134819
7.06957e-06
7.06957e-07
7.06957e-08
7.06957e-09
精确值为0.6321206
3.1.4分层抽样法
f1<
-function(n,m)
{
r1<
-runif(n,min<
-0,max<
-0.5)
r2<
-runif(m,min<
-0.5,max<
-1)
c<
-1/2*mean(exp(-r1))+1/2*mean(exp(-r2))
-var(exp(-r1))/(4*n)+var(exp(-r2))/(4*m)
j<
-list(c,var)
return(j)
f1(10,20)
f1(100,200)
f1(1000,2000)
f1(10^4,2*10^4)
得到精确值和模拟值
表3.1.4分层抽样法的模拟次数和模拟值
取值
n=10,m=20
n=100,
m=200
n=1000
M=2000
n=10000
M=20000
0.6582702
0.6291755
0.6341718
0.6327054
0.000269207
2.75023e-05
3.23184e-06
3.18334e-07
精确值为0.6321206
3.1.5对偶变量法
先用R软件产生服从[0,1]上均匀分布的随机数X,函数f(x),
计算,
计算
d1<
f<
-function(x)exp(-(1-x))
x<
m<
-sum(f(x))
p<
-sum(y(x))
-(m/n+p/n)/2
-1/4*(var(f(x))+var(y(x))+2*cov(f(x),y(x)))
d1(10^4)
d1(10^5)
d1(10^6)
d1(10^7)
表3.1.5对偶变量法的模拟次数和模拟值
0.6321979
0.6320659
0.6320957
0.6321183
0.00052472
0.000532748
0.0005305741
0.0005291691
3.1.6控制变量法
k1<
r<
g<
-function(x)2*(1-x)
u<
-mean(g(r))
l<
-(-cov(f(r),g(r)))/var(g(r))
-mean(f(r))+l*mean(g(r)-u)
-1/n*var(f(r)+g(r))
lst<
return(lst)
k1(10^4)
k1(10^5)
k1(10^6)
k1(10^7)
表3.1.6控制变量法的模拟次数和模拟值
0.634575
0.6320884
0.631849
0.6321651
5.713907e-05
5.72338e-06
5.736774e-07
5.731522e-08
3.2对积分求解
3.2.1随机投点法
s2<
t=function(y)(f(a+(b-a)*y)-c)/(d-c)
-2
-4
-f(4)
d<
-f
(2)
s<
-(b-a)*(d-c)
m/n
g=s*j+c*(b-a)
-list(g,var)
s2(10^4)
s2(10^5)
s2(10^6)
s2(10^7)
表3.2.1随机投点法的模拟次数和模拟值
0.1868845
2.33071e-05
2.32230e-06
2.32479e-07
2.32611e-08
精确值为0.1170196
3.2.2平均值法
p2<
-function(r)exp(-x)
a<
b<
r<
h<
-(b-a)*f(a+(b-a)*r)
y<
-mean(h)
var<
-1/n*var(h)
p2(10^4)
p2(10^5)
p2(10^6)
p2(10^7)
表3.2.2平均值法的模拟次数和模拟值
0.1173333
0.1169582
0.1170038
0.1170311
1.30285e-05
1.30285e-06
1.30285e-07
1.30285e-08
3.2.3分层抽样法
f2<
-function(n,m){
c<
-1/2*mean(2*exp(-2-2*r1))+1/2*mean(2*exp(-2-2*r2))
var<
-var(2*exp(-2-2*r1))/(4*n)+var(2*exp(-2-2*r2)/(4*m))
f2(10,20)
f2(100,200)
f2(1000,2000)
f2(10^4,2*10^4)
对模拟次数n调试了4次,分别为,得到精确值和模拟值。
表3.2.3分层抽样法的模拟次数和模拟值
0.1108132
0.1219668
0.1173769
0.1169783
6.12767e-05
6.31761e-06
6.20002e-07
6.02697e-08
3.2.4对偶变量法
d2<
a<
b<
-f(b)
-f(c)
-function(u)1/(d-c)*(f(a+(b-a)*u)-c)
j1<
-mean(p(r))
j2<
j3<
-(j1+j2)/2
-s*j3+c*(b-a)
d2(10^4)
d2(10^5)
d2(10^6)
d2(10^7)
表3.2.4对偶变量法的模拟次数和模拟值
0.1169043
0.116741
0.116943
0.1170233
精确值为0.1170196
3.2.5控制变量法
k2<
-f(4)
q<
-function(x)1/(d-c)*(f(a+(b-a)*x)-c)
-(-cov(f(r),g(r)))/var(g(r))
-mean(q(r))+l*mean(g(r)-u)
-s*p+c*(b-a)
k2(10^4)
k2(10^5)
k2(10^6)
k2(10^7)
表3.2.5控制变量法的模拟次数和模拟值
0.1174713
0.1171151
0.11703161
0.1170211
5.68197e-05
5.73480e-06
5.73725e-07
5.73387e-08
3.2.6重要性采样法
z2<
a=2
b=4
f=function(x)exp(-x)
c=f(4)
d=f
(2)
s=(b-a)*(d-c);
r=runif(n)
-function(x)
1/(d-c)*(f(a+(b-a)*x)-c)
-mean(p(x)/q(x))
j=s*j1+c*(b-a)
-1/n*var(p(x)/q(x))
z2(10^4)
z2(10^5)
z2(10^6)
z2(10^7)
表3.2.6重要性采样法的模拟次数和模拟值
0.1173522
0.1170267
0.1170114
0.1170123
8.17541e-07
8.16598e-08
8.17952e-09
8.17912e-10
3.3积分求解
3.3.1随机投点法
s3<
-function(x)exp(-x)/(1+x^2)
s3(10^4)
s3(10^5)
s3(10^6)
s3(10^7)
表3.3.1随机投点法的模拟次数和模拟值
0.5308
0.52507
0.525351
0.5247777
2.49625e-05
2.49312e-06
2.49423e-07
2.49371e-08
精确值为0.5247971
3.3.2平均值法
p3<
p3(10^4)
p3(10^5)
p3(10^6)
p3(10^7)
表3.3.2平均值法的模拟次数和模拟值
0.5239707
0.5252655
0.5245715
0.5247576
5.97263e-06
6.02206e-07
5.99868e-08
5.99926e-09
精确值为0.5247971
3.3.3分层抽样法
f3<
z<
-function(u)exp(-u)/(1+u^2)
-1/2*mean(z(r1))+1/2*mean(z(r2))
-var(z(-r1))/(4*n)+var(z(-r2))/(4*m)
f3(10,20)
f3(100,200)
f3(1000,2000)
f3(10^4,2*10^4)
表3.3.3分层抽样法的模拟
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 蒙特卡洛 方法 数值 积分