[笔记]插值
-
垃圾插值
给定 \(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)\) 就可以直接算了。