23551 发表于 2017-11-26 12:44:44

圆周率求解

题目是由近似公式π/2=2/1*2/3*4/3*4/5*6/5*6/7...... 以此类推(保留六位小数)。

#include<stdio.h>

int main()
{
    double pi=1.0;
    int s,n,t;
    s=2,t=1;

    for(n=1;n<50;n++)
      {
            pi=s/t*pi;
            t=t+2;
            pi=pi*s/t;
            s=s+2;
      }
    pi=2*pi;
    printf("%.6f",pi);
    return 0;
}

23551 发表于 2017-11-26 12:47:14

问题在哪?我实在是发现不了

BngThea 发表于 2017-11-26 12:53:05

这公式有问题吧,怎么看都不是收敛的

23551 发表于 2017-11-26 12:58:52

BngThea 发表于 2017-11-26 12:53
这公式有问题吧,怎么看都不是收敛的

我已经进了死胡同

BngThea 发表于 2017-11-26 13:05:50

23551 发表于 2017-11-26 12:58
我已经进了死胡同

用泰勒公式在0处展开一下

23551 发表于 2017-11-26 13:24:16

BngThea 发表于 2017-11-26 13:05
用泰勒公式在0处展开一下

大一的我而且学数六的我并不知道泰勒公式怎么用。。。。。。

23551 发表于 2017-11-26 15:52:52

#include <stdio.h>
    int main()
    {
      double pi=1;
      double n=1;
      for(int i=1;i<=100000;i++)
            {
                if(i%2==0)
                      n=(double)i/(i+1);
                else
                      n=(double)(i+1)/i;
                pi*=n;
}
      printf("所求结果的近似值为:%.6f\n",2*sum);
      return 0;
}
页: [1]
查看完整版本: 圆周率求解