引言
线性代数
可以说是噩梦,今天一位巨佬说学习线性代数就是从抽象入门再到具体
,最后再回归抽象
的过程,所以我决定再失败一次。
今天的例子,对于矩阵乘法比如下式:
$\begin{bmatrix}
\ 1 & 2 \
\ 2 & 0 \
\ 4 & 3
\end{bmatrix}$ $\begin{bmatrix}
\ 1 & 3 & 2\
\ 2 & 4 & 1
\end{bmatrix}$= $\begin{bmatrix}
\ 5 & 11&3 \
\ 2 & 6&2 \
10 &24&7\
\end{bmatrix}$
$(A)$ $(B)$ $(C)$
它可以用四种理解方式来理解:单元素乘积表示
、列向量表示
、行向量表示
以及行列乘积表示
。
正文
1. 单元素乘积表示
对于C
矩阵中的第二行第二列元素$C_{22}$而言:
$C_{22} = A_{21}*B_{12} + A_{22}*B_{22}$
也就C
当中(2,1)
的元素其实对应的是A
中的(2,1)
和B
中的(1,2)
相乘
这可以帮助我们理解
矩阵元素
的拆解
2. 行向量表示
可以将C
矩阵用看作是A
矩阵的行向量
线性表示:
$\begin{bmatrix}
\ \dots & \dots \
\ 2 & 0 \
\ \dots & \dots &
\end{bmatrix}$ $\begin{bmatrix}
\ 1 & 3 & 2\
\ 2 & 4 & 1
\end{bmatrix}$ = $\begin{bmatrix}
\ & \cdots& \
\ 2 & 6&2 \
\ & \cdots &\
\end{bmatrix}$
$(A_{2i}(i=1,2))$ $(B)$ $(C)$
即 矩阵A
的第2行
元素和矩阵B
相乘后会得到C
矩阵当中的第2行元素
,即C
矩阵可以由A矩阵的行向量
来线性表出(示)
这可以帮助我们理解
矩阵
的横向拆解
3. 列向量表示
同理,也可以将C
矩阵用看作是B
矩阵的列向量
的线性表示:
$\begin{bmatrix}
\ 1 & 2 \
\ 2 & 0 \
\ 4 & 3
\end{bmatrix}$ $\begin{bmatrix}
\ \vdots & 3 & \vdots\
\ \vdots & 4 & \vdots
\end{bmatrix}$ = $\begin{bmatrix}
\ & 11 & \
\ \vdots & 6&\vdots \
\ & 24 &\
\end{bmatrix}$
$(A)$ $(B_{j2}(j=1,2))$ $(C)$
即矩阵A
和 矩阵B
的第2列
元素相乘后会得到C
矩阵当中的第2列元素
,即C
矩阵可以由B矩阵的列向量
来线性表出(示)
这可以帮助我们理解
矩阵
的纵向拆解
4. 行列乘积表示
最重要的莫过于结合行列
来理解矩阵乘法,结合上面的知识, $3\times2$ 的 A
矩阵可以被拆解为一个3维列向量和一个2维行向量相乘
,同理,矩阵B
可以被理解为一个2维行向量和一个3维列向量相乘
,对应的,C
可以被理解为一个3维行向量和一个3维列向量相乘
。
原式可以被理解为:
$\begin{bmatrix}
\ 1 & 2 \
\ 2 & 0 \
\ 4 & 3
\end{bmatrix}$ $\begin{bmatrix}
\ 1 & 3 & 2\
\ 2 & 4 & 1
\end{bmatrix}$= $\begin{bmatrix}
\ 5 & 11&3 \
\ 2 & 6&2 \
10 &24&7\
\end{bmatrix}$ $\Longrightarrow$ $\begin{bmatrix}\alpha_1\\alpha_2\\alpha_3\\end{bmatrix}$$\begin{bmatrix}\beta_1\beta_2\beta_3\\end{bmatrix}= C$
$(A)$ $(B)$ $(C)$
可以看到此时C矩阵
通过另外的方式被表示出来了,更为简单和直观。
这可以帮助我们理解
矩阵的分解
附录: python实现矩阵相乘
矩阵相乘可以使用numpy
当中的dot
方法,它可以完成向量内积
的计算和矩阵相乘
。
import numpy as np
A = np.array([[1,2],[2,0],[4,3]])
B = np.array([[1,3,1],[2,4,1]])
print(np.dot(A, B))
- 输出结果
>>> [[ 5 11 3]
>>> [ 2 6 2]
>>> [10 24 7]]