---
# System prepended metadata

title: 02 矩陣
tags: [數學]

---

# 何謂矩陣

矩陣（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)