[笔记]插值

  • 垃圾插值

给定 \(n + 1\) 个点 \((x_1, 0), (x_2, 0), (x_3, 0) \cdots (x_n, 0), (0, 1)\)。求过这 \(n + 1\) 个点的 \(n\) 次多项式。

首先,答案肯定可以写成 \(F(x) = a\sum \limits_{i = 1}^{n} (x - x_i)\) 的形式。关键是确定 \(a\) 是多少。

这个多项式的常数项应该等于 \(1\)。所以 \(a \times (-x_1) \times (-x_2) \times (-x_3) \cdots \times (-x_n) = 1\)。所以 \(a = \dfrac{1}{\prod (-x_i)}\)

于是这个多项式可以写成 \(F(x) = \dfrac{1}{\prod (-x_i)} \sum \limits_{i = 1}^{n} (x - x_i)\)

这个形式非常的丑。所以考虑改一下写法。考虑将 \(a\) 中的每个 \(\dfrac{1}{(-x_i)}\) 写进括号里,就变成了:

\[F(x) = \dfrac{1}{-x_1}(x - x_1) \times \dfrac{1}{-x_2}(x - x_2) \cdots \dfrac{1}{-x_n}(x - x_n) \]

\[= (1 - \dfrac{x}{x_1})(1 - \dfrac{x}{x_2}) \cdots (1 - \dfrac{x}{x_n}) \]

这种形式非常美妙。但是没什么用。

  • 拉格朗日插值

给定 \(n + 1\) 个点(任意点)。求经过这些点的 \(n\) 次多项式。

不知道拉格朗日怎么想出来的。

\[F(x) = \sum_{i = 1}^{n} b_i \prod_{j = 1, j \ne i}^{n} \dfrac{x - x_j}{x_i - x_j} \]

直接 \(n ^ 2\) 乱插就行了。太猛了。

如果这 \(n\) 个点是连续的,发现多项式分母是一个阶乘形式,分子是一个乘积形式。所以可以直接处理阶乘逆元和 \(x - i\) 前缀积和后缀积。\(O(n)\) 就可以直接算了。

posted @ 2024-11-28 21:19  Link-Cut-Y  阅读(1)  评论(0编辑  收藏  举报