不论是在算法还是在编程语言的教材中,都可能会以斐波那契数列为例,或说明其算法上的特点——主要是递归,或说明如何运用某种编程语言编写相应函数。
本文是一篇关于“斐波那契数列”的专题文章,目的是让学习《数据结构》这门课程的同学对此问题有完整的理解。
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)式一样的结果。