def lagrange(f, a, b, epsilon): c=(a*f(b)-b*f(a))/(f(b)-f(a)) if abs(f(a)*f(c)) < epsilon: return c elif f(a)*f(c) < 0: return lagrange(f, a, c, epsilon) else: return lagrange(f, c, b, epsilon) def f(x): return x**3-x-1 lagrange(f, 0, 2, 0.01) Out: 1.32421875