你也能看懂的:蒙特卡罗方法

蒙特卡罗方法,也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法
蒙特卡罗方法可以粗略地分成两类:一类是所求解的问题本身具有内在的随机性,借助计算机的运算能力可以直接模拟这种随机的过程。另一种类型是所求解问题可以转化为某种随机分布的特征数,比如随机事件出现的概率,或者随机变量的期望值。通过随机抽样的方法,以随机事件出现的频率估计其概率,或者以抽样的数字特征估算随机变量的数字特征,并将其作为问题的解。


概念

蒙特卡罗方法是一种计算方法。原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值

通过一个简单的例子,可以帮助我们很快地了解。在中学的数学课上,学习概率的相关内容时,就有这样的题目:正方形内部有一个相切圆,若是往正方形区域扔一个小石头,其落在圆内的的概率是多少?

解答过程很简单,用圆的面积除以正方形的面积就行了,为 π 4 \frac \pi 4 4π

那这跟蒙特卡罗方法有什么关系呢?现在已经知道了一个概率值,但是这里面有一个数其实是不确定的,那就是 π \pi π(一个无限不循环小数),如果让你求它的近似值(精确到某一位),该怎么做呢?
在这里插入图片描述
现在就轮到蒙特卡罗方法出场了,通过概率来求值,在正方形中随机放置大量的点,比如 10000 个,这样每一个点落在圆内的概率就是 π 4 \frac \pi 4 4π,将落在圆内点的数量比上所有点的数量,就可以把这个概率的具体值求出来,再乘 4 就是 π \pi π 的值。

点的数量越多精确度就越高,在求解一些无精确值的问题时可以发挥很大的作用,比如一些曲线围成图形的面积、积分问题等。而均值是概率密度与自变量乘积的积分,期望就是均值,最优值往往接近或就是期望,所以蒙特卡罗就是求最优值的方法


案例解读

使用 MatLab 语言

求一个简单的面积问题: y = x 2 , y = 12 − x y = x^2 ,y = 12 - x y=x2y=12x 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

图形如下:
在这里插入图片描述
结果:
在这里插入图片描述

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值