阿白数模笔记之蒙特卡罗方法(Monte Carlo Method)
前言
还记得浦丰投针实验吗?
浦丰所进行的是一个概率实验(Probability experiment),这样的方法称为蒙特卡罗方法(Monte Carlo Method)。而蒙特卡罗(Monte Carlo)是世界著名的“赌城”,世界三大赌城之一(美国超级赌城拉斯维加斯与号称东方拉斯维加斯的中国澳门)。事实上还有拉斯维加斯方法(本文不涉及)。
本文将通过几个案例解释蒙特卡罗方法的原理和应用。
案例一
往正方形区域D={(x,y):x∈[−1,1],y∈[−1,1]}内生成随机点,在单位圆区域C={(x,y):x2+y2≤1}内的点和点的总数之比近似为~pi/4。随着实验样本总数的改变,结果越来越精确,不加证明的给出此例中增加一位小数精度需使用100倍的样本数。MATLAB实现如下:
①绘制图形
x=[1,-1,-1,1,1];
y=[1,1,-1,-1,1];%将正方体的角连起来
t=linspace(0,2*pi,1000);
x1=cos(t);y1=sin(t);
plot(x,y,x1,y1);
legend('square','circle')
title('Square inscribed circle')
axis([-1.5 1.5 -1.5 1.5]);
②生成随机点列
xt=unifrnd(-1,1,[n,1]);%testblock×
yt=unifrnd(-1,1,[n,1]);
③筛选计数
k=0;
for i=1:nif (xt(i,1)^2+yt(i,1)^2)<=1k=k+1;scatter(xt(i,1),yt(i,1),'r*')elsescatter(xt(i,1),yt(i,1),'b*')end
end
p=4*k/n;%估计值
e=p-pi;%误差
④精度分析
案例二
Monte Carlo method 对维数并不敏感,可被用来计算多重积分。左图是计算球的面积
x=[1,1,1,1,1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,1];
y=[-1,-1,1,1,-1,-1,-1,1,1,-1,-1,-1,1,1,1,1];
z=[1,-1,-1,1,1,1,-1,-1,1,1,-1,-1,-1,-1,1,1];
plot3(x,y,z);%绘制正方体
axis([-1.5,1.5,-1.5,1.5,-1.5,1.5]);
hold on;
n=5000;
[x1,y1,z1]=sphere(50);%绘制球体
mesh(x1,y1,z1);
title('Cube inscribed sphere');
xt=unifrnd(-1,1,[n,1]);%testblock×
yt=unifrnd(-1,1,[n,1]);
zt=unifrnd(-1,1,[n,1]);
k=0;
for i=1:nif (xt(i)^2+yt(i)^2+zt(i)^2)<=1scatter3(xt(i),yt(i),zt(i),'r*')k=k+1;elsescatter3(xt(i),yt(i),zt(i),'b*')end
end
p=k/n*6;
e=p-pi;
案例三
下面利用Monte Carlo method求解浦丰投针问题:
考虑针的中点x位置,不妨设,a是平行线簇的间距,设针与平行线所成角度为,则当针与线相交时,,针落在线上的概率为,再利用Monte Carlo方法计算积分值即知
为方便计算,取
plot([0,pi],[1,1],'linewidth',2);
t=linspace(0,pi,1000);
y=0.5*sin(t);
hold on
plot(t,y);
n=10000;
x1=unifrnd(0,pi,[n,1]);
y1=unifrnd(0,1,[n,1]);
k=0;
for i=1:nif y1(i)<0.5*sin(x1(i))k=k+1;scatter(x1(i),y1(i),'r*')elsescatter(x1(i),y1(i),'b*')end
end
axis([0,pi,0,1]);
p=n/k;
e=p-pi;
总结
案例一,二是Monte Carlo method在二维,三维的应用,没有本质差别(维数对Monte Carlo method影响很小),案例三是先用数学方法从概率实验中抽离出待求式再通过Monte Carlo method计算。而Monte Carlo 的缺点也很明显:1.对于确定性问题需要转化成随机性问题。2.误差是概率误差。3.通常需要较多的计算步数N.
阿白数模笔记之蒙特卡罗方法(Monte Carlo Method)相关推荐
- 【Matlab 六自由度机器人】基于蒙特卡罗方法(Monte Carlo Method)构建机器人工作空间(附MATLAB建模仿真完整代码)
[Matlab 六自由度机器人]基于蒙特卡洛法构建工作空间 往期回顾 前言 正文 一.蒙特卡洛方法及机器人工作空间的概述 1. 蒙特卡洛法 2. 机器人工作空间 二.rand函数的应用 1. rand ...
- 增强学习(四) ----- 蒙特卡罗方法(Monte Carlo Methods)
1. 蒙特卡罗方法的基本思想 蒙特卡罗方法又叫统计模拟方法,它使用随机数(或伪随机数)来解决计算的问题,是一类重要的数值计算方法.该方法的名字来源于世界著名的赌城蒙特卡罗,而蒙特卡罗方法正是以概率为基 ...
- 阿白数模笔记之灰色-马尔科夫模型(Grey Markov model)
目录 前言(preface) GM(1,1) 简介(brief introdution) ①级比检验(Grade ratio test) ②建立GM(1,1)模型 Ⅰ.邻值生成序列(Adjacent ...
- java计算椭圆的面积_java算法3_蒙特卡洛方法(Monte Carlo method)求PI和椭圆面积
蒙特卡洛方法,是一种以概率统计理论为指导的一类非常重要的数值计算方法.是指使用随机数来解决很多计算问题的方法.蒙特卡洛方法的名字来源于摩纳哥的一个城市蒙特卡洛,该城市以×××业闻名,而蒙特卡洛方法正是 ...
- 数模笔记(三):灰色系统分析方法
数模笔记(一):线性规划.整数规划及非线性规划 数模笔记(二):层次分析法 数模笔记(三):灰色系统分析方法 数模笔记(四):插值与拟合 数模笔记(五):变异系数法 数模笔记(六):两变量相关性分析与 ...
- Python数模笔记-Sklearn(5)支持向量机
支持向量机(Support vector machine, SVM)是一种二分类模型,是按有监督学习方式对数据进行二元分类的广义线性分类器. 支持向量机经常应用于模式识别问题,如人像识别.文本分类.手 ...
- Python数模笔记-NetworkX(3)条件最短路径
1.带有条件约束的最短路径问题 最短路径问题是图论中求两个顶点之间的最短路径问题,通常是求最短加权路径. 条件最短路径,指带有约束条件.限制条件的最短路径.例如,顶点约束,包括必经点或禁止点的限制:边 ...
- Python数模笔记-NetworkX(2)最短路径
1.最短路径问题的常用算法 最短路径问题是图论研究中的经典算法问题,用于计算图中一个顶点到另一个顶点的最短路径. 欢迎关注 Youcans 原创系列,每周更新数模笔记 Python数模笔记-PuLP库 ...
- Python数模笔记-NetworkX(1)图的操作
1.NetworkX 图论与网络工具包 NetworkX 是基于 Python 语言的图论与复杂网络工具包,用于创建.操作和研究复杂网络的结构.动力学和功能. NetworkX 可以以标准和非标准的数 ...
最新文章
- ToString()的格式设置
- 三菱触摸屏通讯错误_三菱触摸屏常见问题及故障汇总
- Electron中实现拖拽文件进div中通过File对象获取文件的路径和内容
- Linux 信号可靠性,同步,异步,多线程信号等介绍
- 在java 8 stream表达式中实现if/else逻辑
- 真正爱你的女人是这样的
- 2020年11月全国程序员工资,新出炉!
- 百度java的线程技术_自我提升(基础技术篇)——java线程简介
- python编写加密程序_用Python实现一个简单的加密程序
- 用idea建立jsp项目_用idea创建maven项目,配置tomcat详解
- php utf-8编码 正则匹配中文
- html自动给js添加版本号,通过gulp 在原html文件上自动化添加js、css版本号
- Windows下VB6.0开发——VB程序断点调试与顺序执行不一致问题(通信原因)
- 如何让BERT具有文本生成能力
- ASP.NET加密和解密数据库连接字符串
- 编写一个程序,给出汉字“你” “我” “他”在Unicode表中的位置
- Spring系列七:JDK 动态代理和 CGLIB 代理
- Idea中使用maven 与pom文件讲解
- Android开发地图应用--坐标转换
- 了解下常用分析JVM参数以及优化工具
热门文章
- JS事件cancelBubble、event.preventDefault()与event.stopPropagation()简单介绍
- android webview 铺满_统编三年级上《铺满金色巴掌的水泥路》学习笔记
- 行云创新:用云原生,实现企业数字化转型最短路径
- html网页滚动条自动滚动,win10网页滚动条自动滚动怎么办-解决网页滚动条自动滚动的方法 - 河东软件园...
- win10 专业版 git bash 闪退问题终极解决方案
- 由内而外的 螺旋数组
- NLP / LLMs中的Temperature 是什么?
- Java的发展应用以及前景
- iOS UI设计模版收藏
- 问答精选|新年特辑:全方位揭秘MeterSphere一站式开源持续测试平台