拉格朗日插值

拉格朗日插值

拉插作用
已知n+1个点值,即

\[f(x_1) = y_1\\ f(x_2) = y_2 \\ ...\\ f(x_{n+1})= y_{n+1} \]

求n次多项式 f ,(或求f(x)的值)

\(L_i(x)\) 是一个 \(n\) 次多项式,且满足

$ \begin{cases}
L_i(x_i)=y_i\
L_i(x_j)=0\ \ \ (i\not=j)
\end{cases}$

可以考虑先构造 \(L_i'(x)\),使其满足

$ \begin{cases}
L_i(x_i)=1\
L_i(x_j)=0\ \ \ (i\not=j)
\end{cases} \( 那么 \)L_i=y_iL_i'$

可以得出 \(L_i'(x)\) 可以是下面的多项式:

\(\frac{\prod\limits^{n+1}_{j=1}{(x-x_j)(i\neq j)}}{\prod\limits^{n+1}_{j=1}{(x_i-x_j)(i\neq j)}}\)

(如果把\(x_j(i \neq j)\)带进去,分母出现0, 如果把\(x_i\)带进去,分子等于分母,即\(L_i'(x_i) = 1\))

那么 \(L_i(x)\) 就应该是\(y_iL_i'\):

\(yi\frac{\prod\limits^{n+1}_{j=1}{(x-x_j)(i\neq j)}}{\prod\limits^{n+1}_{j=1}{(x_i-x_j)(i\neq j)}}\)

因为 \(L=\sum\limits^{n+1}_{i=1}{L_i}\),所以 \(L(x)\) 应该为:

\(\sum\limits^{n+1}_{i=1}{(y_i{\frac{\prod\limits^{n+1}_{j=1}{(x-x_j)(i\neq j)}}{\prod\limits^{n+1}_{j=1}{(x_i-x_j)(i\neq j)}}})}\)

复杂度:\(O(n^2)\)

特别的,如果 \(x_i + 1 = x_{i+1}\), 求\(L(x)\)的值时

\(L_i'(x)\) 分母可表示为

\[(-1)^{(n+1)-i}!(i - 1) !((n+1) - i) \]

分子可以表示为 (???)

\[(x-x_1)^{\underline {n+1}} / (x - x_i) \]

再带回即可

复杂度:O(n)

多项式科技优化拉插

闲话:本来以为不可能用到这种屎的,就算遇到了也不会去写,直到我在打 ACM 的时候遇到了,还有半个小时,而且是在打印了多项式板子的情况下,其实是有机会冲一冲的,但是思考怎么优化浪费了大量时间。。。故现在来整理这个东西。

复杂度 \(O(n\log^2 n)\),适用于一般情况。

考虑优化拉插的式子:\(\sum\limits^{n+1}_{i=1}{(y_i{\frac{\prod\limits^{n+1}_{j=1}{(x-x_j)(i\neq j)}}{\prod\limits^{n+1}_{j=1}{(x_i-x_j)(i\neq j)}}})}\)

把分子分母分开考虑,先考虑处理分母:\({\prod\limits^{n+1}_{j=1}{(x_i-x_j)(i\neq j)}}\)

\(G(x) = {\prod\limits^{n+1}_{j=1}{(x-x_j)}}\),原式等于 $G(x) \over (x_i - x_i) $ = \(\lim _{x -> x_i}{G(x)\over x - x_i}\)

分母除 0 肯定炸了,但是根具洛必达定理,上式等于 \(G'(x)\)。G 可以用分治地多项式求出。(先求出前 n / 2 项的多项式,再求后 n / 2 项的多项式,然后用 NTT 乘起来)

原式等于

\[\sum\limits^{n+1}_{i=1}{{y_i\over G'(x)}\prod\limits^{n+1}_{j=1}{(x-x_j)(i\neq j)})} \]

现在可以对 G 做多项式多点求值,对右边做一个前缀乘上一个后缀。然后就做完了。

但这里还有更简单做法:

\(y_i\over G'(x)\) 设为 \(a_i\)

要求:

\[\sum_{i=l}^ra_i\prod_{j\neq i}(x-x_j) \]

可以先求:

\[\begin{aligned} A_0(x)&=\sum_{i=l}^{mid}a_i\prod_{j\neq i}(x-x_j) \\ A_1(x)&=\sum_{i=mid + 1}^{r}a_i\prod_{j\neq i}(x-x_j) \\ B_0(x)&=\prod_{j\neq i\and l\leq j\leq mid}(x-x_j) \\ B_1(x)&=\prod_{j\neq i\and mid<j\leq r}(x-x_j) \end{aligned} \]

那么要求的就是:

\[A_0B_1+A_1B_0 \]

posted @ 2025-06-09 18:01  花子の水晶植轮daisuki  阅读(77)  评论(0)    收藏  举报
https://blog-static.cnblogs.com/files/zouwangblog/mouse-click.js