矩阵快速幂的使用,能够对于一个给定且不变的递推式,快速地得到我们要的第项,但是我们往往无法快速地推导出递推式,那么我们这里来总结一下。
步骤:
- 列出递推式中的元素
- 往前递推一项也列出对应元素
- 设基矩阵
利用关系式以及矩阵乘法解出
![]()
举个栗子:
著名的斐波拉契数列:
步骤一 :
我们可以发现,这是用和
来求到
,那么矩阵中一定会包含至少两项与
有关的变量,不妨设:
步骤二 : (解出矩阵)
由矩阵乘法的性质,我们可以反推得到矩阵的行列数应该是
,不妨设:
根据矩阵乘法:
最后可以解得:
最后再利用矩阵快速幂就可以了!
对于本题:
递推式:
我们先不去想怎么处理这个,让我们先找出第
项中应当包含的元素:
、
以及前一项(项)应当包含的元素:
、
我们考虑如何从变换到
,平方差可得:
所以我们的递推式中必定会包含、
、
这三个元素(否则不能递推下去)
我们不妨设第项矩阵为:
第项矩阵为:
设出并求出基矩阵:
接下来就可以用矩阵快速幂了!!(完结撒花)