早教吧作业答案频道 -->其他-->
编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代).请编写函数fun,其功能是根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代).π/2
题目详情
编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代).
请编写函数fun,其功能是根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代).
π/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+……+(1*2*3*4*……*n)/(3*5*7*……*(2n+1))
程序运行后,若输入精度为0.0005,则输出为3.1416
#include
#include
double fun ( double eps)
{ double pi=0,a=1,i;
for(i=1;a>=eps;i++){
pi=pi+a;
a=a*i/(2*i+1);
}
return 2*pi;
}
main( )
{ double x;void NONO ();
printf("Input eps:") ;
scanf("%lf",&x); printf("\neps = %lf,PI=%lf\n",x,fun(x));
NONO();
}
double fun ( double eps)
{ double s=1.0,s1=1.0; int n=1;
while(s1>=eps) /*当某项大于精度要求时,继续求下一项*/
{s1=s1*n/(2*n+1); /*求多项式的每一项*/
s=s+s1; /*求和*/
n++; } return 2*s; }
请编写函数fun,其功能是根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代).
π/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+……+(1*2*3*4*……*n)/(3*5*7*……*(2n+1))
程序运行后,若输入精度为0.0005,则输出为3.1416
#include
#include
double fun ( double eps)
{ double pi=0,a=1,i;
for(i=1;a>=eps;i++){
pi=pi+a;
a=a*i/(2*i+1);
}
return 2*pi;
}
main( )
{ double x;void NONO ();
printf("Input eps:") ;
scanf("%lf",&x); printf("\neps = %lf,PI=%lf\n",x,fun(x));
NONO();
}
double fun ( double eps)
{ double s=1.0,s1=1.0; int n=1;
while(s1>=eps) /*当某项大于精度要求时,继续求下一项*/
{s1=s1*n/(2*n+1); /*求多项式的每一项*/
s=s+s1; /*求和*/
n++; } return 2*s; }
▼优质解答
答案和解析
无论是你的答案还是正确答案 都有问题
你的答案 问题在于自变量i设置成了double型
浮点型 做自加操作的时候可能导致死循环的 也就是你的程序 如果精度设置的特别高会出问题
所谓的正确答案,没有这个问题 但是不符题意
即某项小于0.0005时停止迭代
正确答案中是某项小于精度后 把该项累加并在下一项停止迭代
下面是把你的程序改成了完全符合“正确答案”的代码
PS:题目中也有一个错误 当精度为0.0005时 输出的是3.141106 即保留四位小数位3.1411
要想输出3.1416 最低精度为0.00002
#include
double fun ( double eps)
{ double pi=1,a=1;
\x09int i;
for(i=1;a>=eps;i++){
a=a*i/(2*i+1);
pi=pi+a;
}
return 2*pi;
}
main( )
{ double x;
printf("Input eps:") ;
scanf("%lf",&x); printf("\neps = %lf, PI=%.4lf\n", x, fun(x));//输出4位小数
}
你的答案 问题在于自变量i设置成了double型
浮点型 做自加操作的时候可能导致死循环的 也就是你的程序 如果精度设置的特别高会出问题
所谓的正确答案,没有这个问题 但是不符题意
即某项小于0.0005时停止迭代
正确答案中是某项小于精度后 把该项累加并在下一项停止迭代
下面是把你的程序改成了完全符合“正确答案”的代码
PS:题目中也有一个错误 当精度为0.0005时 输出的是3.141106 即保留四位小数位3.1411
要想输出3.1416 最低精度为0.00002
#include
double fun ( double eps)
{ double pi=1,a=1;
\x09int i;
for(i=1;a>=eps;i++){
a=a*i/(2*i+1);
pi=pi+a;
}
return 2*pi;
}
main( )
{ double x;
printf("Input eps:") ;
scanf("%lf",&x); printf("\neps = %lf, PI=%.4lf\n", x, fun(x));//输出4位小数
}
看了编写函数fun,其功能是:根据...的网友还看了以下:
为什么f/11接纳的光量是f/4的f/8?为什么f/11接纳的光量是f/4的f/8?为什么f/2的 2020-05-17 …
揣摩下面句子中“精疲力竭”的意思和其中“精”的意思,写出三个含有“精”字的成语,其中的“精”要与“ 2020-06-21 …
设警方对司机饮酒后驾车时血液中酒精含量的规定为不超过80%(mg/ml).现有一起交通事故,在事故 2020-06-27 …
质量为m的物体静止在粗糙的水平地面上,从t=0时刻开始受到方向恒定的水平拉力F作用,F与时间t的关 2020-07-01 …
质量为m的物体静止在粗糙的水平地面上,从t=0时刻开始受到方向恒定的水平拉力F作用,F与时间t的关 2020-07-25 …
问个微积分问题,对于定积分∫A(-A)f(x)dx(其中A在上,-A在下),当f(x)是奇函数时候 2020-07-30 …
如图,点B,D位于AC的两侧,且AB=CD.过E,F分别作DE⊥AC于E,BF⊥AC于F,这时恰有A 2020-11-03 …
一质点静止在光滑水平面上,现对其施加水平外力F,F随时间按正弦规律变化,如图所示,下列说法正确的是( 2020-11-27 …
当有主动力F作用于不受其他主动力的连杆ABC铰链处B点的销钉上,对连杆局部AB进行受力分析,此时AB 2020-11-30 …
阿尔法飞船上有两类精灵,一类精灵总是说谎,一类精灵从不说谎,每个精灵都知道其他精灵分别是什么类型,有 2020-12-23 …