高阶差分求解多项式求和

高阶差分求解多项式求和

高阶差分

\(\Delta f(x)=f(x+1)-f(x)\)。称 \(\Delta f(x)\)\(f(x)\) 的一阶差分。

同理:记 \(\Delta^n f(x)=\Delta^{n-1}f(x+1)-\Delta^{n-1} f(x)\) 。称 \(\Delta^n f(x)\)\(f(x)\)\(n\) 阶差分。

下面给出差分的几个比较重要的性质。


性质 \(1\):若 \(f(x)\) 为度为 \(n\) 的多项式,则 \(\Delta^{n+1} f(x)=0\)

证明:

\[\Delta f(x)=\sum a_i(x+1)^i-a_ix^i \]

不难发现 \(\Delta f(x)\)\(x^n\) 项的系数为 \(0\)

所以 \(\Delta f(x)\) 为度为 \(n-1\) 的多项式。

又由于 \(\Delta^n f(x)=\Delta^{n-1}f(x+1)-\Delta^{n-1} f(x)\)

不难归纳出 \(\Delta^{k} f(x)\) 的度数为 \(n-k\)。当 \(k=n\)\(\Delta^k f(x)\) 已经是常数了,再做一次差分归 \(0\)


性质 \(2\)

\[\Delta^r f(x)=\sum_{i=0}^r(-1)^{r-i}\binom{r}{i}f(x+i) \]

证明:

利用数学归纳法。当 \(r=1\) 的显然成立(直接带入发现一致)

\(r\le m\) 时此式成立,则设 \(r=m\)。我们只需证明 \(r+1\) 时该式同样成立即可。

根据定义有:

\[\begin{aligned} \Delta^{r+1} f(x)&=\Delta^rf(x+1)-\Delta^r f(x) \\ &= \sum_{i=0}^r(-1)^{r-i}\binom{r}{i}f(x+i+1)-\sum_{i=0}^r(-1)^{r-i}\binom{r}{i} f(x+i) \\ &=\sum_{i=1}^{r+1}(-1)^{r-(i-1)}\binom{r}{i-1}f(x+i)-\sum_{i=0}^r(-1)^{r-i}\binom{r}{i}f(x+i) \\ &=\sum_{i=1}^{r}((-1)^{r-(i-1)}\binom{r}{i-1}-(-1)^{r-i})f(x+i)+(-1)^{r-(r+1-1)}\binom{r}{r}f(x+r+1)-(-1)^{r-0}\binom{r}{0}f(x) \\ &=\sum_{i=1}^r((-1)^{r-i+1}(\binom{r}{i-1}+\binom{r}{i}))f(x+i)+(-1)^{r+1-r-1}\binom{r+1}{r+1}f(x+r+1)+(-1)^{r+1-0}\binom{r+1}{0}f(x) \\ &=\sum_{i=1}^r(-1)^{r+1-i}\binom{r+1}{i}f(x+i)+(-1)^{r+1-r-1}\binom{r+1}{r+1}f(x+r+1)+(-1)^{r-l-0}\binom{r+1}{0}f(x) \\ &=\sum_{i=0}^{r+1}(-1)^{r+1-i}\binom{r+1}{i}f(x+i) \end{aligned} \]

证毕。


正题

高阶差分可以用来处理这样一类问题:

\(\sum_{i=1}^nf(i)\times q^i\)

其中 \(f(i)\) 是一个度为 \(k\) 的多项式。


\(q=0\) 时。答案是 \(0\)

\(q=1\) 时,我们发现就是求一个多项式的前缀和。我们知道一个度为 \(n\) 的多项式的前缀和是一个度为 \(n+1\) 的多项式,所以我们直接拉格朗日插值即可。

\(q>1\) 时。

引入一个结论:

\(S(n)=\sum_{i=0}^{n-1}f(i)\times q^i\) 则存在一个度为 \(k\) 的多项式 \(G(x)\) 使得 \(S(n)=q^n\times G(n)-G(0)\)

证明如下:

依旧是采用数学归纳法,当 \(k=0\) 时显然成立。

假设当 \(k\le m\) 时成立,我们让 \(k=m+1\)

\[\begin{aligned} S(n)&=\sum_{i=0}^{n-1}f(i)\times q^i \\ q\times S(n)&=\sum_{i=0}^{n-1}f(i)\times q^i=\sum_{i=1}^{n}f(i-1)\times q^i \\ (1-q)\times S(n)&=\sum_{i=0}^{n-1}f(i)\times q^i-\sum_{i=1}^nf(i-1)\times q^i \\ &=\sum_{i=0}^{n-1}f(i)\times q^i-\sum_{i=0}^{n}f(i-1)\times q^i+f(-1) \\ &=\sum_{i=0}^{n-1}(f(i)-f(i-1))\times q^i -f(n-1)\times q^n+f(-1) \end{aligned} \]

注意到 \(f(i)-f(i-1)\) 是一个差分的形式,那么它的度应该是 \(k-1\)。此时命题成立,那么我们将 \(\sum_{i=0}^{n-1}(f(i)-f(i-1))\times q^i\) 替换成 \(q^n\times P(n)-P(0)\),其中 \(P(x)\) 是一个度为 \(k-1\) 的多项式,那么有:

\[\begin{aligned} (1-q)\times S(n)&=q^n\times P(n)-P(0)-f(n-1)\times q^n+f(-1) \\ (1-q)\times S(n)&=q^n\times(P(n)-f(n-1))-(P(0)-f(-1)) \\ S(n)&=q^n\times \dfrac{P(n)-f(n-1)}{1-q}-\dfrac{P(0)-f(-1)}{1-q} \end{aligned} \]

我们设 \(G(x)=\dfrac{P(x)-f(x-1)}{1-q}\)。易知 \(G(x)\) 是一个度为 \(k\) 的多项式。(\(f(x-1)\) 的度为 \(k\)

那么有:

\[S(n)=q^n\times G(x)-G(0) \]

证毕。


\(S(n)=\sum_{i=0}^{n-1}f(i)\times q^i=q^n\times G(n)-G(0)\)

所以答案就应该是:

\[S(n+1)-f(0)=q^{n+1} \times G(n+1)-G(0)-f(0) \]

\(f(0)\) 一般来说是比较好求的。

问题是如何快速求出 \(G(n+1)\)\(G(0)\)

由于 \(G\) 是一个度为 \(k\) 的多项式,只要我们能算出 \(G(0)\dots G(k)\)。那么就可以通过插值插出 \(G(n+1)\)

问题转化成求 \(G(0)\)

还是依靠差分:

\[\begin{aligned} S(n+1)-S(n)&=q^{n+1}\times G(n+1)-G(0)-(q^n\times G(n)-G(0)) \\ S(n+1)-S(n)&=q^{n+1}\times G(n+1)-q^n\times G(n) \\ q^{n}f(n)&=q^{n+1}\times G(n+1)-q^n\times G(n) \\ G(n+1)&=\dfrac{q^n\times f(n)+q^n\times G(n)}{q^{n+1}}=\dfrac{f(n)+G(n)}{q} \end{aligned} \]

所以所有 \(G(n)\) 都可以用 \(k\times G(0)+b\) 的形式表示出来。

但是我们只是得到了关系式,\(G(0)\) 的值我们依然不知道。

既然都差分了那就差分到底

回顾下高阶差分的性质 \(1,2\)。因为 \(G(x)\) 是一个度为 \(k\) 的多项式,所以 \(\Delta^{k+1}G(x)=0\)。也就是:

\[\Delta^{k+1}G(0)=\sum_{i=0}^{k+1}(-1)^{k+1-i}\binom{k+1}{i}G(i)=0 \]

而令人振奋的这一点是所有的 \(G(i)\) 都可以用 \(G(0)\) 表示!所以这其实是一个一元的方程!我们直接运用解出来 \(G(0)\) 即可。

那么上述问题就被解决了。复杂度是 \(O(k+\log n)\) 的(基本上是线性的,显然插值此时也是线性,\(\log n\) 在于预处理求逆元)。当然如果你比较懒一边算一边求逆元的话就是 \(O(k\log n)\) 的了。也是比较优秀的的,不至于有人还卡这个

posted @ 2022-04-27 22:20  夜空之星  阅读(536)  评论(0编辑  收藏  举报