2018年2月27日训练笔记

时间:2022-11-01 14:10:11

对于矩阵快速幂找转移矩阵(参考:http://blog.csdn.net/wust_zzwh/article/details/52058209

比如对于递推式:f(n)=f(n-1)+f(n-2),要先建立矩阵递推式,然后找到转移矩阵,递推式如下:

2018年2月27日训练笔记,这里的递推式就是个矩阵乘法等式,左边:1*f(n-1)+1*f(n-2)=f(n);1*f(n-1)+0*f(n-2)=f(n-1);

简写成T* A(n-1)=A(n),T矩阵是一个2*2的常数矩阵即转移矩阵,而2018年2月27日训练笔记,An是一个列矩阵,它的第一行为F(n),比如对于公式:.f(n)=a*f(n-1)+b*f(n-2)+c,右边有3项,那么转移矩阵就是3行3列,An为3列的列矩阵。

这里还是说一下构建矩阵递推的大致套路,一般An与A(n-1)都是按照原始递推式来构建的,当然可以先猜一个An(第一行为F(n)),主要是利用矩阵乘法凑出矩阵T,T的第一行与An相乘一般就是递推式,T矩阵后面的行就是使得其与列矩阵A(n-1)的行元素相乘得到An中的行元素。矩阵T就叫做转移矩阵(一定要是常数矩阵),它能把A(n-1)转移到A(n);然后这就是个等比数列,直接写出通项:2018年2月27日训练笔记,此处A1叫初始矩阵(题干中获得)。所以用一下矩阵快速幂然后乘上初始矩阵就能得到An,上面An就两个元素(两个位置),根据自己设置的A(n)对应位置就是对应的值,按照上面矩阵快速幂写法,res[1][1]=f(n)就是我们要求的。