用蒙特卡罗方法计算π值实验报告_精品文档.doc
《用蒙特卡罗方法计算π值实验报告_精品文档.doc》由会员分享,可在线阅读,更多相关《用蒙特卡罗方法计算π值实验报告_精品文档.doc(5页珍藏版)》请在冰豆网上搜索。
本科生实验报告
实验课程蒙特卡罗模拟
学院名称核技术与自动化工程学院
专业名称核技术及应用
学生姓名王明
学生学号2017020405
指导教师
邮箱511951451@
实验成绩
二〇一七年九月二〇一八年一月
实验一、选择一种编程语言模拟出π的值
一、实验目的
1、理解并掌握蒙特卡罗模拟的基本原理;
2、运用蒙特卡洛思想解决实际问题;
3、分析总结蒙特卡洛解决问题的优缺点。
二、实验原理
用蒙特卡洛思想计算π的值分为如下几部:
第一步构建几何原理:
构建单位圆外切正方形的几何图形。
单位圆的面积为S0=π,正方形的面积S1=4;
第二步产生随机数进行打把:
这里用MATLAB产生均匀随机数。
分别生产均匀随机数(x,y)二维坐标。
X,y的范围为-1到1.总共生成N个坐标(x,y).统计随机生成的坐标(x,y)在单位圆内的个数M。
第三步打把结构处理:
根据S0/S1=M/N计算出π的值。
因此π=4*M/N。
第四步改变N的值分析π的收敛性:
总数1000开始打把,依次增长10倍到1百万个计数。
三、实验内容
1、用matlab编写的实验代码,总计数率为1000。
zfx_x=[1,-1,-1,1,1];
zfx_y=[1,1,-1,-1,1];
plot(zfx_x,zfx_y)
axis([-33-33]);
holdon;
r=1;theta=0:
pi/100:
2*pi;
x=r*cos(theta);y=r*sin(theta);
rho=r*sin(theta);
figure
(1)
plot(x,y,'-')
N=1000;
mcnp_x=zeros(1,N);
mcnp_y=zeros(1,N);
M=0;
fori=1:
N
x=2*(rand(1,1)-0.5);
y=2*(rand(1,1)-0.5);
if((x^2+y^2)<1)
M=M+1;
mcnp_x(i)=x;
mcnp_y(i)=y;
end
end
plot(mcnp_x,mcnp_y,'.')
PI1=4*M/N;
2、用matlab绘制的图形
四、实验结果
1.当模拟总计数为1000时,某次计算结果:
PI=3.128。
2.改变实验总数绘制PI的收敛特性:
总计数N
10e3
10e4
10e5
10e6
10e7
模拟值
3.236
3.122
3.14016
3.142116
3.141782
相对误差(%)
3.005078
-0.62366
-0.0456
0.016657
0.006013
五、实验总结
模拟总计数率越低时,模拟出的π值的误差就越大,随着模拟总计数的增加,模拟值值逐渐趋近于π真实值。
蒙卡模拟的方法是收敛。
并且模拟的方法比较简单,可以把复杂的计算转换为简单的模拟计算;但是蒙卡模拟的收敛速度比较慢。