浅谈生成函数推导斐波那契数列以及特征函数
一次数学课,尊敬的Mr.ZHU与L先生提出了一个叫做特征函数的东西,作为前竞赛生的Marcelo Jin 一惊,这不正是生成函数的化简版嘛,于是他决定,周日的时候再来好好回顾一下这个有趣的算法。
一.关于生成函数
1.数列的多项式表示法
对于一个数列(a_n),我们可以利用一个多项式来表示它,即(A(x)=Sigma a_i x^i)
举个例子,对于数列(a_n=n),它的多项式表示法就是(A(x)=x+2x^2+3x^3+...)
这里的多项式是形式幂级数,也就是变量只是一个符号,我们不关心它取值带来的影响,只关心它所携带的信息。
因为本篇着眼于文化课上的生成函数应用,所以暂且不提指数型生成函数
2.生成函数的封闭形式
再举个例子,对于序列(<1,1,1,1...>),它的生成函数要写成一个多项式的形式,十分不直观,我们可以考虑把它的生成函数写成一个封闭的形式。
这里,分享两个方法。
设该数列的生成函数为(A(x))
Solution 1:
根据我们小学就学过的等比数列求和公式,
(
A(x)=frac{x^n-1}{x-1}
)
所以(lim_{n ightarrow+infty} A(x)=frac{1}{1-x})
Solution 2:
(A(x)⋅x+1=A(x))
(So) (we) (have) (A(x)=frac{1}{1-x})
推广一下,又有
(frac{1}{1-kx}=1+kx+k^2x^2+k^3x^3...)
也就是说,生成函数为(frac{1}{1-kx})的数列的通项公式为(a_n=k^n)
3.生成函数的应用
生成函数一般有两个用途
1.对于给定的递推公式,求其通项公式
2.解决一些计数类问题
二.斐波那契数列通项公式的推导
我们设斐波那契数列的通项公式为(f_n),设其生成函数为(F(x)),那么
( F(x)=Sigma{f_ix^i}=f_1x+ Sigma_{igeq2}{f_ix^i} )
( =x+Sigma_{igeq2}(f_{i-2}+f_{i-1})x^i )
( =x+x^2Sigma_{igeq2}f_{i-2}x^{i-2}+xSigma_{igeq2}f_{i-1}x^{i-1} )
( =x+x^2F(x)+xF(x) )
所以,(F(x)=frac{x}{1-x-x^2})
可用待定系数法分解为:
(F(x)=frac{1}{sqrt5}((frac{1}{1-frac{1+sqrt5}{2}x})-(frac{1}{1-frac{1-sqrt5}{2}x})))
根据之前的结论,(f_n=frac{1}{sqrt5}((frac{1+sqrt5}{2})^n-(frac{1-sqrt5}{2})^n))
三.关于特征函数
神·朱老师说,对于一个递推式(a_n=a_{n-1}+a_{n-2}),可以写成(x^2=x+1)的形式,或者再都降个次,也就是(x=1+frac{1}{x})的形式,我们再观察上面的(F(x)),发现互为倒数,也就是说特征函数可以由生成函数来推导。