numpy计算斐波那契数列

斐波那契数列的两种方法

Key_Function

np.matrix函数, 创建矩阵

rint函数, 对浮点数取整, 但不改变浮点数类型

Code

import numpy as np

# 第一种方法
F = np.matrix([[1, 1], [1, 0]])
print(F)
'''
[[1 1]
 [1 0]]
'''
print((F ** 7)[0, 0])
# 21
print((F ** 2))
'''
[[2 1]
 [1 1]]
'''
print((F ** 3))
'''
[[3 2]
 [2 1]]
'''
print((F ** 4))
'''
[[5 3]
 [3 2]]
'''

# 第二种方法
# 利用黄金分割公式(比奈公式), 加上取整函数, 计算斐波那契数列
n = np.arange(1, 9)
print(n)
# [1 2 3 4 5 6 7 8]
sqrt5 = np.sqrt(5)  # 取开方
print(sqrt5)
# 2.2360679775
phi = (1 + sqrt5) / 2   # 计算黄金分割率
print(phi)
# 1.61803398875
fibonacci = np.rint((phi**n - (-1/phi)**n)/sqrt5)   # rint函数, 对浮点数取整, 但不改变浮点数类型

print(fibonacci)
# [  1.   1.   2.   3.   5.   8.  13.  21.]

斐波那契数列的通项公式

通项公式

斐波那契数列与黄金分割率

斐波那契数列,这样一个完全是自然数的数列,通项公式却是用无理数来表达的。而且当n趋向于无穷大时,前一项与后一项的比值越来越逼近黄金分割0.618(或者说后一项与前一项的比值小数部分越来越逼近0.618)。
1÷1=1,1÷2=0.5,2÷3=0.666...,3÷5=0.6,5÷8=0.625…………,55÷89=0.617977……………144÷233=0.618025…46368÷75025=0.6180339886…...
越到后面,这些比值越接近黄金比.

证明

两边同时除以
得到:
的极限存在,设其极限为x,
所以
由于
解得
所以极限是黄金分割比。

猜你喜欢

转载自www.cnblogs.com/draven123/p/11397614.html