二项式定理与生成函数
一.二项式定理
二项式定理
∀ \forall ∀ x , y x , y x,y ∈ \in ∈ R , n ∈ Z , n \in Z, n∈Z, 均有 ( x + y ) n = ∑ i = 0 n C n i x i y n − i (x+y)^n = \sum_{i=0}^n C_n^i x^i y^{n-i} (x+y)n=∑i=0nCnixiyn−i
证明: 对于 ( x + y ) n (x+y)^n (x+y)n 中 x i y n − i x^iy^{n-i} xiyn−i 项的系数,相当于有 n 次选择 每次选择可以挑出一个 x 或者 一个 y ,求出 n 次选择后,恰好挑了 i i i 个 x 和 ( n − i ) (n-i) (n−i) 个 y 的方案数,即 C n i C^i_n Cni 种方案。
牛顿二项式定理
∀ \forall ∀ x , y , a x , y , a x,y,a ∈ R \in R ∈R 且 ∣ x ∣ > ∣ y ∣ |x|> |y| ∣x∣>∣y∣
均有 ( x + y ) a = ∑ i = 0 ∞ C a i x i y n − i (x+y)^a = \sum_{i = 0}^\infty C_a^i x^i y^{n-i} (x+y)a=∑i=0∞Caixiyn−i (1)
其中 C a i C_a^i Cai = a ( a − 1 ) ( a − 2 ) . . . . . . ( a − i + 2 ) ( a − i + 1 ) i ! \dfrac{a(a-1)(a-2)......(a-i+2)(a-i+1)}{i!} i!a(a−1)(a−2)......(a−i+2)(a−i+1)
特别地,(1)中,我们令 x = 1 x = 1 x=1 则有 ( 1 + y ) a = ∑ i = 0 ∞ C a i y i (1+y)^a = \sum_{i = 0}^\infty C_a^i y^{i} (1+y)a=∑i=0∞Caiyi ( ∣ y ∣ < 1 |y|<1 ∣y∣<1)(2)
在(2)中,用 − a -a −a 替代 a a a
得到 ( 1 + y ) − a = ∑ i = 0 ∞ ( − 1 ) i C a + i − 1 i y i (1+y)^{-a} = {\sum_{i = 0}^\infty (-1)^iC_{a+i-1}^{i} y^{i}} (1+y)−a=∑i=0∞(−1)iCa+i−1iyi (3)
注:((3)比(2)式子多了一项 ( − 1 ) i (-1)^i (−1)i ,是因为在上述组合数的计算规则中,当 a < 0 a<0 a<0 时 组合数的正负性会发生改变,下面的(4)式就让组合数的正负性不再改变,式子也变得更加简洁 )
在 (3) 中, 用 − z -z −z 替代 z z z
得到 ( 1 − y ) − a = ∑ i = 0 ∞ C a + i − 1 i y i (1-y)^{-a} = {\sum_{i = 0}^\infty C_{a+i-1}^i y^{i}} (1−y)−a=∑i=0∞Ca+i−1iyi (4)
在 (3) 中,令 a = 1 a = 1 a=1
则有 1 1 + y \frac{1}{1+y} 1+y1 = ∑ i = 0 ∞ ( − 1 ) i y i {\sum_{i = 0}^\infty (-1)^iy^{i}} ∑i=0∞(−1)iyi (5)
同理 由 (4) 得到 1 1 − y = ∑ i = 0 ∞ y i \frac{1}{1-y} = {\sum_{i = 0}^\infty y^{i}} 1−y1=∑i=0∞yi (6)
牛顿二项式定理是化简无穷收敛级数的重要手段,也是生成函数中常用的化简技巧。
**
二.生成函数
**
对于一个任意序列 a 0 , a 1 , a 2 , . . . , a n a_0,a_1,a_2,...,a_n a0,a1,a2,...,an ,定义它的生成函数为 f ( x ) = ∑ i = 0 n a i x i f(x) = \sum_{i = 0}^n a_ix^i f(x)=∑i=0naixi
生成函数可以用于解决许多组合问题,也能使用生成函数将数列递推公式转化成数列通项公式。
比如下面这个经典的问题:
求方程 x 1 + x 2 + x 3 + . . . + x n = k x_1+x_2+x_3+...+x_n = k x1+x2+x3+...+xn=k的解的个数 其中 x 1 , x 2 , x 3 , . . . , x n x_1,x_2,x_3,...,x_n x1,x2,x3,...,xn 均为正整数。
一种非常自然的想法是对问题建立一一映射,于是原问题就变成 k个小球,要将它们分成 n 份的总方案数,可以通过插板法解决,答案为 C k − 1 n − 1 C_{k-1}^{n-1} Ck−1n−1
但是这种建立一一映射的方法通常很难想到,所以我们接下来介绍使用生成函数解决这个问题。
对于任意一项 x i x_i xi 来说, 不考虑其他项取值的限制,也不考虑 k 的大小, x i x_i xi 可为 1 到 + ∞ +\infty +∞ 之间的任何整数。
考虑构造序列 h 0 , h 1 , h 2 , h 3 , . . . h ∞ h_0,h_1,h_2,h_3,...h_{\infty} h0,h1,h2,h3,...h∞, h 0 = 0 h_0 = 0 h0=0,其他项均为一,其中对于任意j, h j h_j hj 的值表示 x i = j x_i = j xi=j 有 h j h_j hj 种不同情况。
对于每一项 x i x_i xi ,都构造一个这样的序列,将这 n 个序列的生成函数相乘,得到一个整式。
这个整式为 ( ∑ i = 1 ∞ x i ) (\sum_{i = 1}^{\infty}x^i) (∑i=1∞xi) ( ∑ i = 1 ∞ x i ) (\sum_{i = 1}^{\infty}x^i) (∑i=1∞xi) ( ∑ i = 1 ∞ x i ) (\sum_{i = 1}^{\infty}x^i) (∑i=1∞xi)… ( ∑ i = 1 ∞ x i ) (\sum_{i = 1}^{\infty}x^i) (∑i=1∞xi)
在这个式子中,第 i 个因式每一项的次数代表了 x i x_i xi 的取值。
从而,可以得到 x 1 + x 2 + x 3 + . . . + x n = k x_1+x_2+x_3+...+x_n = k x1+x2+x3+...+xn=k的解的个数为上述整式的 k 次项的系数。
考虑化简上面的整式。
先把 x 提出来,得到: x n ( ∑ i = 0 ∞ x i ) n x^n(\sum_{i = 0}^{\infty}x^i)^n xn(∑i=0∞xi)n
由(一)中的 (6)式得到
原式 = x n ( 1 1 − x ) n x^n(\dfrac{1}{1-x})^n xn(1−x1)n = x n ( 1 − x ) − n x^n({1-x})^{-n} xn(1−x)−n
由(一)中的(4)式得到
原式 = x n x^n xn ∑ i = 0 ∞ C n + i − 1 i x i {\sum_{i = 0}^\infty C_{n+i-1}^{i} x^{i}} ∑i=0∞Cn+i−1ixi
我们现在要求的是该式中的 k 次项系数,即求式子 ∑ i = 0 ∞ C a i x i {\sum_{i = 0}^\infty C_a^i x^{i}} ∑i=0∞Caixi 的 k-n 次项系数 , 为 C k − 1 k − n = C k − 1 n − 1 C_{k-1}^{k-n} = C_{k-1}^{n-1} Ck−1k−n=Ck−1n−1
生成函数是一种解决组合数学问题的有效的手段,它将一个组合问题代数化,最终求得结果。
再来看一道例题:
求只用数码 1 , 1 , 2 , 2 , 3 , 4 1,1,2,2,3,4 1,1,2,2,3,4组成的不同的四位数有多少个。
用组合的方法求解是直接分类讨论。
下面简要介绍如何使用生成函数解决这个问题:
考虑式子 24 ∗ ( x 2 / 2 + x + 1 ) 2 ( x + 1 ) 2 24*(x^2/2+x+1)^2(x+1)^2 24∗(x2/2+x+1)2(x+1)2
四次项系数即为所求。
其中 24 指的是将四位数中的四个数码视为不同的数,从而产生的不同的四位数的个数, 即 4 ! 4! 4!。
假设我们使用这种算法计算数的总个数,会发现有些数算重了。
比如说 1123 1123 1123 这样的一个数,因为在这个算法中第四位的 1 和第三位的 1 被看成两个不同的数码,从而交换这两位,产生的还是原来的 1123 1123 1123,但是被认为是另一个不同的数。
从而我们有一个结论: 若有 k 个数码重复出现了两次,则这样的一个数被多算了 2 k 2^k 2k 次。
(实际上,这种生成函数有个名字,叫做指数生成函数,上面放的这个问题也有个名字,叫做多重集的排列)
于是在生成函数的因式 ( x 2 / 2 + x + 1 ) (x^2/2+x+1) (x2/2+x+1) 中,二次项的系数是 1/2。
总结:
生成函数是一种解决数学问题的有效手段,它将问题代数化,转变成求多项式系数的问题,再搭配上二项式定理进行有效化简,问题就得以迎刃而解。
(本文作者: cjy 写这篇文章的目的主要是巩固一下知识)