预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

MATLAB:蒙特卡罗法解决投针实验 研究物理或数学过程的一种随机模型的计算方法。蒙特-卡罗法是以随机抽样技巧作为工具的一门近代数值分析的学科。蒙特卡罗法的思想提出虽然较早,但系统性的研究实开始于1944年前后。当时由于研制原子弹,需要研究中子在裂变物质中的输运,提出了一些不易用一般数学方法求解的问题。 蒙特卡罗法可以用来求解两类问题。第一类问题称之为概率问题,用直接模拟某种物理过程的方法解决。第二类问题,是所谓定数问题。在解定数问题时,必须把问题化为相适应的能作模拟的概率问题。 投针实验:在两平行线中投针,取针的中点为参考,它到平线的距离为x,而针与平行线的交角为α,针长为l(当然要小于平行线间的距离D啦) 下面就在数学建模必备工具Matlab中写出这个实验过程吧: D=1;L=0.6;counter=0;n=10000;x=unifrnd(0,D/2,1,n);%在0-D/2的范围内产生的随机数填到1*n的矩阵当中phi=unifrnd(0,pi,1,n);axis([0,pi,0,D/2]);fori=1:nifx(i)<L*sin(phi(i))/2plot(phi(i),x(i),'r.');counter=counter+1;holdon;endendfren=counter/n;pihat=2*L/(D*fren); 以下是Matlab程序 clear a=1;%设置两条平行线之间的距离 l=0.6;%投针的长度 counter=0;%针与平行线相交的次数 n=10000000;%投掷次数 x=unifrnd(0,a/2,1,n);%产生n个(0,a/2)之间均匀分布的随机数,这里a/2是投针的中点到最近的平行线的距离 phi=unifrnd(0,pi,1,n);%产生n个(0,pi)之间均匀分布的随机数,这里pi是投针到最近的平行线的角度 fori=1:n ifx(i)<l*sin(phi(i))/2%只要x小于l*sin(phi(i))/2,则相交 counter=counter+1; end end frequency=counter/n;%计算相交的频率,即相交次数比总次数 Pi=2*l/(a*frequency)%从相交的频率总求的pi %运行结果 >>test Pi= 3.1416