Может быть, вам понравится решение SymPy ?
from sympy import *
xi = [1, 2, 3, 5, 6]
yi = [10, 17, 8, 2, 4]
n = len(xi)
assert n == len(yi), "xi and yi need to be the same length"
x = Symbol('x', real=True)
lagrange_base = [prod([(x-xi[j])/(xi[i]-xi[j]) for j in range(n) if j != i ]) for i in range(n)]
lagrange = sum([yi[j] * lagrange_base[j] for j in range(n)])
#print(lagrange)
lagrange = simplify(lagrange)
print(lagrange)
print("for x=4: ", lagrange.subs(x, 4))
Это напечатает:
-31*x**4/60 + 491*x**3/60 - 2651*x**2/60 + 5401*x/60 - 87/2
for x=4: 11/10