matlab解决蒙特卡洛求圆周率(含测试用例代码)

数学建模 专栏收录该内容
123 篇文章 16 订阅

本博文源于MATLAB蒙特卡洛算法,蒙特卡洛算法是一种随机模拟,故本文围绕此算法对圆周率进行估值。

求圆周率思想

就是在一个以a为边长的正方形内画出一个以a为半径的圆,然后随机在正方形内投掷点,若落在四分之一圆内,则+1,最后统计占总比。核心难点:如何判定随机模拟在圆内.

判定公式: x 2 + y 2 ≤ a 2 x^2+y^2\le{a^2} x2+y2a2

核心代码

代码书写逻辑步骤:

  1. 输入模拟次数
  2. 随机点进行判断
  3. 最后计算圆周率
n = input('请输入n的模拟次数:');
counter = 0;
for i=1:n
    x = rand;
    y = rand; %随机生成x,y坐标
    if x^2 + y^2 <= a^2 %进行逻辑判断
        counter = counter + 1;
    end 
end
pai = 4*counter/n %输出结果

代码保存为pai_test.m

测试用例

pai_test.m保存在matlab工作目录里,然后调用脚本函数

>> pai_test
请输入n的模拟次数:500000

pai =

    3.1403

>> 

总结

本博文以matlab蒙特卡洛算法进行近似圆周率,逻辑清晰,代码易懂,方便收藏,并且测试用例特别友好,值得新手mark!

  • 1
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值