蒙特卡洛是一个地名,位于赌城摩纳哥,象征概率。蒙特卡洛(Monte Carlo)方法是由大名鼎鼎的数学家冯·诺伊曼提出的,诞生于上世纪40年代美国的“曼哈顿计划”。原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值。
一个正方形内部相切一个圆,圆和正方形的面积之比是π/4。
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');
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
随机样本数为100000
联系客服