matlab随机模拟

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

MATLAB中的计算机模拟

第一节 导言

计算机科学技术的迅猛发展,给许多学科带来了巨大的影响.计算机不但使问题的求解变得更加方便、快捷和精确,而且使得解决实际问题的领域更加广泛.计算机适合于解决那些规模大、难以解析化以及不确定的数学模型.例如对于一些带随机因素的复杂系统,用分析方法建模常常需要作许多简化假设,与面临的实际问题可能相差甚远,以致解答根本无法应用,这时模拟几乎成为人们的唯一选择.在历届的美国和中国大学生的数学建模竞赛(MCM)中,学生们经常用到计算机模拟方法去求解、检验等.计算机模拟(computer simulation)是建模过程中较为重要的一类方法.

本章将讨论如何利用计算机技术对连续系统和离散系统进行模拟.由于计算机以重复性运算见长,故它为研究模拟方法提供了极为合适的手段.计算机模拟是一种广义的数值计算方法.通过本章的学习,你将会了解蒙特卡洛方法的思想;初步掌握对连续系统或离散系统进行模拟的方法;掌握由实际问题怎样去建立计算机模拟模型以及应用MATLAB编程语言进行计算.

第二节引例

第三节 随机变量的抽样

第四节 连续系统的模拟

第五节 离散系统的模拟

第六节 范例

第七节 实验

第二节 引例:葡丰投针问题

在用传统方法难以解决的问题中,有很大一部分可以用概率模型进行描述.由于这类模型含有不确定的随机因素,分析起来通常比确定性的模型困难.有的模型难以作定量分析,得不到解析的结果,或者是虽有解析结果,但计算代价太大以至不能使用.在这种情况下,可以考虑采用Monte Carlo 方法。下面通过例子简单介绍Monte Carlo 方法的基本思想.

Monte Carlo 方法是计算机模拟的基础,它的名字来源于世界著名的赌城——摩纳哥的蒙特卡洛,其历史起源于1777年法国科学家蒲丰提出的一种计算圆周 π的方法——随机投针法,即著名的蒲丰投针问题。

1)

Monte Carlo 方法的基本思想是首先建立一个概率模型,使所求问题的解正好是该模型的参数或其他有关的特征量.然后通过模拟一统计试验,即多次随机抽样试验(确定m 和n ),统计出某事件发生的百分比.只要试验次数很大,该百分比便近似于事件发生的概率.这实际上就是概率的统计定义.利用建立的概率模型,求出要估计的参数.蒙特卡洛方法属于试验数学的一个分支.

MATLAB 语言编程实现 l=1; n=1000;

d=2; m=0; for k =l :n

x =unifrnd (0,d /2); p =unifrnd (0,pi );

if )sin(15.0y x ××< m=m +1 elsc end end p=m/n

pi_m=1/p 运行,即得结果.

蒙特卡洛方法适用范围很广泛,它既能求解确定性的问题,也能求解随机性的问题以及科学研究中的理论问题.例如利用蒙特卡洛方法可以近似地计算定积分,即产生数值积分问题.

任意曲边梯形面积的近似计算

一个古老的问题:用一堆石头测量一个水塘的面积.应该怎样做呢?测量方法如下:假定水塘位于一块面积已知的矩形农田之中.如图8.2所示.随机地向这块农田扔石头使得它们都落在农田内.被扔到农田中的石头可能溅上了水,也可能没有溅上水,估计被“溅上水的”石头量占总的石头量的百分比.试想如何利用这估计的百分比去近似计算该水塘面积?

结合图8.2中的图形(1)分析,只要已知各种参数及函数(a ,b ,H ,f(x)),有以下两种方法可近似计算水塘面积.

1.随机投点法

1)赋初值:试验次数n=0,成功次数m=0;规定投点试验的总次数N ;

2)随机选择m 个数对,1,,m i y x i i <<,其中H y b x a i i <<<<0,,置 n =n +l ; 3)判断,若是,转4,否则停止计算;

N n ≤ 4)判断条件(表示一块溅水的石头)是否成立,若成立则置m=m+1,转2,否则转2;

)(i i x f y < 5)计算水塘面积的近似值N m a b H S /)(×−×=.

2.平均值估计法

1)产生[a,b]区间的均匀随机数;,,2,1,N i x i "= 2) 计算;

,,2,1),(N i x f i "= 3)计算∑=−=N

i i x f N a b S 1)()(。

该方法的特点是估计函数f(x)在[a,b]上的平均值,面积近似等于该平均值乘以(b-a).

第三节 随机变量的抽样

根据随机变量遵循的分布规律使用一种方法获取它的具体值,叫做抽样(sampling).随机变量的抽样方法很多,不同的分布采用的方法不尽相同。区间[0,1]上均匀分布的随机变量的抽样是其中最基本的方法.在计算机上,其他各种分布的随机抽样方法都是在它的基础上产生的.

计算机上产生的随机数是按照确定的算法产生的,它遵循一定的规律,显然不是真正随机的,因此这种随机数我们叫做伪随机数(random number).只要伪随机数能通过一系列的统计检验,就可以把它们当作真正的随机数放心地使用,而不会引起太大的误差. 产生均匀分布的伪随机数的常用方法有平方取中法、线性同余法和广义同余法等.由于目前计算机上常用的高级语言(如C,Pascal,Fortran 等)都有产生均匀分布随机数的系统函数,我们可以直接使用而不必关心其实现原理,在此不作专门介绍.首先介绍MATLAB 软件中产生区间[0,1]上的均匀分布随机数的系统函数R=rand(n),它产生n n ×阶均匀随机矩阵.一般R=rand(m,n),产生阶均匀随机矩阵.

n m × 下面简单介绍由均匀随机数以及某种算法产生其他分布随机数的方法.用表示独立同分布于U[0,1]的随机数列. ",,21r r 直接抽样法

设连续的随机变量X 有分布函数 ∫

−=

x

dt t f x F )()(其中f (t )是X 的密度函数。

因为0<F(x)<1,令r=F(x),若函数F(x)的反函数存在,对么对随机变量X 的抽样可由公式产生出. )(1

r F x −= 例子

近似抽样法

近似抽样方法的步骤是设一组独立同分布的随机变量利用中心极限定理

"",,,,21n r r r

时当∞→−∑=n N n

Dr Er r n i n

i i i ),1,0(~/11

设为[0,1]区间上的均匀随机数列,则",,21r r 12/1,2/1==i i Dr Er ,从而有,当n 充

分大时,

)1,0(~12121

11

N n

r n n i i ∑=−

常用的是n =12的情形,,其中是标准正态 分布的

随机数,即由12个区间[0,1]上均匀随机数产生一个标准正态随机数.如果还要产生一般正态分布的随机数,则只需用变换∑∑=−=−=−=

6

1

12212

1

126i i i i i

r r r

u 12u ασ+=u z .另外,还有一种利用二维正态变换产生的标准正态分布的随机数,其变换如下:

时当02sin ln 22cos ln 212

12

1≠⎪⎩⎪⎨

⎧−=−=r r r y r r x ππ

MATLAB 中各种分布下产生随机数的命令

常见的分布函数 MATLAB 语句 均匀分布U[0,1] R=rand(m,n)

相关文档
最新文档