@TangWill
2019-06-28T11:33:09.000000Z
字数 1408
阅读 802
概率论
为计算积分
因此,只要能生成随机列就能求出 的近似值,可以在计算机上首先生成服从均匀分布的随机数 ,然后通过上面两式得出近似值,也就是
其中, 是计算机上生成的伪随机数。
用蒙特卡洛方法积分
首先选定一个区间 ,然后抽取4000个随机点的坐标 ,他们服从区间上的均匀分布。
利用MATLAB生成区间随机掷点效果图
random = unifrnd(0,1,1,4000);%生成4000个区间[0,1]上服从均匀分布的随机数
x=0.00025:0.00025:1;
y=x.^3; subplot(2,1,1),plot(x,y,'k',x,random,'.');
xlabel('x轴'),ylabel('y轴')
for n=1:4000 sumset(n)=0; end
sum=0;
for n=1:4000 sum=sum+random(n).^3; sumset(n)=sum/n;
end subplot(2,1,2),plot(x,sumset);
sum/4000
结果如图
图可知,结果稳定在0.25附近。
有牛顿-莱布尼茨公式可知
模拟值与精确值的误差率为0.129%
用蒙特卡罗方法积分
首先选定一个区间 ,然后抽取4000个随机点的坐标 ,他们服从区间上的均匀分布。
利用MATLAB生成区间随机掷点效果图
random = unifrnd(0,1,1,4000);%生成4000个区间[0,1]上服从均匀分布的随机数
x=0.00025:0.00025:1;
y=sin(x); subplot(2,1,1),plot(x,y,'k',x,random,'.');
xlabel('x轴'),ylabel('y轴')
for n=1:4000 sumset(n)=0; end
sum=0;
for n=1:4000 sum=sum+sin(random(n)); sumset(n)=sum/n;
end subplot(2,1,2),plot(x,sumset);
sum/4000
结果如图
由图可知,结果稳定在0.46附近。
有牛顿-莱布尼茨公式可知