发布时间 : 星期四 文章用蒙特卡罗方法计算π值实验报告更新完毕开始阅读
本科生实验报告
实验课程 蒙特卡罗模拟
学院名称 核技术与自动化工程学院 专业名称 核技术及应用
学生姓名 王明
学生学号 2017020405 指导教师 邮箱 511951451@qq.com 实验成绩
二〇一七年九月 二〇一八年一月
实验一、选择一种编程语言模拟出π的值
一、实验目的
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([-3 3 -3 3]); hold on;
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;
for i=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 模拟值 相对误差(%) 3.005078 -0.62366 -0.0456 0.016657 0.006013 10e3 3.236 10e4 3.122 10e5 10e6 10e7 3.14016 3.142116 3.141782 五、实验总结
模拟总计数率越低时,模拟出的π值的误差就越大,随着模拟总计数的增加,模拟值值逐渐趋近于π真实值。蒙卡模拟的方法是收敛。并且模拟的方法比较简单,可以把复杂的计算转换为简单的模拟计算;但是蒙卡模拟的收敛速度比较慢。