Matlab击中并错过了圆形区域

时间:2017-10-20 18:13:09

标签: matlab

它大部分工作直到for循环结束但是我得到一个错误,不确定如何修复或者它的全部错误。

问题:

南佛罗里达大学的数学系已经忘记了pi的价值,他们希望你为他们计算它。假设在正方形内有一个四分之一圆,边长为1x1。然后圆的半径是1.圆的面积是pir2。如果r = 1,则该区域是pi,并且四分之一圆的面积是pi / 4。使用从1开始的for循环并从键盘输入的数字结束,在方块中添加随机点(使用MATLAB函数rand()获取点)。如果一个点落在圆圈内,那么它就是一个点击,否则就是一个未命中。圆(pi)的近似面积是(命中)/(总点数)* 4.

我的尝试:

clear;clc
numP=input('Enter the number of points to test: ');
randNums=[rand(1,numP);rand(1,numP)]'
row=0;
hits=0;
total=0;
for i=1:numP
    while i<=numP
        dist=sqrt((randNums(row+1))^2 + (randNums(row+(numP+1))^2))
        if dist <= 1
            hits=hits+1            
        end
        total=total+1
        row=row+1
    end
end
approx=(hits/total)*4

2 个答案:

答案 0 :(得分:0)

您需要做的就是删除while循环。

我也摆脱了行变量,因为你不需要它。

clear;clc
numP=input('Enter the number of points to test: ');
randNums=[rand(1,numP);rand(1,numP)];
hits=0;
total=0;
for i=1:numP

    dist=sqrt((randNums(i))^2 + (randNums(i+numP)^2));
    if dist <= 1
        hits=hits+1;
    end            
    total=total+1;

end
approx=(hits/total)*4

答案 1 :(得分:0)

{{1}}

pi_c为您提供计算的pi值