为防止广告,目前nocow只有登录用户能够创建新页面。如要创建页面请先登录/注册(新用户需要等待1个小时才能正常使用该功能)。

母函数

来自NOCOW
跳转到: 导航, 搜索

母函数又称生成函数,发生函数。

母函数可以帮助我们解决很多问题,例如一些简单的组合数学问题。

母函数更为有用的应用在于解常系数线形齐次递推式。


从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) * (q2q − 1) = 0

由于q(n − 2)并不恒等于0,

所以得到q2q − 1 = 0

解这个方程很容易得到:

q_1=\frac{1-\sqrt{5}}{2}

q_2=\frac{1+\sqrt{5}}{2}

我们把这两个根称为特征根。


下面讲一个结论。

对于任何一个线形齐次递推式,

设次数为n,则必然有n个特征根,

记n个特征根为q1..qn

则数列{fm}的

通项公式为f_m=sum_{i=1}^n r_i*q_i^n;

其中ri为使得fi = ai

ai为n次递推关系的n个边界项,显然可以随意改变)

成立的实数,而qi为特征根。

为什么这个命题一定成立呢?

首先我们可以知道,几何序列{q_1^n}和{q_2^n}

是满足递推关系fn = fn − 1 + fn − 2的,

所以f_m=sum_{i=1}^n r_i*q_i^n是满足fn = fn − 1 + fn − 2的。

而我们为了让求得的通项公式满足fi = ai这n个边界项,

根据一次方程组根的性质,则必然需要给n个特征根n个待定系数。

于是我们列出方程组\begin{cases} sum_{i=1}^n r_i=a_1 \\ sum_{i=1}^n r_i*q_i=a_2 \\ sum_{i=1}^n r_i*q_i^2=a_3 \\ .......\\ sum_{i=1}^n r_i*q_i^n=a_n \end{cases} 例如,对于Fibonacci数列,我们得到:

\begin{cases} r_1+r_2=0 \\ r_1*\frac{1-\sqrt{5}}{2}+r_2*\frac{1+\sqrt{5}}{2}=1 \end{cases} 于是解得r_1=\frac{1}{\sqrt{5}},r_2=\frac{-1}{\sqrt{5}}, 代入得到Fibonacci数列满足:

f_n=\frac{1}{\sqrt{5}}*{(\frac{1+\sqrt{5}}{2})}^n-\frac{1}{\sqrt{5}}*{(\frac{1-\sqrt{5}}{2})}^n



上面只是一种解线形齐次递推式的方法,

接下来介绍母函数的应用。

母函数是什么?

众所周知,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是真分数,那么很容易得到:

G_x=\frac{1}{1-x}

如此这般,我们就把一个无穷数列转为了一个很简洁的形式。

这个是很有用的——

我们引用《组合数学》上经典的一道例题:

我们要从苹果、香蕉、橘子和梨中拿一些水果出来,要求苹果只能拿偶数个,香蕉的个数要是5的倍数,橘子最多拿4个,梨要么不拿,要么只能拿一个。问按这样的要求拿n个水果的方案数。

个人工具