定义

我们又可以称之为统计模拟方法,将所求解的问题同⼀定的概率模型相联系,⽤电⼦计算机实现统计模拟或抽样,以获得问题的近似解。

我们把需要求解的一个问题放到一个模型中,在模型中找出能近似表示这个值的特征。我们使用大量的随机数(这个随机数不仅仅指一个数,更广泛的指模型中发生的一次随机事件,我们将这个随机事件产生的效果简化为数,这个随机事件在这个模型产生的数值我们用随机数来代替)来模拟这个模型,随机数的数量越多,那么模拟的结果更加精确。

原理

由大数定理可知,当样本容量足够大时,事件的发生频率即为其概率。

布丰投针

一个经典的例子就是布丰投针,用于求解圆周率。

设我们有一个以平行且等距木纹铺成的地板,随意抛一支长度比木纹之间距离小的针,求针和其中一条木纹相交的概率。并以此概率来求解pi。

  1. 取一张白纸,在上面画上许多条间距为a的平行线。

  2. 取一根长度为l(l≤a) 的针,随机地向画有平行直线的纸上掷n次,观察针与直线相交的次数,记为m。

  3. 计算针与直线相交的概率,概率公式如下。
    p=2lπa=mnp = \frac{2l}{\pi a} = \frac{m}{n} p=πa2l​=nm​

我们根据相交的次数来求解pi值。

matlab 模拟

我们现在需要将布丰投针这个模型里发生的投针试验简化为数据。

我们每一次投针的不同之处在于针与平行线之间的夹角c,以及针的中心与其最近的平行线的距离a。我们根据这两个值来判断针与线是否相交。

这样我们就找到了每一次投针试验后产生的数据

  1. 针与平行线之间的夹角c

  2. 针的中心与其最近的平行线的距离a

  3. 针与线是否相交,即下面的公式。
    x≤l/2∗sin(c)x \le l/2 * sin(c) x≤l/2∗sin(c)

length =  1;% 针的长度
a = 3;  % 平行线距离
n = 5200000;    % 投针试验的次数,n越大求出来的pi越准确
m = 0;    % 用于记录针与平行线相交的次数
x = rand(1, n) * a / 2 ;   % 针的中点和最近的一条平行线的距离
angle = rand(1, n) * pi;    % 针和最近的一条平行线的夹角
for i=1:n if x(i) <= length / 2 * sin(angle (i))     % 判断是否相交m = m + 1; end
end
p = m / n;    % 针和平行线相交出现的频率
predict_pi = (2 * length) / (a * p);
disp(predict_pi)
% 3.1408

蒙泰卡罗模拟应用求解pi近似值相关推荐

  1. 蒙特.卡罗方法求解圆周率近似值原理与Python实现

    对于某些不能精确求解的问题,蒙特.卡罗方法是一种非常巧妙的寻找近似解的方法. 以求解圆周率的问题为例,假设有一个单位圆及其外切正方形,我们往正方形内扔飞镖,当扔的次数足够多以后,"落在圆内的 ...

  2. python计算圆周率_python模拟蒙特·卡罗法计算圆周率

    蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用,其中就包括圆周率近似值的计问题. 假设有一块边长为2的正方形木板,上面画一个单位圆,然后随意往木板上扔飞镖,落点坐标(x, ...

  3. Python---利用蒙特.卡罗方法计算圆周率近似值

    利用蒙特.卡罗方法计算圆周率近似值 什么是蒙特.卡罗方法? 答:蒙特卡罗方法是一种计算方法.原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值. 正方形内部有一个相切的圆,它们的面积之比是π ...

  4. 蒲丰投针问题和蒙特·卡罗方法

    蒲丰投针问题和蒙特·卡罗方法 1.蒲丰投针问题 法国数学家蒲丰在18世纪提出的一种计算圆周率的方法.具体方法是首先在白纸上画满间距相等的平行直线,然后取出一把小针,每个小针的长度都小于等于平行直线的间 ...

  5. Algorithm之MC:Monte Carlo method蒙特·卡罗方法的简介、实现、应用

    Algorithm之MC:Monte Carlo method蒙特·卡罗方法的简介.实现.应用 目录 随机算法 MC的简介 MC的应用 随机算法 随机算法分为两大类:蒙特卡罗算法和拉斯维加斯算法,都是 ...

  6. 蒙特 卡罗方法matlab,蒙特·卡罗方法中的数学之美,你一定不想错过

    原标题:蒙特·卡罗方法中的数学之美,你一定不想错过 有方教育--我们致力于为中学生提供学界和业界前沿的学术科研教育内容,帮助学生参加海外科研项目,在提升申请竞争力的同时,获得领跑优势. 一.概述 蒙特 ...

  7. python语言程序设计——蒙特·卡罗方法求圆周率

    虽然在python的math库中存在着圆周率的表示,但是在实际生活中又有谁可以完整的背出圆周率呢,圆周率又是怎样被计算出来的呢? 首先数学家们发现了圆周率的近似方程如下: 而这段代码自然可以用计算机中 ...

  8. Q73:蒙特•卡罗积分(Monte Carlo Integration)

    73.1 基本技巧(The Basic Technique) 这5个采样点各自对应的估算值如下: 如上五部分估算值(绿色阴影面积.天蓝色阴影面积.蓝色阴影面积.紫色阴影面积.红色阴影面积)的平均值即为 ...

  9. Root作对数坐标图及蒙卡随机模拟

    Root作对数坐标图及蒙卡随机模拟 说明 蒙卡模拟 说明 采用root 作对数坐标图,通常会出现横坐标不是均等宽度分布,这是由于在定义historgram,在设置bin的个数和上下限时默认时均有分割, ...

最新文章

  1. Enterprise Library 2.0 技巧(1):如何使用外部配置文件
  2. 计算几个数相加和为16
  3. ft2232驱动安装方法_关于Win10无法安装英伟达驱动的处理方法
  4. 乐易家智能机器人价格_安川焊接机器人价格多少钱?核心是质量好
  5. P5283-[十二省联考2019]异或粽子【可持久化Trie,堆】
  6. plantuml 方法图_UML与软件建模:第四次作业(学习PlantUML活动图绘制方法)
  7. 实体店如何做好门店引流
  8. [基础]全局组、域本地组、通用组的区别与联系
  9. 浅析天际网、IT260、微人脉等中国职业社交网站
  10. android获取textview的行数
  11. php生成成语,在线成语词典 洪恩在线成语词典小偷程序php版
  12. setoolikt制作钓鱼网站
  13. JRebel进行热部署时修改的mapper.xml或者mapper的注解不生效
  14. 视频编解码(一):ffmpeg编码H.264帧类型判断
  15. 蓝桥杯刷题以及算法解析的网址
  16. JS验证用户真实姓名
  17. html实现下拉跳转
  18. iOS 自动生成各种尺寸的App Icon 和 Launch Image( App Icon Gear)
  19. 图像处理时为什么灰度化 【文末赠书】
  20. 抖音小店VS淘宝店铺,哪个更有优势?

热门文章

  1. docker到底是什么?有什么用?
  2. OpenHD改造实现廉价高清数字图传(树莓派+PC)—(六)OSD和视频画面整合显示
  3. C语言程序设计练习题 输入一个字符串,内有数字和非数字字符,例如 A123x456 17960?操作:将连续的数字作为一个整数,一次存放到一数组a中,统计共有多少个整数,并输出这些数。
  4. 铭瑄主板u盘启动装系统
  5. 这个好用的H5动画制作软件,你知道吗?
  6. Java语言 实验报告(三)
  7. avi格式如何转化成mp4
  8. SQL注入——基于联合查询的POST注入
  9. SSM电影点播系统01--可行性分析和需求分析
  10. usaco-milk2-pass