矩阵-斐波那契数列

本文介绍了如何利用矩阵快速幂的方法求解斐波那契数列,包括矩阵乘法与斐波那契数列的关系,以及如何通过二分和二进制的思想高效计算矩阵的幂。此外,还讨论了斐波那契数列的通项公式在简化运算中的应用,并给出了相关例题。
摘要由CSDN通过智能技术生成

利用矩阵来求解斐波那契数列的有关问题是ACM题中一个比较常见的题型。例:NYOJ 148(斐波那契数列2)

有关斐波那契树列的规律详见这里

(1)、对于n>1,都有f(n)与f(n-1)互质。

(2)、f(n)=f(i)*f(n-i-1)+f(i+1)*f(n-i)。

现在说说怎么利用矩阵来求解斐波那契数列。

我们可以先保存b=f(1),a=f(0),然后每次设: b'=a+b a'=b。后利用a'和b'一直循环即可。同时我们可以将b a看做一个向量[b a],前面的操作就可以乘以矩阵:

|1 1|*[b a]=[a+b b]。

|1 0|

也就是说,如果我们要求第100个fibonacci数,只需要将矩阵[1 0]乘上 
1 1 
1 0 
的一百次方,再取出第二项即可。就像题目中的描述一样:设F0 = 0,F1 = 1,那么有:

.

这个矩阵的n次方的形式是:

F(n+1)  F(n)

F(n)   F(n-1),

现在的问题是如何求出这个矩阵的n次方是多少?

可以使用的方法有两种:

(1)、可以利用二分的思想:假设要求矩阵的N次方为A(N),设i=N/2若N%2==1,则 A(N)=A(i)*A(i)*A(1)若N%2==0,则A(N)=A(i)*A(i)。

(2)、利用二进制的思想:将N拆为二进制数,譬如13=(1101)2那么 A^13= A^8

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值