不论是在算法还是在编程语言的教材中,都可能会以斐波那契数列为例,或说明其算法上的特点——主要是递归,或说明如何运用某种编程语言编写相应函数。
本文是一篇关于“斐波那契数列”的专题文章,目的是让学习《数据结构》这门课程的同学对此问题有完整的理解。
1. 斐波那契数列
斐波那契数列于公元1150年被印度数学家发现,而后意大利人斐波那契(Leonardo Fibonacci, 1175-1250)在描述兔子生长的数目时用上了这数列:
- 第一个月初有一对刚诞生的兔子;
- 第二个月之后(第三个月初)它们可以生育;
- 每月每对可生育的兔子会诞生下一对新兔子;
- 兔子永不死。
假设在 n n n 月有兔子总共 a a a 对, n + 1 n + 1 n+1 月总共有 b b b 对。在 n + 2 n + 2 n+2 月必定总共有 a + b a + b a+b 对:因为在 n + 2 n + 2 n+2 月的时候,前一月( n + 1 n + 1 n+1 月)的 b b b 对兔子可以存留至第 n + 2 n + 2 n+2 月(在当月属于新诞生的兔子尚不能生育)。而新生育出的兔子对数等于所有在 n n n 月就已存在的 a a a 对。
斐波纳契数是帕斯卡三角形的每一条红色对角线上数字的和。
用递归方式定义斐波那契数列:
f i b ( n ) = { 1 ( n = 0 或 n = 1 ) f i b ( n − 1 ) + f i b ( n − 2 ) ( n > 1 ) fib(n)=\begin{cases} 1&\quad (n=0或n=1) \\fib(n-1)+fib(n-2)&\quad(n\gt1) \end{cases} fib(n)={1fib(n−1)+fib(n−2)(n=0或n=1)(n>1)
1.1 时间复杂度
根据以上表达式,写出相应的算法描述
long fib(long n){if(n == 1 || n == 2) return 1;else return fib(n-1) + fib(n-2);
}
下面分析上述算法描述的时间复杂度。
假设计算 fib(n)
的时间是 T ( n ) T(n) T(n) ,先花费 T ( n − 1 ) T(n-1) T(n−1) 时间计算 fib(n-1)
;再花费 T ( n − 2 ) T(n-2) T(n−2) 时间计算 fib(n-2)
;最后用 1 个时间单元将二者相加。由此写出 T ( n ) T(n) T(n) 的递推式:
T ( n ) = { 1 ( n ≤ 1 ) T ( n − 1 ) + T ( n − 2 ) + 1 ( others ) T(n)=\begin{cases}1&(n\le1)\\T(n-1)+T(n-2)+1&(\text{others})\end{cases} T(n)={1T(n−1)+T(n−2)+1(n≤1)(others)
令 S ( n ) = T ( n ) + 1 2 S(n)=\frac{T(n)+1}{2} S(n)=2T(n)+1 ,则上式可以写成:
S ( n ) = { 1 ( n ≤ 1 ) S ( n − 1 ) + S ( n − 2 ) ( others ) S(n)=\begin{cases}1&(n\le1)\\S(n-1)+S(n-2)&(\text{others})\end{cases} S(n)={1S(n−1)+S(n−2)(n≤1)(others)
将此式与斐波那契数列的函数式对比:
f i b ( n ) = { 1 ( n = 0 或 n = 1 ) f i b ( n − 1 ) + f i b ( n − 2 ) ( n > 1 ) fib(n)=\begin{cases} 1&\quad (n=0或n=1) \\fib(n-1)+fib(n-2)&\quad(n\gt1) \end{cases} fib(n)={1fib(n−1)+fib(n−2)(n=0或n=1)(n>1)
S ( n ) S(n) S(n) 与 f i b ( n ) fib(n) fib(n) 在形式上基本一样,只是起始项不同,有归纳可得:
S ( 0 ) = 1 = f i b ( 1 ) S ( 1 ) = 1 = f i b ( 2 ) ⋮ S ( n ) = f i b ( n − 1 ) \begin{split} S(0)&=1=fib(1) \\S(1)&=1=fib(2) \\&\vdots \\S(n)&=fib(n-1) \end{split} S(0)S(1)S(n)=1=fib(1)=1=fib(2)⋮=fib(n−1)
根据 f i b ( n ) fib(n) fib(n) 可以解得(求解过程参见本节拓展内容):
f i b ( n ) = 1 5 [ ( 1 + 5 2 ) n − ( 1 − 5 2 ) n ] , ( n = 0 , 1 , 2 , ⋯ ) fib(n)=\frac{1}{\sqrt{5}}\left[\left(\frac{1+\sqrt{5}}{2}\right)^{n}-\left(\frac{1-\sqrt{5}}{2}\right)^{n}\right] ,(n=0,1,2,\cdots) fib(n)=51[(21+5)n−(21−5)n],(n=0,1,2,⋯)
令 φ = 1 + 5 2 \varphi=\frac{1+\sqrt{5}}{2} φ=21+5 (黄金比例),则 f i b ( n ) = 1 5 [ φ n − ( 1 − φ ) n ] fib(n)=\frac{1}{\sqrt{5}}[\varphi^n-(1-\varphi)^n] fib(n)=51[φn−(1−φ)n] 。
所以:
S ( n ) = f i b ( n + 1 ) = 1 5 [ φ ( n + 1 ) − ( 1 − φ ) ( n + 1 ) ] ∴ T ( n ) = 2 S ( n ) − 1 = 2 ⋅ f i b ( n + 1 ) − 1 = O ( φ n + 1 ) \begin{split} &S(n)=fib(n+1)=\frac{1}{\sqrt{5}}[\varphi^{(n+1)}-(1-\varphi)^{(n+1)}] \\&\therefore~T(n)=2S(n)-1=2\cdot fib(n+1)-1=O(\varphi^{n+1}) \end{split} S(n)=fib(n+1)=51[φ(n+1)−(1−φ)(n+1)]∴ T(n)=2S(n)−1=2⋅fib(n+1)−1=O(φn+1)
由此可知,以递归方式实现的斐波那契数列的时间复杂度为指数级,不是一个有价值的算法。其原因在于违反了设计递归算法的基本原则中的合成效益法则。根据 f i b ( n ) fib(n) fib(n) 的递归函数,追踪调用过程,当第一次调用 f i b ( n − 1 ) fib(n-1) fib(n−1) 时, f i b ( n − 2 ) fib(n-2) fib(n−2) 实际上已经计算了,在后面还要再计算 f i b ( n − 2 ) fib(n-2) fib(n−2) 。即同一个实例,在递归过程中,重复计算,从而导致运行时间暴增。
1.2 计算斐波那契数列的通项
设 F k F_k Fk 为斐波那契数列中的第 k k k 项,则:
F k + 2 = F k + 1 + F k , ( k = 0 , 1 , 2 , ⋯ ) (1) F_{k+2} = F_{k+1} + F_k,(k=0,1,2,\cdots) \tag{1} Fk+2=Fk+1+Fk,(k=0,1,2,⋯)(1)
根据斐波那契数列的特点,初始条件是: F 0 = 0 , F 1 = 1 F_0=0, F_1=1 F0=0,F1=1 。
将(1)式写成:
{ F k + 2 = F k + 1 + F k F k + 1 = F k + 1 \begin{cases}F_{k+2}=F_{k+1}+F_k\\F_{k+1}=F_{k+1}\end{cases} {Fk+2=Fk+1+FkFk+1=Fk+1
以矩阵方式表示为:
[ F k + 2 F k + 1 ] = [ 1 1 1 0 ] [ F k + 1 F k ] (2) \begin{bmatrix}F_{k+2}\\F_{k+1}\end{bmatrix}=\begin{bmatrix}1&1\\1&0\end{bmatrix}\begin{bmatrix}F_{k+1}\\F_{k}\end{bmatrix} \tag{2} [Fk+2Fk+1]=[1110][Fk+1Fk](2)
1.2.1 第一种方法
令 u k = [ F k + 1 F k ] \pmb{u}_k=\begin{bmatrix}F_{k+1}\\F_{k}\end{bmatrix} uk=[Fk+1Fk] ,由(2)式得到:
u k + 1 = A u k , ( k = 0 , 1 , ⋯ ) (3) \pmb{u}_{k+1}=\pmb{Au}_k,(k=0,1,\cdots) \tag{3} uk+1=Auk,(k=0,1,⋯)(3)
其中, A = [ 1 1 1 0 ] \pmb{A}=\begin{bmatrix}1&1\\1&0\end{bmatrix} A=[1110] ,初始条件 u 0 = [ F 1 F 0 ] = [ 1 0 ] \pmb{u}_0=\begin{bmatrix}F_1\\F_0\end{bmatrix}=\begin{bmatrix}1\\0\end{bmatrix} u0=[F1F0]=[10] 。
(3)式查分方程(参见《机器学习数学基础》第 3 章 3.2.2,齐伟,电子工业出版社)。
又因为:
u k = A u k − 1 = A ( A u k − 2 ) = A 2 u k − 2 = ⋯ = A k u 0 (4) \pmb{u}_k=\pmb{Au}_{k-1}=\pmb{A}(\pmb{Au}_{k-2})=\pmb{A}^2\pmb{u}_{k-2}=\cdots=\pmb{A}^k\pmb{u}_0\tag{4} uk=Auk−1=A(Auk−2)=A2uk−2=⋯=Aku0(4)
所以,只要计算出 A k \pmb{A}^k Ak ,然后将它与初始条件 u 0 \pmb{u}_0 u0 相乘,即得到 u k \pmb{u}_k uk 。
对于矩阵 A = [ 1 1 1 0 ] \pmb{A}=\begin{bmatrix}1&1\\1&0\end{bmatrix} A=[1110] ,其特征多项式:
∣ A − λ I ∣ = ∣ 1 − λ 1 1 − λ ∣ = λ 2 − λ − 1 |\pmb{A}-\lambda\pmb{I}|=\begin{vmatrix}1-\lambda & 1\\1&-\lambda\end{vmatrix}=\lambda^2-\lambda-1 ∣A−λI∣= 1−λ11−λ =λ2−λ−1
根据特征方程: ∣ A − λ I ∣ = 0 |\pmb{A}-\lambda\pmb{I}|=0 ∣A−λI∣=0 ,得:
λ 2 − λ − 1 = 0 (5) \lambda^2-\lambda-1=0\tag{5} λ2−λ−1=0(5)
解得:
{ λ 1 = 1 + 5 2 λ 2 = 1 − 5 2 (6) \begin{cases}\lambda_1=\frac{1+\sqrt{5}}{2}\\\lambda_2=\frac{1-\sqrt{5}}{2}\end{cases}\tag{6} {λ1=21+5λ2=21−5(6)
显然, λ 1 + λ 2 = 1 , λ 1 λ 2 = − 1 \lambda_1+\lambda_2=1,\lambda_1\lambda_2=-1 λ1+λ2=1,λ1λ2=−1 。
再根据 A x = λ x \pmb{Ax}=\lambda\pmb{x} Ax=λx 计算(6)中每个特征值所对应的特征向量。
当 λ = λ 1 \lambda=\lambda_1 λ=λ1 时,设特征向量为 [ x 1 y 1 ] \begin{bmatrix}x_1\\y_1\end{bmatrix} [x1y1] ,则:
[ 1 1 1 0 ] [ x 1 y 1 ] = λ 1 [ x 1 y 1 ] \begin{bmatrix}1&1\\1&0\end{bmatrix}\begin{bmatrix}x_1\\y_1\end{bmatrix}=\lambda_1\begin{bmatrix}x_1\\y_1\end{bmatrix} [1110][x1y1]=λ1[x1y1]
可得: [ x 1 y 1 ] = [ λ 1 1 ] \begin{bmatrix}x_1\\y_1\end{bmatrix}=\begin{bmatrix}\lambda_1\\1\end{bmatrix} [x1y1]=[λ11] 是满足条件的一个向量,即特征向量 x 1 = [ λ 1 1 ] \pmb{x}_1=\begin{bmatrix}\lambda_1\\1\end{bmatrix} x1=[λ11] (将 [ λ 1 1 ] \begin{bmatrix}\lambda_1\\1\end{bmatrix} [λ11] 代入到上式,并利用(5)式,上式成立,即说明 [ λ 1 1 ] \begin{bmatrix}\lambda_1\\1\end{bmatrix} [λ11] 是一个基向量)。
同理,求得另外一个特征值 λ 2 \lambda_2 λ2 所对应的特征向量 x 2 = [ λ 2 1 ] \pmb{x}_2=\begin{bmatrix}\lambda_2\\1\end{bmatrix} x2=[λ21] 。
{ x 1 = [ λ 1 1 ] x 2 = [ λ 2 1 ] (7) \begin{cases}\pmb{x}_1=\begin{bmatrix}\lambda_1\\1\end{bmatrix}\\\pmb{x}_2=\begin{bmatrix}\lambda_2\\1\end{bmatrix}\end{cases}\tag{7} ⎩ ⎨ ⎧x1=[λ11]x2=[λ21](7)
很显然,特征向量 x 1 \pmb{x}_1 x1 和 x 2 \pmb{x}_2 x2 线性无关,则矩阵 A = [ 1 1 1 0 ] \pmb{A}=\begin{bmatrix}1&1\\1&0\end{bmatrix} A=[1110] 可以对角化(参阅《机器学习数学基础》第3章3.3.3节)。
设 A = C D C − 1 \pmb{A}=\pmb{CDC}^{-1} A=CDC−1 ,其中 C \pmb{C} C 的列向量即为 A \pmb{A} A 的特征向量, D \pmb{D} D 为特征向量构成的对角矩阵(参阅《机器学习数学基础》第3章3.3.3节(3.3.10)式和(3.3.11)式)。
因为: A k = C D k C − 1 \pmb{A}^k = \pmb{C}\pmb{D}^k\pmb{C}^{-1} Ak=CDkC−1
于是(4)式可以转化为:
u k = C D k C − 1 u 0 (8) \pmb{u}_k=\pmb{C}\pmb{D}^k\pmb{C}^{-1}\pmb{u}_0 \tag{8} uk=CDkC−1u0(8)
由于 u 0 \pmb{u}_0 u0 是一个列向量,则 C − 1 u 0 \pmb{C}^{-1}\pmb{u}_0 C−1u0 结果也是列向量,故令 c = C − 1 u 0 \pmb{c}=\pmb{C}^{-1}\pmb{u}_0 c=C−1u0 ,(8)式变换为:
u k = C D k c (9) \pmb{u}_k=\pmb{C}\pmb{D}^k\pmb{c}\tag{9} uk=CDkc(9)
若用一般化的式子表示, C = [ x 1 ⋯ x n ] \pmb{C} = \begin{bmatrix}\pmb{x}_1&\cdots\pmb{x}_n\end{bmatrix} C=[x1⋯xn] (由 A \pmb{A} A 的 n n n 个特征向量组成), D k = [ λ 1 k ⋯ 0 0 ⋱ 0 0 ⋯ λ n k ] \pmb{D}^k=\begin{bmatrix}\lambda_1^k & \cdots &0\\0&\ddots&0\\0&\cdots&\lambda_n^k\end{bmatrix} Dk= λ1k00⋯⋱⋯00λnk ,代入(9)式:
u k = [ x 1 ⋯ x n ] [ λ 1 k ⋯ 0 0 ⋱ 0 0 ⋯ λ n k ] [ c 1 ⋮ c n ] = [ λ 1 k x 1 ⋯ λ n k x n ] [ c 1 ⋮ c n ] = c 1 λ 1 k x 1 + ⋯ + c n λ n k x n \begin{split}\pmb{u}_k &= \begin{bmatrix}\pmb{x}_1&\cdots\pmb{x}_n\end{bmatrix}\begin{bmatrix}\lambda_1^k & \cdots &0\\0&\ddots&0\\0&\cdots&\lambda_n^k\end{bmatrix}\begin{bmatrix}c_1\\\vdots\\c_n\end{bmatrix}\\&=\begin{bmatrix}\lambda_1^k\pmb{x}_1&\cdots&\lambda_n^k\pmb{x}_n\end{bmatrix}\begin{bmatrix}c_1\\\vdots\\c_n\end{bmatrix}\\&=c_1\lambda_1^k\pmb{x}_1+\cdots+c_n\lambda_n^k\pmb{x}_n\end{split} uk=[x1⋯xn] λ1k00⋯⋱⋯00λnk c1⋮cn =[λ1kx1⋯λnkxn] c1⋮cn =c1λ1kx1+⋯+cnλnkxn
即:
u k = c 1 λ 1 k x 1 + ⋯ + c n λ n k x n (10) \pmb{u}_k=c_1\lambda_1^k\pmb{x}_1+\cdots+c_n\lambda_n^k\pmb{x}_n\tag{10} uk=c1λ1kx1+⋯+cnλnkxn(10)
若 k = 0 k=0 k=0 ,则(9)式即为: u 0 = C D 0 c = C I c = C c \pmb{u}_0=\pmb{CD}^0\pmb{c}=\pmb{CIc}=\pmb{Cc} u0=CD0c=CIc=Cc ,从而得到(10)式中的系数 c 1 , ⋯ , c n c_1,\cdots,c_n c1,⋯,cn 。(10)式即为差分方程的通解(《机器学习数学基础》第3章3.2.2节,给出了差分方程通解的另外一种计算方法,在该方法中没有使用对矩阵 A \pmb{A} A 可对角化的假设)。
现在将 A = [ 1 1 1 0 ] \pmb{A}=\begin{bmatrix}1&1\\1&0\end{bmatrix} A=[1110] 的特征向量(7)和特征值(6)式分别代入(10)式,即得到(3)差分方程的通解:
u k = c 1 λ 1 k x 1 + c 2 λ 2 k x 2 (11) \pmb{u}_k=c_1\lambda_1^k\pmb{x}_1+c_2\lambda_2^k\pmb{x}_2 \tag{11} uk=c1λ1kx1+c2λ2kx2(11)
当 k = 0 k=0 k=0 时, u 0 = [ 1 0 ] \pmb{u}_0=\begin{bmatrix}1\\0\end{bmatrix} u0=[10] , λ 1 0 = λ 2 0 = 1 \lambda_1^0=\lambda_2^0=1 λ10=λ20=1,代入(11)式:
[ 1 0 ] = c 1 x 1 + c 2 x 2 = c 1 [ 1 + 5 2 1 ] + c 2 [ 1 − 5 2 1 ] \begin{bmatrix}1\\0\end{bmatrix}=c_1\pmb{x}_1+c_2\pmb{x}_2=c_1\begin{bmatrix}\frac{1+\sqrt{5}}{2}\\1\end{bmatrix}+c_2\begin{bmatrix}\frac{1-\sqrt{5}}{2}\\1\end{bmatrix} [10]=c1x1+c2x2=c1[21+51]+c2[21−51]
解得:
{ c 1 = 1 5 c 2 = − 1 5 \begin{cases}c_1=\frac{1}{\sqrt{5}}\\c_2=-\frac{1}{\sqrt{5}}\end{cases} {c1=51c2=−51
代入(11),同时将特征值和特征向量也代入,得:
u k = 1 5 ( 1 + 5 2 ) k [ 1 + 5 2 1 ] − 1 5 ( 1 − 5 2 ) k [ 1 − 5 2 1 ] = 1 5 [ ( 1 + 5 2 ) k + 1 ( 1 + 5 2 ) k ] − 1 5 [ ( 1 − 5 2 ) k + 1 ( 1 − 5 2 ) k ] = 1 5 [ ( 1 + 5 2 ) k + 1 − ( 1 − 5 2 ) k + 1 ( 1 + 5 2 ) k − ( 1 − 5 2 ) k ] \begin{split}\pmb{u}_k&=\frac{1}{\sqrt{5}}\left(\frac{1+\sqrt{5}}{2}\right)^k\begin{bmatrix}\frac{1+\sqrt{5}}{2}\\1\end{bmatrix}-\frac{1}{\sqrt{5}}\left(\frac{1-\sqrt{5}}{2}\right)^k\begin{bmatrix}\frac{1-\sqrt{5}}{2}\\1\end{bmatrix}\\&=\frac{1}{\sqrt{5}}\begin{bmatrix}\left(\frac{1+\sqrt{5}}{2}\right)^{k+1}\\\left(\frac{1+\sqrt{5}}{2}\right)^{k}\end{bmatrix}-\frac{1}{\sqrt{5}}\begin{bmatrix}\left(\frac{1-\sqrt{5}}{2}\right)^{k+1}\\\left(\frac{1-\sqrt{5}}{2}\right)^{k}\end{bmatrix}\\&=\frac{1}{\sqrt{5}}\begin{bmatrix}\left(\frac{1+\sqrt{5}}{2}\right)^{k+1}-\left(\frac{1-\sqrt{5}}{2}\right)^{k+1}\\\left(\frac{1+\sqrt{5}}{2}\right)^{k}-\left(\frac{1-\sqrt{5}}{2}\right)^{k}\end{bmatrix}\end{split} uk=51(21+5)k[21+51]−51(21−5)k[21−51]=51 (21+5)k+1(21+5)k −51 (21−5)k+1(21−5)k =51 (21+5)k+1−(21−5)k+1(21+5)k−(21−5)k
在(3)式中假设 u k = [ F k + 1 F k ] \pmb{u}_k=\begin{bmatrix}F_{k+1}\\F_{k}\end{bmatrix} uk=[Fk+1Fk] ,对比上式,则:
F k = 1 5 [ ( 1 + 5 2 ) k − ( 1 − 5 2 ) k ] , ( k = 0 , 1 , 2 , ⋯ ) (12) F_k=\frac{1}{\sqrt{5}}\left[\left(\frac{1+\sqrt{5}}{2}\right)^{k}-\left(\frac{1-\sqrt{5}}{2}\right)^{k}\right] ,(k=0,1,2,\cdots)\tag{12} Fk=51 (21+5)k−(21−5)k ,(k=0,1,2,⋯)(12)
这样就得到了斐波那契数列通项表达式。
3.2 第二种方法
由于 A = [ 1 1 1 0 ] \pmb{A}=\begin{bmatrix}1&1\\1&0\end{bmatrix} A=[1110] 可对角化,根据 A = C D C − 1 ⇒ A k = C D k C − 1 \pmb{A}=\pmb{CDC}^{-1}\Rightarrow\pmb{A}^k = \pmb{C}\pmb{D}^k\pmb{C}^{-1} A=CDC−1⇒Ak=CDkC−1 得:
A k = C [ λ 1 k 0 0 λ 2 k ] C − 1 (13) \pmb{A}^k=\pmb{C}\begin{bmatrix}\lambda_1^k&0\\0&\lambda_2^k\end{bmatrix}\pmb{C}^{-1}\tag{13} Ak=C[λ1k00λ2k]C−1(13)
其中 C = [ λ 1 λ 2 1 1 ] \pmb{C}=\begin{bmatrix}\lambda_1&\lambda_2\\1&1\end{bmatrix} C=[λ11λ21] ( C \pmb{C} C 由特征向量 x 1 \pmb{x}_1 x1、 x 2 \pmb{x}_2 x2 构成),则 C − 1 = [ 1 λ 1 − λ 2 λ 2 λ 2 − λ 1 1 λ 2 − λ 1 λ 1 λ 1 − λ 2 ] = 1 λ 1 − λ 2 [ 1 − λ 2 − 1 λ 1 ] \pmb{C}^{-1}=\begin{bmatrix}\frac{1}{\lambda_1-\lambda_2}&\frac{\lambda_2}{\lambda_2-\lambda_1}\\\frac{1}{\lambda_2-\lambda_1}&\frac{\lambda_1}{\lambda_1-\lambda_2}\end{bmatrix}=\frac{1}{\lambda_1-\lambda_2}\begin{bmatrix}1&-\lambda_2\\-1&\lambda_1\end{bmatrix} C−1=[λ1−λ21λ2−λ11λ2−λ1λ2λ1−λ2λ1]=λ1−λ21[1−1−λ2λ1] 。
由(4)式可得:
[ F k + 1 F k ] = A k [ 1 0 ] \begin{bmatrix}F_{k+1}\\F_k\end{bmatrix}=\pmb{A}^k\begin{bmatrix}1\\0\end{bmatrix} [Fk+1Fk]=Ak[10]
将(13)代入上式,可得:
[ F k + 1 F k ] = C [ λ 1 k 0 0 λ 2 k ] C − 1 [ 1 0 ] = 1 λ 1 − λ 2 [ λ 1 λ 2 1 1 ] [ λ 1 k 0 0 λ 2 k ] [ 1 − λ 2 − 1 λ 1 ] [ 1 0 ] = 1 λ 1 − λ 2 [ λ 1 k + 1 − λ 1 k + 1 λ 1 k − λ 2 k ] \begin{split}\begin{bmatrix}F_{k+1}\\F_k\end{bmatrix}&=\pmb{C}\begin{bmatrix}\lambda_1^k&0\\0&\lambda_2^k\end{bmatrix}\pmb{C}^{-1}\begin{bmatrix}1\\0\end{bmatrix}\\&=\frac{1}{\lambda_1-\lambda_2}\begin{bmatrix}\lambda_1&\lambda_2\\1&1\end{bmatrix}\begin{bmatrix}\lambda_1^k&0\\0&\lambda_2^k\end{bmatrix}\begin{bmatrix}1&-\lambda_2\\-1&\lambda_1\end{bmatrix}\begin{bmatrix}1\\0\end{bmatrix}\\&=\frac{1}{\lambda_1-\lambda_2}\begin{bmatrix}\lambda_1^{k+1}-\lambda_1^{k+1}\\\lambda_1^k-\lambda_2^k\end{bmatrix}\end{split} [Fk+1Fk]=C[λ1k00λ2k]C−1[10]=λ1−λ21[λ11λ21][λ1k00λ2k][1−1−λ2λ1][10]=λ1−λ21[λ1k+1−λ1k+1λ1k−λ2k]
所以,通项表达式:
F k = λ 1 k − λ 2 k λ 1 − λ 2 = ( 1 + 5 2 ) k − ( 1 − 5 2 ) k ( 1 + 5 2 ) − ( 1 − 5 2 ) = 1 5 [ ( 1 + 5 2 ) k − ( 1 − 5 2 ) k ] , ( k = 0 , 1 , 2 , ⋯ ) \begin{split}F_k&=\frac{\lambda_1^k-\lambda^k_2}{\lambda_1-\lambda_2}=\frac{\left(\frac{1+\sqrt{5}}{2}\right)^k-\left(\frac{1-\sqrt{5}}{2}\right)^k}{\left(\frac{1+\sqrt{5}}{2}\right)-\left(\frac{1-\sqrt{5}}{2}\right)}\\&=\frac{1}{\sqrt{5}}\left[\left(\frac{1+\sqrt{5}}{2}\right)^{k}-\left(\frac{1-\sqrt{5}}{2}\right)^{k}\right] ,(k=0,1,2,\cdots)\end{split} Fk=λ1−λ2λ1k−λ2k=(21+5)−(21−5)(21+5)k−(21−5)k=51 (21+5)k−(21−5)k ,(k=0,1,2,⋯)
与(12)式一样的结果。