fogflea
fogflea
发布于 2025-12-26 / 44 阅读
0
0

乱学数学-母函数在高中数列的应用

美籍匈牙利数学家 乔治・波利亚 说过

‘母函数’这一名称由拉普拉斯命名。然而,欧拉在拉普拉斯之前很久就已使用母函数这一工具,却未赋予其名称…… 母函数是一种类似袋子的工具。我们不必零散地携带许多小物件(这会令人不便),而是将它们全部放入一个袋子中,这样我们只需携带一件物品 —— 这个袋子本身。

美国数学家 赫伯特・维尔夫 也说过

母函数是一列挂衣架,我们将一串数字挂在上面展示。这根单独的挂衣架容纳了序列的所有元素,以及关于它们的全部信息。

就连邻居家小狗也曾发表重要言论

汪汪!

由此可见母函数这一工具对于数列研究的普适和方便。

虽然母函数非常泛用,但对于研究以等差,等比数列为核心的高中数列来说,这个方法确实有些大炮打蚊子,操作稍显繁琐。所以对于高中数列,我们不一定要去实际使用此方法,而是将它视为理解正常研究方法本质的工具和一个最后手段。

一些概念和基础操作

母函数

母函数,或是生成函数,其实与其说是函数,更像是借用了 “函数” 的概念,具体来讲,假设有数列 \{a_n\} ,那么多项式

T(x)=\sum_{i=0}^{n}a_{i+1}x^i

可以认为是 \{a_n\} 的母函数。

(其实我偏向于 0-index,但因为 whk 里好像规定数列都是从一项开始,所以就用 1-index 吧。)

如果是无穷数列,

T(x)=\sum_{i=0}^\infty a_{i+1}x^i


基础操作

  1. 后移 k(空出来的用 0 补):即

a_n \leftarrow \left\{ \begin{aligned} &0,\;\;\; n\leq k\\ &a_{n-k},\;\;\; n>k \end{aligned} \right.

对应到母函数 T 就是 T(x)\leftarrow x^kT(x)

  1. 前移 k(多出来的舍掉,有限数列超出范围可用 0 ):即

a_n \leftarrow a_{n+k}

对应到母函数 T 就是 T(x)\leftarrow x^{-k}(T(x)-\sum_{i=1}^ka_ix^i)

  1. 求差分:即

a_n\leftarrow a_n-a_{n-1}

认为 a_0=0

可以通过 T(x)\leftarrow (1-x)T(x) 实现。

  1. 求前缀和:即

a_n\leftarrow \sum_{i=1}^n a_i

注意到差分是前缀和的逆运算,所以通过 T(x)\leftarrow \frac{1}{1-x}T(x) 实现。

  1. 给每项乘上下标:即

a_n\leftarrow na_n

发现对多项式求导可以干这件事,即:T(x)\leftarrow T'(x)


封闭形式

考虑一个母函数 T(x)=\lim_{n\rightarrow \infty}\sum_{i=0}^n x^i ,我们似乎可以对它使用等比数列的求和公式,即 T(x)=\frac{1-x^n}{1-x} ,因为 x 可以随便取(这里感觉并不严谨,只是我自己的理解),所以直接认为 x 是小于 1 的,那么 T(x)=\frac{1}{1-x} ,这样给 T 导出的一个像 \frac{1}{1-x} 这样简单的式子就管它叫 T(x)封闭形式

下面列举一些可能会用到的常用数列的封闭形式:

  • \{1,1,1,1\dots\} \rightarrow \sum_{i=0}^\infty x^i \rightarrow \frac{1}{1-x}
  • \{1,q,q^2,q^3\dots\} \rightarrow \sum_{i=0}^\infty q^ix^i \rightarrow \frac{1}{1-qx}
  • \{0,1,\frac{1}{2},\frac{1}{3}\dots\} \rightarrow \sum_{i=0}^\infty \frac{x^i}{i} \rightarrow \ln\frac{1}{1-x}
  • \{1,1,\frac{1}{2!},\frac{1}{3!}\dots\} \rightarrow \sum_{i=0}^\infty \frac{x^i}{i!} \rightarrow e^x

(说实话感觉前两个就挺够用

应用

目前只想到了能用来求通项,如有更多用途欢迎补充。

求通项

  • 例 1
    a_1=4,a_{n+1}=3a_n+4 ,求 a_n

算是入门经典题了。

先讲一个自己瞎搞出来的与母函数无关的做法:

先考虑另一个问题:a_1=2,a_{n+1}=3a_n+2

a_n 放到 3 进制下考虑,不难发现:

\begin{aligned} &a_1=(2)_3\\ &a_2=(22)_3\\ &a_3=(222)_3\\ &\dots \end{aligned}

可直接得出 a_n=3^n-1

那么这个问题是 4 的版本,即

\begin{aligned} &a_1=(4)_3\\ &a_2=(44)_3\\ &a_3=(444)_3\\ &\dots \end{aligned}

(虽然 4>3 ,但因为是求和所以无所谓。

怎么干?

直接 \frac{4}{2}(3^n-1) 就好啦。

那么母函数怎么做呢?

{a_n} 的母函数是 T(x) ,对递推式进行变形:

\begin{aligned} a_{n+1}&=3a_n+4\\ a_{n+1}-3a_n-4&=0\\ \sum_{i=0}^\infty (a_{n+2}-3a_{n+1}-4)x^i&=0\\ \sum_{i=0}^\infty a_{n+2}x^i-3\sum_{i=0}^\infty a_{n+1}x^i-4\sum_{i=0}^\infty x^i&=0\\ \frac{(T(x)-a_1)}{x}-3T(x)-\frac{4}{1-x}&=0\\ \end{aligned}

最后得到:

T(x)=\frac{4}{(1-3x)(1-x)}

到这该怎么往下走呢?

我们发现,如果分母上是 (1-3x)(1-x) ,其封闭形式我们是知道的,所以我们可以直接裂项:

\frac{4}{(1-3x)(1-x)}=\frac{6}{1-3x}+\frac{-2}{1-x}

(如果分子无法瞪出可以待定系数解方程组。

要求的通项 a_n 就是 T(x)x^{n-1} 的系数,也就是 \frac{6}{1-3x}x^{n-1} 的系数和 \frac{-2}{1-x}x^{n-1} 的系数之和,可以从封闭形式直接推回数列对应项相加,就是 6\cdot 3^{n-1}-2\cdot 1^{n-1}=2(3^n-1)

提炼一下方法:根据递推式解出母函数式子 \rightarrow 将母函数变形为可以用已知数列的封闭形式搞出来的形式 \rightarrow 还原回数列,求 x^{n-1} 的系数。


  • 例 2
    求斐波那契数列的通项公式,f_{n+2}=f_{n+1}+f_{n},f_1=f_2=1

有了 1. 的经验,同样尝试表达 f 的母函数 T(x)

\begin{aligned} f_{n+2}-f_{n+1}-f_n&=0\\ \sum_{i=0}^\infty f_{i+3} x^i-\sum_{i=0}^\infty f_{i+2} x^i-\sum_{i=0}^\infty f_{i+1} x^i&=0\\ \frac{T(x)-f_1-xf_2}{x^2}-\frac{T(x)-f_1}{x}-T(x)&=0\\ T(x)&=\frac{1}{1-x-x^2} \end{aligned}

然后是变形,记 p,q 为方程 1-x-x^2=0 的两根。

\begin{aligned} T(x)&=\frac{1}{1-x-x^2}\\ &=\frac{1}{(p-x)(q-x)}\\ &=\frac{1}{q-p}\cdot \frac{1}{p-x}+\frac{1}{p-q}\cdot \frac{1}{q-x}\\ &=\frac{1}{q-p}\cdot \frac{p^{-1}}{1-p^{-1}x}+\frac{1}{p-q}\cdot \frac{q^{-1}}{1-q^{-1}x} \end{aligned}

最后一步转化回来,就是:

\begin{aligned} f_n&=\frac{1}{p^n(q-p)}+\frac{1}{q^n(p-q)} \end{aligned}


  • 例3
    有一数列 a_n=n2^n ,求其前缀和 S_n 的通项

(我从我们班作业里挑出来的一道题,官方解法是 2S_n-S_n

\{a_n\} 的母函数为 A\{S_n\} 的母函数为 T

如果我们知道 a_n ,那么 S_n 的封闭形式就可以用 T(x)=\frac{1}{1-x}A(x) 来表达,所以先看看 A 的封闭形式。

在操作那一栏讲了,乘上下标可以用求导干,所以

\begin{aligned} A(x)&=\sum_{i=0}^\infty (i+1)2^{i+1}x^{i}\\ &=\big[\sum_{i=0}^\infty 2^{i+1}x^{i+1}\big]'\\ &=\big(\frac{1}{1-2x}\big)'\\ &=\frac{2}{(1-2x)^2} \end{aligned}

那么 T(x)=\frac{2}{(1-2x)^2(1-x)}

分母变为 3 次也没关系,裂项两次就行。得到 T(x)=\frac{1}{1-x}+\frac{-1}{1-2x}+\frac{4}{(1-2x)^2}

前两项正常干就行,第三项就是 2A(x)

可以得到: S_n=2-4\cdot 2^{n-1}+4\cdot n2^{n-1}=(n-1)2^{n+1}+2

从这里也能看出,如果知道一个数列的封闭形式,那么它的任意阶前缀和或差分都能被表达。

后记

其实生成函数还能用于许多组合计数问题,但感觉不在高考范围内所以没写。

乘上下标那个最开始我怎么想也想不出来,最后花了一节数学课才注意到它和导数的关系。

其实生成函数在我初中的博客亦有记载,只不过那时理解并不深,写的有很多错误,就弃了。


评论