Тема: Скласти алгоритм обчислення значення функції
Завдання:
Скласти алгоритм і програму обчислення значення функції, представленої у вигляді суми елементів нескінченного збіжного ряду з точністю eps1 = 0.01 і eps2 = 0.0001. Вивести значення суми елементів ряду s, кількість ітерацій (n), за яких було досягнуто заданої точності (еps).
S=arth(x)=x+x^3/3+x^5/5+x^7/7+⋯ |x|≤1
Ось, що мені вдалося написати:
#include <stdio.h>
#include <math.h>
int main() {
double eps, x, sum, intr, secondSum;
int iter;
scanf("%lf", &eps);
scanf("%lf", &x);
if (x != 1) {
secondSum = 0.5 * log((1 + x) / (1 - x));
} else {
printf("x can not be equal 1");
return 0;
}
intr = x;
while (intr > eps) {
intr = ((pow(x, iter)) / iter);
sum += intr;
iter += 2;
}
printf("Sum of sequence = %lf\n", sum);
printf("arth(x) = %lf", secondSum);
return 0;
}
Проблема в тому, що "Sum of sequence" не виводиться в консолі, воно постійно виводить inf. Також точність (eps) чомусь взагалі не впливає на результат, хоча по ідеї точність результату повинна змінюватися при різних значеннях eps. Ну і чомусь компілятор свариться на те, що використовується неініціалізована локальна змінна "iter" та "sum", тому я їм задаю початкове значення 0 (double sum=0; int iter=0).
Буду дуже вдячний за допомогу!