生成函数法推导自然数幂求和公式

本文主要介绍用生成函数推导形如 k=1nka,aN+ 的【自然数幂求和公式】的方法。

之前在知乎、博客园看到各种奇奇怪怪的推导【平方和】、【立方和】等自然数幂求和公式的方法,甚至还有什么【伸缩级数法】「看了才知道类似于《具体数学》中的扰动法」。

不过,似乎少有对生成函数法推导自然数幂求和公式的详细介绍。

于是,就趁着这个短暂的高二寒假,用生成函数详细推导了一下,并总结了一套较为完善的模板。

本来想再顺便总结一下拉格朗日插值法和下降幂法,但看样子没时间了……以后找时间再更吧qwq……

文章内容均为本人原创,转载请注明出处,谢谢~

另:毕竟写了快五千多字,可能会有一些纰漏和不足,还请谅解并在评论区指出「或【私信我】」,本人不胜感激~




别急,先看看这些前置芝士你掌握了没有~

前置知识

求导的基本运算

这里只需要用到最基本的幂函数求导和复合函数求导。

所用公式非常简单,没有超出高中数学选择性必修二范围,如下:

[C]=0[xn]=nxn1[f(x)g(x)]=f(x)g(x)+f(x)g(x)[f(x)g(x)]=f(x)g(x)f(x)g(x)[g(x)]2(g(x)0)[f(g(x))]=f(g(x))g(x)

这都不会我也救不了你辣qwq……


生成函数的基本用法

详见【生成函数法求斐波那契数列通项公式】。


生成函数的求和性质

已知两个数列 {an},{bn},nN,其中 bn=k=0nak

设数列 {an},{bn} 的生成函数分别为:

A(x)=a0+a1x+a2x2++anxn+B(x)=b0+b1x+b2x2++bnxn+

则有:

B(x)=11xA(x)

  • 证明一「提取公因式」

    B(x)=b0+b1x+b2x2++bnxn+=a0+(a0+a1)x+(a0+a1+a2)x2++(a0+a1++an)xn+=a0(1+x+x2++xn+)+a1(1+x+)+a2(1+x+)+=(1+x+x2++xn+)(a0+a1+a2+an+)=11xA(x)

  • 证明二「错位相减法」

    不妨证明 (1x)B(x)=A(x)

    (1x)B(x)=(1x)(b0+b1x+b2x2++bnxn+)=(b0+b1x+b2x2++bnxn+)x(b0+b1x+b2x2++bnxn+)

    错位相减:

    (1x)B(x)=(b0+b1x+b2x2+b3x3++bnxn+)(b0x+b1x2+b2x3++bn1xn+)

    由于 bnbn1=an,且 b0=a0,故:

    (1x)B(x)=a0+a1x+a2x2++anxn+=A(x)

    因此:

    B(x)=11xA(x)

  • 应用「important!!!

    已知数列 {an} 的生成函数为 f(x),设 Snan 的前 n 项和,则数列 Sn 的生成函数为:

    11xf(x)

    这就相当于,对原数列的生成函数乘一个 11x 就相当于求一次和。


广义二项式定理

我们熟知的二项式定理:

(x+y)n=k=0nCnkxkynk=k=0nCnkxnkyk

不仅在 nN+ 时成立,还能推广至 aR

(x+y)a=k=0Cakxkyak=k=0Cakxakyk

  • 广义组合数

    为了后面的计算,我们有必要扩充一下组合数的定义。

    我们用到的是 nZn<0 的情形。此时:

    Cnm=n(n1)(n2)(nm+1)m(m1)(m2)2×1=nmm!

    「其中,nm 为下降幂,读作 n 直降 m 次,更多用法见《具体数学》。」

  • 应用「important!!!

    后面的推导过程常常遇到这种形式的式子:

    1(1x)a(aZ,a<0)

    我们经常需要将其展开:

    1(1x)a=(1x)a=k=0Cak(x)k

    Cak 稍作处理:

    Cak=(a)(a1)(a2)(ak+1)k(k1)(k2)2×1=(1)ka(a+1)(a+2)(a+k1)k(k1)(k2)2×1=(1)k(a+k1)(a+k2)(a+2)(a+1)ak(k1)(k2)2×1=(1)kCa+k1k

    代回原式:

    1(1x)a=k=0Cak(x)k=k=0(1)kCa+k1k(1)kxk=k=0Ca+k1kxk=k=0Ca+k1a1xk

    于是,我们愉快地将 (1)k 消掉,得到了这个每一项都是正数、简洁而优雅的式子~

    「注:最后一步将 Ca+k1k 中的 k 转化为常数 a1,方便计算。」




公式推导

正片开始!

我们不妨先从简单的 k=1nk 开始,熟悉一下推导过程。

推导一

  • 目标

    k=1nk=n(n+1)2

  • step1:求出目标数列的生成函数「前置知识:【求导的基本运算】、【生成函数的基本用法】」

    不妨先考虑生成函数最简单的形式。

    数列 {1,1,1,} 的生成函数为:

    f(x)=1+x+x2++xn+=11x

    我们想要得到的数列 {an}{1,2,3,,n,}这里默认 a0=0,下文不再说明

    其生成函数为:

    g(x)=x+2x2+3x3++nxn+

    显然,对 f(x) 求导一次即可:

    dfdx=1+2x+3x2++nxn1+=ddx[11x]=1(1x)2

    两边同乘 x

    x+2x2+3x3++nxn+=x(1x)2

    于是:

    g(x)=x+2x2+3x3++nxn+=x(1x)2

    至此,我们轻松求得了数列 {1,2,3,,n,} 的生成函数 g(x)

  • step2:将原数列求和转化为新数列系数「前置知识:【生成函数的求和性质】」

    我们已经得到了待求和数列 {an} 的生成函数 g(x),那么如何求该数列的前 n 项和 Sn 呢?

    常用的操作方法是:

    1. {an} 构造新的数列 {Sn},其中 Sn=k=0nak,求出 {Sn} 的生成函数 G(x)。「step2
    2. 将数列 {Sn} 的生成函数 G(x) 展开,取出 Sn 对应的 x 的系数。「step3

    先考虑求出数列 {Sn} 的生成函数 G(x)

    根据前置知识中证明过的结论,对 {an} 的生成函数 g(x) 乘个 11x 即可得到 {Sn} 的生成函数 G(x)

    于是:

    G(x)=11xg(x)=x(1x)3

    即:

    G(x)=x+(1+2)x2+(1+2+3)x3++(1+2++n)xn+=x(1x)3

  • step3:取出目标和式对应的生成函数系数「前置知识:【广义二项式定理】」

    容易发现,G(x)xn 的系数为 1+2++n,这就是我们要求的和式!

    由于等式左右两边 xn 的系数相等,我们可以用广义二项式定理将 1(1x)3 展开,取出其中 xn 的系数即可。

    根据前置知识中推导的式子:

    1(1x)a=k=0Ca+k1a1xk

    a=3 代入:

    1(1x)3=k=0C3+k131xk=k=0Ck+22xk

    则:

    x(1x)3=xk=0Ck+22xk=k=0Ck+22xk+1

    显然,xn 的系数为 Cn+12。因此:

    1+2++n=Cn+12=(n+1)n2×1

    即:

    k=1nk=n(n+1)2

至此,我们成功推导了 k=1nk=n(n+1)2 这个式子。

看到这里,可能你还不是很熟悉这一过程。别急,我们再推导一下 k=1nk2 作为练习。


推导二

  • 目标

    k=1nk2=n(n+1)(2n+1)6

推导步骤与前面基本相同,重复内容此处不再赘述。

  • step1:求出目标数列的生成函数

    数列 {1,1,1,} 的生成函数为:

    f(x)=1+x+x2++xn+=11x

    目标数列 {an}{12,22,32,,n2,},其生成函数为:

    g(x)=12x+22x2+32x3++n2xn+

    先按照之前的步骤,对 f(x) 求导一次:

    dfdx=1+2x+3x2++nxn1+=ddx[11x]=1(1x)2

    两边同乘 x

    x+2x2+3x3++nxn+=x(1x)2

    显然这还不是我们想要的结果。

    容易发现,每次求导并同乘 x 后,各项系数的指数都会加 1

    因此,我们在两边再次求导:

    12+22x+32x2++n2xn1+=ddx[x(1x)2]=(1x)2+x2(1x)(1x)4=x+1(1x)3

    两边同乘 x

    12x+22x2+32x3++n2xn+=x2+x(1x)3

    这便得到了 g(x)

    g(x)=12x+22x2+32x3++n2xn+=x2+x(1x)3

    至此,我们轻松求得了数列 {12,22,32,,n2,} 的生成函数 g(x)

  • step2:将原数列求和转化为新数列系数

    根据结论,对 {an} 的生成函数 g(x) 乘个 11x 即可得到 {Sn} 的生成函数 G(x)

    G(x)=11xg(x)=x2+x(1x)4

    即:

    G(x)=12x+(12+22)x2+(12+22+32)x3++(12+22++n2)xn+=x2+x(1x)4

  • step3:取出目标和式对应的生成函数系数

    容易发现,G(x)xn 的系数为 12+22++n2,这就是我们要求的和式。

    由于等式左右两边 xn 的系数相等,我们可以用广义二项式定理将 1(1x)4 展开,取出其中 xn 的系数即可。

    根据结论:

    1(1x)a=k=0Ca+k1a1xk

    a=4 代入:

    1(1x)4=k=0C4+k141xk=k=0Ck+33xk

    则:

    x2+x(1x)4=(x2+x)k=0Ck+33xk=k=0Ck+33(xk+2+xk+1)

    显然,xn 的系数为 Cn+13+Cn+23。因此:

    12+22++n2=Cn+13+Cn+23=(n+1)n(n1)3×2×1+(n+2)(n+1)n3×2×1=n(n+1)6(n1+n+2)=n(n+1)(2n+1)6

    即:

    k=1nk2=n(n+1)(2n+1)6

是不是有点感觉了?

这就是生成函数法求 k=1nka,aN+ 的全部过程,无论 a 为多少,步骤都是一样的。

不妨趁热打铁,练习一下 a=3,4 的情形吧~

「建议先自己按照上面的方法尝试推导一下,再看下面的详细推导。」


推导三

  • 目标

    k=1nk3=n2(n+1)24

下面给出精炼的推导过程,文字叙述将尽可能简洁。「不理解的回去看推导一、推导二。」

  • step1:求出目标数列的生成函数

    数列 {1,1,1,} 的生成函数为:

    f(x)=1+x+x2++xn+=11x

    目标数列 {an}{13,23,33,,n3,},其生成函数为:

    g(x)=13x+23x2+33x3++n3xn+

    f(x) 求导一次后,两边同乘 x

    x+2x2+3x3++nxn+=x(1x)2

    两边再次求导并同乘 x

    12x+22x2+32x3++n2xn+=x2+x(1x)3

    两边再次求导并同乘 x

    13x+23x2+33x3++n3xn+=xddx[x2+x(1x)3]=x(2x+1)(1x)3+(x2+x)3(1x)2(1x)6=x3+4x2+x(1x)4

    因此:

    g(x)=13x+23x2+33x3++n3xn+=x3+4x2+x(1x)4

  • step2:将原数列求和转化为新数列系数

    根据结论:

    G(x)=13x+(13+23)x2+(13+23+33)x3++(13+23++n3)xn+=11xg(x)=x3+4x2+x(1x)5

  • step3:取出目标和式对应的生成函数系数

    容易发现,G(x)xn 的系数 13+23++n3 即为所求和式。

    根据结论:

    1(1x)5=k=0C5+k151xk=k=0Ck+44xk

    则:

    x3+4x2+x(1x)5=(x3+4x2+x)k=0Ck+44xk=k=0Ck+44(xk+3+4xk+2+xk+1)

    显然,xn 的系数为 Cn+14+4Cn+24+Cn+34。因此:

    13+23++n3=Cn+14+4Cn+24+Cn+34=(n+1)n(n1)(n2)4×3×2×1+4(n+2)(n+1)n(n1)4×3×2×1+(n+3)(n+2)(n+1)n4×3×2×1=n(n+1)24(n23n+2+4n2+4n8+n2+5n+6)=n(n+1)24(6n2+6n)=n2(n+1)24

    即:

    k=1nk3=n2(n+1)24

算到这里,你会发现套路都是一样的,按照三个步骤很容易就能求得结果。

下面推导一下 a=4 的公式,建议先自己尝试一下~

「提示:计算量可能稍微有点大,但也不是很难算。」


推导四

  • 目标

    k=1nk4=n(n+1)(2n+1)(3n2+3n1)30

  • step1:求出目标数列的生成函数

    数列 {1,1,1,} 的生成函数为:

    f(x)=1+x+x2++xn+=11x

    目标数列 {an}{14,24,34,,n4,},其生成函数为:

    g(x)=14x+24x2+34x3++n4xn+

    f(x) 求导一次后,两边同乘 x

    x+2x2+3x3++nxn+=x(1x)2

    两边再次求导并同乘 x

    12x+22x2+32x3++n2xn+=x2+x(1x)3

    两边再次求导并同乘 x

    13x+23x2+33x3++n3xn+=x3+4x2+x(1x)4

    两边再次求导并同乘 x

    14x+24x2+34x3++n4xn+=xddx[x3+4x2+x(1x)4]=x(3x2+8x+1)(1x)4+(x3+4x2+x)4(1x)3(1x)8=x4+11x3+11x2+x(1x)5

    因此:

    g(x)=14x+24x2+34x3++n4xn+=x4+11x3+11x2+x(1x)5

  • step2:将原数列求和转化为新数列系数

    根据结论:

    G(x)=14x+(14+24)x2+(14+24+34)x3++(14+24++n4)xn+=11xg(x)=x4+11x3+11x2+x(1x)6

  • step3:取出目标和式对应的生成函数系数

    容易发现,G(x)xn 的系数 14+24++n4 即为所求和式。

    根据结论:

    1(1x)6=k=0C6+k161xk=k=0Ck+55xk

    则:

    x4+11x3+11x2+x(1x)6=(x4+11x3+11x2+x)k=0Ck+55xk=k=0Ck+55(xk+4+11xk+3+11xk+2+xk+1)

    显然,xn 的系数为 Cn+15+11Cn+25+11Cn+35+Cn+45。因此:

    14+24++n4=Cn+15+11Cn+25+11Cn+35+Cn+45=(n+1)n(n1)(n2)(n3)5×4×3×2×1+11(n+2)(n+1)n(n1)(n2)5×4×3×2×1+11(n+3)(n+2)(n+1)n(n1)5×4×3×2×1+(n+4)(n+3)(n+2)(n+1)n5×4×3×2×1=n(n+1)120[(n1)(n2)(n3+11n+22)+(n+2)(n+3)(n+4+11n11)]=n(n+1)120[(n23n+2)(12n+19)+(n2+5n+6)(12n7)]=n(n+1)120(24n3+36n2+4n4)=n(n+1)30(6n3+9n2+n1)=n(n+1)(2n+1)(3n2+3n1)30

    即:

    k=1nk4=n(n+1)(2n+1)(3n2+3n1)30

对于 a>4 的情形,例如:

k=1nk5=n2(n+1)2(2n2+2n1)12k=1nk6=n(n+1)(2n+1)(3n4+6n33n+1)42

限于篇幅,这里不再讨论。若想了解更多公式,可以参考我整理的【前14个自然数幂求和公式】。

感兴趣的读者可自行推导~




模板「方法总结」

  • 目标

    k=1nka,aN+

  • step1:求出目标数列的生成函数「前置知识:【求导的基本运算】、【生成函数的基本用法】」

    数列 {1,1,1,} 的生成函数为:

    f(x)=1+x+x2++xn+=11x

    目标数列 {an}{1a,2a,3a,,na,},其生成函数为:

    g(x)=1ax+2ax2+3ax3++naxn+

    重复f(x) 两边求导后两边同乘 x 的操作 a 次,即可得到 g(x)

    g(x)=1ax+2ax2+3ax3++naxn+=h(x)(1x)a+1

    其中 h(x)=c1x+c2x2++caxa 是关于 xa 次多项式。

    「因为最后一次求导后同乘了 x,所以 h(x) 不含常数项。」

  • step2:将原数列求和转化为新数列系数「前置知识:【生成函数的求和性质】」

    考虑求 {an} 的前 n 项和 Sn,方法如下:

    1. {an} 构造新的数列 {Sn},其中 Sn=k=0nak,求出 {Sn} 的生成函数 G(x)。「step2
    2. 将数列 {Sn} 的生成函数 G(x) 展开,取出 Sn 对应的 x 的系数。「step3

    根据前置知识中证明过的结论,对 {an} 的生成函数 g(x) 乘个 11x 即可得到 {Sn} 的生成函数 G(x)

    G(x)=1ax+(1a+2a)x2+(1a+2a+3a)x3++(1a+2a++na)xn+=11xg(x)=h(x)(1x)a+2

  • step3:取出目标和式对应的生成函数系数「前置知识:【广义二项式定理】」

    容易发现,G(x)xn 的系数 1a+2a++na 即为所求和式。

    由于等式左右两边 xn 的系数相等,我们可以用广义二项式定理将 1(1x)a+2 展开,取出其中 xn 的系数即可。

    根据前置知识中推导的式子:

    1(1x)a=k=0Ca+k1a1xk

    a+2 的值代入:

    1(1x)a+2=k=0Ca+2+k1a+21xk=k=0Ca+k+1a+1xk

    则:

    h(x)(1x)a+2=(c1x+c2x2++caxa)k=0Ca+k+1a+1xk=k=0Ca+k+1a+1(c1xk+1+c2xk+2++caxk+a)

    显然,xn 的系数为 c1Cn+aa+1+c2Cn+a1a+1+c3Cn+a2a+1++caCn+1a+1。因此:

    1a+2a++na=c1Cn+aa+1+c2Cn+a1a+1+c3Cn+a2a+1++caCn+1a+1

    即:

    k=1nka=c1Cn+aa+1+c2Cn+a1a+1+c3Cn+a2a+1++caCn+1a+1=k=1acaCn+a+1ka+1




The End

以上,便是我对推导自然数幂求和公式的一点点思考,希望能帮到你~

其实,还有一点点思考没来得及写,比如扰动法、拉格朗日插值法、下降幂法、误差积分法等等。

「当然,这些就不是和本文生成函数法一样是原创的了,大多在《具体数学》和【知乎】上都能找到。」

这些方法各有特色,几乎每种方法都能写下如本文一样的篇幅。

希望高考后能有时间,再次享受一下这种沉浸在离散数学中的快感~

还有我一定要把《具体数学》读完!!!


都看到这了,不点个赞,发个评论再走嘛:)

posted @   凌云_void  阅读(606)  评论(1)    收藏  举报
相关博文:
阅读排行:
· 精选 4 款免费且实用的数据库管理工具,程序员必备!
· Cursor:一个让程序员“失业”的AI代码搭子
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(6)
· 重生之我是操作系统(七)----内存管理(上)
· .NET 阻止关机机制以及关机前执行业务
点击右上角即可分享
微信分享提示