一、斐波那契数列通项公式推导
我们知道斐波那契数列递推公式
fn=fn−1+fn−2(n≥2) f n = f n − 1 + f n − 2 ( n ≥ 2 )
即
fn−fn−1−fn−2=0 f n − f n − 1 − f n − 2 = 0
求解这个递推关系的一种方法是寻找形式为
fn=qn f n = q n
的解
因此得到
qn−qn−1−qn−2=0 q n − q n − 1 − q n − 2 = 0
qn−2(q2−q−1)=0 q n − 2 ( q 2 − q − 1 ) = 0
所以我们求解
q2−q−1=0 q 2 − q − 1 = 0
的解
发现方程的根为
q1=1+5–√2,q2=1−5–√2 q 1 = 1 + 5 2 , q 2 = 1 − 5 2
因此
fn=(1+5–√2)n,fn=(1−5–√2)n f n = ( 1 + 5 2 ) n , f n = ( 1 − 5 2 ) n
两者都为斐波那契递推关系的解。
因为非波那契递推关系是线性的且齐次,所以对于任选常数 c1,c2 c 1 , c 2
fn=c1(1+5–√2)n+c2(1−5–√2)n f n = c 1 ( 1 + 5 2 ) n + c 2 ( 1 − 5 2 ) n
因为我们知道任意 fn的值,所以只需枚举两个n的数解方程组即可 f n 的 值 , 所 以 只 需 枚 举 两 个 n 的 数 解 方 程 组 即 可
{ (n=0) c1+c2=0 (n=1) c1(1+5√2)+c2(1−5√2)=1 { ( n = 0 ) c 1 + c 2 = 0 ( n = 1 ) c 1 ( 1 + 5 2 ) + c 2 ( 1 − 5 2 ) = 1
解得
c1=15–√,c2=−15–√ c 1 = 1 5 , c 2 = − 1 5
综上所述:
非波那契数满足公式
fn=15–√(1+5–√2)n−15–√(1−5–√2)n f n = 1 5 ( 1 + 5 2 ) n − 1 5 ( 1 − 5 2 ) n
二、构造共轭公式并反求递推关系
为什么要讲这个东西呢
因为最近做到了几个题,涉及到求解含有根号的多项式的高次幂
即求解形式
(a+b√)n ( a + b ) n
对于这样的题目的求解,我们必然要联想非波那契通项公式
因此我们会构造数列
fn=(a+b√)n+(a−b√)n f n = ( a + b ) n + ( a − b ) n
类似于非波那契通项公式对吧
那么这个数列怎么求呢,我们要是知道递推关系就好了
所以下面说一下怎么求出递推关系
其实看了上面非波那契数列通项公式的推导过程大家就明白了,就是上面的过程倒着来一边嘛
我们设的推关系满足形式:
fn=p⋅fn−1+q⋅fn−2 f n = p ⋅ f n − 1 + q ⋅ f n − 2
类比上面推导过程相当于我们已经知道了方程
f2−pf−q=0 f 2 − p f − q = 0
的两个解
f1=a+b√,f2=a−b√ f 1 = a + b , f 2 = a − b
所以带入求解p,q即可
最终得到:
{ p=2a q=b−a2 { p = 2 a q = b − a 2
因此我们得到了递推式
fn=2a⋅fn−1+(b−a2)⋅fn−2 f n = 2 a ⋅ f n − 1 + ( b − a 2 ) ⋅ f n − 2
对于这样递推式的求解对于取模的情况,我们可以尝试打表看看取模有没有循环节,如果发现有那就可以直接线性预处理出循环节长度即可,否则用矩阵快速幂,可以解决所有递推式的快速求解