用蒙特卡罗方法计算π值实验报告

发布时间 : 星期四 文章用蒙特卡罗方法计算π值实验报告更新完毕开始阅读

本科生实验报告

实验课程 蒙特卡罗模拟

学院名称 核技术与自动化工程学院 专业名称 核技术及应用

学生姓名 王明

学生学号 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 五、实验总结

模拟总计数率越低时,模拟出的π值的误差就越大,随着模拟总计数的增加,模拟值值逐渐趋近于π真实值。蒙卡模拟的方法是收敛。并且模拟的方法比较简单,可以把复杂的计算转换为简单的模拟计算;但是蒙卡模拟的收敛速度比较慢。

联系合同范文客服:xxxxx#qq.com(#替换为@)