Python

Решите задачу для информатики, прошу(язык программирования - питон)

Ряд сходится при х∈(-1;1), поэтому границы диапазона надо брать из этого множества. Заказываемая точность не обязательно соответствует фактической, особенно при |х|→1. Поэтому можно так:
 from math import log as ln 
def f(x, ε):
y, p, s, q, e = x * x, x, x, 1, 1e300
while abs(e) > ε: p *= y; q += 2; e = p / q; s += e
return 2 * s
def F(x): return ln((1 + x) / (1 - x))
xнач, xкон, dx, ε= map(float, input('xнач xкон dx ε: ').split())
n = int((xкон - xнач) / dx) + 1
print(' ' * 3, 'x: ', ' ' * 7, 'ln((1+x)/(1-x)):')
print('=' * 48)
for i in range(n):
x = xнач + i * dx; y = f(x, ε)
print('%10.7f%22.15f%16.6e' % (x, y, y - F(x)))
print('=' * 48)
В правой колонке - получающаяся фактическая абсолютная точность в сравнении с эталонной функцией.
Или так (с количеством слагаемых ряда):
 from math import log as ln 
def f(x, ε):
global k
y, p, s, q, e = x * x, x, x, 1, 1e300
while abs(e) > ε: p *= y; q += 2; e = p / q; s += e
k = (q + 1) // 2
return 2 * s
xнач, xкон, dx, ε= map(float, input('xнач xкон dx ε: ').split())
n = int((xкон - xнач) / dx) + 1
print(' ' * 3, 'x: ', ' ' * 7, 'ln((1+x)/(1-x)):', ' ' * 5, 'k:')
print('=' * 42)
for i in range(n):
x = xнач + i * dx
print('%10.7f%22.15f%10d' % (x, f(x, ε), k))
print('=' * 42)
Алексей Неб
Алексей Неб
66 572
Лучший ответ
Ирина Жданеева Точность знакопостоянных рядов определяется не так. Поэтому и не соответствует заказываемой.
Ща 5 сек