斐波那契数列与黄金分割比以及矩阵形式推导
来源:互联网 发布:阿沁的淘宝店叫什么 编辑:程序博客网 时间:2024/04/30 01:00
数学上,斐波那契数列以递归的形式进行定义:
注意,递归的形式实现较为简单明了,当然在编程实践时,并不推荐递归的实现方式,因为存在大量的重复计算,斐波那契的优化实现不是本文的重点,如有兴趣,请参阅 每周一刷——从斐波那契数列到动态规划,本文重点探讨菲波那切数列与黄金分割比的关系。
维基百科中说菲波那切数列又叫黄金分割数列,这无疑是在告诉我们我们可以通过黄金分割的方式(
下面我们简单验证我们的判断:
def fib(n): return n if n <= 1 else fib(n-1)+fib(n-2) N = 20print([fib(n) for n in range(N)])[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181]
所谓黄金分割比,一种猜想:
int(55*(1+.618)+.5) == 89int(2584*(1+.618)+.5) == 4181
indeed,诚哉斯言。
我们接着做如下的仿真:
def gold_fib(n): return n if n <=2 else int(gold_fib(n-1)*(1+.618))print([gold_fib(n) for n in range(N)])[0, 1, 2, 3, 4, 6, 9, 14, 22, 35, 56, 90, 145, 234, 378, 611, 988, 1598, 2585, 4182] # 已经非常接近了,
矩阵形式推导
还是从定义出发:
将其转换为矩阵形式:
无所不在的矩阵形式呀,这是矩阵形式的递归版(是不是可以说,递归形式都可转化为矩阵的连乘版);
或者全部使用矩阵形式:
求下述矩阵的特征值:
求得各自特征值对应的特征向量为:
通过
所以:
所以最终:
通过初等代数方法,我们也可得出此解析解的形式,具体请参考 斐波那契数列;
def matrix_fib(n): return int(1/sqrt(5)*(((1+sqrt(5))/2)**n-((1-sqrt(5))/2)**n))print([matrix_fib(n) for n in range(N)])[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181] # 一模一样,不差分毫
0 0
- 斐波那契数列与黄金分割比以及矩阵形式推导
- 漫谈斐波那契数列与黄金分割比
- Python 实现斐波那契数列 (黄金分割数列)
- 斐波那契数列【黄金分割数列】-兔子问题
- 2013蓝桥杯 黄金分割数 斐波那契数列与黄金分割比例的结合应用+模拟手算
- 使用黄金分割比值计算斐波那契数列
- 矩阵与斐波那契数列
- 蓝桥杯第四届 黄金连分数(大数 斐波那契数列与黄金分割)
- 奇妙的裴波那契数列和黄金分割
- 贵金属分割(1)黄金分割数之斐波那契数列
- 以斐波那契数列实现黄金分割数的验证
- 斐波那契数列推导及应用
- 推导斐波那契数列通项公式
- 矩阵-斐波那契数列
- 矩阵专题:斐波那契数列
- 矩阵-斐波那契数列
- 斐波那契数列-矩阵乘法
- 斐波那契数列的两种实现形式
- C++四种智能指针小结
- Linux和Windows服务器
- Java IO流
- HTML调用QQ客服功能
- 2.erlang启动参数
- 斐波那契数列与黄金分割比以及矩阵形式推导
- 01串排序
- 提高 ASP.NET Web 应用性能的 24 种方法和技巧
- c++学习书籍
- Java线程--思维导图
- Dijkstra Algorithm 实现
- 3.Socket
- HTML--思维导图
- POJ 3671 Dining Cows