А почему функция перепутана? Вот же разложение гиперболического арктангенса при х є (-1;1), в чём можно сразу удостовериться, загуглив в Википедии:
arth x = x + ⅓·x³ + ⅕·x⁵ + ⅐·x⁷ +..
А та функция что в вопросе - это разложение гиперболического арккотангенса arcth(x) в диапазоне |х|>1. Вот программа её табуляции на отрезке [a;b] с количеством n равномерных интервалов на нём (a, b и n вводятся с экрана):
using System;
namespace CSharp_Shell
{ class Program
{ public static int N;
public static double arcth(double x)
{ double p = 1.0 / x, s = p,
q = 1, e = 1e303, y = p * p;
while (e > 1e-19) { p *= y; q += 2.0;
e = p / q; s += e; } N = (int)(q+1)/2;
return s; }
public static void Main()
{ double a, b, h, x, y; int i, n; string s;
Console.Write("a b n » ");
var line = Console.ReadLine().Split(" ");
a = double.Parse(line[0]);
b = double.Parse(line[1]);
n = int.Parse(line[2]); h = (b - a) / n;
for (i = 0; i <= n; i++)
{ x = a + i * h; y = arcth(x);
s = String.Format(
"{0,12:f8} »{1,20:f16}, {2,11:e4}, {3,10:d}",
x, y, Math.Abs(y /(0.5 * Math.Log((x + 1) / (x - 1)))-1), N); Console.WriteLine(s); } } } }
Печатаются текущий аргумент функции, её вычисленное значение, модуль относительной погрешности и количество просуммируемых слагаемых. При х слабо отличающихся от единицы сходимость плохая, точность не очень хорошая, а количество итераций резко возрастает. При увеличении х всё сразу улучшается, так что точность е можно вообще не задавать, она всегда будет примерно машинной для чисел типа double (или decimal, eсли программу что внизу чуть-чуть изменить). Столбик с ошибками можно убрать, а заголовок и шапку - самостоятельно!. (•‿•)
