蒙特卡罗用于布丰投针实验

%% (1)预备知识
%  rand(m,n)函数产生由在[0,1]之间均匀分布的随机数组成的m行n列的矩阵(或称为数组)。
rand(5,4)
%     0.8300    0.1048    0.2396    0.4398
%     0.5663    0.1196    0.8559    0.5817
%     0.9281    0.2574    0.3013    0.9355
%     0.3910    0.3173    0.2108    0.1676
%     0.3645    0.4372    0.8819    0.9232
rand(3) % 若只给一个输入,则会生成一个方阵
%     0.1709    0.4951    0.0541
%     0.9374    0.8500    0.6155
%     0.2400    0.3156    0.5741
% a + rand(m,n)*(b-a) 可以输出在[a,b]之间均匀分布的随机数组成的m行n列的矩阵。
-2 + rand(3,2) * (2 - (-2))  % 输出在[-2,2]之间均匀分布的随机数组成的3行2列的矩阵。
%    -1.2743    0.6013
%    -1.3084    0.0766
%     1.5075    0.7563
% a + rand(m,n)*(b-a)等价于unifrnd(a,b,m,n)
unifrnd(-2,2,3,2)

%% (2)代码部分
l =  0.520;     % 针的长度(任意给的)
a = 1.314;    % 平行线的宽度(大于针的长度l即可)
n = 1000000;    % 做n次投针试验,n越大求出来的pi越准确
m = 0;    % 记录针与平行线相交的次数
x = rand(1, n) * a / 2 ;   % 在[0, a/2]内服从均匀分布随机产生n个数, x中每一个元素表示针的中点和最近的一条平行线的距离
phi = rand(1, n) * pi;    % 在[0, pi]内服从均匀分布随机产生n个数,phi中的每一个元素表示针和最近的一条平行线的夹角
% axis([0,pi, 0,a/2]);   box on;  % 画一个坐标轴的框架,x轴位于0-pi,y轴位于0-a/2, 并打开图形的边框
for i=1:n  % 开始循环,依次看每根针是否和直线相交
    if x(i) <= l / 2 * sin(phi (i))     % 如果针和平行线相交
        m = m + 1;    % 那么m就要加1
%         plot(phi(i), x(i), 'r.')   % 模仿书上的那个图,横坐标为phi,纵坐标为x , 用红色的小点进行标记
%         hold on  % 在原来的图形上继续绘制
    end
end
p = m / n;    % 针和平行线相交出现的频率
mypi = (2 * l) / (a * p);  % 我们根据公式计算得到的pi
disp(['蒙特卡罗方法得到pi为:', num2str(mypi)])

%% (3) 由于一次模拟的结果具有偶然性,因此我们可以重复100次后再来求一个平均的pi
result = zeros(100,1);  % 初始化保存100次结果的矩阵
l =  0.520;     a = 1.314;
n = 1000000;    
for num = 1:100
    m = 0;  
    x = rand(1, n) * a / 2 ;
    phi = rand(1, n) * pi;
    for i=1:n
        if x(i) <= l / 2 * sin(phi (i))
            m = m + 1;
        end
    end
    p = m / n;
    mypi = (2 * l) / (a * p);
    result(num) = mypi;  % 把求出来的myphi保存到结果矩阵中
end
mymeanpi = mean(result);  % 计算result矩阵中保存的100次结果的均值
disp(['蒙特卡罗方法得到pi为:', num2str(mymeanpi)])

MATLAB基础语法之蒙特卡罗模拟_1(布丰投针)相关推荐

  1. 布丰投针java实现,MATLAB模拟布丰投针实验

    MATLAB模拟布丰投针实验 标签(空格分隔): 算法 Buffon's Needle 桌面上有距离为a的若干平行线,将长度为L的针随机丢在桌面上,则这根针与平行线相交的概率是多少?假定L < ...

  2. MATLAB模拟布丰投针实验

    MATLAB模拟布丰投针实验 标签(空格分隔): 算法 Buffon's Needle 桌面上有距离为a的若干平行线,将长度为L的针随机丢在桌面上,则这根针与平行线相交的概率是多少?假定L < ...

  3. 蒲丰投针实验原理_布丰投针实验 MATLAB仿真 以及报告

    布丰投针实验原理.仿真过程以及 MATLAB仿真代码.完整的布丰投针实验报告. 以下内容无关: -------------------------------------------分割线------ ...

  4. R语言对布丰投针(蒲丰投针)实验进行模拟和动态可视化生成GIF动画

    最近我们被客户要求撰写关于动态可视化的研究报告,包括一些图形和统计输出. 介绍 布丰投针是几何概率领域中最古老的问题之一.它最早是在1777年提出的.它将针头掷到有平行线的纸上,并确定针和其中一条平行 ...

  5. 布丰投针试验的仿真和误差估计

    布丰投针试验 一.试验原理 1.试验步骤 2.理论概率及π\piπ的计算与误差 二.Python代码的实现 一.试验原理 1.试验步骤 ​ 1.选一个长度为lll的针.再选取一张白纸,上面划分许多平行 ...

  6. Matlab模拟蒲丰投针实验计算Π值

    文章目录 1.前言 2.实验目的 3.实验原理 (1)问题描述 (2)问题求解 4.实验过程 5.实验结果 6.实验结论 7.Matlab代码 1.前言 学习了概率论,决定自己动手编程实现蒲丰投针实验 ...

  7. matlab基础语法

    %% matlab基础语法% 后面的加分号时,运行结果在命令窗口不显示. % 不加分号时,当点击回车时,运行结果就会立即显示出来!%% 清除 clear all %清除工作区中的所有变量 clc %清 ...

  8. 蒲丰投针计算机模拟ppt,蒙特卡罗模拟课件.ppt

    <蒙特卡罗模拟课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<蒙特卡罗模拟课件.ppt>文档请在天天文库搜索. 1.蒙特卡洛模拟数学实验之前 ...

  9. 用一根线模拟浦丰投针实验——Java

    用一根线模拟浦丰投针实验--Java 浦丰投针实验(Buffon's needle problem)   本文先给出正确的推理过程,错误的推导过程放在文章末尾,方便大家探讨.   不多废话,直奔主题. ...

  10. 蒲丰投针与蒙特卡洛模拟

    昨天突然看到了蒲丰投针实验,于是想看看到底是怎么推导出来的,baidu上搜索了一下,发现就这篇文章写的比较好,而且也简单的讲解了一下蒙特卡洛方法,在此推荐之! 蒲丰投针与蒙特卡洛模拟.pdf 转载于: ...

最新文章

  1. R语言ggplot2可视化:组合箱图(boxplot)和直方图(histogram)输出组合可视化结果
  2. Android智能手机屏蔽电话与屏蔽安装软件功能
  3. new housing price at shanghai
  4. vmware如何安装solaris10
  5. 队列(常用数据结构之一)
  6. mysql 权限命令 revoke_mysql 权限管理使用 grant/revoke
  7. Wannafly 挑战赛27 题解
  8. mysql中的boolean tinyint
  9. Python监视进程创建情况和系统服务状态
  10. PKU 3667 HDOJ 3667 Hotel ACM 3667 IN HDU
  11. php 开源周报系统,Pulsar 社区周报|2021-03-01~2021-03-07
  12. 解决模拟器Emulator: emulator: ERROR: x86 emulation currently requires hardware acceleration!问题
  13. Oracle+ogg-00664,OGG采用NET8方式读取ASM中日志报OGG-00664(ORA-12162),配置如下:
  14. 上twitter_如何在Twitter上更改您的显示名称
  15. Java实现DOCX文件和DOC文件互转
  16. Qt 之 QCustomPlot(图形库)
  17. ffmpeg 如何剔除掉视频中的水印和马赛克
  18. 修改图片文件后缀,将JPG转换为PNG
  19. 数字2DPSK频带传输系统的设计(文内附完整代码)
  20. LeetCode 276:栅栏涂色

热门文章

  1. linux 查看vcf文件,Linux生信练习4-vcf
  2. 医学与计算机领域融合的发展前景,浅谈对超声医学的发展现状与前景之探究
  3. 字节跳动内推码 春招 社招
  4. 视频素材-高质量缥缈雾气雾霾特效合成动画 Lens Distortions – Fog II
  5. MISC:基本思路 · 常用命令
  6. 述职答辩提问环节一般可以问些什么_述职被高频问到的15问
  7. C++的简单FTP客户端实现(二)编程
  8. 人类数据总量_人类身体的11个极限数据
  9. 独孤求败-小滴云架构大课十八式-xdclass2022
  10. Shell脚本-Dong