Вы можете кодировать подпрограмму самостоятельно, используя модуль sympy
в Python.(Это популярный сторонний модуль для Python.) В этом коде используется базовая формула для полинома Лагранжа , полинома наименьшей степени, который дает данную последовательность.Этот код позволяет вам определять свои собственные x
-значения в дополнение к y
-значениям: если вы не определите x
-значения, эта подпрограмма будет использовать 1, 2, ...
.Обратите внимание, что есть другие способы получить этот многочлен - я использовал формулу, использованную в Википедии в ссылке.
import sympy
x = sympy.symbols('x')
zeropoly = x - x
onepoly = zeropoly + 1
def lagrangepoly(yseq, xseq=None):
"""Build a Lagrange polynomial from a sequence of `y` values.
If no sequence of `x`s is given, use x = 1, 2, ..."""
if xseq is None:
xseq = list(range(1, len(yseq) + 1))
assert len(yseq) == len(xseq)
result = zeropoly
for j, (xj, yj) in enumerate(zip(xseq, yseq)):
# Build the j'th base polynomial
polyj = onepoly
for m, xm in enumerate(xseq):
if m != j:
polyj *= (x - xm) / (xj - xm)
# Add in the j'th polynomial
result += yj * polyj
return sympy.expand(result)
С этой подпрограммой выполнение print(lagrangepoly([1, 4, 9, 16]))
возвращает распечатку
x**2
что составляет x^2
в нотации Python.