データサイエンスのための線形代数 第19回 行列関数の値域

:::note info
本記事は数学講座[5.3 行列関数の値域](https://www.matongxue.com/lessons/909/parts/656)を勉強して投稿したメモです。詳細は元の素晴らしい講座のページをチェックしてください。
:::

# :sunny:　[まとめ] ランクの性質

- ランクの値の範囲

```math 
0\le rank(A_{m\times n})\le\min(m,n)
```

- 転置行列のランク

```math 
rank(A)=rank(A^\mathrm{T})
```

- 合成関数のランク

```math 
rank(AB)\leq\min\Big(rank(A),rank(B)\Big)
```

- $P,Q$がフルランクの行列であれば：

```math 
rank(PA)=rank(AQ)=rank(PAQ)=rank(A)
```

- $A,B$が同じ形の行列であれば：

```math 
rank(A+B)\le rank(A)+rank(B)
```

# 列ベクトル行列関数の値域

自然な定義域で、列ベクトル行列関数$Ax=y$の値域が$A$の列空間です。即ち：$値域=colsp(A)$

例えば、$A$が$m\times n$のぎょうれであり、列ベクトル行列関数$Ax=y$の自然定義域が$R^n$であり、自然定義域での認識なベクトル$x$が$R^n$の自然基底の{$e_1,e_2,e_3...e_n$}で表せます。

```math  
\boldsymbol{x}=x_1\boldsymbol{e}_1+x_2\boldsymbol{e}_2+\cdots+x_n\boldsymbol{e}_n,\quad x_{1,2,\cdots,n}\in\mathbb{R}
```
$A$の列ベクトルが$c_1,c_2,..c_n$：　$A=(c_1,c_2,..c_n)$

行列の乗法によれば、列ベクトル行列関数$Ax=y$での$y$が

```math  
\boldsymbol{y}=x_1\boldsymbol{c}_1+x_2\boldsymbol{c}_2+\cdots+x_n\boldsymbol{c}_n,\quad x_{1,2,\cdots,n}\in\mathbb{R}
```

値域$y$が列ベクトル組{$c_1,c_2,..c_n$}の張る空間です。値域が列空間です。

$A$が$m\times n$の行列であれば、自然な定義域での関数$Ax=y$四つ要素が：
```math  
\begin{array}{c|c|c|c}
    \hline
    \quad 自然な定義域\quad&\quad マッピング規則 \quad&\quad 値域 \quad&\quad 到達域\quad\\\hline\\
    \quad \mathbb{R}^n \quad&\quad \boldsymbol{A} \quad&\quad colsp(\boldsymbol{A}) \quad&\quad \mathbb{R}^m \quad\\
    \\
    \hline
\end{array}
```
図で表すと：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/3e9bb5d1-e195-d7ba-e445-995097871890.png)


参照：[列ベクトル行列関数](https://qiita.com/Junlee/items/ea2d5451fece9931895c#%E5%88%97%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E8%A1%8C%E5%88%97%E9%96%A2%E6%95%B0)

# 行ベクトル行列関数の値域

考え方は列ベクトルと同じくです、詳細は[行ベクトル行列関数の値域](https://www.matongxue.com/lessons/909/parts/657)に記載があります。

$A$が$m\times n$の行列であれば、自然な定義域での関数$x^T{A}=y^T$四つ要素が：
```math  
\begin{array}{c|c|c|c}
    \hline
    \quad 自然な定義域\quad&\quad マッピング規則 \quad&\quad 値域 \quad&\quad 到達域\quad\\\hline\\
    \quad \mathbb{R}^m \quad&\quad \boldsymbol{A} \quad&\quad rowsp(\boldsymbol{A}) \quad&\quad \mathbb{R}^n \quad\\
    \\
    \hline
\end{array}
```

図で表すと：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/87f6effa-cf5a-b99f-135b-1f84187e0c04.png)

# 行列のランク

自然な定義域内において、行列関数の値域を知ることで、
- 列ベクトル行列関数$A\boldsymbol{x}=\boldsymbol{y}$の値域の次元数は**列ランク**であり、
- 行ベクトル行列関数$\boldsymbol{x}^\mathrm{T}A=\boldsymbol{y}^\mathrm{T}$の値域の次元数は**行ランク**であることが分かります。

**行ランク=列ランク=ランク**であるため、自然定義域内では、**ランクは行列関数の値域の次元数と同じ**です。

- ランクが$2$: $A$の自然な定義域の次元数がいくら関係なく、$rank(A)=2$であれば、値域のランクが$2$になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/4df8be51-9d69-eab0-9302-fc985a0dc722.png)

- 同様：ランクが$1$: $A$の自然な定義域の次元数がいくら関係なく、$rank(A)=1$であれば、値域のランクが$1$になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/c053d71b-c7d3-a09f-c96d-eb6ae233a88b.png)

## 行列ランクまとめ

同じ自然な定義域にとって、$rank(A)$が小さければ、値域の次元数が小さくなります。
例えば、
```math  
\begin{array}{c|c|c}
    \hline
    \quad \text{自然な定義域}\quad&\quad \text{ランク}\quad&\quad \text{値域次元数}\quad \\
    \hline 
    \quad \mathbb{R}^2\quad&\quad\begin{aligned}rank(\boldsymbol{A})=2\\rank(\boldsymbol{A})=1\\
        rank(\boldsymbol{A})=0\end{aligned}\quad&\quad\begin{aligned}\text{2 次元}\\\text{1 次元}\\\text{0 次元}\end{aligned}\quad\\
    \hline
\end{array}
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/c604906c-59e3-b82a-11e0-4a88af2df89d.png)

行列$A$をふるいを見なすことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/1ccc46e5-06a6-cd1f-c154-2a21851c0da0.png)

ふるいの穴が大ければ、行列$A$のランクが大きいです、ふるいを通して落ちたもの（値域）が大きいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/e4ce7e17-655c-2d86-9c88-c0074b880f6b.png)

# フルランクの行列

とある行列が**列フルランク**且つ**行フルランク**であれば、この行列が**フルランクの行列**と呼びます。また、フルランクの行列が**必ず正方行列**です。
任意の行列$(A_{m\times n})$にとって、行ランクが列ランクと等しいですので、列フルランクであれば、列ランクが$n$で、行ランクが$m$です。$m=n$ですので、行列$(A_{m\times n})$が正方行列になります。

:::note info
行ランクが列ランクと等しいが、こちら[行列のランク](https://www.matongxue.com/parts/2247/)で説明あります。
:::

# 合成関数のランク

```math
rank(AB)\leq\min\Big(rank(A),rank(B)\Big)
```
$A$が$m\times r$の行列、$B$が$r\times n$の行列で、列ベクトル行列関数$AB(x)=y$にとって、結合律によれば、以下のが成立しています。

```math  
AB(\boldsymbol{x})=(AB)(\boldsymbol{x})=\boldsymbol{y}
```
$AB$が一つの行列($m\times n$)で、この行列関数の自然な定義域の四つの要素が以下の通りです。

```math  
\begin{array}{c|c|c|c}
    \hline
    \quad 自然な定義域\quad&\quad マッピング規則 \quad&\quad 値域 \quad&\quad 到達域 \quad\\\hline\\
    \quad \mathbb{R}^n \quad&\quad AB \quad&\quad colsp(AB) \quad&\quad \mathbb{R}^m \quad\\
    \\
    \hline
\end{array}
```
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/2427b0f7-4ee8-5490-47b9-8fe15ced8334.png" width=360>

# フルランク行列の合成
$P,Q$がフルランクの行列であれば：

```math
rank(PA)=rank(AQ)=rank(PAQ)=rank(A)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/23c9865a-2eb9-26e5-ab0b-d501851f37c6.png)




# 参考情報

https://mathlandscape.com/matrix-rank/