引言
線性代數
可以說是噩夢,今天一位巨佬說學習線性代數就是
從抽象入門再到具體
,最後
再回歸抽象
的過程,是以我決定再失敗一次。
今天的例子,對于矩陣乘法比如下式:
$\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矩陣
通過另外的方式被表示出來了,更為簡單和直覺。
這可以幫助我們了解 矩陣的分解
補充
1.矩陣乘向量
矩陣乘向量本質為列的線性組合,如:
$\begin{bmatrix}2&3\2&4\3&7\end{bmatrix} \begin{bmatrix}x_1\x_2\end{bmatrix} = x_1\begin{bmatrix}2\2\3\end{bmatrix} + x_2\begin{bmatrix}3\4\7\end{bmatrix}$
2. 矩陣乘矩陣
附錄: python實作矩陣相乘
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]]