矩阵的运算法则
$ \huge + $ 加法,两个行数和列数分别相同的矩阵可以进行加法运算,Ans矩阵每个位置上的数为两个矩阵相应位置上的数的和
$ \huge - $ 减法,与加法类似两个行数和列数分别相同的矩阵可以进行减法运算,Ans矩阵每个位置上的数为两个矩阵相应位置上的数的差
$ \huge $ 数乘,表现为一个数乘一个矩阵,具体效果就是矩阵的每个位置上的数都乘上需要数乘的数。
以上三种运算都比较简单,直接可以理解。接下来讲一个复杂的东西。
$ \huge\times $ 叉乘,一个矩阵乘上另一个矩阵,只有在前面的矩阵的行数等于第二个矩阵的列数时可以进行运算(可以看出来,矩阵的叉乘不满足交换律),先写一下矩阵叉乘的定义:
假设$A \times B = C,A,B,C$均为矩阵。
$ C{i, j} = \sum{k=1}^{len}A_{i, k} B_{k, j}$
$ len$ 是A的行数或B的列数。
上面的这个图中的$C$矩阵是33的,图中只画出了一个。
$58 = 1 7 + 2 9 + 3 11$,这下应该解释清楚了。
因为矩阵乘法满足交换律,所以对矩阵乘方可以用快速幂加速。
$\text{Code}$
1 | typedef long long ll; |
写了若干个构造函数,含义应该也很明显了,
矩阵快速幂嘛,,,整数快速幂里面拿过来的啦~~~,修改一下就OK了。
虽说重载^纯属个人喜好。。。