# 何謂矩陣
矩陣(Matrix),講白點就是一個表格,以下矩陣 $A$ 為一個由 $m\times n$ 個元素組成的矩形陣列:
\begin{align}
A=
\begin{bmatrix}
a_{11} & a_{12} & \dots & a_{1n} \\
a_{21} & a_{22} & \dots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{m1} & a_{m2} & \dots & a_{mn}
\end{bmatrix}
\end{align}
其中,$m$ 是矩陣的 rows,$n$ 是矩陣的 columns。在這矩陣中, $a_{mn}$ 是一個處在第 $n$ row、第 $m$ columns 的元素。
如下圖所示,矩陣也可以視為多個向量組成的矩形陣列,由多個 row vector 或是多個 column vector 組合起來的陣列。
<div style="text-align: center;">
<img src="https://hackmd.io/_uploads/HyyrtBVXZe.svg" alt="matrix" width="100%"/>
<br>從四種角度理解矩陣
<br>
</div>
以以下矩陣為例:
\begin{align}
\begin{bmatrix}
1 & 2 & 3 \\
4 & 5 & 6
\end{bmatrix}
\end{align}
可以看作是由 2 個 row vectors 組成,分別是 $(1,2,3)$ 與 $(4,5,6)$,亦或是 3 個 column vectors,分別是:
\begin{align}
\begin{bmatrix}
1 \\
4
\end{bmatrix},
\begin{bmatrix}
2 \\
5
\end{bmatrix},
\begin{bmatrix}
3 \\
6
\end{bmatrix}
\end{align}
## 矩陣的種類
### 方塊矩陣(Square matrix)
如果今天矩陣的 rows 與 columns 數相同,也就是說它是個 $n\times n$ 矩陣,則這種矩陣為 square matrix。
### 對角矩陣(Diagonal matrix)
對角矩陣只有主對角線上的元素,剩下的元素都是 $0$,即:
\begin{align}
A=
\begin{bmatrix}
a_{11} & 0 & 0 &\dots & 0 \\
0 & a_{22} & 0 & \dots & 0 \\
0 & 0 & a_{33} & \dots & 0\\
\vdots & \vdots & \vdots & \ddots &\vdots \\
0 & 0 & 0 & \dots & a_{mn}
\end{bmatrix}
\end{align}
此矩陣在日後文章會再次出現。
### 單位矩陣(Identity matrix)
單位矩陣會是很常出現的對角方塊矩陣,常記做 $I$ 或是 $I_{n\times n}$,對角線上的元素全都是 $1$,即:
\begin{align}
I=
\begin{bmatrix}
1 & 0 & 0 &\dots & 0 \\
0 & 1 & 0 & \dots & 0 \\
0 & 0 & 1 & \dots & 0\\
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & 0 & \dots & 1
\end{bmatrix}
\end{align}
## 矩陣基本運算
### 矩陣轉置
將矩陣的 row 與 column 互換,記做 $A^T$,比方說:
\begin{align}
A^T =
\begin{bmatrix}
1 & 2 & 3 \\
4 & 5 & 6
\end{bmatrix}^T=
\begin{bmatrix}
1 & 4 \\
2 & 5 \\
3 & 6
\end{bmatrix}
\end{align}
如果一個矩陣轉置後仍是自己,則此矩陣稱作對稱矩陣(symmetric matrix),即:
\begin{align}
A^T=A
\end{align}
如果一個矩陣轉置後是自己的負號,則此矩陣稱作反對稱矩陣(Skew-symmetric matrix),即:
\begin{align}
A^T=-A
\end{align}
### trace
對一個方塊矩陣做 trace 就是把對角線上的元素加總起來。假設矩陣 $M$ 為:
\begin{align}
M=
\begin{bmatrix}
1 & -2 & 0 \\
2 & 2 & 4 \\
-2 & 1 & 3
\end{bmatrix}
\end{align}
則:
\begin{align}
tr(M)=1+2+3 = 6
\end{align}
### 矩陣加法
當兩個矩陣 $A.B$ 的大小相同時才可以做加法運算,即將兩個矩陣中相同位置的元素加起來,得到的新矩陣大小也與原本的矩陣相同,即:
\begin{align}
A_{m\times n}+b_{m\times n} =
\begin{bmatrix}
a_{11} + b_{11} & a_{12} + b_{12} & \cdots & a_{1n} + b_{1n} \\
a_{21} + b_{21} & a_{22} + b_{22} & \cdots & a_{2n} + b_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{m1} + b_{m1} & a_{m2} + b_{m2} & \cdots & a_{mn} + b_{mn}
\end{bmatrix}
\end{align}
比方說:
\begin{align}
A =
\begin{bmatrix}
1 & 2 & 3 \\
4 & 5 & 6
\end{bmatrix},
\quad
B =
\begin{bmatrix}
6 & 5 & 4 \\
3 & 2 & 1
\end{bmatrix}
\end{align}
那:
\begin{align}
A + B =
\begin{bmatrix}
1+6 & 2+5 & 3+4 \\
4+3 & 5+2 & 6+1
\end{bmatrix}=
\begin{bmatrix}
7 & 7 & 7 \\
7 & 7 & 7
\end{bmatrix}
\end{align}
### 矩陣的減法
同加法,只是變成相減,以剛剛的舉例來看:
\begin{align}
A - B =
\begin{bmatrix}
1-6 & 2-5 & 3-4 \\
4-3 & 5-2 & 6-1
\end{bmatrix}=
\begin{bmatrix}
-5 & -3 & -1 \\
1 & 3 & 5
\end{bmatrix}
\end{align}
### 與 scalar 相乘
與上一章向量與 scalar 相乘一樣,就矩陣中每個元素都乘上一個倍數,例如:
\begin{align}
3A =
\begin{bmatrix}
3\times1 & 3\times2 & 3\times3 \\
3\times4 & 3\times5 & 3\times6
\end{bmatrix}
\end{align}
## 矩陣乘法
解釋矩陣乘法規則的篇幅會需要很大,因此把這部分內容從基本運算中拉出來特別介紹。矩陣的乘法規則最早是在 1812 年由法國數學家 Jacques Philippe Marie Binet 提出。
### 乘法規則
如果今天矩陣 $A$ 的大小是 $n\times d$,$B$ 矩陣為 $d\times m$,相乘後的矩陣 $C$,其大小為 $n\times m$。如下圖所示矩陣 $C$ 的元素 $c_{ij}$ 是 $A$ 矩陣第 $i$ row 的元素與 $B$ 矩陣地 $j$ column 元素相乘後相加,即:
\begin{align}
c_{ij}=a_{i1}b_{1j}+a_{i2}b_{2j}+\cdots+a_{id}b_{dj}
\end{align}
<div style="text-align: center;">
<img src="https://hackmd.io/_uploads/ByA21VVXWx.svg" alt="matrix" width="70%"/>
<br>矩陣相乘規則,每一次都是矩陣相乘規則,每一次都是 A 一個 row 與 B 一個 column 元素相乘後相加</p>
<br>
</div>
如果今天 $A$ 與 $B$ 均為 $2\times 2$ 的矩陣,則:
\begin{align}
AB&=
\begin{bmatrix}
a_{11} & a_{12} \\
a_{21} & a_{22}
\end{bmatrix}
\begin{bmatrix}
b_{11} & b_{12} \\
b_{21} & b_{22}
\end{bmatrix} \\
&=
\begin{bmatrix}
a_{11}b_{11} + a_{12}b_{21} & a_{11}b_{12} + a_{12}b_{22} \\
a_{21}b_{11} + a_{22}b_{21} & a_{21}b_{12}+a_{22}b_{22}
\end{bmatrix}
\end{align}
我們可以這樣看待這個乘法,以上這乘法就相當於矩陣 $A$ 的 row 向量與矩陣 $B$ 的 column 向量內積,即:
\begin{align}
AB &=
\begin{bmatrix}
\begin{bmatrix}
a_{11} & a_{12}
\end{bmatrix} \\
\begin{bmatrix}
a_{21} & a_{22}
\end{bmatrix}
\end{bmatrix}
\begin{bmatrix}
\begin{bmatrix}
b_{11} \\
b_{21}
\end{bmatrix} &
\begin{bmatrix}
b_{12} \\
b_{22}
\end{bmatrix}
\end{bmatrix} \\
&=
\begin{bmatrix}
a^1 \\
a^2
\end{bmatrix}
\begin{bmatrix}
b_1 & b_2
\end{bmatrix} \\
&=
\begin{bmatrix}
a^1b_1 & a^1b_2 \\
a^2b_1 & a^2b_2
\end{bmatrix}
\end{align}
<div style="text-align: center;">
<img src="https://hackmd.io/_uploads/HyPbpH4XZx.svg" alt="matrix multip" width="70%"/>
<br>上式相當於此圖解</p>
<br>
</div>
雖然剛剛有提到內積,然而在矩陣中,不同於加減法,乘法不滿足交換律:
\begin{align}
AB\neq BA
\end{align}
除非這兩個矩陣是單位矩陣或是對角矩陣。
### 乘法視角:向量與向量
如果今天有兩個 column vectors:
\begin{align}
A =
\begin{bmatrix}
a_1 \\
a_2 \\
\vdots \\
a_n
\end{bmatrix}, \quad
B =
\begin{bmatrix}
b_1 \\
b_2 \\
\vdots \\
b_n
\end{bmatrix}
\end{align}
這兩個向量的內積可以寫成:
\begin{align}
A\cdot B&=B \cdot A = A^TB=B^TA=\sum_i a_ib_i\\
&=
\begin{bmatrix}
a_1 & a_2 & \cdots & a_n
\end{bmatrix}
\begin{bmatrix}
b_1 \\ b_2 \\ \vdots \\ b_n
\end{bmatrix}
\end{align}
最後得到一個 scalar。如果矩陣 $A$ 的元素全都是 $1$,與矩陣 $B$ 相乘後會得到所有 $b$ 元素的加總。如果 $A=B$,就會得到所有矩陣元素的平方再加總。
> 補充:
> 如果今天反過來是 $AB^T$,則為得到一個矩陣:
> \begin{align}
\begin{bmatrix}
a_1 \\ a_2 \\ \vdots \\ a_n
\end{bmatrix}
\begin{bmatrix}
b_1 & b_2 & \cdots & b_n
\end{bmatrix}=
\begin{bmatrix}
a_1b_1 & a_1b_2 & \cdots & a_1b_n \\
a_2b_1 & a_2b_2 & \cdots & a_2b_n \\
\vdots & \vdots & \ddots & \vdots \\
a_nb_1 & a_nb_2 & \cdots & a_nb_n
\end{bmatrix}
\end{align}
### 乘法視角:矩陣與向量
當今天矩陣作用在 row vector 或是 column vector,會得到另一個向量,可以視作對一個向量做伸縮與旋轉。
<div style="text-align: center;">
<img src="https://hackmd.io/_uploads/ryaTadh66.svg" alt="矩陣對上向量" width="100%"/>
<br>
<p>
從幾何的角度,矩陣對向量的作用相當於對向量做旋轉與伸縮</p>
</div>
比方說下面這個是對向量旋轉 $\theta$ 度的矩陣:
\begin{align}
R(\theta)=
\begin{bmatrix}
\cos{\theta} & -\sin{\theta} \\
\sin{\theta} & \cos{\theta}
\end{bmatrix}
\end{align}
以上一章介紹向量,文末進階的範例,平面逆時針旋轉 $90$ 度相當於向量旋轉 $-90$ 度,利用旋轉矩陣與矩陣乘法,我們可以輕易地算出旋轉後的向量為:
\begin{align}
R(-90^\circ)
\begin{bmatrix}
3\\
4
\end{bmatrix}&=
\begin{bmatrix}
\cos{(-90^\circ)} & -\sin{(-90^\circ)} \\
\sin{(-90^\circ)} & \cos{(-90^\circ)}
\end{bmatrix}
\begin{bmatrix}
3\\
4
\end{bmatrix}\\
&=
\begin{bmatrix}
4\\
-3
\end{bmatrix}
\end{align}
有一種矩陣很特別,它作用在向量後只會對向量做伸縮但沒有旋轉,[這種矩陣](https://www.entangletech.tw/lesson/math-08)我們在日後還會再提到。
<div style="text-align: center;">
<img src="https://hackmd.io/_uploads/Hydb0_nap.svg" alt="矩陣對上向量" width="100%"/>
<br>
<p>
有些特定的矩陣對上特定的向量只有伸縮作用而沒有旋轉</p>
</div>
更嚴謹地說,矩陣可以看作是一種函數(function),將一個向量空間映射到另一個向量空間,這種映射我們稱作線性映射(linear transformation)。
> 在補充單元,我們會再介紹何謂向量空間(vector space)
### 乘法視角:矩陣與向量(方程組)
這個視角是常見高中課本第一次提到矩陣時會提供的觀點,矩陣可以把多個方程式寫在一起,然後直接做求解。比方說以下線性方程組:
\begin{align}
a_{11}x_1+a_{12}x_2+\cdots+a_{1n}x_n=b_1\\
a_{21}x_1+a_{22}x_2+\cdots+a_{2n}x_n=b_2 \\
\vdots \\
a_{m1}x_1+a_{m2}x_2+\cdots+a_{mn}x_n=b_m
\end{align}
就可以寫成
\begin{align}
\begin{bmatrix}
a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{m1} & a_{m2} & \cdots & a_{mn}
\end{bmatrix}
\begin{bmatrix}
x_{1} \\
x_{2} \\
\vdots \\
x_{n}
\end{bmatrix}&=
\begin{bmatrix}
b_{1} \\
b_{2} \\
\vdots \\
b_{m}
\end{bmatrix}\\
Ax&=b
\end{align}
如此,此方程式的解就是:
\begin{align}
x=A^{-1}b
\end{align}
其中 $A^{-1}$ 為矩陣 $A$ 的逆矩陣,類似矩陣的除法,將會在下一節做簡略介紹。在這邊,我們還可以把矩陣 $A$ 看做是好幾個 column vectors 組成的矩陣,即:
\begin{align}
A=
\begin{bmatrix}
a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{m1} & a_{m2} & \cdots & a_{mn}
\end{bmatrix}=
\begin{bmatrix}
\vec{a_{1}} & \vec{a_{2}} & \cdots & \vec{a_{n}}
\end{bmatrix}
\end{align}
那原本的 $Ax=b$ 可以看做是:
\begin{align}
\begin{bmatrix}
\vec{a_{1}} & \vec{a_{2}} & \cdots & \vec{a_{n}} \\
\end{bmatrix}
\begin{bmatrix}
x_{1} \\
x_{2} \\
\vdots \\
x_{n}
\end{bmatrix}&=b_{m\times 1}
\end{align}
展開得到:
\begin{align}
x_1a_1+x_2a_2+\cdots+x_na_n=b_{m\times 1}
\end{align}
或是:
\begin{align}
x_1
\begin{bmatrix}
a_{11} \\
a_{21} \\
\vdots \\
a_{m1}
\end{bmatrix}
+x_2
\begin{bmatrix}
a_{12} \\
a_{22} \\
\vdots \\
a_{m2}
\end{bmatrix}
+\cdots+
x_n
\begin{bmatrix}
a_{1n} \\
a_{2n} \\
\vdots \\
a_{mn}
\end{bmatrix}=
\begin{bmatrix}
b_{1} \\
b_{2} \\
\vdots \\
b_{m}
\end{bmatrix}
\end{align}
## 逆矩陣
如果存在一個矩陣 $B$ 可以使矩陣 $A$ 滿足:
\begin{align}
AB=BA=I
\end{align}
我們就會說矩陣 $A$ 是可逆(invertible),一般我們會把這個矩陣 $B$ 記做 $A^{-1}$。
> invertible 也稱作 non-singular
## 進階補充
在前一個章節,我們提到了 tensor,並說向量是一階 tensor,那在你學完矩陣後,我們會說矩陣是二階 tensor。
## 延伸閱讀
- [線性變換](https://github.com/Visualize-ML/Book4_Power-of-Matrix/blob/main/Book4_Ch08_%E5%87%A0%E4%BD%95%E5%8F%98%E6%8D%A2__%E7%9F%A9%E9%98%B5%E5%8A%9B%E9%87%8F__%E4%BB%8E%E5%8A%A0%E5%87%8F%E4%B9%98%E9%99%A4%E5%88%B0%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0.pdf)