编写程序用下面公式求π的近似值 π/4 ≈ 1- 1/3+1/5-1/7+…… 直到最后一项的绝对值小于10-7 为止

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写程序用下面公式求π的近似值 π/4 ≈ 1- 1/3+1/5-1/7+…… 直到最后一项的绝对值小于10-7 为止相关的知识,希望对你有一定的参考价值。

#include<iostream>
using namespace std;
int main()

float pi,x=0;
int i;
for(i=1; ;i++)
int y;
if(1/y>0.0000001)
y=2*i-1;
if(i%2==1)
x=x+1/y;

if(i%2==0)
x=x-1/y;


else if(1/y<0.0000001)break;

pi=x*4;
cout<<"pi="<<pi;
求告知哪里出错了!!!!

#include<iostream>
using namespace std;
int main()

int i = 1, sign = 1;
double t = 1, pi = 0;
while (fabs(t) >= 1e-7) 
pi = pi + t;
i = i + 2;
sign = -sign;
t = sign*1.0 / i;

cout << "pi= " << 4 * pi << endl;
return 0;

追问

能用for语句吗😳😳

还有fabs啥意思

参考技术A #include <stdio.h>
#include <math.h>
int main()

int f;
float n;
double t,pi;
t=1;pi=t;f=1;n=1.0;
while(fabs(t)>=1e-7)

n=n+2;
f=-f;
t=f/n;
pi=pi+t;

pi=pi*4;
printf("pi=%10.6f\n",pi);

C语言 求π的近似值

点击上方“蓝字”关注我们
C语言 求π的近似值




愉快的一天,不得不做的三件事:

        种田,锄地,整代码!!!






【题目】



用循环方法实现。

(1)请利用“正多边形逼近”的方法求出π的近似值。

(2)利用随机数法求π的近似值。






【设计思路】


1)“正多边形逼近”的方法思路:


利用圆内接正六边形边长等于半径的特点将边数翻番,作出正十二边形,求出边长,重复这一过程,就可获得所需精度的π的近似值。

C语言 求π的近似值



2)随机数法求π的近似值的思路:


在一个单位边长的正方形中,以边长为半径,以一个顶点为圆心,在正方形上作四分之一圆。


随机的向正方形内扔点,若落入四分之一圆内则计数。


重复向正方形内扔足够多的点,将落入四分之一圆内的计数除以总的点数,其值就是π值四分之一的近似值。


该方法求出的π值只有统计次数足够多时才可能准确。





【代码分析】


double b,d,b0; 

 /*b为多边形边长,d为圆半径与三角形中线之差*/


long i;   

 /*内接多边形的边数*/


  for(i=6,b=0.5;;i*=2)    

/*首先单位圆内接正六边形,初始b等于半径的一半,即为0.5;每次循环,内接多边形边数翻一倍*/


  {

  b0=b;

/*保存本次正多边形的边长作为精确度控制的依据*/


  d=1-sqrt(1-b*b);

  b=sqrt(b*b+d*d)/2;

  if(2*b*i-b0*i<1e-15)    

  break;

/*精确度达到1e-15时,跳出循环*/


}

printf("方法一得到:π=%.15lf\n",2*i*b);



#define N 1e6    //定义一百万个种子



long i;

double x,y,k,PI;


srand((unsigned)time(NULL)); 

/*srand()函数用来设置算法的种子,time(NULL)返回当前的时间,先调用srand(time(NULL)),把当前的时间作为种子,使程序每次运行产生不同的随机数*/


for(i=0,k=0;i<N;i++)

{

x = rand() / (double)RAND_MAX;

y = rand() / (double)RAND_MAX;

/*RAND_MAX 是 <stdlib.h> 中伪随机数生成函数 rand 所能返回的最大数值,此时得到一个 0~1.0 之间的随机浮点数*/


if (sqrt((x - 0.5)*(x - 0.5) + (y - 0.5)*(y - 0.5)) <= 0.5) 

    k++;    

/*记录落入四分之一圆的点数*/

}


PI=4*k/N;

printf("方法二得到:π=%.15f\n",PI);





【代码展示】


C语言   求 π 的近似值

#include<stdio.h> 

#include<math.h>

#include<stdlib.h>

#include<time.h>

#define N 1e6

 

void main1()

{

  double b,d,b0;

long i;

 

  for(i=6,b=0.5;;i*=2)

  {

  b0=b;

  d=1-sqrt(1-b*b);

  b=sqrt(b*b+d*d)/2;

  if(2*b*i-b0*i<1e-15)

  break;

}

    printf("方法一得到:π=%.15lf\n",2*i*b);

 }

 

void main2()

{

long i;

double x,y,k,PI;

srand((unsigned)time(NULL)); 

for(i=0,k=0;i<N;i++)

{

x = rand() / (double)RAND_MAX;

  y = rand() / (double)RAND_MAX;

  if (sqrt((x - 0.5)*(x - 0.5) + (y - 0.5)*(y - 0.5)) <= 0.5) 

    k++;

}

PI=4*k/N;

printf("方法二得到:π=%.15f\n",PI);

}


void approximation()

{

printf("-------欢迎进入<求π的近似值>操作界面-------\n\n");

main1();

main2();

}


int main()

{

approximation();

return 0;

}



【运行结果展示】


C语言 求π的近似值






IT 农工要回家休息了,我们下期再见吧

记得点击“在看”进行收藏哦




往期精彩





以上是关于编写程序用下面公式求π的近似值 π/4 ≈ 1- 1/3+1/5-1/7+…… 直到最后一项的绝对值小于10-7 为止的主要内容,如果未能解决你的问题,请参考以下文章

python利用公式:π/4=1-1/3+1/5-1/7+……,求π的近似值

编写程序:计算π的近似值,π的计算公式为

C语言试题九十一之写一个程序,用公式π/4=1-1/3+1/5-1/7+...,求π的近似值,直到最后一项的绝对值小于10^-8为止。

C语言试题九十一之写一个程序,用公式π/4=1-1/3+1/5-1/7+...,求π的近似值,直到最后一项的绝对值小于10^-8为止。

用公式π/4≈1/1-1/3+1/5-1/7+...求π的近似值,直到发现某一项的绝对值小于10的-6次方为止。

用公式π/4≈1/1-1/3+1/5-1/7+...求π的近似值,直到发现某一项的绝对值小于10的-6次方为止。