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

本博文源于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!

你可能感兴趣的:(数学建模,matlab,算法)