蒙特卡罗(Monte Carlo)方法计算圆周率π
一、蒙特卡洛(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
试验结果:
随机样本数为10000
运行结果:
π=3.1148
误差:0.0085随机样本数为100000
运行结果:
π=3.1468
误差:0.0017
蒙特卡罗(Monte Carlo)方法计算圆周率π相关推荐
- 蒙特卡罗(Monte Carlo)方法
蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数"的计算方法. 一 起源 这一方法源于美国在第二次世界大战进研制原子弹的&qu ...
- 蒙特卡洛python求解派_利用蒙特卡洛(Monte Carlo)方法计算π值[ 转载]
圆周率π是一个无理数,没有任何一个精确公式能够计算π值,π的计算只能采用近似算法. 国际公认的π值计算采用蒙特卡洛方法. 一.蒙特卡洛方法 蒙特卡洛(Monte Carlo)方法,又称随机抽样或统计试 ...
- 利用蒙特卡洛(Monte Carlo)方法计算π值
圆周率π是一个无理数,没有任何一个精确公式能够计算π值,π的计算只能采用近似算法. 国际公认的π值计算采用蒙特卡洛方法. 蒙特卡洛方法 蒙特卡洛(Monte Carlo)方法,又称随机抽样或统计试验方 ...
- Python用蒙特卡罗方法计算圆周率近似值
实验目的: 1.理解蒙特Ÿ卡罗方法原理. 2.理解for循环本质与工作原理. 3.了解random模块中常用函数. 实验内容: 蒙特Ÿ卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的 ...
- 蒙特卡罗(Monte Carlo)法
蒙特卡罗(Monte Carlo)法 又称统计实验法,是以概率论和数理统计为指导的模拟方法. 它的实质是运用一连串的随机数来模拟可能出现的随机现象,即为了求解确定的数学问题,要构造一个与原来的问题没有 ...
- Python---利用蒙特.卡罗方法计算圆周率近似值
利用蒙特.卡罗方法计算圆周率近似值 什么是蒙特.卡罗方法? 答:蒙特卡罗方法是一种计算方法.原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值. 正方形内部有一个相切的圆,它们的面积之比是π ...
- 蒙特卡洛(Monte Carlo)方法简介
蒙特卡洛(Monte Carlo)方法的本质 蒙特卡洛(Monte Carlo)方法,即蒙特卡洛采样,是一种根据某已知分布的概率密度函数f(x),产生服从此分布的样本X的方法. 蒙特卡洛采样有很多种, ...
- 蒙特卡洛(Monte Carlo)方法的介绍和应用
蒙特卡洛(Monte Carlo)方法的介绍和应用 蒙特卡洛(Monte Carlo)方法 在渲染中,我们经常听到术语"蒙特卡洛"(通常缩写为MC).但是这是什么意思?实际上,它所 ...
- Monte Carlo方法的基本思路
Monte Carlo方法的基本思路 (1)针对实际问题建立一个简单且便于实现的概率统计模型,使所求的解恰好是所建模型的概率分布或其某个数字特征,比如是某个事件的概率,或者是该模型的期望值. (2)对 ...
最新文章
- 会排序吗_洗牌算法详解:你会排序,但你会打乱吗?
- Android中的ViewDragHelper
- BigDecimal相除异常
- ASP.NET获取客户端、服务器端基础信息集合
- 数据表-java类的映射
- 11步提高代码质量和整体工作效率
- php去除html标签 空白,php使用strip_tags()去除html标签仍有空白的解决方法
- android 开机打开串口失败,请大神帮我看看这是怎么回事,一用就说串口打开失败,再电脑上试...
- Android开发笔记(一百六十)休眠模式下的定时器控制
- uiautomatorviewer报错“Error taking device screenshot: EOF” ,
- Spring.NET企业架构实践之 Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(三)——持久层...
- linux bash错误,linux bash错误重定向输出
- 英文诗------(Love‘s Secret)爱的秘密------William Blake(英国诗人:威廉.布莱克)
- matlab textscan读结构化.txt文件
- P6207 [USACO06OCT] Cows on Skates G
- 计算机数据库基础知识填空题,数据库练习题(基础)
- 服务器端和客户端互发消息,Socket编程实现简单的服务器与客户端互发消息
- 柳廷顯 任汝所用 月亭
- javascript如何对location.hash过滤xss跨站脚本
- 程序员崩溃了!年终奖怎么说黄就黄?
热门文章
- OSError: Could not find kaggle.json. Make sure it‘s located in /home/user/.kaggle.
- 自建家居 Wiki 系统(BookStack 服务)
- 韩国为什么“恢复”汉字?
- 软件测试面试中会问的几个方面
- mysql连接错误state 08S01
- 自从IDEA配上这个插件开发速度快了N倍
- 时代潮流-云原生数据库的崛起
- ZT:【ROOT教程】S7/S7E 8890版root及替换recovery中文教程
- 计算机word入门教学ppt,word2003入门教学课件
- html中div的覆盖,CSS中如何使div覆盖另一个div的实例