Как записать данное выражение на языке с++?

Y = arctg x = x – x3/3 + x5/5-...+ (-1)n x2n+1/(2n+1)+ ... (|х|<1).


Ответы (2 шт):

Автор решения: Swift - Friday Pie

Вообще такое выращение - сумма бесконечного количества элементов, i-й элемент имеент представление:

     S(i) = (-1)ⁱ⁻¹ × ( xⁱ ) / i,          i = 1...∞

Как определить когда остановиться? Скорее всего задан какой-то критерий точности. Условия могут различаться.

Вещи которые следует учесть.

  1. Значения получением возведение в степень можно запоминать из итерации в итерацию, но значения х у нас очень маленькие, поэтому накапливается ошибка. Этот эффект можно уменьшить, вычисляя степени величины X = (1.0/x):

    S(i) = (-1)ⁱ⁻¹ / ( i × Xⁱ ),          i = 1...∞
    
  2. В случае немонотонных рядов точность не определяется величиной последненго вычисленного члена.

→ Ссылка
Автор решения: Harry

Примерно так, и никаких pow!:

double y(double x, double eps)
{
    double s = x, t = x;
    x *= x;
    for(int i = 3;abs(t) > eps;i+=2)
        s += (t *= -x)/i;
    return s;
}
→ Ссылка