拉格朗日插值
-
应用范围:求一个 \(n\) 次多项式过 \((x_1,y_1)\sim (x_n,y_n)\)
-
构造思想:
- 设 \(f_i(x)\) 使得 对于 \(x_i\neq x_j\),\(f(x_j)=0\),且 \(f(x_i)=1\),注意并不是对全体 \(R\) 满足。
- 由上 \(F(x)=\sum y_if_i(x)\) 即为所求。
- 构造方法:\(f_i(x)=\frac{\prod_{j=1,j\neq i}^n(x-x_j)}{\prod_{j=1,j\neq i}^n(x_i-x_j)}\)
也就是:
\[\begin{aligned}
F(x)=\sum_{i=1}^ny_i\prod_{j\neq i}\frac{(x-x_j)}{(x_i-x_j)}
\end{aligned}
\]
计算时可以直接带值 \(O(n^2)\) 计算,也可以利用背包的操作先求出 \(\prod_{i=1}^n(x-x_i)\) 的具体系数 \(g_0\sim g_n\),然后除掉一个 \((x-x_i)\) 后的 \(g'\),其实相当于 \(-x_ig'_k+g'_{k-1}\)。根据这个式子可以直接确定 \(g'_0\),进而逐步确定 \(g’_{1\sim n}\)
在实际应用中 往往维护 \(x_i\) 对应的 \(y_i\),也就是点值,最后一步再插回原多项式
我们可以在 \(O(n^2)\) 的复杂度内还原原多项式。
例题 CF995F,code