21xrx.com
2024-12-22 20:10:51 Sunday
登录
文章检索 我的文章 写文章
使用C++计算π的近似值
2023-07-04 18:02:34 深夜i     --     --
C++ 计算 π 近似值 算法

计算π(圆周率)是自古以来数学上的一个经典难题,它的精确值是3.1415926535897932384626433832795028841971……虽然这个小数点后的数字一直在不断延伸,但直到今天也没人能够算出它的精确值。然而,使用计算机可以通过算法来尽可能地逼近它的实际值。下面介绍使用C++计算π的近似值的方法。

通过公式计算π的值:

圆的面积公式:S=πr^2。推导可得: π=S/r^2。

我们可以根据上面的公式,计算正方形的面积,再减去内接圆的面积,从而获得一个初始近似值π≈3,然后再通过多次迭代方法,逐渐逼近π的实际值。

样例代码

//利用面积法计算pi的近似值

#include

#include

#include

#include

#include

using namespace std;

double random(double a, double b)

{

  return a + (b - a)*rand()/(RAND_MAX+1.0);

}

double Pi(int n)

{

  int i, k=0;

  double x, y;

  //随机数种子

  srand((unsigned)time(NULL));

  for (i=0; i

  {

    x = random(-1.0, 1.0);

    y = random(-1.0, 1.0);

    if (x*x+y*y<=1.0)

      k++;

  }

  return 4.0*k/n; //返回pi的近似值

}

int main()

{

  int n;

  double pi;

  cout<<"请输入迭代次数n= ";

  cin>>n;

  pi = Pi(n);

  cout<<"迭代"< <<"次后,pi ≈ "< < < <

  return 0;

}

在上面的程序中,我们使用了随机数生成器来模拟投点法,即在一个正方形中随机产生N个点,然后判断这些点是否在圆的内部(这里我们可把正方形看成圆的内切正方形),从而得到pi的近似值。

运行代码后,输入迭代次数n=1000,我们得到结果为:迭代1000次后,pi ≈ 3.184000。

这个结果显示与3.1415926535897932384626433832795028841971……有一定的误差,但是我们可以发现,通过增加迭代次数,可以逐渐逼近圆周率的实际值。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复