为防止广告,目前nocow只有登录用户能够创建新页面。如要创建页面请先登录/注册(新用户需要等待1个小时才能正常使用该功能)。
母函数
母函数又称生成函数,发生函数。
母函数可以帮助我们解决很多问题,例如一些简单的组合数学问题。
母函数更为有用的应用在于解常系数线形齐次递推式。
从Fibonacci数列看,
Fibonacci数列满足前两项之和等于第三项,
即fn = fn − 1 + fn − 2。
显然这是一个一次二项递推式,
为了得到这个递推关系的通项公式,
一种做法是:设fn = qn
这样一个Fibonacci数列就转为了一个等比数列(几何数列),
将fn = qn
代入fn = fn − 1 + fn − 2
得到q(n − 1) + q(n − 2) = qn
于是q(n − 2) * (q2 − q − 1) = 0,
由于q(n − 2)并不恒等于0,
所以得到q2 − q − 1 = 0。
解这个方程很容易得到:
。
我们把这两个根称为特征根。
下面讲一个结论。
对于任何一个线形齐次递推式,
设次数为n,则必然有n个特征根,
记n个特征根为q1..qn
则数列{fm}的
通项公式为;
其中ri为使得fi = ai
(ai为n次递推关系的n个边界项,显然可以随意改变)
成立的实数,而qi为特征根。
为什么这个命题一定成立呢?
首先我们可以知道,几何序列{}和{
}
是满足递推关系fn = fn − 1 + fn − 2的,
所以是满足fn = fn − 1 + fn − 2的。
而我们为了让求得的通项公式满足fi = ai这n个边界项,
根据一次方程组根的性质,则必然需要给n个特征根n个待定系数。
于是我们列出方程组
例如,对于Fibonacci数列,我们得到:
于是解得r_1=
,r_2=
,
代入得到Fibonacci数列满足:
上面只是一种解线形齐次递推式的方法,
接下来介绍母函数的应用。
母函数是什么?
众所周知,Fibonacci数列展开之后就是:
1,1,2,3,5,8……
那么Fibonacci数列的递推式的母函数就是:
Gx = 1 * x1 + 1 * x2 + 2 * x3 + 3 * x4 + 5 * x6……。
如果把Fibonacci数列换成数列1,1,1,1……
那么它的母函数就是GX = 1 + x + x2 + x3……。
由于母函数中x可以任取,我们设x是真分数,那么很容易得到:
。
如此这般,我们就把一个无穷数列转为了一个很简洁的形式。
这个是很有用的——
我们引用《组合数学》上经典的一道例题:
我们要从苹果、香蕉、橘子和梨中拿一些水果出来,要求苹果只能拿偶数个,香蕉的个数要是5的倍数,橘子最多拿4个,梨要么不拿,要么只能拿一个。问按这样的要求拿n个水果的方案数。