我需要执行泰勒系列arctangent 50次。意思是arctan泰勒级数域[-1,1]之间的50个数字。我已经用手动用户输入测试了它,并且它工作正常,但是对于50个不同输入的for循环,我在代码中增加了0.01,并且它们的相应结果不成功。到目前为止,我已经尝试过所有我能想到的,我没有想法。任何帮助,将不胜感激。围绕Taylor系列的括号与另一个for循环有冲突吗?我怀疑这是括号,但是当我尝试修复它时没有工作。Arctan泰勒系列在C
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
main (void) {
double n;
double x;
double tSeries=0.0;
double t2;
double t1;
for(n=0;n<=50;++n) {
for(x=-1;x<=1;x=x+0.01) {
t1=(pow(x,2*n+1))*pow(-1,n);
t2=t1/(2*n+1);
tSeries+=t2;
printf("arctan(%lf)=%lf\n",x,tSeries);
}
}
return 0;
}
你的描述看起来相当困惑,代码没有多大帮助。它看起来像'x'表示arctangent函数的参数,但该变量在程序过程中需要201个不同的值,而不是50.变量'n'在程序中需要51个值,但这似乎代表扩张中的一个术语。最好的情况是,你的嵌套是向后的 - 'x'上的循环应该是外部的,或者对我来说是这样。 –
您应该使用函数来计算传入的值的反正切值。然后安排一个循环来调用具有不同值的循环,并在循环中每次打印结果。这将避免这些问题。功能是你的朋友。 –
请注意,浮点数的重复增量通常是一个糟糕的主意。 “浮点数就像一小堆沙子;每次移动一个沙子,你就会失去一点沙子,并且会得到一点污垢。”(Kernighan&Plauger - 编程风格的元素,引用了这位多产的作者的匿名)。你可以使用'for(int i = -100; i <= 100; i ++){double x = i/100.0; ...}以获得更好的准确性。您可以在块的顶部(在任何版本的C中的'{')之后声明变量,并且最好将变量的范围减小到最小。 –