ラグランジュ基底多項式とSympy

以下の多項式をラグランジェ基底多項式と呼ぶ。

\begin{equation}
L_k(x) := \frac{\Pi_{j \neq k} (x-x_j)}{\Pi_{j \neq k} (x_k-x_j)}
\end{equation}

手計算では大変そうなので、sympyを使ってみた。 Polynomials Manipulation Module Reference – SymPy 1.12 documentation を参考にすると、 3次のラグランジェ基底多項式 \(L_3(x)\) は下記のようになる。

import sympy
from sympy.core import Add, Mul, symbols
from sympy.abc import x, y

n = 3
X = symbols("%s1:%s" % ('x', n+1))
# Y = symbols("%s1:%s" % ('Y', n+1))

numert = Mul(*[x - X[i] for i in range(n)])

i = 2
numer = numert/(x - X[i])
denom = Mul(*[(X[i] - X[j]) for j in range(n) if i != j])
sympy.latex(numer / denom)
\frac{\left(x - x_{1}\right) \left(x - x_{2}\right)}{\left(- x_{1} + x_{3}\right) \left(- x_{2} + x_{3}\right)}

\[ \frac{\left(x – x_{1}\right) \left(x – x_{2}\right)}{\left(- x_{1} + x_{3}\right) \left(- x_{2} + x_{3}\right)} \]