蒙特卡罗方法

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)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值