【问题标题】:How to approach pi in a circle如何在圆周上接近 pi
【发布时间】:2019-06-08 15:46:34
【问题描述】:

我收到了计算机科学课程的录取任务,我必须在该课程中接近 PI。要计算 pi,我必须在正方形、圆形的面积、点的总数和圆内的点数之间做一个比率。

  • N = 总点数
  • M = 圆圈内的点
  • 直径为400

圆的面积公式

半径^2 * π 或直径^2 * π / 4

正方形的面积公式

2*半径^2或直径^2

我有公式 ( M / N ) * 4

这就是我得到它的方式:

(d^2 * π / 4) : d^2 = M : N

π / 4 = M / N

π = ( M / N ) * 4

问题是我没有得到 pi 作为输出,而是大约 14.2..

有谁知道我做错了什么?

所以在处理中我写了以下代码

float N = 0;
float M = 0;

void setup()
{
    size(400, 400);
    frameRate(90000); 
    background(255, 255, 255);
    ellipse(200,200,400,400);

}

void draw()
{

    /* Random x- en y-coordinate. */
    float x = random(0,400);
    float dx= (x-200);
    float y = random(0,400);
    float dy = (y-200);
    float d = (float)(Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2)));

    /*Red in the circle*/
    if(d <= 200 ){ 
      stroke(255,0,0);
      M++;
    } 
    else{ 
      stroke(0,255,0); /*green around the circle*/
      N++;
    }
    point(x,y);
    println

    ((M/N)*4); 

}

【问题讨论】:

  • 什么是“录取作业”?
  • 你的公式没问题,但与N的定义相反,你的N目前只计算不在圈内的点...
  • 如果你使用double而不是float,你会得到更好的结果。不要使用 pow() 对数字求平方 - 只需使用 x*x。

标签: java math processing pi


【解决方案1】:

落在圆内的点也落在正方形内,因为圆位于正方形内。

你需要做 4*M/(M+N)。

【讨论】:

  • 非常感谢,但我真的不明白你是怎么想出这个公式的
  • @LizaDarwesh 矩形中的点是 (N+M) - 所以(d^2 * π / 4) : d^2 = M : (N+M)
  • 目前,只有当一个点没有落在圆圈中时,您才会增加 N。这样 N 不代表点的总数。您可以使用的另一种方法是保留原始公式并增加 N,无论它落在哪里;在 else 子句之外。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多