Как записать данное выражение на языке с++?
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...∞
Как определить когда остановиться? Скорее всего задан какой-то критерий точности. Условия могут различаться.
Вещи которые следует учесть.
Значения получением возведение в степень можно запоминать из итерации в итерацию, но значения х у нас очень маленькие, поэтому накапливается ошибка. Этот эффект можно уменьшить, вычисляя степени величины
X = (1.0/x):S(i) = (-1)ⁱ⁻¹ / ( i × Xⁱ ), i = 1...∞В случае немонотонных рядов точность не определяется величиной последненго вычисленного члена.
Автор решения: 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;
}