永发信息网

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

答案:6  悬赏:10  手机版
解决时间 2021-01-03 04:41
这里已知pi=16arctan1/5-4arctan1/239,要求运用arctanx幂级数展开式建立数值计算方法通过上式计算pi,并且误差小于10^-5.下面是我编写的一个程序,但运行不出结果,请高手纠正错误.高手们也可自己编写能运行的程序发来,不胜感激.arctanx幂级数展开式我就不写在这了.
#include<stdio.h>
#include<math.h>
double Arctan(double a,float x)
{
int i,s=1;
double d=0,d1=0,d2;
double y=0;
do
{
for(i=0;i<=30000;i++)
{ d2=d1;
y=pow(x,2*i-1);
d+=s*y/(double)(2*i-1);
s*=-1;
i++;
d1=s;
}
}while(fabs(d1-d2)>=1e-5);
return a*d1;
}
void main(){
double y1=0;
double y2=0;
double y3=0;
y1=Arctan(16,1/5);
printf("%lf",y1);
y2=Arctan(4,1/239);
y3=y1-y2;
printf("%lf",y3);}

#include<stdio.h>
#include<math.h>
double Arctan(double a,float x)
{
int i,s=1;
double d=0,d1=0,d2;
double y=0;
do
{
for(i=0;i<=30000;i++)
{ d2=d1;
y=pow(x,2*i-1);
d+=s*y/(double)(2*i-1);
s*=-1;
i++;
d1=s;
}
}while(fabs(d1-d2)>=1e-5);
return a*d1;
}
void main(){
double y1=0;
double y2=0;
double y3=0;
y1=Arctan(16,1/5);
printf("%lf",y1);
y2=Arctan(4,1/239);
y3=y1-y2;
printf("%lf",y3);}
最佳答案
错误比较多。
计算反正切的函数有错;
y1=Arctan(16,1/5);右边的1/5明显结果为0好吧。

#include<stdio.h>
#include<math.h>
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);}
全部回答
粗略滴看了下,不知道是否是d1=s这个有些问题。。可能是d1=d??
有C和C++的课程视 频,是否可以帮到你呢? 希望对你有用! 记得采纳噢
#include&lt;stdio.h&gt; #include &lt;string.h&gt; int main(void) { double pi = 0; int num = 0; int flag = 1; printf("输入要循环的次数,循环次数越多结果越精确!\n"); scanf("%d",&amp;num); int i = 0; for (i = 0;i &lt; num ;i++) { pi+= (1.0/(i*2+1)*flag); flag *= -1; } printf("π= %f\n",4*pi); return 0; }
//下面的程序经测试过是正确的。 #include<stdio.h> #include<math.h> 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); }
#include<stdio.h>#include<math.h> double Arctan(double a,float x) { // int xishu = 1; double arctanxold=0.0, arctanxnew = 0.0; int n=1; // arctanx = x - x^3/3 + x^5/5 + (-1)^(n-1)*[x^(2n-1)/(2n-1)] do { arctanxold = arctanxnew; arctanxnew += powf(x, (2*n-1))/(2*n-1) * xishu; // 这里要使用powf做小数的幂运算 xishu *= -1; n++; }while(fabs(arctanxnew-arctanxold)>=1e-5); return a*arctanxnew; } void main() { double y1=0; double y2=0; double y3=0; y1=Arctan(16,1.0/5); // 这里要使用一个小数作为系数来做, 否则 1/5=0 printf("%lf\n",y1); y2=Arctan(4,1.0/239); y3=y1-y2; printf("%lf\n",y3); }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
什么手机唱歌效果好
通过一年的学习,相信你一定能利用化学知识解
有一首歌歌词是天是那么蓝地是那么大是什么歌
单选题为了保证市场经济的有序运行,我国制定
琴什么书画四字词语
梁咏琪什么星座
dnf女气功光兵加点与配装 dnf女气功怎样打安
对于"僵尸"描述
如何写学术论文的rebuttal
The finance minister has not been so sinc
姓马的女孩名字两个字
急~上海飞成都,一个人,托运行李超过20公斤
股价异动停盘时间多久
女方起诉男方一遍了可男方就不同意怎么办,
单选题有关我国土地资源的分布叙述,错误的是
推荐资讯
加法运算定律是什么?
众和社区居委会办公位置在哪啊?好找么?
移动装宽带工作怎么样
你好,我的oppo手机云服务上的东西下载不下来
多于英文怎么说
大苹果幼儿园地址有知道的么?有点事想过去
矢量的平方等于矢量的模的平方么?
皇帝的新装(12分)阅读答案
单选题能体现少数民族“小聚居”分布特点的地
扶危济困的近义词
在韩国上大学多少钱
日语:我们一起玩 怎么说?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?