蒙特卡洛实验报告精编WORD版.docx
《蒙特卡洛实验报告精编WORD版.docx》由会员分享,可在线阅读,更多相关《蒙特卡洛实验报告精编WORD版.docx(6页珍藏版)》请在冰豆网上搜索。
![蒙特卡洛实验报告精编WORD版.docx](https://file1.bdocx.com/fileroot1/2022-10/28/6fce26fe-fed3-4bf5-bf8f-cb2d4f91a7e4/6fce26fe-fed3-4bf5-bf8f-cb2d4f91a7e41.gif)
蒙特卡洛实验报告精编WORD版
IBMsystemofficeroom【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】
蒙特卡洛实验报告精编WORD版
专业:
核工程与核技术
实验一蒙特卡罗方法
一、实验目的
1、了解蒙特卡罗方法方法的基本思想;
2、掌握蒙特卡罗方法计算面积、体积的方法;
3、掌握由已知分布的随机抽样方法。
二、实验原理
MonteCarlo方法,又称统计模拟方法或计算机随机模拟方法,是一种基于“随机数”进行数值模拟的方法,一种采用统计抽样理论近似求解物理或数学问题的方法。
倘若待求量可以表述成某些特征量的期望值、某些事件出现的概率或两者的函数形式,那么可采用蒙特卡罗方法求解。
在求解某些特征量的期望值或某些事件出现的概率时,必须构建合符实际的数学模型。
例如采用蒙特卡罗方法计算某函数所围面积时,构建的数学模型是构造一已知面积的可均匀抽样区域,在该区域投点,由伯努利定理大数定理可知,进入待求区域投点的频率依概率1收敛于该事件出现的概率(面积之比)。
由已知分布的随机抽样方法指的是由已知分布的总体中抽取简单子样。
具体方法很多,详见课本第三章。
三、实验内容
1、安装所需计算工具(MATLAB等);
以下内容采用工具软件中自带伪随机数发生器进行计算。
2、求解以下区域的面积、体积:
2.1、给定曲线y=2–x2和曲线y3=x2,曲线的交点为:
P1(–1,1)、P2(1,1)。
曲线围成平面有限区域,用蒙特卡罗方法计算区域面积;
2.2、计算所围体积
其中。
3、对以下已知分布进行随机抽样:
三、实验报告编写
1、给出各题的抽样程序并解释语句的含义;
2、给出2.1和2.2抽样结果误差随抽样次数的关系图,并解释原因;
表1实验记录表
序号
1
2
3
4
5
6
7
试验次数
103
1×104
5×104
1.2×105
1.5×105
1.8×106
2.0×107
试验时间
计算结果
实验误差
3、给出3题的抽样框图、试验累积频率与理论累积频率关系图,并给出抽样次数(>106)与抽样时间。
2.1程序代码编写如下:
N=10^6;%总投点个数
S=0;%记录投点在所围图形中的个数
SS=0;
fori=1:
N
x=2*rand-1;%产生的随机变量x,y
y=2*rand;;%产生x和y的坐标
if((y<=2-x^2)&(y^3>=x^2))%判定是否落入所围图像中
S=S+1;%进入则加1
SS=SS+1^2;
end
end
Area=4*S/N%计算面积
Dev=SS/N-(S/N)^2%计算方差
A=sqrt(Dev/N)%计算标准差
toc
实验数据如下:
序号
1
2
3
4
5
6
7
试验次数
103
1×104
5×104
1.2×105
1.5×105
1.8×106
2.0×107
试验时间
0.000000s
0.031000s
1.182000s
17.609000s
29.453000s
310.23515s
4.4532523s
计算结果
2.1320
2.1352
2.1444
2.1292
2.1394
2.1207
2.1258
实验误差
0.0158
0.0050
0.0022
0.0014
0.0013
4.198e-004
5.568e-004
请输入总投点个数:
150000
2.2实验代码如下:
clear;
clc;
M=0;
N=5*10^4;
tic;
fori=1:
N
x=2*rand()-1;
y=2*rand()-1;
z=2*rand();
t=x^2+y^2;
s=z^2;
ifs>=t
ift<=-s+2*z
M=M+1;
end
end
end
toc
MIANJI=M/N*8
clearMNixy;
计算结果:
N=50000时面积为3.1350,计算时间约0.282s。
实验数据如下:
序号
1
2
3
4
5
6
7
试验次数
103
5×104
5×104
1.2×105
1.5×105
1.8×106
2.0×107
试验时间
0.000000s
0.016000s
0.000000s
0.016000s
0.204000s
0.265000s
2.609000s
计算结果
2.8080
3.1594
3.1536
3.1395
3.1401
3.1471
3.1419
实验误差
0.3336
-0.0178
-0.0120
0.0021
0.0015
-0.0055
-3.0735e-004
2.3程序代码编写如下:
clear;
clc;
M=input('输入所需产生随机变量的个数:
\n');
x=zeros(M,1);
tic;
fori=1:
M
if(rand()<=0.5)
x(i)=max(rand(),rand())
x(i)=max(x(i),rand());
x(i)=max(x(i),rand());
else
x(i)=min(rand(),rand());
x(i)=min(x(i),rand());
end
end
plot(x,'g.')
toc
clearM;
六、实验心得
通过本次实验后,让我发现这门课非常有趣,并没有想象的那么枯燥无味,是一门很有实用价值的一门学科。
同时让我学习到MATLAB的基本操作和用法。