1 条题解
-
0
自动搬运
来自洛谷,原作者为

attack
**搬运于
2025-08-24 22:03:34,当前版本为作者最后更新于2018-12-04 11:34:40,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
简介
在数值分析中,拉格朗日插值法是以法国18世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法。如果对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。上面这样的多项式就称为拉格朗日(插值)多项式。
拉格朗日插值法
众所周知,个坐标不同的点可以确定唯一的最高为次的多项式。在算法竞赛中,我们常常会碰到一类题目,题目中直接或间接的给出了个点,让我们求由这些点构成的多项式在某一位置的取值
一个最显然的思路就是直接高斯消元求出多项式的系数,但是这样做复杂度巨大且根据算法实现不同往往会存在精度问题
而拉格朗日插值法可以在的复杂度内完美解决上述问题
假设该多项式为, 第个点的坐标为,我们需要找到该多项式在点的取值
根据拉格朗日插值法
$$f(k) = \sum_{i = 0}^{n} y_i \prod_{i \not = j} \frac{k - x[j]}{x[i] - x[j]} $$乍一看可能不是很好理解,我们来举个例子理解一下
假设给出的三个点为
直接把
$f(k) = 3 \frac{(k - 2)(k - 3)}{(1 - 2)(1 - 3)} + 7\frac{(k-1)(k-2)}{(2 - 1)(2-3)} + 13\frac{(k-1)(k-2)}{(3 -1)(3-2)}$
观察不难得到,如果我们把带入的话,除第项外的每一项的分子中都会有,这样其他的所有项就都被消去了
因此拉格朗日插值法的正确性是可以保证的
下面说一下拉格朗日插值法的拓展
在取值连续时的做法
在绝大多数题目中我们需要用到的的取值都是连续的,这样的话我们可以把上面的算法优化到复杂度
首先把换成,新的式子为
$f(k) = \sum_{i=0}^n y_i \prod_{i \not = j} \frac{k - j}{i - j}$
考虑如何快速计算
对于分子来说,我们维护出关于的前缀积和后缀积,也就是
对于分母来说,观察发现这其实就是阶乘的形式,我们用来表示
那么式子就变成了
$$f(k) = \sum_{i=0}^n y_i \frac{pre_{i-1} * suf_{i+1}}{fac[i - 1] * fac[N - i]} $$注意:分母可能会出现符号问题,也就是说,当为奇数时,分母应该取负号
重心拉格朗日插值法
再来看一下前面的式子
$$f(k) = \sum_{i = 0}^{n} y_i \prod_{i \not = j} \frac{k - x[j]}{x[i] - x[j]} $$设
$$f(k) = g\sum_{i = 0}^{n} \prod_{i \not = j} \frac{y_i}{(k - x[i])(x[i] - x[j])} $$设
这样每次新加入一个点的时候只需要计算它的即可
应用
经典应用
首先讲一个经典应用:计算$\sum_{i=1}^n i^k (n \leqslant 10^{15}, k \leqslant 10^6)$
老祖宗告诉我们,这个东西是个以为自变量的次多项式,具体证明可以看第二份参考资料
然后直接带入个点后用拉格朗日插值算即可,复杂度
那具体在题目中怎么使用拉格朗日插值呢?
首先你要证明求的东西是某个多项式,判断的依据是:

大部分情况下归纳一下就可以了
题目
由易到难排列
参考资料
- 1
信息
- ID
- 3727
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 5
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者