monte-carlo-simulation

monte-carlo-simulation

Charles Lv7

蒙特卡洛模拟法

蒙特卡洛模拟法原理介绍

蒙特卡罗方法的定义

蒙特卡罗方法又称统计模拟法,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常见的伪随机数)来解决很多计算问题的⽅法。将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解。为象征性地表明这一方法的概率统计特征,故借用赌城蒙特卡罗命名。

蒙特卡罗方法的原理

由大数定理可知,当样本容量足够大时,事件的发生频率即为其概率。蒙特卡罗准确的来说只是一种思想,或者是是一种方法。如果我们所求解的问题与概率模型有一定的关联,那么我们就可以使用计算机多次模拟事件发生,以获得问题的近似解。

从数学建模角度来看,蒙特卡罗没有一个通用的代码。每个问题对应的代码都是不同的,我们分析清楚题目后,就要自己进行编写适用于这个题目的代码。

蒙特卡罗方法的步骤

蒙特卡罗方法的三个主要步骤:

  1. 描述或构造概率过程:对于已有的随机性质问题可描述和模拟这个概率过程,对于不具有随机性质的确定性问题,需要人为地构造一个概率过程。
  2. 利用概率分布抽样:通过计算机产生已知概率分布的随机变量,常用的概率分布有均匀分布,正态分布、指数分布、泊松分布等。
  3. 建立各种估计量:构造了随机概率模型,并从中抽样后,就要确定一个随机变量,作为所要求问题的解。一般是把 次随机抽样结果的算术平均值作为解的近似值。

其中产生已知概率分布的随机变量是蒙特卡罗方法的重点步骤,当不知道随机变量的概率模型服从那个分布时,可以使用均匀分布来构造;各种测量的误差、射击命中率、人的身高与体重等服从正态分布;指数分布可用在排队论与可靠性分析中;泊松分布可用在产品检验、排队系统、物理等领域中。

在不同的模拟情况下选择不同的模拟方式分布十分重要,这需要我们在模拟前验证数据是否符合这种结果,这样结果才更具有说服力。

蒙特卡罗方法的特点

优点

1、能够比较逼真地描述具有随机性质的事物的特点及物理实验过程

2、受几何条件限制小

3、收敛速度与问题的维数无关

4、具有同时计算多个方案与多个未知量的能力

5、误差容易确定

6、程序结构简单,易于实现

缺点

1、收敛速度慢

2、误差具有概率性

3、在粒子输运问题中,计算结果与系统大小有关

所以在使用蒙特卡罗方法时,要“扬长避短”,只对问题中难以用解析(或数值)方法处理的部分,使用蒙特卡罗方法计算,对那些能用解析(或数值)方法处理的部分,应当尽量使用解析方法

MATLAB代码示例

蒙特卡洛模拟随机数代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
%蒙特卡洛法是经过大量事件的统计结果来实现一些确定性问题的计算。
%使用蒙特卡洛法必须使用计算机生成相关分布的随机数。
%例如:y = x^2 ,y = 12 - x与X轴在第一象限与X轴围成一个曲边三角形。设计一个随机试验,求该图形的近似值。
x=0:0.25:12
y1=x.^2;
y2=12-x;
plot(x,y1,x,y2)
xlabel('x');ylabel('y');
legend('y1=x^2','y2=12-x');
title('蒙特卡洛模拟随机数代码');
axis([0 15 0 15]);
text(3,9,'交点');
grid on

x=unifrnd(0,12,[1,10000000]);
y=unifrnd(0,9,[1,10000000]);
frequency=sum(y<x.^2 & x<=3)+sum(y<12-x & x>=3)
area=12*9*frequency/10^7
  • Title: monte-carlo-simulation
  • Author: Charles
  • Created at : 2023-09-02 17:47:56
  • Updated at : 2023-09-02 19:17:40
  • Link: https://charles2530.github.io/2023/09/02/monte-carlo-simulation/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments