关于生成函数和二项式定理

二项式定理与生成函数

一.二项式定理

二项式定理

∀ \forall x , y x , y x,y ∈ \in R , n ∈ Z , n \in Z, nZ 均有 ( 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=0nCnixiyni

证明: 对于 ( x + y ) n (x+y)^n (x+y)n x i y n − i x^iy^{n-i} xiyni 项的系数,相当于有 n 次选择 每次选择可以挑出一个 x 或者 一个 y ,求出 n 次选择后,恰好挑了 i i i 个 x 和 ( n − i ) (n-i) (ni) 个 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=0Caixiyni (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(a1)(a2)......(ai+2)(ai+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=0Caiyi ∣ 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+i1iyi (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}} (1y)a=i=0Ca+i1iyi (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}} 1y1=i=0yi (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} Ck1n1

但是这种建立一一映射的方法通常很难想到,所以我们接下来介绍使用生成函数解决这个问题。

对于任意一项 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=1xi) ( ∑ i = 1 ∞ x i ) (\sum_{i = 1}^{\infty}x^i) (i=1xi) ( ∑ i = 1 ∞ x i ) (\sum_{i = 1}^{\infty}x^i) (i=1xi) ( ∑ i = 1 ∞ x i ) (\sum_{i = 1}^{\infty}x^i) (i=1xi)

在这个式子中,第 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=0xi)n

由(一)中的 (6)式得到

原式 = x n ( 1 1 − x ) n x^n(\dfrac{1}{1-x})^n xn(1x1)n = x n ( 1 − x ) − n x^n({1-x})^{-n} xn(1x)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=0Cn+i1ixi

我们现在要求的是该式中的 k 次项系数,即求式子 ∑ i = 0 ∞ C a i x i {\sum_{i = 0}^\infty C_a^i x^{i}} i=0Caixi 的 k-n 次项系数 , 为 C k − 1 k − n = C k − 1 n − 1 C_{k-1}^{k-n} = C_{k-1}^{n-1} Ck1kn=Ck1n1

生成函数是一种解决组合数学问题的有效的手段,它将一个组合问题代数化,最终求得结果。

再来看一道例题:

求只用数码 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 写这篇文章的目的主要是巩固一下知识)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值