永发信息网

急求C语言/c++编程,用幂级数求圆周率近似值.

答案:4  悬赏:80  手机版
解决时间 2021-02-04 12:15
  • 提问者网友:凉末
  • 2021-02-04 02:34
急求C语言/c++编程,用幂级数求圆周率近似值.
最佳答案
  • 五星知识达人网友:醉吻情书
  • 2021-02-04 03:54
//下面的程序经测试过是正确的。
#include
#include
double Arctan(double a,float x)
{
int i=0,s=1;
double d=0,d1=0,d2;
double y=0;
do
{
d2=d1;
y=pow(x,2*i+1);
d+=s*y/(double)(2*i+1);
s*=-1;
i++;
d1=d;
}
while(fabs(d1-d2)>=1e-5);
return a*d1;
}
void main()
{
double y1=0;
double y2=0;
double y3=0;
y1=Arctan(16,1.0/5);
printf("%lf\n",y1);
y2=Arctan(4,1.0/239);
y3=y1-y2;
printf("%lf\n",y3);
}
全部回答
  • 1楼网友:西风乍起
  • 2021-02-04 06:44
粗略滴看了下,不知道是否是d1=s这个有些问题。。可能是d1=d??
  • 2楼网友:我住北渡口
  • 2021-02-04 04:57
错误比较多。
计算反正切的函数有错;
y1=Arctan(16,1/5);右边的1/5明显结果为0好吧。
#include
#include
double Arctan(double a,float x)
{
int i = 1,s=1;
double d=0,d1=0,d2;
double y=0;
do //do...while里面就不要再用for了。
{
d2=d1;
y=pow(x,2*i-1);
d+=s*y/(double)(2*i-1);
s*=-1;
i++;
d1=d; //这里你也写错了。
}while(fabs(d1-d2)>=1e-5);
return a*d1;
}
void main(){
double y1=0;
double y2=0;
double y3=0;
y1=Arctan(16,1.0/5); //打印y1没有意义;另外注意1/5的结果为0
y2=Arctan(4,1.0/239);
y3=y1-y2;
printf("%lf",y3);}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯