蒙特卡罗算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
蒙特卡罗模拟方法
模拟的概念
•模拟就是利用物理的、数学的模型来类比、模仿现实系统及其演变过程,以寻求过程规律的一种方法。
•模拟的基本思想是建立一个试验模型,这个模型包含所研究系统的主要特点.通过对这个实验模型的运行,获得所要研究系统的必要信息
模拟的方法
1、物理模拟:
对实际系统及其过程用功能相似的实物系统去模仿。例如,军事演习、船艇实验、沙盘作业等。•物理模拟通常花费较大、周期较长,且在物理模型上改变系统结构和系数都较困难。而且,许多系统无法进行物理模拟,如社会经济系统、生态系统等。
模拟的方法
2、数学模拟
在一定的假设条件下,运用数学运算模拟系统的运行,称为数学模拟。现代的数学模拟都是在计算机上进行的,称为计算机模拟。
计算机模拟可以反复进行,改变系统的结构和系数都比较容易。
在实际问题中,面对一些带随机因素的复杂系统,用分析方法建模常常需要作许多简化假
设,与面临的实际问题可能相差甚远,以致解答根本无法应用。这时,计算机模拟几乎成为唯一的选择。
蒙特卡洛(Monte Carlo)方法是一种应用随机数来进行计算机模拟的方法.此方法对研究的系统进行随机观察抽样,通过对样本值的统计分析,求得所研究系统的某些参数.
蒙特卡罗方法的基本思想
•蒙特卡罗方法又称计算机随机模拟方法。它是以概率统计理论为基础的一种方法。
•当所求问题的解是某个事件的概率,或者是某个随机变量的数学期望,或者是与概率、数学期望有关的量时。通过某种试验的方法,得出该事件发生的频率,或者该随机变量若干个具体观察值的算术平均值,通过它得到问题的解。这就是蒙特卡罗方法的基本思想。
①建立概率统计模型
②收集模型中风险变量的数据 , 确定风
险因数的分布函数③根据风险分析的精度要求,确定模拟次数⑥
样本值⑦统计分析,估计均
值,标准差
N
N N ⑤根据随机数在各风险变量的概率分布中
随机抽样,代入第一
步中建立的数学模型
N 个④建立对随机变量的抽样
方法,产生随机数。
蒙特卡罗方法的思想框图
蒙特卡罗方法的框图实例
d ca bL ap A +++=212某投资项目每年所得盈
利额A 由投资额P 、劳动
生产率L 、和原料及能
源价格Q 三个因素。收集P,L,Q 数据,确定分布函数模拟次数N ;根据分
布函数,产生随机数抽取P,L,Q 一组随机数,带
入模型
产生 A 值
统计分析,估计
均值,标准差
122A aP bL cQ d =+++(),(),()f P f L f Q N
N N N 个
用MATLAB产生随机数
1.rand(m,n) :生成一个满足均匀分布的 m ×n 随机矩阵,矩阵的每个元素都在 (0,1) 之间。
randn(m,n):生成一个满足正态 m ×n 的随机矩阵 2.
2. randn(m,n)
randperm(m):生成一个由 1:m 组成的随机排列3.
3. randperm(m)
perms(1:n):生成由 1:n 组成的全排列,共 n! 个4. perms(1:n)
4.
5. normrnd(mu,sigma,m,n):生成正态(高斯)分布的随机数
6.randint():生成服从标准正态分布的随机整数1、randint () %生成0或1;
2、randint (m )%生成m *m 的0,1矩阵;
3、randint (m ,n )%生成m *n 的0,1矩阵;
4、randint (m ,n ,[l,h])%生成在l 和h 之间的m *n 的矩阵;
5、randint (1,1,[l,h])%生成一介于l 和h 之间的数;7. 7. unidrnd()
unidrnd() :生成服从离散均匀分布的随机数。Unifrnd 是在某个区间内均匀选取实数(可为小数或整数),Unidrnd 是均匀选取整数随机数。离散均匀分布随机数有 1 个参数n, 表示从{1, 2, 3, ... N}这 n 个整数中以相同的概率抽样
语法:unidrnd(n,[M,N,P,...])用MATLAB 产生随机数
用MATLAB产生随机数
8. binornd:生成服从二项分布的随机数。二项分布有 2 个参数:n,p。考虑一个打靶的例子,每枪命中率为 p,共射击 N 枪.那么一共击中的次数就服从参数为(N,p)的二项分布
geornd():生成服从几何分布的随机数。
9.9.geornd()
几何分布的参数只有一个:p.几何分布的现实意义可以解释为,打靶命中率为 p,不断地打靶,直到第一次命中目标时没有击中次数之和.
x=geornd(0.4,100000,1);
hist(x,50);
用MATLAB产生随机数poissrnd():生成服从泊松(Poisson)分布的随10.
10. poissrnd()
机数。生成服从泊松(Poisson)分布的随机数。
unifrnd():生成某个区间内均匀分布的随机数11.
11. unifrnd()
语法:unifrnd(a,b,[M,N,P,...])
生成的随机数区间在(a,b)内,排列成 M
M**N*P... 多维向量。如果只写 M,则生成 M
M**M矩阵;如果参数为[M,N]可以省略掉方括号。