Я проверял функцию при
x=2.
Мой код:
def compute_ln(x, eps):
if x <= 0:
return float('-inf') # Логарифм от неположительного числа равен минус бесконечности.
if x == 1:
return 0 # Логарифм от 1 равен 0.
if x < 0:
return float('nan') # Логарифм от отрицательного числа является комплексным числом.
term = x - 1
result = term
n = 2
while abs(term) > eps:
term *= -(x - 1)
term /= n
result += term
n += 1
return result
x = 2.0 # Замените x на ваше значение
eps = 1e-6 # Замените eps на вашу желаемую точность
result = compute_ln(x, eps)
print(f"ln({x}) = {result}")
Результат этого кода:
ln(2.0) = 0.6321205357142857
.
Ещё есть такой вариант:
x = 2
eps = 1e-6
result = 0
term = x - 1
n = 1
while abs(term) > eps:
result += term
n += 1
term = ((-1)**(n-1) * (x-1)**n) / n
print(result)
Результат:
0.6931476805602526
.