Proc 43. Описать функцию \(\text{Ln1}(x, \varepsilon)\) вещественного типа (параметры \(x, \varepsilon\) -  вещественные, \(|x| < 1\), \(\varepsilon > 0\)), находящую приближенное значение функции ln(1+x):

\[\ln(1+x) = x - x^2/2 +x^3/3 - ... + (-1)^n\cdot x^{n+1}/(n+1) + ...\]

В сумме учитывать все слагаемые, модуль которых больше \(\varepsilon\). С помощью Ln1 найти приближенное значение ln(1+x) для данного x при шести данных \(\varepsilon\).

Решение на Python 3

import random
import math

def Ln1(x,eps):
if eps <= 0:
print("Epsilon should be greater than 0")
y = x
f = x
i = 2
while abs(y) > eps:
y *= (-1) * x / i * (i - 1)
i += 1
f += y
#print(i,":",y,":",f)
return f

eps = 0.01
for i in range(0, 6):
#x = -0.5
#x = 2
x = 0.1
print("ln( 1 +",x,") = ",Ln1(x,eps),";",math.log(1+x))
eps /= 10