Не могу понять, как можно реализовать это (если можно, попробуйте объяснить мне, как все нужно делать):
При значениях x и Е, определяемых вводом, вычислить сумму тех слагаемых заданного вида, которые по абсолютной величине больше Е. Подсчитать количество таких слагаемых N. Выполнить суммирование для двух значений Е, отличающихся на порядок (в 10 раз)
|x| < 1 arcctg (x) = PI/2 - x + x^3/3 - x^5/5 + ... + (-1)^n * x^(2n - 1)/(2n - 1)
Ну, а немного "причесал" ваш код...
double Paul(double x, double eps)
{
double y = 1, summa = 0, last = 1;;
for (; fabs(last) > eps;)
{
last = pow(-1, y) * pow(x, 2 * y - 1) / (2 * y - 1);
summa += last;
y+=1;
}
return pi/2 + summa;
}
double Harry(double x, double eps)
{
double summ = pi/2 - x, x2n_1 = -x;
x *= x;
for(int k = 3; fabs(x2n_1/k) > eps; k += 2)
{
x2n_1 *= -x;
summ += x2n_1/k;
}
return summ;
}
Получается, что он считает так же, как и мой, а главное - как и арккотангенс :)
Так что все нормально. Только мой просто потому, что не вычисляет все эти pow, считает примерно в восемь раз быстрее, так что посмотрите просто из интереса, чем он отличается от вашего..
Сборка персонального компьютера от Artline: умный выбор для современных пользователей