使用MatLab实现蒙特卡洛求解圆周率 pi

使用MatLab实现蒙特卡洛求解圆周率

1.思路

基本原理,假设有一个正方形的内切圆,在正方形的内部均匀的取随机点,当取的两个x,y满足圆的方程 (a/2)^2 = x^2 + y^2是,表示在圆的内部,而在圆的内部的概率是:
p = pi * (a/2)^2 / a^2 (a代表的是正方形的边长),
此时,pi = 4 * p ,也就是四倍的概率,也就是在所有取得的随机数中,一共落在圆的内部 m 次,共抽取了n次。最终落入圆的概率:
m/n
pi = 4 * m/n
(即满足方程x^2 + y^2 < (a/2)^2
在此过程中,使用的函数是:rand ,随机生成(0,1)之间的均匀分布的伪随机数

2.源代码

%用来记录在圆的内部的点的个数
m = 0
n = input(“请输入你想做的实验的个数);
%开始循环
%假设圆的半径为1,也就是正方形的边长是2
for i = 1:n
	x = rand;
	y = rand;
	if (x^2 + y^2) < 1   %(1就是r ^2)
		m = m + 1;   %满足条件,记录次数加1
end

fprintf(‘最终求出的pi的值是:%d’,4 * m/n)  %四倍的概率就是pi

3.计算结果:

使用MatLab实现蒙特卡洛求解圆周率 pi_第1张图片
当然,随着实验的次数的不断的增大,得到的圆周率将会更加的准确
觉得有帮助,记得点赞呐

你可能感兴趣的:(MatLab)