标题几乎是不言自明的。我试图近似一个可以写为f(x)=x¹/(1x2)-x³/(3x4)+ x ^(5)/(5x6)+ ...的级数,条件是总和应停止当术语的模块低于用户输入的公差时。因此,例如,如果x = 0.5且公差= 0.01,则结果应为0.239583,因为那是前两项的总和(均高于0.01)。下面的代码仅计算第一项,然后由于我无法弄清楚的原因而停止循环。如何进行?
int main()
{
double x, e, result=0, term;
int i=1;
printf("Write some value to x: ");
scanf("%lf", &x);
if(x<-1 || x>1)
{
printf("Invalid number");
}
else
{
printf("Write the tolerance: ");
scanf("%lf", &e);
do
{
term=(pow(x, 2*i-1)*pow(-1, i+1))/((2*i-1)*(2*i));
result+=term;
i+=1;
}
while(abs(term)>=e);
printf("The result is: %.6lf", result);
}
return 0;
}