矩阵相乘求斐波那契数列
时间: 2023-11-20 18:57:19 浏览: 147
矩阵相乘可以用来求解斐波那契数列。具体方法如下:
1. 首先,我们可以将斐波那契数列的递推公式写成矩阵形式:
```
[ F(n) ] [ 1 1 ] [ F(n-1) ]
[ F(n-1) ] = [ 1 0 ] * [ F(n-2) ]
```
其中,F(n)表示斐波那契数列的第n项,矩阵[1 1; 1 0]是斐波那契矩阵,[F(n-1); F(n-2)]是斐波那契数列的第n-1项和第n-2项。
2. 接下来,我们可以通过矩阵快速幂的方法,快速求出斐波那契矩阵的n-1次方。
3. 最后,我们将矩阵[1 1; 1 0]的n-1次方与[F(1); F(0)]相乘,就可以得到斐波那契数列的第n项。
下面是Python代码实现:
```python
def matrix_multiply(a, b):
# 矩阵乘法
m, n = len(a), len(b[0])
res = [[0] * n for _ in range(m)]
for i in range(m):
for j in range(n):
for k in range(len(b)):
res[i][j] += a[i][k] * b[k][j]
return res
def matrix_pow(a, n):
# 矩阵快速幂
res = [[1, 0], [0, 1]] # 初始化为单位矩阵
while n > 0:
if n % 2 == 1:
res = matrix_multiply(res, a)
a = matrix_multiply(a, a)
n //= 2
return res
def fibonacci(n):
# 求斐波那契数列的第n项
if n == 0:
return 0
a = [[1, 1], [1, 0]]
res = matrix_pow(a, n - 1)
return res[0][0]
print(fibonacci(10)) # 输出:55
```
阅读全文