裂项方法的本质——有限微积分
此文章可谓是凝聚了我对某类数列求和的问题的核心理解。
它主要就是要讨论这些事情:裂项的本质是什么?如何更优雅地裂项?当你遇到一个完全陌生的求和要求,你该如何去理解它的形式和给出裂项方法?看了这篇文章也许你能有一些启发。
此前在网络上看到的文章,要么符号十分不严谨而丑陋,要么不全面或者偏向竞赛,所以还是自己总结一下。
下面的方法,均可以无缝与课内衔接,只是一种思维方式,不影响我们考试时写过程。
参考文献:《具体数学》。
前情回顾
我们先从课内对数列求和的认知和做法说起:
对于一个数列 \(\{a_i\}\),一种常见的求和办法是:构造一个新的数列 \(\{b_i\}\),使得 \(a_i=b_{i+1}-b_i\)。从而,我们会有:
于是,\(n\) 项的数列和被我们化简成了两项。如果 \(b_n\) 是容易计算的,那么我们就解决了问题。
经典的例子有:\(\frac 1 {n(n+1)} = \frac 1 n - \frac 1 {n+1}\), \(\frac 1 {(n-1)n(n+1)}=\frac 1 {2(n-1)n}- \frac 1 {2n(n+1)}\),等等,不再赘述。
这时我们会自然地想到:这样的式子貌似和我们学过的积分有些相像:二者都是把一段和变成了两个函数端点值的差。于是,很自然地,我们希望能借鉴我们在微积分中的经验,进一步探索所谓“裂项”背后的真相。
To 信息学竞赛生:这里的差分和我们平常见到的差分 \(a_i=b_i-b_{i-1}\) 有所不同,注意区别。
第一步抽象——差分之于求导
我们知道数列的本质是函数,更进一步地,是定义域在 \(\mathbb{N}^*\) 上的函数。我们一般把这种函数叫做数论函数。我们可以认为这样函数的定义域是离散的而非连续的。进一步地,我们想对数论函数研究其普遍性质。我们把连续函数概念拓展到离散函数的过程叫做离散模拟。
首先,我们尝试把导数,或者说微分的概念拓展到数论函数上。对于离散函数,定义它们的微分算子 \(\mathrm D\) (算子:函数到函数的映射):
在离散情况下,\(h\) 不再能够趋近于 \(0\) ,那么我们不妨就让它为 \(1\) 好了。定义微分算子的离散模拟叫做差分算子 \(\Delta\),具体地:
到这里还是很好理解的。接下来我们举一些具体的例子来加深对这个概念的理解。
我们知道 \(\mathrm D(e^x)=e^x\),那么它的离散模拟就是:
更进一步地,对于任意非零常数 \(a\),有:
我们还知道幂函数 \(\mathrm D(x^n)=nx^{n-1}\),然而,这在离散条件下不成立。幸运的是,前人帮我们找到了其离散模拟。我们定义下降幂:
其中 \(n\) 是正整数。
上面的式子只定义了正整数幂的情况。当然,我们可以将其拓展到负整数的情况。我们注意到,从 \(x^{\underline 3}\) 到 \(x^{\underline 2}\) 到 \(x^{\underline 1}\),我们将其分别除以了 \((x-3)\)、\((x-2)\),\((x-1)\),那么很自然地,从 \(x^{\underline 0}\) 到 \(x^{\underline {-1}}\) 就应该除以 \((x + 1)\),所以我们定义:
可以不费什么功夫地证明它满足类似的关系:
这个式子的证明被留作习题。
同样,对于组合数 \(\binom{m}{n}\) (就是 \(C^n_m\) ),有
接下来,我们尝试寻找各个求导法则的离散模拟。首先,显然有:
其中 \(k\) 是常数。
类比和法则 \(\mathrm D(f(x)+g(x)) = \mathrm D f(x)+\mathrm D g(x)\) 可以轻易得到:
类比积法则 \(\mathrm D (f(x)g(x))=g(x)\mathrm Df(x)+f(x) \mathrm D g(x)\),我们得到:
在之前的过程中我们认为 \(\mathrm d f \mathrm d g\) 是二阶无穷小量,予以忽略。然而,在有限微积分中这显然是行不通的。所以我们需要把它保留。可以定义移位算子 \(\mathrm E\),使得 \(f(x+1) = \mathrm E f(x)\),从而将积法则写为:
接下来,不得不宣布一个很令人沮丧的事实:在有限微积分中,没有一套合适的复合函数差分法则。
第二步抽象——不定和之于积分
那么我们迅速开始拓展积分的离散模拟:求和。这就是我们上面差分的逆运算。类比不定积分:
其中 \(C\) 是一个常数;我们定义不定和运算:
这里 \(C\) 只需要在整数处取常数值即可。
从这里可以看出,不定和与差分互为逆运算。依据这个,我们来举几个例子。例如:
那么,\(\sum \Delta x ^{\underline{-1}} \delta x\) 是多少呢?不难发现,
是一个合理的函数,我们把 \(H_x = h(x)\) 叫做 调和数,它是 \(\ln(x)\) 的离散模拟。事实上有
其中 \(\gamma \approx 0.5772\) 为欧拉常数。
接下来我们根据定积分的定义拓展出有限和:我们知道如果 \(g(x) = \mathrm D f(x)\),那么有
类似的,如果我们有 \(g(x) = \Delta f(x)\),就会希望有
想要让上等式成立,我们需要给左式一个定义。根据我们对差分的定义,容易猜测出它的形式:
因此,这样类比定义符号是左闭右开的。这样定义决定了下列性质:
当 \(a > b\) 时,这样定义:
而课内的裂项求和,实际上是先求不定和、再求有限和的过程。
更进一步地,类比我们知道的分部积分法则,可以尝试拓展出分部求和法则。我们将上面的积法则两边取不定和,并移项,得到:
如果右式比左式好计算,那么分部求和就是有效的。这也就是说,我们希望 \(v\) 和 \(\Sigma \mathrm E v \Delta u\) 都具有比较好的形式。一个使用分部求和法的例子在下方例6。
理论可行,实践开始:
-
求
\[\sum_{i=a}^{b-1}c^i, \]其中 \(c\) 是常数。
解:
\[\begin{equation*} \begin{split} \sum_{i=a}^{b-1}c^i &= \sum\nolimits_a^b c^x\delta x \\ &= \left. \frac{c^x}{c-1} \right|_a^b \\ &= \frac{c^b-c^a}{c-1}. \end{split} \end{equation*} \] -
求
\[\sum_{i=a}^{b-1}i^{\underline{m}}, \]其中 \(m\) 是常数且不为 \(-1\)。
解:
\[\begin{equation*} \begin{split} \sum_{i=a}^{b-1}i^{\underline{m}} &= \sum\nolimits_a^b x^{\underline{m}} \delta x \\ &= \left. \frac{x^{\underline{m+1}}}{m+1} \right |_a^b \\ &= \frac {b^{\underline{m+1}}-a^{\underline{m+1}}}{m+1} \end{split} \end{equation*} \] -
求
\[\sum_{i=1}^ni^2. \]解:
\[\begin{equation*} \begin{split} \sum_{i=1}^ni^2 &= \sum_{i=1}^n(i(i-1)+i) \\ &= \sum_{i=1}^n(i ^ {\underline 2}+i^{\underline 1}) \\ &= \sum\nolimits_1^{n+1}(x ^ {\underline 2} + x ^ {\underline 1}) \delta x \\ &= \left. \frac{x^{\underline 3}}{3} + \frac{x^{\underline 2}}{2} \right|_1^{n+1} \\ &= \frac{(n+1)^{\underline{3}}}{3}+\frac{(n+1)^{\underline{2}}}{2} \\ &= \frac{n(n+1)(2n+1)}{6}. \end{split} \end{equation*} \]完全没有任何难度。
-
求
\[\sum_{i=1}^ni^3. \]解:
容易验证如下恒等式:\[k^3=k^{\underline 3}+3k^{\underline 2}+k^{\underline 1} \]所以:
\[\begin{equation*} \begin{split} \sum_{i=1}^ni^3 &= \sum_{i=1}^n i^{\underline 3}+3 i^{\underline 2}+i^{\underline 1} \\ &= \left. \frac{x^{\underline 4}}{4}+ x^{\underline 3} + \frac{x ^ {\underline 2}}{2} \right|_1^{n+1} \\ &= \frac{(n+1)n(n-1)(n-2)}{4}+(n+1)n(n-1)+\frac{(n+1)n}{2} \\ &= \frac{n^2(n+1)^2}{4} \end{split} \end{equation*} \]对于求和来说,下降幂是非常方便的。但如何在下降幂和普通幂之间建立联系呢?这超出了本篇的讨论范围。事实上,需要借助“斯特林数”。感兴趣的读者可以自行查阅资料。
-
求
\[\sum_{i=1}^n \frac{1}{i(i+1)} \]解:
\[\begin{equation*} \begin{split} \sum_{i=1}^n \frac{1}{i(i+1)} &= \sum_{i=0}^{n-1} \frac 1 {(i+1){(i+2)}} \\ &= \sum_{i=0}^{n-1} i^{\underline{-2}} \\ &= \sum\nolimits_0^{n-1}x^{\underline{-2}} \delta x \\ &= \left. -x^{\underline {-1}} \right|_0^n \\ &= 1-\frac 1 {n+1} \\ &= \frac n {n+1} \end{split} \end{equation*} \] -
求
\[\sum_{i=1}^ni2^i. \]解:使用分部求和法。我们设 \(u(x) = x, \Delta v(x) = 2^x\),则 \(\Delta u(x) = 1, v(x) = 2^x\)。使用分部求和法则得到:
\[\sum x2^x \delta x = x2^x-\sum2^{x+1} \delta x = x2^x - 2^{x+1}+C \]于是,有:
\[\begin{equation*} \begin{split} \sum_{i=1}^ni2^i &= \sum\nolimits_0^{n+1} x2^x \delta x \\ &= \left. x2^x - 2^{x+1} \right|_0^{n+1} \\ &= ((n+1)2^{n+1}-2^{n+2})-(0 \times 2^0 - 2^1) \\ &= (n-1)2^{n+1} +2. \end{split} \end{equation*} \]- 求
\[\sum_{i=1}^n i H_i. \]借鉴求 \(\int x \ln x \mathrm d x\) 的经验。
解:令 \(u(x) = H_x, \Delta v(x) = x = x^{\underline 1}\),则 \(\Delta u(x) = x^{\underline{-1}}, v(x) = \frac {x^{\underline 2}}{2}, \mathrm E v(x) = \frac {(x+1)^{\underline 2}}{2}\),于是:\[\begin{equation*} \begin{split} \sum x H_x \delta x &= \frac{x^{\underline 2}}{2} H_x - \sum \frac{(x+1)^{\underline{2}}}{2} x^{\underline{-1}} \delta x \\ &= \frac{x^{\underline 2}}{2} H_x - \frac 1 2 \sum x^{\underline 1} \delta x \\ &= \frac{x^{\underline 2}}{2} H_x - \frac{x^{\underline{2}}}{4} + C. \end{split} \end{equation*}\]现在我们加上上下限并给出结果:
\[\sum_{i=1}^n iH_i = \sum\nolimits_1^{n+1} x H_x \delta x = \frac{n(n+1)(2H_{n+1} - 1)}{4}. \]
碎碎念
听说EI用 \Sigma 而不是 \sum\nolimits 来表示求和,我比较叛逆,用了后者。