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

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

1.思路

基本原理,假设有一个正方形的内切圆,在正方形的内部均匀的取随机点,当取的两个x,y满足圆的方程 (a/2)^2 = x^2 + y^2是,表示在圆的内部,而在圆的内部的概率是:

P = pi * (a/2)^2 / a^2

(pi * (a/2)^2是圆的面积;右边的是正方形的面积)
(a 代表的是正方形的边长,是一个常数;概率 : P;pi 表示圆周率)

P = pi * (a/2)^2 / a^2进行化简约分可以得到:pi = 4 * P ,也就是四倍的概率;也就是在所有取得的随机数中,一共落在圆的内部 m 次,共抽取了n次。

圆周率可以表示为:

pi = 4 * m/n;(pi 是圆周率)
(即满足方程x^2 + y^2 < (a/2)^2

在此过程中,使用的函数是:rand ,随机生成(0,1)之间的均匀分布的伪随机数

2.源代码

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

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

3.计算结果:

在这里插入图片描述
当然,随着实验的次数的不断的增大,得到的圆周率将会更加的准确
觉得有帮助,记得点赞呐

posted @   YIMENG-0  阅读(821)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示