データサイエンスのための線形代数 第24回 行と列の基本変形によるランクの求め方

:::note info
本記事は数学講座[5.8 行基本変形による階数の求め方](https://www.matongxue.com/lessons/545/parts/1982)を勉強して投稿したメモです。詳細は元の素晴らしい講座のページをチェックしてください。
:::

# :sunny:[まとめ]


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/2625bd21-46ed-3e68-faa7-4b45f9767a22.png)


# 行階段行列のランク

行列関数のマッピング規則（全射、単射など）のいくつかを学ぶました。全部行列のランクと関わっていますので、**行列のランク**が大事な概念です。

行階段行列のランクが解けやすいですので、行列を基本行変換して、ランクが変わらないので、**行列を行階段行列に変換して**、ランクを解くのが簡単です。

例えば、以下の行階段行列$A$があります：

```math 
\boldsymbol{A}=\begin{pmatrix}1&0&2\\0&0&5\\0&0&0\end{pmatrix}
```
全部$0$ではない行が$\boldsymbol{r}_1^\mathrm{T}=\begin{pmatrix}1&0&2\end{pmatrix},\quad\boldsymbol{r}_2^\mathrm{T}=\begin{pmatrix}0&0&5\end{pmatrix}$

$A$の行ベクトル空間が$rowsp(\boldsymbol{A})=span(\boldsymbol{r}_1^\mathrm{T},\boldsymbol{r}_2^\mathrm{T})$です。
{$\boldsymbol{r}_1^\mathrm{T},\boldsymbol{r}_2^\mathrm{T}$}が線型独立ですので、$rank(\boldsymbol{A})=2$になります。


# 行基本変形によるランクの求め方

任意の非零行列$\boldsymbol{A}$は、有限回の基本変形をすることによって、**行階段行列**と**行簡約階段行列**に変換できます。
基本変形は基本行列$\boldsymbol{E}_i$によって実現できるため、上記の過程は以下のように表現できます。
```math
\boldsymbol{E}_1\boldsymbol{E}_2...\boldsymbol{E}_n\boldsymbol{A}=行階段行列（行簡約階段行列）
```
行階段行列には唯一性がないです。行簡約階段行列は唯一のものです。

```math
rank(\boldsymbol{A})=rank(\boldsymbol{E}_1\boldsymbol{E}_2...\boldsymbol{E}_n\boldsymbol{A})=rank\Big(行阶梯形矩阵（行最简形矩阵）\Big)
```
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/82854448-05a6-98f0-45c8-b3dc62f1ab26.png" widht=480>

## 例題
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/9f555b09-df84-a757-7745-d029f577a9bd.png)


# 列基本変形

列の基本変形は、[行の基本変形](https://qiita.com/Junlee/items/6972ef25b53d9119b133#%E5%9F%BA%E6%9C%AC%E8%A1%8C%E6%93%8D%E4%BD%9C%E3%81%A8%E5%9F%BA%E6%9C%AC%E8%A1%8C%E8%A1%8C%E5%88%97)と同じものです。

- 列の基本変形
```math  

\begin{array}{c|c|c}
    \hline
    \quad 基本列操作\quad &\quad 操作\quad &\quad 基本列行列\quad\\
    \hline
    \\
    \quad \color{SkyBlue}{j列目のk倍を加える}\quad &\quad \boldsymbol{c_1}'=\boldsymbol{c_1}+k\boldsymbol{c_2}\quad &\quad \begin{pmatrix}1&0&0\\{\color{red}{k}}&1&0\\0&0&1\end{pmatrix}\quad
    \\
    \\
    \hline
    \\
    \quad \color{Goldenrod}{ある列をk倍する}\quad &\quad \boldsymbol{c_1}'=k\boldsymbol{c_1} (k\neq 0)\quad &
    \quad \begin{pmatrix}{\color{red}{k}}&0&0\\0&1&0\\0&0&1\end{pmatrix}\quad \\
    \\
    \hline
    \\
    \quad \color{orange}{入れ替える}\quad &\quad \boldsymbol{c_1}\leftrightarrow \boldsymbol{c_2}\quad &
    \quad \begin{pmatrix}{\color{red}{0}}&{\color{red}{1}}&0\\
    {\color{red}{1}}&{\color{red}{0}}&0\\{\color{red}{0}}&{\color{red}{0}}&1\end{pmatrix}\quad \\
    \\
    \hline
\end{array}


```

- [比較]行の基本変形
```math  

\begin{array}{c|c|c}
    \hline
    \quad 基本行操作\quad &\quad 操作\quad &\quad 基本行行列\quad\\
    \hline
    \\
    \quad \begin{aligned}\color{SkyBlue}{j行目のk倍を加える}\qquad\qquad\quad\\\text{row-addition transformations}\end{aligned}\quad &\quad \boldsymbol{r_1}'=\boldsymbol{r_1}+k\boldsymbol{r_2}\quad &\quad \begin{pmatrix}1&{\color{red}{k}}&0\\0&1&0\\0&0&1\end{pmatrix}\quad
    \\
    \\
    \hline
    \\
    \quad \begin{aligned}\color{Goldenrod}{ある行をk倍する}\qquad\qquad\quad\\\text{row-multiplying transformations}\end{aligned}\quad &\quad \boldsymbol{r_1}'=k\boldsymbol{r_1} (k\neq 0)\quad &
    \quad \begin{pmatrix}{\color{red}{k}}&0&0\\0&1&0\\0&0&1\end{pmatrix}\quad \\
    \\
    \hline
    \\
    \quad \begin{aligned}\color{orange}{入れ替える}\qquad\qquad\quad\\\text{row-switching transformations}\end{aligned}\quad &\quad \boldsymbol{r_1}\leftrightarrow \boldsymbol{r_2}\quad &
    \quad \begin{pmatrix}{\color{red}{0}}&{\color{red}{1}}&{\color{red}{0}}\\
    {\color{red}{1}}&{\color{red}{0}}&{\color{red}{0}}\\0&0&1\end{pmatrix}\quad \\
    \\
    \hline
\end{array}

```
例えば、行列$A$を基本列の基本変形で実施すると：
![基本列行列.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/3cb16f97-3289-000f-cb4b-c079fe0acaef.gif)

# 標準形行列

行の簡約形の行列を更に、列の基本変形をすると、もっとシンプルな行列になります。

```math
\begin{pmatrix}1&2&0\\0&0&1\\0&0&0\end{pmatrix}\xrightarrow[\color{red}{\text{1列目の-2倍を２列目に加える}}]{\quad \boldsymbol{c}_2'=-2\boldsymbol{c}_1+\boldsymbol{c}_2\quad}\begin{pmatrix}1&0&0\\0&0&1\\0&0&0\end{pmatrix}\xrightarrow[\color{red}{\text{入れ替える}}]{\quad \boldsymbol{c}_2\leftrightarrow \boldsymbol{c}_3\quad}\begin{pmatrix}1&0&0\\0&1&0\\0&0&0\end{pmatrix}
```

このシンプルな行列の特徴は、左上が単位行列です。その以外は全部$0$です。これが**標準形行列**です。

```math

\left(
\begin{matrix}
    \left(\begin{aligned}1\ \ \ 0\\0\ \ \ 1\end{aligned}\right)&\begin{aligned}0\\0\end{aligned}\\
    0\ \ \ 0& 0
\end{matrix}
\right)

```

**上記のをまとめると：**
任意の行簡約行列$\boldsymbol{A}$は、有限回の列の基本変形をすることによって、**標準形行列**に変換できます。
基本変形は基本行列$\boldsymbol{E}_i$によって実現できるため、上記の過程は以下のように表現できます。
```math
\boldsymbol{E}_1\boldsymbol{E}_2...\boldsymbol{E}_n\boldsymbol{A}=標準形行列
```
標準形行列は唯一のものです。

```math
rank(\boldsymbol{A})=rank(\boldsymbol{A}\boldsymbol{E}_1\boldsymbol{E}_2...\boldsymbol{E}_n)=rank\Big(標準形行列\Big)
```




# 参考情報

https://ja.wikipedia.org/wiki/%E8%A1%8C%E9%9A%8E%E6%AE%B5%E5%BD%A2