打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
蒙特卡罗(Monte Carlo)方法计算圆周率π

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

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

二、计算圆周率π的原理

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


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

三、matlab仿真试验

matlab代码:
monte_carlo_method.m

%% Monte Carlo方法计算π%正方形内部有一个相切的圆,它们的面积之比是π/4clc,clearr=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:num    distance=sqrt((sample_point(1,i)-1)^2+(sample_point(2,i)-1)^2);    if distance<1        total_in=total_in+1;    endendmy_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('开始绘图...');figurescatter(sample_point(1,:),sample_point(2,:),'bo');hold oncircle(1,[1,1]);title('Monte Carlo方法计算圆周率π'),xlabel('x'),ylabel('y')axis([0,2,0,2])fprintf('完成!\n');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

试验结果:

  1. 随机样本数为10000


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

  2. 随机样本数为100000


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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
蒙特卡洛之夜 Monte Carlo Nights 1934 Full Movie
【视频】风险价值VaR原理与Python蒙特卡罗Monte Carlo模拟计算投资组合实例
【Lonely Planet】安度中年危机的最佳地点
三分钟解释什么是蒙特卡罗方法
无用技能之——如何用霰弹枪计算圆周率?
蒙特卡洛算法 Monte Carlo
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服