1、概念
蒙特卡罗方法是以概率和统计的理论、方法为基础的一种数值计算方法,将所求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以获得问题的近似解。
它诞生于上个世纪40年代美国的“曼哈顿计划”,名字来源于赌城蒙特卡罗,象征概率。
2、π值的估计
例:如何用蒙特卡罗方法计算圆周率π。正方形内部有一个相切的圆,它们的面积之比是π/4。
在这个正方形内部,随机产生10000个点,如果这些点均匀分布,那么圆内的点应该占到所有点的π/4,将这个比值再乘以4,就是估计的π值。
rectangle('Position', [0,0,4,4], 'EdgeColor', 'r', 'LineWidth', 2)
hold on
alpha=0:pi/20:2*pi; %角度[0,2*pi]
r=2; %半径
x=r*cos(alpha)+2;
y=r*sin(alpha)+2;
plot(x,y,'b-','LineWidth',2)
axis equal
N = 10000;
a = 4*rand(1,N);
b = 4*rand(1,N);
scatter(a,b,2)
count=0;
for i = 1:N
if sqrt((a(i)-2)^2+(b(i)-2)^2) <= 2
count = count+1;
end
end
count/N*4
3、积分的计算
例:求函数y=x^2在[0,2]区间的积分。
解:使用蒙特卡罗方法,随机在这个矩形里面产生大量随机点(数量为N),计算有多少点落在0<y<x^2内,count/N就是所求比例,再乘以面积就是所求积分的值。
x = linspace(0,2,100);
y = x.^2;
plot(x,y,'r');
hold on
a = 2*rand(1,1000);
b = 4*rand(1,1000);
scatter(a,b,3);
count=0;
for i = 1:1000
if a(i)^2>b(i)
scatter(a(i),b(i),12);
count = count+1;
end
end
(count/1000)*(2*4)