实验六蒙特卡罗方法精品文稿.ppt
实验六 蒙特卡罗方法第1页,本讲稿共14页rand 产生一个产生一个0到到 1之间均匀随机数之间均匀随机数rand(m,n)产生产生mn个个0到到 1之间均匀随之间均匀随机数机数X=rand(10000,1);hist(X)蒙特卡罗方法蒙特卡罗方法利用随机试验做近似计算利用随机试验做近似计算1000010000个随机数较均匀地分布在各个小区间上,随机变量个随机数较均匀地分布在各个小区间上,随机变量X X落入落入小区间的概率仅与小区间长度有关小区间的概率仅与小区间长度有关,而与小区间位置无关而与小区间位置无关unifrnd(a,b)产生一个产生一个a到到 b之间均匀随机数之间均匀随机数X=unifrnd(2,10)Y=2+(10-2)*rand第2页,本讲稿共14页例例1 1 计算两条抛物线计算两条抛物线y=x2,x=y2所围面积所围面积.在正方形在正方形0,10,1区域投入区域投入2000个均匀随机点个均匀随机点则随机点落入抛物线所围区域的概率为所求面则随机点落入抛物线所围区域的概率为所求面积与正方形面积之比积与正方形面积之比function S=area1(N)if nargin=0,N=2000;endX=rand(N,1);Y=rand(N,1);II=find(Y=X.2);m=length(II);S=m/N;x1=0:0.01:1;x2=1:-0.01:0;y1=sqrt(x1);y2=x2.2;fill(x1,x2,y1,y2,c)S=0.3333第3页,本讲稿共14页定积分数值计算方法定积分数值计算方法quad()的使用格式的使用格式quad(F,a,b)返回被积函数返回被积函数F(X)从从a 到到 b的定积分值的定积分值,F是被积函数名是被积函数名构成的字符串构成的字符串.相关命令相关命令:dblquad()重积分计算重积分计算例例2.计算定积分计算定积分fun=inline(sqrt(x)-x.2);S=quad(fun,0.01,1)t=0:0.01:1;y=fun(t);fill(0,t,0,y,c)syms u,S0=int(sqrt(u)-u2,0,1)S=0.3327S0=1/3第4页,本讲稿共14页例例3.计算下面两条曲线所围区域面积计算下面两条曲线所围区域面积function S=area2(N)if nargin=0,N=2000;endX=2*rand(N,1)-1;Y=2*rand(N,1);II=find(Y=abs(X);m=length(II);S=4*m/N;x1=0:0.01:1;y1=x1;x2=1:-0.01:-1;y2=1+sqrt(1-x2.2);x3=-1:-0.01:0;y3=-x3;fill(x1,x2,x3,y1,y2,y3,c)S=2.5460第5页,本讲稿共14页例例4.计算两个半径为计算两个半径为1的直交圆柱面所围成体积的直交圆柱面所围成体积x2+y2=1,x2+z2=1 function V=mlab4(N)if nargin=0,N=2000;endP=rand(N,3);x=P(:,1);y=P(:,2);z=P(:,3);II=find(x.2+y.2=1&x.2+z.2=R&Z=R&Z=R&Z=(1+sqrt(1-R2)m=m+1;endendV=8*m/N第13页,本讲稿共14页 function f=ff(t,r)x=r*cos(t);y=r*sin(t);z1=sqrt(x.2+y.2);z2=1+sqrt(1+eps-x.2-y.2);f=r*(z2-z1);f=dblquad(ff,0,2*pi,0,1)第14页,本讲稿共14页