拉格朗日差值

part 1

拉格朗日插值法,给出 \(n+1\) 个点对,可以 \(O(n^2)\) 求出一个 \(n\) 次多项式的值

我们当前有\(n+1\)个点对,\(x_i,y_i\) , 代表 \(f(x_i)=y_i\)

给出 \(k\)\(f(k)\)

公式为 \(\sum\limits_{i=0}^ny_i*\prod\limits_{j!=i} \frac {k-x_j}{x_i-x_j}\)

正确性:

带入 \(x_i\)\(y_i*\prod\limits_{j!=i}\frac {k-x_j}{x_i-x_j}=y_i*1\)

\(t~!=i\)\(\prod\limits_{j!=t}\frac {k-x_j}{x_t-x_j}\) 中一定有 \(\frac{x_i-x_i}{x_t-x_i}=0\) 所以 \(\prod\limits_{j!=t}\frac {x_i-x_j}{x_t-x_j}=0\)

因此 当 \(k=x_i\)\(\sum\limits_{i=0}^ny_i*\prod\limits_{j!=i} \frac {k-x_j}{x_i-x_j} = y_i\)

part 2

\(x_i\) 连续 则公式变为 \(\sum\limits_{i=0}^ny_i*\prod\limits_{j!=i} \frac {k-j}{i-j}\) , 我们可以将它优化到 \(O(n)\)

\(pre_i= \prod\limits_{j=0}^ik-j\) , \(suf_i= \prod\limits_{j=i}^nk-j,fac_i=i ~!\)

\(f(k)=\sum\limits_{i=0}^n y_i* \dfrac{pre_{i-1}*suf_{i+1}}{fac_i*fac_{n-i}*(-1^{n-i})}\)

\(fac_i*fac_{n-i}* -1^{n-i}\) 线性求逆元 即可做到 \(O(n)\)

posted @ 2020-06-06 12:39  __int256  阅读(261)  评论(0编辑  收藏  举报