斐波那契数列:0 1 1 2 3 5 8 13 21 。。。
假设:F(n)为该数列的第n项,数列从0项开始,那么:
𝐹(0)=0
𝐹(1)=1
𝐹(2)=𝐹(1)+𝐹(0)
𝐹(3)=𝐹(2)+𝐹(1)
…
𝐹(𝑛)=𝐹(𝑛−1)+𝐹(𝑛−2)F(n)=F(n−1)+F(n−2)
把第n项和第n项的前一项看作是一个2×1的矩阵,则:
Python代码如下:
import numpy as np def fib(n): return (np.matrix([[1,1],[1,0]]) ** (n-1) * np.matrix([[1],[0]]))[0, 0] for i in range(10): print(int(fib(i)),end=' ')
上面中,数列是从0项开始的,就数学上而言,一般不是从第0项开始,而是从第1项开始。
𝐹(1)=0
𝐹(2)=1
…
所以,代码如下:
import numpy as np def fib(n): return (np.matrix([[1,1],[1,0]]) ** (n-2) * np.matrix([[1],[0]]))[0, 0] for i in range(1,10): print(int(fib(i)),end=' ')