矩阵乘法和斐波那契数列【清北学堂】
这篇博客是一边听课一边写的
两个矩阵做乘法的先决条件是一个矩阵的宽和另一个矩阵的高相等
比如一个2*3的矩阵和一个3*4的矩阵就可以相乘
乘出来的效果是这样的
比如有个1*2的矩阵[ a b ] 和2*1的矩阵 [ c ]
[ d ]
那乘出来的效果就是[ a*c+b*d ]
好吧并不理解
再比如[ a b ] * [ e f ] = [ ae+bg af+bh ]
[ c d ] [ g h ] [ ce+dg cf+dh ]
这样
矩阵乘法可以用来求一些奇怪的递推式,如斐波那契数列和、斐波那契数列平方和等等
比如求斐波那契平方和的矩阵乘法如下
[ 1 1 3 3 1 ] [ Sum ]
[ 0 1 3 3 1 ] [ (i-1)^3]
[ 0 0 1 2 1 ] [ (i-1)^2]
[ 0 0 0 1 1 ] [ i-1 ]
[ 0 0 0 0 1 ] [ 1 ]
两个矩阵相乘可以搞出斐波那契的平方和
推导过程如下
首先我们看到,在每一次循环中 Sum=Sum+i^3
那么i^3怎么来的呢 肯定不能直接来,于是我们要往之前 的循环中找
也就是找到i^3和(i-1)^3的联系
容易推出 (i-1)^3 = i^3-3i^2+3i-1
也就是说,为了推出i^3,我们需要(i-1)^3、(i-1)^2、i-1和1
于是推出如上矩阵
首先我们发现上式移项得出i^3=(i-1)^3+3i^2-3i+1
又对上式进行配方 得到 (i-1)^3+3(i-1)^2+3(i-1)+1
我们把左面的矩阵从下往上推导
明确的知道我们需要一个1 所以 矩阵最下面除了对应 1的第五个空填1 其他的都是0
再看倒数第二行 i=i-1+1
第三行 i^2=(i-1)^2+2*(i-1)+1
以此类推 就酱