欢迎大家访问我的老师的OJ———caioj.cn
一个 n ∗ m n*m n∗m的矩阵可看作一个 n ∗ m n*m n∗m的二维数组。
矩阵的加法和减法,仅满足于两个同样大小(同为 n ∗ m n*m n∗m)的矩阵,
就是把矩阵对应位置上的数相加减,即
C
=
A
+
B
↔
∀
i
∈
[
1
,
n
]
,
∀
j
∈
[
1
,
m
]
,
C
i
,
j
=
A
i
,
j
+
B
i
,
j
C=A+B \leftrightarrow\forall i \in[1,n],\forall j\in[1,m],C_{i,j}=A_{i,j}+B_{i,j}
C=A+B↔∀i∈[1,n],∀j∈[1,m],Ci,j=Ai,j+Bi,j
矩阵乘法稍微复杂,请细心理解:
设A是
n
∗
m
n*m
n∗m矩阵,B是
m
∗
p
m*p
m∗p矩阵,则C=
A
∗
B
A*B
A∗B是
n
∗
p
n*p
n∗p矩阵,并且
∀
i
∈
[
1
,
n
]
,
∀
j
∈
[
1
,
p
]
\forall i\in[1,n],\forall j\in[1,p]
∀i∈[1,n],∀j∈[1,p]:
C
i
,
j
=
∑
k
=
1
m
A
i
,
k
∗
B
k
,
j
C_{i,j}= \large\sum\limits_{k=1}^{m}A_{i,k}*B_{k,j}
Ci,j=k=1∑mAi,k∗Bk,j
也就是说,参与矩阵乘法运算的第一个矩阵 A A A的列数必须等于第二个矩阵 B B B的行数,才能进行乘法运算,得到的结果矩阵 C C C的行数为第一个矩阵 A A A的行数,列数为第二个矩阵 B B B的列数。结果矩阵 C C C第 i i i行第 j j j列的数,是由 A A A的第 i i i行的 m m m个数与 B B B的第j列的 m m m个数一一对应相乘再相加得到的。
注意:强调一一对应
常见利用矩阵乘法加速的递推式有:
F
i
b
o
n
a
c
c
i
Fibonacci
Fibonacci 斐波那契数列