Другие языки программирования и технологии

Вычислить arth Есть ли формула для проверки правильности вычисления .и правильный ли код?

Есть ли формула для проверки правильности вычисления .и правильный ли код?
static void Main()

{

Console.Write("Введите n = ");

int n = Int32.Parse(Console.ReadLine());

Console.Write("Введите x (|x| > 1) = ");

double x = Double.Parse(Console.ReadLine());



double sum = 0;



for (int i = 0; i <= n; i++)

{

sum += 1d/((2*i+1)*Math.Pow(x,2*i+1));

}



Console.WriteLine(sum);



Console.ReadLine();

}
arttanh известен испокон веков.
нет ничего особенного.
НИ
Николай Ивлев
50 253
Лучший ответ
Я Вам уже́ показывала правильный код и говорила, что у Вас в формуле разложения ошибка. Ряд дан не для функции arth(x), а для функции arth(1/x), а при |x|>1 вещественных значений ареатангенса вообще не существует, это что -непонятно? А про итерационные циклы с рекуррентными формулами Вы разве ничего не слышали, раз суёте в вычисления никому не нужную в данном случае функцию Pow с разными степенями и ненужную переменную n? Показываю ещё раз, может дойдёт:
using System; class New_Project
{ static double f(double x)
{ double s = 1, p = 1, q = 1, y = 1 / (x * x), e = 1;
while (e > 1e-17) { p *= y; q += 2; e = p / q;
s += e; } return s / x; }
static void Main() { double x, y, error;
for (;;) { Console.Write("x = ");
x = Convert.ToDouble(Console.ReadLine());
y = f(x); error = y / Math.Atanh(1 / x) - 1;
Console.WriteLine(y + ", error=" + error); } } }
Точность вычислений (у меня она относительная) всегда можно проконтролировать при помощи стандартной функцией Math.Atanh. А вот какие результаты получаются (точность достаточно сильно ухудшается при приближении модуля аргумента функции к единице):