前言
其实这个知识点早就知道了。
但由于我一直都没有把它钻研透彻,而且还总是又忘记掉,因此常常要去网上重新搜索学习一遍。
于是我就想,不如干脆自己写一篇博客,既能巩固现在的记忆,也方便往后的复习。
斐波那契数列的生成函数
考虑斐波那契数列的生成函数直接写出来就长这个样子:
[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拆分。