初学生成函数(二)——生成函数与斐波那契数列

前言

其实这个知识点早就知道了。

但由于我一直都没有把它钻研透彻,而且还总是又忘记掉,因此常常要去网上重新搜索学习一遍。

于是我就想,不如干脆自己写一篇博客,既能巩固现在的记忆,也方便往后的复习。

斐波那契数列的生成函数

考虑斐波那契数列的生成函数直接写出来就长这个样子:

[F(x)=1x^1+1x^2+2x^3+3x^4+5x^5+8x^6+... ]

根据斐波那契的递推公式(Fib(x)=Fib(x-1)+Fib(x-2)),其实转化成多项式的形式,我们列出(xF(x))(x^2F(x))

[egin{align} F(x)&=1x^1+1x^2+2x^3+3x^4+5x^5+...\ xF(x)&=1x^2+1x^3+2x^4+3x^5+5x^6+...\ x^2F(x)&=1x^3+1x^4+2x^5+3x^6+5x^7+... end{align} ]

斜着看,就会发现,(F(x)=x+xF(x)+x^2F(x))

通过简单移项,可以得出(F(x)=frac x{1-x-x^2})

这就是斐波那契数列的生成函数了。

斐波那契数列的通项公式

其实上面的过程算是简单而基础的,接下来才是此篇博客的核心内容。

考虑我们把(1-x-x^2)这一项强行因式分解掉,得到:

[1-x-x^2=(1-frac{1+sqrt5}2x)(1-frac{1-sqrt5}2x) ]

方便起见,令(A=frac{1+sqrt 5}2,B=frac{1-sqrt5}2),也就是说:

[F(x)=frac{x}{(1-Ax)(1-Bx)} ]

现在我们要把它裂开,得到(frac{ax}{1-Ax})(frac{bx}{1-Bx})两项。

列出方程:

[egin{cases}a+b=1,\a imes A+b imes B=0end{cases}Rightarrowegin{cases}a=frac{A}{sqrt5},\b=-frac{B}{sqrt5}end{cases} ]

代回原式得到:

[F(x)=frac{frac{A}{sqrt5}x}{1-Ax}-frac{frac{B}{sqrt5}x}{1-Bx} ]

当分母中变成一个关于(x)的一次式的时候,把(Ax)(Bx)各自视为一个整体我们就可以反向利用等比数列求和公式,就有:

[frac{frac A{sqrt5}x}{1-Ax}=frac A{sqrt5}x(1+Ax+A^2x^2+...)=frac{A}{sqrt5}x+frac{A^2}{sqrt5}x^2+frac{A^3}{sqrt5}x^3+...\ frac{frac B{sqrt5}x}{1-Bx}=frac B{sqrt5}x(1+Bx+B^2x^2+...)=frac{B}{sqrt5}x+frac{B^2}{sqrt5}x^2+frac{B^3}{sqrt5}x^3+... ]

因此就有:

[F(x)=frac{A-B}{sqrt5}x+frac{A^2-B^2}{sqrt5}x+frac{A^3-B^3}{sqrt5}x+...=sum_{i=1}^{+infty}frac{A^i-B^i}{sqrt5}x^i ]

(A=frac{1+sqrt 5}2,B=frac{1-sqrt5}2)代入,根据第(i)项的系数(frac{A^i-B^i}{sqrt5}),就得到了我们耳熟能详的斐波那契通项公式:

[Fib(i)=frac1{sqrt5}((frac{1+sqrt5}2)^i-(frac{1-sqrt5}2)^i) ]

后记

斐波那契通项公式的推导应该还可以用到更一般的形如(frac x{1-px-qx^2})的生成函数上。

这里给一道例题:【洛谷4451】[国家集训队] 整数的lqp拆分

原文地址:https://www.cnblogs.com/chenxiaoran666/p/OGF_Fib.html