Название почти самоочевидно. Я пытался приблизить ряд, который мог бы быть записан как 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;
}