1、数学实验随机模拟实验电子科技大学 数学科学学院数学实验随机模拟实验 背景 引例:模拟抛硬币实验 Matlab随机函数 蒙特卡罗方法数学实验随机模拟实验 -应用广泛 解定积分、二重积分、三重积分 解优化模型 物流系统、雷达系统 模拟工厂的运行、股票交易、城市交通、军事演习目的 :验证、发现、求解、探究(一)背景数学实验实验目的: 重复多次抛一枚硬币,观察出现数字面的次数,如何模拟?(二)引例:模拟抛硬币实验理论上: PX=0=PX=1=1/2分析: 定义函数 f(r), 这里 r为 0,1内的随机数15.0,15.00,0)(rrrf如果 0.50.5 %0.50.5)/1000数学实验(三)
2、Matlab随机函数均匀分布随机数0,1内均匀随机数产生方法 : rand( ) rand(m) 产生 m m的均匀随机数rand(m,n) 产生 m n的均匀随机数rand(m,n) 等效于 rand(m,n)O 1问题: a, b上的均匀随机数如何产生?一般区间 a, b上的均匀随机数 产生方法R=a+(b-a)*rand数学实验例 . 观察 1000 个随机数在 0,0.5,0.5,1分布情况function F=myrand(n)if nargin=0,n=1000;endX=rand(1,n);Index=find(X A = 1 0 4 -3 0 0 0 8 6; X = find
3、(A)X =1 3 4 8 9数学实验( 2)返回矩阵中非零元素的位置 find(A) A= 3 2 0; -5 0 7; 0 0 1;ans =12489A =3 2 0-5 0 70 0 1 find(A)数学实验( 3)返回满足某条件的值 find(A*) find(A2)ans =18 A= 3 2 0; -5 0 7; 0 0 1;数学实验( 4)返回前 N个非零元素的位置 find(A,X)X必须为正整数,我们以 A=0 0 2 3 4 5 6 7 8为例,在 MTALAB主窗口中输入如上向量,然后输入 find(A,1),回车,返回第一个非零值的位置,然后继续输入 find(A,
4、3),返回前三个非零值的位置。 A=0 0 2 3 4 5 6 7 8A =0 0 2 3 4 5 6 7 8 find(A,1)ans =3 find(A,3)ans =3 4 5数学实验( 5)返回最后一个非零值的位置 find(A,1,last) A=0 0 2 3 4 5 6 7 8A =0 0 2 3 4 5 6 7 8 find(A,1,last)ans =9数学实验( 6)返回最后一个非零值的行列位置 A=0 0 2 3 4 5 6 7 8; a,b=find(A,1,last)a =1b =9数学实验条形图的绘制: bar(data)或 bar3(data)x=linspace
5、(0,pi,10);y=sin(x);bar(y,r)bar3(y,r)1 2 3 4 5 6 7 8 9 1000 . 51数学实验统计直方图的绘制: hist(data, n)其中 data是需要处理的数据块。绘图原理: 利用 data中最小数和最大数构成一区间 ,将区间等分为 n个小区间,统计落入每个小区间的数据量。以数据量为高度绘小矩形,形成直方图。如果省略参数 n, MATLAB将 n的默认值取为 10。直方图也可以用于统计计 N=hist(data, n) 计算结果 N是 n个数的一维数组,分别表示 data中各个小区间的数据量。这种方式只计算而不绘图。N5 = 1969 2010
6、 2018 1999 2004例 : 统计 10000个均匀随机数在五个小区间的分布 。data=rand(10000,1);figure(1),hist(data,5)N5=hist(data,5)figure(2),bar(N5,r)1 2 3 4 505001000150020002500即观察 10000 个随机数在 0,0.2,0.2,0.4, 0.4,0.6,0.6,0.8,0.8,1的分布情况。0 0 . 2 0 . 4 0 . 6 0 . 8 105001000150020002500蒙特卡罗方法,又称随机模拟方法,属于计算数学的一个分支,它是在上世纪四十年代中期为了适应当时原
7、子能事业的发展而发展起来的。亦称统计模拟方法, statistical simulation method 利用随机数进行数值模拟的方法Monte Carlo名字的由来: Monte Carlo是摩纳哥( monaco)的首都,该城以赌博闻名Monte-Carlo, Monaco(四) 蒙特卡罗方法Monte Carlo方法的提出:蒙特卡罗方法,或称计算机随机模拟方法,是一种基于“随机数”的计算方法。源于美国在第 二 次世界大战研制原子弹的“曼哈顿计划” , 该计划的主持人之一数学家冯 诺伊曼用驰名世界的赌城 摩纳哥的 Monte Carlo来命名这种方法,为它蒙上了一层神秘色彩。蒙特卡罗 方
8、法的 基本思想 很早以前就被人们所发现和利用。早在 17世纪,人们就知道用 事件发生的“频率”来决定事件的“概率” 。 1777年,法国数学家布丰( Georges Louis Leclere de Buffon, 17071788)提出用投针实验的方法求圆周率 ,这被认为是蒙特卡罗方法的起源。 上 世纪 40年代电子计算机的出现,特别是近年来高速电子计算机的出现,使得用数学方法在计算机上大量、快速地模拟这样的试验成为可能。数学实验Monte Carlo方法的基本思想:当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事
9、件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。Monte Carlo方法的应用:蒙特卡罗方法在金融工程学,宏观经济学,生物医学,计算物理学 (如粒子输运计算、量子热力学计算、空气动力学计算、核工程 )等领域应用广泛。蒙特卡罗方法在数学中最常见的应用就是蒙特卡罗积分。计算 二重积分 Dd x d yxy 2其中 D为 y= x 2 与 y2 = x 所围区域 。分析 :1.二重积分的几何意义是计算体积。由于 D的边界曲线交点为 : (1,1),(4,2) 被积函数在求积区域内的最大值为 16。 积分值是一个三维图形所围体积 (V1),该三维图形位于立方体区域(x, y, z)
10、 |0 x 4, 1 y 2, 0 z 16 该立方体区域的体积 (V2)为 192. 例 1:估算二重积分2.蒙特卡罗方法求解 : 向 V2内投 N个随机点,统计落在 V1内的个数 M符号结果 : 7.5857程序 :function testmainN=100000;for k=1:7 %多次模拟V1(k)=mysim(N);endV1function v =mysim(N)V2=192; %V2=4*3*16d =rand(N,3);x =4*d(:,1);y =-1+3*d(:,2);z =16*d(:,3);%下面表达式可结合 find和 length完成M =sum(x=y.2)
11、M=length(II);S=M/N程序:运行结果S =0.3276数学实验例 3:相遇问题甲 、 乙两船在 24小时内独立地随机到达码头 。 设两船到达码头时刻分别为 X 和 Y, 均匀分布随机变量 X U(0 , 24), Y U(0 , 24)。 如果甲船到达码头后停留 2小时 , 乙船到达码头后停留1小时 。 问两船相遇的概率有多大?相遇条件:(1)甲比乙先到码头: 2且 xyyx1且 yxxy(2)乙比甲先到码头:function F=shipmeet(N)if nargin=0,N=2000;endP=24*rand(2,N);X=P(1,:);Y=P(2,:);I=find(X=
12、YJ=find(Y=XF=(length(I)+length(J)/Nplot(X,Y,b.) ,hold onaxis(0 24 0 24)h1=plot(0 24,0,24,k)h2=plot(1 24,0,23,r)h3=plot(0 22,2,24,b)set(h1,h2,h3,linewidth,2)运行结果:F =0.1175概率值: P = 0.1207 0 5 10 15 2005101520x1=0:.01:1;y1=sqrt(x1);x2=1:-.01:0;y2=x2.2;fill(x1,x2,y1,y2,r) 平面多边形填充图方法 fill( )y1=-1:.1:2;y2
13、=2:-.1:-1;x11=y1.*y1;x22=y2+2;fill(x11,x22,y1,y2,r)x1=-1:0.1:1; y1=x1.2.(1/3); x2=1:-0.1:-1; y2=2-x2.2; fill(x1,x2,y1,y2,c)y =x2 , x = y 2 所围区域y= x 2 与 y2 = x所围区域y =2 x2 ,y3 = x2 所围区域练习: 给定曲线 y =2 x2 和 y3 = x2,用定积分计算两曲线围成平面区域面积。显然曲线的交点为 : P1( 1, 1 )、 P2( 1, 1 ) .平面区域位于矩形区域内(x, y) | 1 x 1, 0 y 2该矩形区域的面积为 4