Matlab--蒙特卡洛方法求pi值

Matlab--蒙特卡洛方法求pi值

蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。蒙特卡洛

蒙特卡洛方法是通过采集大量样本,然后逐渐逼近最优解的方法,其只要方法就是通过随机数的产生。它在金融学、数学等等方面都有很多的应用和贡献,期权定价模型的原理就是这个。

实现思想与方法:笔者就利用蒙特卡洛的思想对经典数字pi,进行数值的求解近似。我们通过计算分别落在四分之一圆及其余部分的点的个数,对落在圆内点的占比进行一个统计,最终得出pi的值。其中圆的半径是1,正方形的半径也为1.
在这里插入图片描述

下面看Matlab代码:

% 蒙特卡洛求pi的值
gen = 1000;
count = 0;
r=1;
theta=0:pi/100:2*pi;
x=r*cos(theta);                              
y=r*sin(theta);                              
plot(x,y)
xlim([0,1])
ylim([0,1])
title('蒙特卡洛方法求pi值')
hold on
for i = 1:gen
    a = rand;
    b = rand;
    plot(a,b,'.')
    pause(0.00001)
    if a^2 + b^2 < 1
        count = count + 1;
    end
end
p = count/gen*4;
disp(['pi的估计值为',num2str(p)])

结果显示
在这里插入图片描述
因为这里打点的次数只有1000次,读者可以调试参数,不断增加gen的值,最后一定会无限接近于pi的值3.1415926…。

猜你喜欢

转载自blog.csdn.net/wlfyok/article/details/107991424