C中的Arctan Taylor系列

时间:2016-10-17 02:33:28

标签: c

我需要为反正切50次执行泰勒级数。意思是arctan泰勒系列域之间的50个数,即[-1,1]。我已经用手动用户输入测试了它并且它工作正常,但是50个不同输入的for循环,我在代码中增加0.01并且它们的相应结果不成功。到目前为止,我已经尝试了所有我能想到的东西,我没有想法。任何帮助,将不胜感激。围绕泰勒系列的括号是否存在与其他环路冲突的问题?我怀疑它是括号,但是当我试图修复它时没有工作。

#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;
}

2 个答案:

答案 0 :(得分:2)

在您发布的代码中,内部循环位于变量x上方,外部循环超过了幂n。

我认为你想要为x的每个值求和n的值,所以n上的循环应该是内循环。

我认为你还需要为x的每个值零和tSeries。

最后,我希望你能在计算总和后打印答案,所以printf应该在n循环之外。

评估电源系列有一些技巧。我喜欢Numerical Recipes这种东西。尝试第5章关于功能的评估。 (Numerical Recipes in C,Press et al。,2nd Ed。,1992,CUP。)

要立即注意的一点是,在固定幂级数的上限时,您正在评估多项式。我的NR副本第5.3节建议强烈反对使用pow()的一个调用。他们对此非常坚定!

如果您希望我发布正确的代码,请与我们联系。

答案 1 :(得分:1)

你把循环混合在一起,内部循环反复出现,反之亦然。

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(void)
{
  double n;
  double x;
  double tSeries = 0.0;
  double t2;
  double t1;

  for (x = -1; x <= 1; x += 0.01) {
    for (n = 0; n <= 50; n++) {
      t1 = (pow(x, 2 * n + 1)) * pow(-1, n);
      t2 = t1 / (2 * n + 1);
      tSeries += t2;
    }
    printf("arctan(%lf)=%lf (%lf)\n", x, tSeries, atan(x));
    tSeries = 0.0;
  }
  return 0;
}