Lagrange插值法

结论

Lagrange插值法用来解决如下问题

已知\(n\)个点\(P_{i}(x_{i},y_{i})\),求由他们确定的至多\(n-1\)次的多项式\(f(x)\)

先直接给出公式

\[f(x)=\sum_{i=1}^{n}(y_{i}\prod_{j\neq i}\frac{x-x_{j}}{x_{i}-x_{j}}) \]

证明

考虑这样一种函数

\[g_{i}(x)=\begin{cases}0&x=x_{j},j\neq i\\y_{i}&x=x_{i}\end{cases} \]

于是

\[f(x)=\sum_{i=1}^{n}g_{i}(x) \]

下面需要求出\(g_{i}(x)\)的多项式形式

  • 要使得\(g_{i}(x_{j})=0,j\neq i\)
    只需令\((x-x_{j})\)\(g_{i}(x)\)的因式

  • \(g_{i}(x)=k\prod_{j\neq i}(x-x_{j})\)

  • 要使得\(g_{i}(x_{i})=y_{i}\)
    \(k=y_{i}\prod_{j\neq i}\frac{1}{x_{i}-x_{j}}\)

  • 整理即得\(g_{i}(x)=y_{i}\prod_{j\neq i}\frac{x-x_{j}}{x_{i}-x_{j}}\)

于是

\[f(x)=\sum_{i=1}^{n}g_{i}(x)=\sum_{i=1}^{n}(y_{i}\prod_{j\neq i}\frac{x-x_{j}}{x_{i}-x_{j}}) \]

Q.E.D

题目

【模板】拉格朗日插值

Question

给定\(n\)个点,他们确定的多项式为\(f(x)\),输出\(f(k) \bmod 998244353\)的值。

Solution

套公式

\[f(k) \equiv \sum_{i=1}^{n}(y_{i}\prod_{j\neq i}[(k-x_{j})(x_{i}-x_{j})^{-1}]) \pmod{998244353} \]

复杂度\(O(n^2\log 998244353)\),对于数据范围\(n=2\times10^3\)来说不一定能过
可优化的点在于求逆元的次数,上式可优化为

\[f(k) \equiv \sum_{i=1}^{n}(y_{i}[\prod_{j\neq i}(k-x_{j})][\prod_{j\neq i}(x_{i}-x_{j})]^{-1}) \pmod{998244353} \]

复杂度\(O(n^2+n\log 998244353)\),能过

posted @ 2021-02-28 22:56  _Veritas  阅读(237)  评论(0)    收藏  举报