一、蒙特卡洛(Monte Carlo)方法简介

蒙特卡洛是一个地名,位于赌城摩纳哥,象征概率。蒙特卡洛(Monte Carlo)方法是由大名鼎鼎的数学家冯·诺伊曼提出的,诞生于上世纪40年代美国的“曼哈顿计划”。原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值。

二、计算圆周率π的原理

一个正方形内部相切一个圆,圆和正方形的面积之比是π/4。

在这个正方形内部,随机产生n个点(这些点服从均匀分布),计算它们与中心点的距离是否大于圆的半径,以此判断是否落在圆的内部。统计圆内的点数,与n的比值乘以4,就是π的值。理论上,n越大,计算的π值越准。

三、matlab仿真试验

matlab代码:
monte_carlo_method.m

%% Monte Carlo方法计算π
%正方形内部有一个相切的圆,它们的面积之比是π/4
clc,clear
r=1;
center_x=1;
center_y=1;
num=100000;%随机样本数
fprintf('开始Monte Carlo方法计算圆周率π,随机样本数为%d...\n',num);
s=rng;
rng(s);
sample_point=2*rand(2,num);
total_in=0;
for i=1:numdistance=sqrt((sample_point(1,i)-1)^2+(sample_point(2,i)-1)^2);if distance<1total_in=total_in+1;end
end
my_pi=total_in/num*4;
fprintf('result:\nπ=%.4f\n',my_pi);
error=abs((pi-my_pi)/pi);
fprintf('误差:%.4f\n',error);
fprintf('完成!\n');%% 绘图
fprintf('开始绘图...');
figure
scatter(sample_point(1,:),sample_point(2,:),'bo');hold on
circle(1,[1,1]);
title('Monte Carlo方法计算圆周率π'),xlabel('x'),ylabel('y')
axis([0,2,0,2])
fprintf('完成!\n');

circle.m

function circle(R,Center)
alpha=0:pi/50:2*pi;%角度[0,2*pi]
% R=2;%半径
% Center=[1,1];%圆心
x=R*cos(alpha)+Center(1);
y=R*sin(alpha)+Center(2);
plot(x,y,'g-','LineWidth',2)
end

试验结果:

  1. 随机样本数为10000

    运行结果:
    π=3.1148
    误差:0.0085

  2. 随机样本数为100000

    运行结果:
    π=3.1468
    误差:0.0017

蒙特卡罗(Monte Carlo)方法计算圆周率π相关推荐

  1. 蒙特卡罗(Monte Carlo)方法

    蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数"的计算方法.          一 起源 这一方法源于美国在第二次世界大战进研制原子弹的&qu ...

  2. 蒙特卡洛python求解派_利用蒙特卡洛(Monte Carlo)方法计算π值[ 转载]

    圆周率π是一个无理数,没有任何一个精确公式能够计算π值,π的计算只能采用近似算法. 国际公认的π值计算采用蒙特卡洛方法. 一.蒙特卡洛方法 蒙特卡洛(Monte Carlo)方法,又称随机抽样或统计试 ...

  3. 利用蒙特卡洛(Monte Carlo)方法计算π值

    圆周率π是一个无理数,没有任何一个精确公式能够计算π值,π的计算只能采用近似算法. 国际公认的π值计算采用蒙特卡洛方法. 蒙特卡洛方法 蒙特卡洛(Monte Carlo)方法,又称随机抽样或统计试验方 ...

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

    实验目的: 1.理解蒙特Ÿ卡罗方法原理. 2.理解for循环本质与工作原理. 3.了解random模块中常用函数. 实验内容: 蒙特Ÿ卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的 ...

  5. 蒙特卡罗(Monte Carlo)法

    蒙特卡罗(Monte Carlo)法 又称统计实验法,是以概率论和数理统计为指导的模拟方法. 它的实质是运用一连串的随机数来模拟可能出现的随机现象,即为了求解确定的数学问题,要构造一个与原来的问题没有 ...

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

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

  7. 蒙特卡洛(Monte Carlo)方法简介

    蒙特卡洛(Monte Carlo)方法的本质 蒙特卡洛(Monte Carlo)方法,即蒙特卡洛采样,是一种根据某已知分布的概率密度函数f(x),产生服从此分布的样本X的方法. 蒙特卡洛采样有很多种, ...

  8. 蒙特卡洛(Monte Carlo)方法的介绍和应用

    蒙特卡洛(Monte Carlo)方法的介绍和应用 蒙特卡洛(Monte Carlo)方法 在渲染中,我们经常听到术语"蒙特卡洛"(通常缩写为MC).但是这是什么意思?实际上,它所 ...

  9. Monte Carlo方法的基本思路

    Monte Carlo方法的基本思路 (1)针对实际问题建立一个简单且便于实现的概率统计模型,使所求的解恰好是所建模型的概率分布或其某个数字特征,比如是某个事件的概率,或者是该模型的期望值. (2)对 ...

最新文章

  1. 会排序吗_洗牌算法详解:你会排序,但你会打乱吗?
  2. Android中的ViewDragHelper
  3. BigDecimal相除异常
  4. ASP.NET获取客户端、服务器端基础信息集合
  5. 数据表-java类的映射
  6. 11步提高代码质量和整体工作效率
  7. php去除html标签 空白,php使用strip_tags()去除html标签仍有空白的解决方法
  8. android 开机打开串口失败,请大神帮我看看这是怎么回事,一用就说串口打开失败,再电脑上试...
  9. Android开发笔记(一百六十)休眠模式下的定时器控制
  10. uiautomatorviewer报错“Error taking device screenshot: EOF” ,
  11. Spring.NET企业架构实践之 Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(三)——持久层...
  12. linux bash错误,linux bash错误重定向输出
  13. 英文诗------(Love‘s Secret)爱的秘密------William Blake(英国诗人:威廉.布莱克)
  14. matlab textscan读结构化.txt文件
  15. P6207 [USACO06OCT] Cows on Skates G
  16. 计算机数据库基础知识填空题,数据库练习题(基础)
  17. 服务器端和客户端互发消息,Socket编程实现简单的服务器与客户端互发消息
  18. 柳廷顯 任汝所用 月亭
  19. javascript如何对location.hash过滤xss跨站脚本
  20. 程序员崩溃了!年终奖怎么说黄就黄?

热门文章

  1. OSError: Could not find kaggle.json. Make sure it‘s located in /home/user/.kaggle.
  2. 自建家居 Wiki 系统(BookStack 服务)
  3. 韩国为什么“恢复”汉字?
  4. 软件测试面试中会问的几个方面
  5. mysql连接错误state 08S01
  6. 自从IDEA配上这个插件开发速度快了N倍
  7. 时代潮流-云原生数据库的崛起
  8. ZT:【ROOT教程】S7/S7E 8890版root及替换recovery中文教程
  9. 计算机word入门教学ppt,word2003入门教学课件
  10. html中div的覆盖,CSS中如何使div覆盖另一个div的实例