斐波那契数列: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的矩阵,则:

image.png

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=' ')