基于MATLAB的布丰投针实验仿真

合集下载

【CN109900929A】基于MATLAB的FIB制备三维原子探针样品过程的模拟方法【专利】

【CN109900929A】基于MATLAB的FIB制备三维原子探针样品过程的模拟方法【专利】

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号 (43)申请公布日 (21)申请号 201910205111.9(22)申请日 2019.03.18(71)申请人 南京理工大学地址 210094 江苏省南京市孝陵卫200号(72)发明人 靳慎豹 吴修婷 陈雪涵 刘畅 胡蓉 沙刚 (74)专利代理机构 南京理工大学专利中心32203代理人 邹伟红(51)Int.Cl.G01Q 30/20(2010.01)(54)发明名称基于MATLAB的FIB制备三维原子探针样品过程的模拟方法(57)摘要本发明属于FIB加工领域,尤其是涉及一种基于MATLAB的使用聚焦离子束进行三维原子探针样品加工过程的模拟方法。

包括,S1:位置标记;S2:第一侧面切削模拟:通过设置样品台旋转角度R 1、倾转角度T 1和切削深度H 1,进行第一侧面切削过程模拟;S3:第二侧面切削模拟:同上进行第二侧面切削过程模拟;S4:样品提取模拟:通过设置样品台的旋转角度R 3和倾转角度T3,进行样品提取过程模拟;S5:样品转移模拟;S6:落样模拟;S7:环切模拟。

本申请通过MATLAB程序对被检测材料中的目标微观组织结构的空间位置进行标记,并模拟FIB加工过程中样品台的旋转、倾转、平移等动作,实现对FIB加工APT样品的过程模拟和FIB加工参数优化设计,提高FIB加工的目的性及成功率。

权利要求书2页 说明书4页 附图2页CN 109900929 A 2019.06.18C N 109900929A权 利 要 求 书1/2页CN 109900929 A1.一种基于MATLAB的FIB制备三维原子探针样品过程的模拟方法,包括,S1:位置标记:对被检测材料中的目标微观组织结构的空间位置进行标记;S2:第一侧面切削模拟:通过设置样品台旋转角度R1、倾转角度T1和切削深度H1,进行第一侧面切削过程模拟;S3:第二侧面切削模拟:通过设置样品台的旋转角度R2、倾转角度T2、平移距离L和切削深度H2,进行第二侧面切削过程模拟;S4:样品提取模拟:通过设置样品台的旋转角度R3和倾转角度T3,进行样品提取过程模拟;S5:样品转移模拟:将样品转移至外置单轴旋转设备上,通过设置单轴旋转设备的旋转角度ω,进行样品转移调整过程模拟;S6:落样模拟:通过设置针尖底座平台的倾转角度T4,进行落样过程模拟;S7:环切模拟:通过设置预期针尖样品的锥度θ和切削深度H2,进行样品环切过程模拟。

布丰投针实验读后感

布丰投针实验读后感

布丰投针实验读后感
感悟:首先是知道了前辈们求解圆周率π的另一种方法,即基于多次试验的统计结果,这给今后解决问题提供了一个思路。

其次,通过投针试验,大致了解了蒙特卡洛法的基本思路,其主要的思想便是在不知道问题的本质求解的方法时,可通过多次试验,从实验中的概率统计结果中找到问题的近似解。

另外,在编程实现方面,虽然有一定的matlab基础,但是对于具体的思路的实现仍较为困难,通过看建模视频中提出的各个问题,跟上思路,积极思考,多看代码多学习,我想一段时间后,编程解决问题的能力还是可以提高的,在此感谢清风大哥!。

matlab求解Buffon投针频率

matlab求解Buffon投针频率

姓名:孙长晖学号:201292035班级:软1208班题目:(Buffon投针问题)在平面上布满间距为a的平行直线,向该平面随机投掷一枚长度为l(l<a)的针,求针与直线相交的频率。

其中:a=3cm,l=2cm,实验次数N为500,1000,5000;解:用x表示针的中点到最近一条直线的距离,φ表示针与平行线的夹角。

显然有0≤x≤a2,0≤φ≤π.针与平行线相交的前提是x≤l2sinφ.我们可以求出它的概率p=0.5l sinφdφπ0.5aπ=2laπ.由于x,φ为随机变量,我用matlab的rand()函数模拟,来统计求解针与直线相交的频率。

源程序:function [P]=Buffon(a,l,N,NN) % a为平行线间距;l为针长;N为投针次数,NN为实验次数M=0; % m记录相交的次数P=1:NN;for i=1:NNfor counter=1:Nxi=rand()*a/2; % xi表示针的中点到最近一条平行线的距离yi=rand()*pi; % yi表示针与平行线的夹角if xi<=l/2*sin(yi) %表示相交,M加一次M=M+1;endendP(i)=M/N; %P为针与直线相交的频率M=0;endend我定义了Buffon(a,l,N,NN)这个函数把频率的计算结果保存在1*NN的矩阵P中。

运行结果:1 >> P=Buffon(3,2,500,10) //表示平行线间距3cm,针长2cm,投掷次数500次,重复试验10次2 >> P=Buffon(3,2,1000,10) //表示平行线间距3cm,针长2cm,投掷次数1000次,重复试验10次3 >> P=Buffon(3,2,5000,10) //表示平行线间距3cm,针长2cm,投掷次数5000次,重复试验10次实验得到以上的结果!然后我们再验证一下:>> p=2*2/(3*pi)p =0.4244计算得到的概率是0.4244,试验结果基本接近,故试验成功。

系统建模与仿真 高阶电路分析

系统建模与仿真 高阶电路分析

作业1:蒲丰投针试验模拟一.实验原理:π2)(a b A P =根据频率的稳定性,当投针次数n 很大时,测出针与平行线相交的次数m,则频率值m/n 可作为P(A)的近似值代入上式,那么π2a b n m ≈ .2πam bn ≈⇒利用上式可计算圆周率π的近似值。

二.实验模拟过程可以采用MATLAB 软件进行模拟实验,即用MATLAB 编写程序来进行“蒲丰投针实验”,并用GUI 图形界面化直观显示。

Matlab 的GUI 编程代码如下:clcclose all clear allh0=figure('toolbar','none','position',[350 180 570 530],'color',[0.5 0.8 0.9],'name','布丰投针试验');h_panel=uipanel('Units','normalized','position',[0.05 0.72 0.35 0.25],'title','输入参数:','fontsize',11,'FontWeight','bold');h_text1=uicontrol(h_panel,'style','text','Units','normalized','HorizontalAlignment','left ','position',[0.05 0.62 0.5 0.25],'string','两线间的宽度 a :','fontsize',10);h_edit1=uicontrol(h_panel,'style','edit','Units','normalized','HorizontalAlignment','left ','position',[0.60 0.68 0.2 0.18],'fontsize',10);h_text2=uicontrol(h_panel,'style','text','Units','normalized','HorizontalAlignment','left ','position',[0.05 0.42 0.6 0.25],'string','针的长度 L:','fontsize',10);h_edit2=uicontrol(h_panel,'style','edit','Units','normalized','HorizontalAlignment','left ','position',[0.60 0.48 0.2 0.18],'fontsize',10);h_text3=uicontrol(h_panel,'style','text','Units','normalized','HorizontalAlignment','left','position',[0.05 0.22 0.6 0.25],'string','投针次数N:','fontsize',10);h_edit3=uicontrol(h_panel,'style','edit','Units','normalized','HorizontalAlignment','left ','position',[0.60 0.28 0.2 0.18],'fontsize',10);h_button1=uicontrol('Units','normalized','position',[0.03 0.50 0.18 0.08],'string','开始投针','fontsize',10,'callback','function2');h_button3=uicontrol('Units','normalized','position',[0.21 0.50 0.18 0.08],'string','暂停','fontsize',10,'callback','function3');h_button2=uicontrol('Units','normalized','position',[0.05 0.30 0.30 0.06],'string','统计','fontsize',10,'callback','function1');h_panel1=uipanel('Units','normalized','position',[0.05 0.10 0.8 0.15],'title','数据分析:','fontsize',11,'FontWeight','bold');h_edit4=uicontrol(h_panel1,'style','edit','Units','normalized','HorizontalAlignment','ri ght','position',[0.35 0.05 0.6 0.35],'fontsize',10);h_text4=uicontrol(h_panel1,'style','text','Units','normalized','HorizontalAlignment','le ft','position',[0.05 0.12 0.3 0.25],'string','估算的结果π:','fontsize',10);h_edit5=uicontrol(h_panel1,'style','edit','Units','normalized','HorizontalAlignment','ri ght','position',[0.35 0.55 0.2 0.35],'fontsize',10);h_text5=uicontrol(h_panel1,'style','text','Units','normalized','HorizontalAlignment','le ft','position',[0.05 0.55 0.3 0.25],'string','与平行线相交次数y:','fontsize',10);h_text6=uicontrol('style','text','Units','normalized','HorizontalAlignment','left','positio n',[0.32 0.23 0.5 0.04],...'BackgroundColor',[0.5 0.8 0.9],'FontWeight','bold','ForegroundColor',[0.9 0 0],'string','应用近似公式: π=(2*N*L)/(a*m)','fontsize',12);h_axes=axes('position',[0.45 0.4 0.53 0.53],'YGrid','on','GridLineStyle','-');h_line=line('color',[0 0.5 0.5],'linestyle','.','markersize',2,'erasemode','none');%function1.ma=str2num(get(h_edit1,'string'));L=str2num(get(h_edit2,'string'));N=str2num(get(h_edit3,'string'));f=unifrnd(0,pi,[N,1]);x=unifrnd(0,L,[N,1]);y=x<0.25*a*sin(f);m=sum(y);set(h_edit5,'string',num2str(m));format long;x1=2*N*L;x2=a*m;p=vpa(x1/x2);set(h_edit4,'string',num2str(double(p)));%function2.mglobal k;while j<=100L=str2num(get(h_edit2,'string'))*100;N=str2num(get(h_edit3,'string'))*100;x=zeros(1,L);y=zeros(1,L);X=rand(1,N);Y=rand(1,N);angle=pi*rand(1,N);k=floor(N*rand(1,1));P=X(k);Q=Y(k);W=N;j=0;k=1;for i=1:Lx(1)=P;y(1)=Q;set(h_line,'XData',x(i),'YData',y(i));x(i+1)=x(i)+0.001*cos(angle(k));y(i+1)=y(i)+0.001*sin(angle(k)); endpause(0.005);j=j+1;if (k==0)break;endend%function3.mglobal k;k=0;GUI界面如下:输入相关参数,并演示如下:逐渐增大N值N=10000时,PI=3.1625553447185326128021642944077N=100000时,PI=3.1467321186947354583196556632174N=1000000时,PI=3.1459401642180764291367722762516三.实验结论从上述数据分析可知,随着模拟次数的越来越多,PI的值逐渐稳定在π值附近,即越来越趋近于π,故蒲丰投针实验确实可以模拟出π的值。

蒙特卡罗法模拟投针实验

蒙特卡罗法模拟投针实验

MATLAB:蒙特卡罗法解决投针实验研究物理或数学过程的一种随机模型的计算方法。

蒙特一卡罗法是以随机抽样技巧作为工具的一门近代数值分析的学科。

蒙特卡罗法的思想提出虽然较早,但系统性的研究实开始于1944年前后。

当时由于研制原子弹,需要研究中子在裂变物质中的输运,提出了一些不易用一般数学方法求解的问题。

蒙特卡罗法可以用来求解两类问题。

第一类问题称之为概率问题,用直接模拟某种物理过程的方法解决。

第二类问题,是所谓定数问题。

在解定数问题时,必须把问题化为相适应的能作模拟的概率问题。

投针实验:在两平行线中投针,取针的中点为参考,它到平线的距离为x,而针与平行线的交角为a针长为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]);for i=1:nif x(i) < L*sin(phi(i))/2plot(phi(i), x(i), 'r.');counter = counter + 1;hold on;endendfren = counter/n;pihat = 2*L/(D*fren);以下是Matlab程序cleara=1;%设置两条平行线之间的距离1=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是投针到最近的平行线的角度for i=1:nif x(i)<l*sin(phi(i))/2 % 只要x 小于l*sin(phi(i))/2测相交counter=counter+1;endendfrequency=counter/n; %计算相交的频率,即相交次数比总次数Pi=2*l/(a*frequency) %从相交的频率总求的pi%运行结果>> testPi =3.14160.35 0.3 0.25 0.2 0.15 0.1 0.05。

基于MATLAB的布丰投针实验仿真

基于MATLAB的布丰投针实验仿真

系统建模与仿真题目:Buffon实验的仿真院系: 电子工程学院专业:信息对抗技术班级:021231姓名:***学号:********指导老师:***完成时间:2015年4月西安电子科技大学基于MATLAB的投针实验仿真摘要在求证圆周率的过程中经过割圆术后,出现的投针试验以求出圆周率,目前利用MATLAB数学建模的仿真实验,运用到计算机中,简化其随机实验的操作量大,运算慢等特点。

不同针距相同实验量运算后得出不同的π,其针距与线间距离相等,所得值接近于π。

目录摘要 (2)二、实验内容 (4)三、建模流程图 (5)四、程序主要代码 (6)五、运行结果 (6)六、结论 (7)一、实验原理1777年法国科学家布丰提出的一种计算圆周率的方法——随机投针法,即著名的布丰投针问题。

该投针实验主要有如下三个步骤:(一)取一张白纸,在上面画许多条间距为a的平行线;(二)取一根长度为l(l<a)的针,随机地向画有平行直线的纸上掷n次,观察针与直线相交的次数,记为m;(三)计算针与直线相交的概率。

而布丰本人证明了这个概率是p=2l/(πa),π为圆周率。

二、实验内容运用MATLAB仿真软件进行求圆周率π的模拟。

1.用GUI设计实验。

2.设取变量n为实验次数,a为相邻两直线间的距离,l为针长,角Φ为针与直线相交时所呈的夹角,frequency为相交频率,Pi即为所求圆周率。

3.编写程序代码达到实验目的,求圆周率π。

三、建模流程图四、程序主要代码str(handles.edit1,'string'); %取得变量,定义变量,变量初始化n = str2double(str);str = get(handles.edit2,'string');l = str2double(str);str = get(handles.edit3,'string');a = str2double(str);counter = 0; %变量初始化phi = 0;frequency = 0;Pi = 0;x = unifrnd(0,a/2,1,n);%产生n个(0,a/2)之间均匀分布的随机数,这里a/2是投针的中点到最近的平行线的距离phi = unifrnd(0,pi,1,n);% 产生n个(0,pi)之间均匀分布的随机数,这里pi是投针与最近平行线的角度for i=1:nif x(i)<l*sin(phi(i))/2 % 只要x小于l*sin(phi(i))/2,则针与平行线相交counter = counter+1;endendfrequency = counter/n; % 计算相交的频率,即相交次数比总投针次数Pi = 2*l/(a*frequency) % 从相交的频率求Pi五、运行结果显示六、结论由于想要达到实验者自己设置投针次数的目的,故而没有设置精度,即精度由系统决定,导致最终实验结果不是很理想,概率性事件,每次实验都会有一些偏差。

利用Matlab 模拟点电荷电场的分布的仿真实验报告

利用Matlab 模拟点电荷电场的分布的仿真实验报告

向量表示: x linspace(r0 , r0 ,100) ,在直角坐标系中可形成网格坐标:
[ X , Y ] meshgrid ( x) 。各点到原点的距离为: r X . ^ 2 Y . ^ 2 ,在Matlab中进行乘 方运算时,乘方号前面要加点,表示对变量中的元素进行乘方计算。各点的电势 为 U k .* q. / r ;同样地,在进行除法运算时,除号前面也要加点,同样表示对
在 Matlab 中,由以上公式算出各点的电势 U,电场强度 E 后,可以用 Matlab 自带的库函数绘出相应电荷的电场分布情况。
三、实验内容
1、画单个点电荷的平面电场线与等势线 等势线就是以电荷为中心的圆簇,用Matlab画等势线更加简单。静电力常量 为k=9*e9,电量可取为q=1e‐19;最大的等势线的半径应该比射线的半径小一点, r0 0.1 。其电势为 u0 k * q / r0 。如果从外到里取7条等势线,最里面的等势线的 电势是最外面的3倍,那么各条线的电势用向量表示为: u linspace(1,3, 7) * u0 。 从‐r0到r0取偶数个点,例如100个点,使最中心点的坐标绕过0,各点的坐标可用
zlabel('\itE_x/kQa\rm^-^2','fontsize',fs)%显示高坐标 axis tight subplot(122); surf(x,y,Ey(X,Y)) box on %紧贴轴 %创号点电荷场强\ity\rm 分量曲面','fontsize',fs)%显示标题 xlabel('\itx/a','fontsize',fs) ylabel('\ity/a','fontsize',fs) %显示横坐标 %显示纵坐标

蒲丰投针试验及蒙特卡罗模拟电子教案模拟

蒲丰投针试验及蒙特卡罗模拟电子教案模拟

概率模型的随机模拟与蒲丰投针实验第1章模拟1.1 模拟的概念每一个现实系统外部环境之间都存在着一定的数学的或者逻辑的关系,这些关系在系统内部的各个组成部分之间也存在。

对数学、逻辑关系并不复杂的模型,人们一般都可用解析论证和数值计算求解。

但是,许多现实系统的这种数学、逻辑模型十分复杂,例如大多数具有随机因素的复杂系统。

这些系统中的随机性因素很多,一些因素很难甚至不可以用准确的数学公式表述,从而无法对整个系统采用数学解析法求解。

这类实际问题往往可以用模拟的方法解决。

模拟主要针对随机系统进行。

当然,也可以用于确定性系统。

本文讨论的重点是其中的随机模拟。

采用模拟技术求解随机模型,往往需要处理大批量的数据。

因此,为了加速模拟过程,减少模拟误差,通常借助于计算机进行模拟,因此又称为计算机模拟。

计算机模拟就是在已经建立起的数学、逻辑模型的基础之上,通过计算机试验,对一个系统按照一定的决策原则或作业规则,由一个状态变换为另一个状态的行为进行描述和分析。

1.2 模拟的步骤整个模拟过程可以划分为一定的阶段,分步骤进行。

(1)明确问题,建立模型。

在进行模拟之前,首先必须正确地描述待研究的问题,明确规定模拟的目的和任务。

确定衡量系统性能或模拟输出结果的目标函数,然后根据系统的结构及作业规则,分析系统各状态变量之间的关系,以此为基础建立所研究的系统模型。

为了能够正确反映实际问题的本质,可先以影响系统状态发生变化的主要因素建立较为简单的模型,以后再逐步补充和完善。

(2)收集和整理数据资料。

模拟技术的正确运用,往往要大量的输入数据。

在随机模拟中,随机数据仅靠一些观察值是不够的。

应当对具体收集到的随机性数据资料进行认真分析。

确定系统中随机性因素的概率分布特性,以此为依据产生模拟过程所必需的抽样数据。

(3)编制程序,模拟运行。

选择适当的计算机语言。

按照系统的数学、逻辑模型编写计算机程序。

然后可以进行调试性模拟,分析模拟结果是否能够正确地反映现实系统的本质。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

系统建模与仿真题目:Buffon实验的仿真
院系: 电子工程学院
专业:信息对抗技术
班级:021231
姓名:***
学号:********
指导老师:***
完成时间:2015年4月
西安电子科技大学
基于MATLAB的投针实验仿真
摘要
在求证圆周率的过程中经过割圆术后,出现的投针试验以求出圆周率,目前利用MATLAB数学建模的仿真实验,运用到计算机中,简化其随机实验的操作量大,运算慢等特点。

不同针距相同实验量运算后得出不同的π,其针距与线间距离相等,所得值接近于π。

目录
摘要 (2)
二、实验内容 (4)
三、建模流程图 (5)
四、程序主要代码 (6)
五、运行结果 (6)
六、结论 (7)
一、实验原理
1777年法国科学家布丰提出的一种计算圆周率的方法——随机投针法,即著名的布丰投针问题。

该投针实验主要有如下三个步骤:(一)取一张白纸,在上面画许多条间距为a的平行线;(二)取一根长度为l(l<a)的针,随机地向画有平行直线的纸上掷n次,观察针与直线相交的次数,记为m;(三)计算针与直线相交的概率。

而布丰本人证明了这个概率是p=2l/(πa),π为圆周率。

二、实验内容
运用MATLAB仿真软件进行求圆周率π的模拟。

1.用GUI设计实验。

2.设取变量n为实验次数,a为相邻两直线间的距离,l为针长,
角Φ为针与直线相交时所呈的夹角,frequency为相交频率,
Pi即为所求圆周率。

3.编写程序代码达到实验目的,求圆周率π。

三、建模流程图
四、程序主要代码
str(handles.edit1,'string'); %取得变量,定义变量,变量初始化
n = str2double(str);
str = get(handles.edit2,'string');
l = str2double(str);
str = get(handles.edit3,'string');
a = str2double(str);
counter = 0; %变量初始化
phi = 0;
frequency = 0;
Pi = 0;
x = unifrnd(0,a/2,1,n);%产生n个(0,a/2)之间均匀分布的随机数,这里a/2是投针的中点到最近的平行线的距离
phi = unifrnd(0,pi,1,n);% 产生n个(0,pi)之间均匀分布的随机数,这里pi是投针与最近平行线的角度
for i=1:n
if x(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
五、运行结果显示
六、结论
由于想要达到实验者自己设置投针次数的目的,故而没有设置精度,即精度由系统决定,导致最终实验结果不是很理想,概率性事件,每次实验都会有一些偏差。

没有设置高精度,因此计算速度较为稳定,但是实验次数虽然可以自定,也不能设置得太多,不然电脑也会累的工作不起来,甚至罢工。

每一次实验都是一次提升自己的机会,虽然我不是做的最好的,但是我能保证自己的态度绝对认真。

相关文档
最新文档