使用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 = rand;
if (x^2 + y^2) < 1 %(1代表r^2,因为假设圆的半径是1)
m = m + 1; %满足条件,记录次数加1
end
fprintf(‘最终求出的pi的值是:%d’,4 * m/n) %四倍的概率就是pi
3.计算结果:
当然,随着实验的次数的不断的增大,得到的圆周率将会更加的准确
觉得有帮助,记得点赞呐
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!