浅析斐波那契数列

· · 个人记录

注:本文偏向于数学,涉及的编程知识较少

斐波那契(Fibonacci)数列:

1.定义:

由递归方程:

f_{n+2} = f_{n+1} + f_n (n \ge 1)

f_1 = f_2 = 1

定义的数列称为Fibonacci数列(以下简称F-数列)

简单地说,就是:F-数列的前两项均为1,从第三项开始,每一项都等于前面两项的和

所以,我们不难写出F-数列前面的一些项:

------------ ## 2.来源: 公元1202年,意大利数学家列昂纳多出版了他的著作《算盘全书》,提出了著名的“兔子问题”,从而衍生出了F-数列,这个“兔子问题”是这样的: _某人有一对初生的兔子,养殖在四堵围墙封闭的庭院之中,成熟的兔子每月可生产小兔子一对,而初生的小兔要一个月才能成熟,如此经一年(12个月)时间,问:庭院中的兔子能繁殖到多少对?(假设兔子不会死亡)_ 经过分析,我们知道: ```plain 1月末时,庭院中有1对初生小兔; 2月末时,1月末新生的小兔成熟,庭院中仍只有1对成熟的兔子; 3月末时,2月末的兔子产下1对小兔,故兔子增加1对,共2对兔子; 4月末时,3月末新生的小兔成熟,而2月末的那1对兔子又产下1对小兔,故兔子增加1对,共3对兔子; 5月末时,4月末新生的小兔成熟,而3月末的那2对兔子又产下2对小兔,故兔子增加2对,共5对兔子; …… 12月末时,11月末新生的小兔成熟,而11月末的那55对兔子又产下55对小兔,故兔子增加55对,共144对兔子。 ``` 因此,经过一年时间,庭院中的兔子能繁殖到144对 我们发现,每次增加的兔子的数量都等于上一次的兔子数量(想一想为什么) 而每过一个月兔子的数量,就等于前两个月兔子数量的和(即开头提到的递归方程1) ------------ ## 3.应用: 经过本人总结,F-数列主要有这些应用: ### (1)与黄金分割比的关系: 所谓黄金分割比,就是$\mathtt{a:b=a+b:a \ (a>b)}$,这个比值是一个无理数,约等于$0.618

而当我们用F-数列的前一项去除后一项的时候,你会发现商越来越接近黄金分割比

可以用Python写程序来仔细观察商的变化,我为了节省空间,就不写了

(2)与杨辉三角的关系:

把杨辉三角左对齐,如图:

F \qquad 1 \qquad 1 \qquad 2 \qquad 3 \qquad 5 \qquad 8 1 \qquad / \qquad / \qquad / \qquad / \qquad / \qquad / 1 \qquad 1 \qquad / \qquad / \qquad / \qquad / \qquad / 1 \qquad 2 \qquad 1 \qquad / \qquad / \qquad / \qquad / 1 \qquad 3 \qquad 3 \qquad 1 \qquad / \qquad /\qquad/ 1 \qquad 4 \qquad 6 \qquad 4 \qquad 1 \qquad / \qquad / 1 \qquad 5 \qquad 10 \quad \ \ 10 \quad \ \ 5 \qquad 1 \qquad /

把从右上到左下斜线上的数加起来,恰好等于最上行的数:

1 = 1
1 = 1
1 + 1 = 2
1 + 2 = 3
1 + 3 + 1 = 5
1 + 4 + 3 = 8
……

而最上面的数,又恰好是F-数列里的数!

4.F-数列的代数性质(重头戏)

(1)F-数列的部分和

F-数列有下面的求和公式:

f_1 +f_2 + f_3 + … + f_n = f_{n+2} - 1

作为递归数列,F-数列的求和公式有两个证明方法,在此,我贴出较为浅显的一种

证明:

由F-数列的递推式可得:

f_1 = f_3 - f_2 f_2 = f_4 - f_3 f_3 = f_5 - f_4 …… f_{n - 1} = f_{n + 1} - f_n f_n = f_{n + 2} - f_{n + 1}

各项相加,可得:

f_1 +f_2 + f_3 + … + f_n = f_{n-2} - f_2

即:

f_1 +f_2 + f_3 + … + f_n = f_{n-2} - 1

(2)涉及求和的一些恒等式

由F-数列的部分和公式可以导出下面的一些恒等式:

  1. f_1 + f_3 + f_5 + … + f_{2n - 1} = f_{2n}

证明:

f_1 = f_2 f_3 = f_4 - f_2 f_5 = f_6 - f_4 …… f_{2n - 1} = f_{2n} - f_{2n-2}

各项相加,可得

f_1 + f_3 + f_5 + … + f_{2n - 1} = f_{2n}
  1. f_2 + f_4 + f_6 + … + f_{2n} = f_{2n + 1} - 1

证明:

由求和公式得:

f_1 + f_2 + … + f_{2n} = f_{2n + 2} - 1

用这个式子减去刚才得到的第一个恒等式,即得:

f_2 + f_4 + f_6 + … + f_{2n} = f_{2n + 1} - 1
  1. f_3 + f_6 + … + f_{3n} = \dfrac{1}{2}(f_{3n + 2}-1)

证明:

f_1 + f_2 = f_3 f_4 + f_5 = f_6 …… f_{3n - 2} + f_{3n - 1} = f_{3n}

由求和公式得:

f_3 + f_6 + … +f_{3n} = \dfrac{1}{2}(f_1 + f_2 + … + f_{3n}) = \dfrac{1}{2}(f_{3n + 2} - 1)

(3)Lucas数列

由递归方程:

l(x)=\begin{cases}l_{n + 2} = l_{n + 1} + l_n&n\geqslant1\\l_1 = 1, \ \ l_2 = 3\end{cases}

定义的数列称为Lucas数列(简称L-数列)

L-数列与F-数列有着相同的递归方程(但两者的始值不同),因而有着相同的特征方程和特征根\alpha,\beta,且不难证明L-数列的通项公式为:

l_n = \alpha ^ n + \beta ^ n

至于L-数列的其他性质,我并没有写,读者们可以去自行查找

5.F-数列与数论

整除性

定理1m| n,则f_m| f_n

定理2 (f_m, f_n) = f_{(m, n)}

定理3 m| n当且仅当f_m| f_n

读者读到这里,可以自行思考为什么(证明过长,略去)

6.编程的经典题目(推荐做)

月落乌啼算钱

数楼梯

ps:因为和F-数列相关的题大都需要高精,所以建议不会高精的小伙伴们暂时不刷这几道题

参考书目:《数林外传系列·Fibonacci数列》 肖果能编著 中国科学技术大学出版社

在最后,我打个广告(光速逃

My Blog