線形代数学の基本定理:4つの基本部分空間

4つの基本部分空間(Four Fundamental Subspace)は、1993年にGilbert Strang氏の論文: “The fundamental theorem of linear algebra” で紹介された線形代数学の理論です。

Figure1は、行列\(A: \mathbb{R}^{m\times n}\)の基本部分空間の次元と直交性の関係を示します。

Figure1. Four Fundamental Subspace
ワカメさん

初見は、この図が何を意味しているか分かりませんでした。この記事では、線形代数で大事な概念となる「4つの基本部分空間」についてまとめます。

この記事がカバーする内容
  • 4つの基本部分空間とは何か
  • 4つの基本部分空間はどんな関係にあるか
スポンサーリンク

4つの基本部分空間

線形代数学の基本定理は、基本部分空間のランク(rank)次元(dimension)に関連します。

ランクは行列のピボット(pivot)の数、部分空間の次元は基底(basis)の数です。

ヒトデちゃん

4つの基本部分空間って何のことですか?

ワカメさん

カラムスペース\(C(A)\)ロースペース\(C(A^T)\)ヌルスペース\(N(A)\)レフトヌルスペース\(N(A^T)\)のことです。これらが何かを以下にまとめます。

\(A\)を\(m \times n\)行列とします。このとき、行列\(A\)によって以下4つの部分空間が定義されます。

4つの基本部分空間
  1. \(C(A)\): \(A\)のカラムスペース(columun space)。行列\(A\)のカラムベクトルで張られる部分空間。
  2. \(C(A^T)\): \(A\)のロースペース(row space)。 行列\(A\)のローベクトルで張られる部分空間。転置行列(\(A^T\)のカラムスペースとも言える。
  3. \(N(A)\): \(A\)のヌルスペース(null space)。\(A \boldsymbol{x}=\mathbf{0}\)となる基底ベクトルが張る部分空間。
  4. \(N(A^T)\): \(A\)のレフトヌルスペース(left-null space)。 \(A^T \boldsymbol{y}=\mathbf{0}\)となる基底ベクトルが張る部分空間。
ヒトデちゃん

4種類の部分空間(集合)があることは分かりました。でもまだ意味がよく分かっていません。

行列\(A = \begin{bmatrix}1&0&1\\
0&1&1\\
1&0&1\end{bmatrix}\)とおき、それぞれの部分空間について考えてみます。

カラムスペース

行列\(A\)のカラムベクトルと任意のスカラー(\(\alpha_1, \alpha_2, \alpha_3)\)の線形結合は

$$A\boldsymbol{x}=\alpha_1 \begin{bmatrix}1\\0\\1 \end{bmatrix}+\alpha_2 \begin{bmatrix}0\\1\\0\end{bmatrix}+\alpha_3 \begin{bmatrix}1\\1\\1 \end{bmatrix}$$

と表せます。

カラムスペースの基底は、ガウスジョルダン法を使った行列\(A\)の行階段形(row echelon form)への変換を通して発見できます。

行列\(A\)の行階段形\(R\)は\(\begin{bmatrix}\color{red}{1}&0&1\\0&\color{red}{1}&1\\0&0&0\end{bmatrix}\)です。

この場合、ピボットを持つカラムは\(column_1\)と\(column_2\)です。

このことから、行列\(A\)の\(\begin{bmatrix}1\\0\\1\end{bmatrix}\)と\(\begin{bmatrix}0\\1\\0\end{bmatrix}\)がカラムスペースの基底と分かります。

行列\(A\)の基底となるカラムベクトルの線形結合は、部分空間(スパン: span)を張ります。この空間が\(A\)のカラムスペース\(C(A)\)と呼ばれます。

Figure2. カラムスペース \(C(A)\)

Figure2は、スカラー\(\alpha_i\)の値を3000回ランダムに選択し、線形結合\(A\boldsymbol{x}\)をプロットした結果です。

Figure2は、2つの基底を使って2次元の平面を形成していることが確認できます。この平面がカラムスペースです。このときのカラムスペースの次元は\(r=2\)です。

ワカメさん

もし行列\(A\)のランクが3だったら、カラムスペースは3次元になります。

MATLAB、Juliaでは、rref()でランクを計算できます。Pythonはnp.linalg.matrix_rank()でランクを計算できます。

ロースペース

行列\(A\)のローベクトルと任意のスカラー(\(\beta_1, \beta_2, \beta_3\))の線形結合は

$$A^T\boldsymbol{y}=\beta_1 \begin{bmatrix}1\\0\\1 \end{bmatrix}+\beta_2 \begin{bmatrix}0\\1\\1 \end{bmatrix}+\beta_3 \begin{bmatrix}1\\0\\1 \end{bmatrix}$$

と表せます。

ロースペースの基底も行列\(A\)の行階段形\(R\)から発見できます。

\(R\)を見ると、ピボットを持つローは\(row_1\)と\(row_2\)です。

このことから\(\begin{bmatrix}1\\0\\1\end{bmatrix}\)と\(\begin{bmatrix}0\\1\\1\end{bmatrix}\)がロースペースの基底と分かります。

行列\(A\)の基底となるローベクトルの線形結合も空間(スパン: span)を張ります。この空間が\(A\)のロースペース\(C(A^T)\)と呼ばれます。

ワカメさん

ロースペースも可視化してみます。

Figure3. ロースペース \(C(A^T)\)

ローベクトルの基底は2つ、ロースペースは平面であり、ロースペースの次元は\(r=2\)です。

ヒトデちゃん

なるほど!ランク2だからロースペースも平面になるんですね。

ヌルスペース

ヌルスペース\(N(A)\)は\(A\boldsymbol{x}=\mathbf{0}\)となる部分空間です。

$$\begin{eqnarray}A\boldsymbol{x}&=&\begin{bmatrix}1&0&1\\0&1&1\\1&0&1 \end{bmatrix}\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}\\
&=&\begin{bmatrix}0\\0\\0\end{bmatrix}\end{eqnarray}$$

を満たします。

ヒトデちゃん

ヌルスペースの基底はどのようにして発見するんですか?

ワカメさん

これも行列\(A\)の行階段形\(R\)を使います。

行列\(A\)の行階段形\(R: \begin{bmatrix}1&0&1\\0&1&1\\0&0&\color{red}{0}\end{bmatrix}\)の\(column_3\)はピボットを持っていません。

行列\(A\)のロースペースの次元は\(r=2\)でした。行列\(A\)ヌルスペースの次元は\(n-r = 3-2 = 1\)です。

ヌルスペースの基底を探すために、まずは\(x_3\)を自由変数(free variable)として\(s\)とおきます。

このとき、\(A\boldsymbol{x}=\mathbf{0}\)になる\(\boldsymbol{x}\)は、

\(x_1=-s, x_2=-s, x_3 = s\)

とおけます。このことから

$$\boldsymbol{x}=s\begin{bmatrix}-1\\-1\\1\end{bmatrix}$$

となります。

\(\begin{bmatrix}-1\\-1\\1\end{bmatrix}\)がヌルスペース\(N(A)\)の基底になります。

Figure4は行列\(A\)のヌルスペースを示します。ヌルスペースのランクは1、したがってヌルスペースは直線になります。

Figure4. ヌルスペース \(N(A)\)とロースペース \(C(A^T)\)

理由は後述しますが、ヌルスペースとロースペースは直交します。

レフトヌルスペース

レフトヌルスペース\(N(A^T)\)は\(A^T\boldsymbol{y}=\mathbf{0}\)となる部分空間です。

ヌルスペース\(N(A)\)のときと同様の手法で、次元と基底を発見できます。

行列\(A\)のカラムスペースの次元は\(r=2\)です。行列\(A\)レフトヌルスペースの次元は\(m-r = 3-2 = 1\)です。

レフトヌルスペースの基底を探します。\(y_3\)を自由変数(free variable)として\(t\)とおくと、\(A^T \boldsymbol{y}=\mathbf{0}\)を満たすため

$$\boldsymbol{y}=t\begin{bmatrix}-1\\0\\1\end{bmatrix}$$

が得られます。

\(\begin{bmatrix}-1\\0\\1\end{bmatrix}\)がレフトヌルスペース\(N(A^T)\)の基底になります。

ワカメさん

レフトヌルスペースはカラムスペースと直交します。これも理由は後ほど。

Figure5. レフトヌルスペース \(N(A^T)\)とカラムスペース \(C(A^T)\)
ヒトデちゃん

レフトヌルスペースの「レフト」って何か語源あるんですか?

ワカメさん

\(A^T \boldsymbol{y}=\mathbf{0}\)は\(\boldsymbol{y^T}A=\mathbf{0^T}\)と置き換えることができ、行列\(A\)に対して\(y\)が左側からかかるからだそうです。

次元と直交性

ワカメさん

続いて「部分空間の次元」「部分空間の直交性」についてまとめます。

部分空間の次元

次元に関して抑えておきたいポイントは以下4つです。

  1. カラムスペース\(C(A)\)とロースペース\(C(A^T)\)は同じ数の次元\(r\)を持つ
  2. 次元の数\(r\)は、行列\(A\)のランク
  3. ヌルスペース\(N(A)\)の次元は\(n-r\)
  4. レフトヌルスペース\(N(A^T)\)の次元は\(m-r\)
ワカメさん

これは上述のトピック「4つの基本部分空間」をまとめただけの内容となります。

部分空間の直交性

部分空間の直交性に関しては、以下の関係を持ちます。

  • ロースペース\(C(A^T)\)とヌルスペース\(N(A)\)は直交
  • カラムスペース\(C(A)\)とレフトヌルスペース\(N(A^T)\)は直交
Figure6. 4つの基本部分空間

Figure6は行列\(A\)の各部分空間を可視化したものです。

ヒトデちゃん

どうしてそれぞれの部分空間が直交するんでしょうか?

式を使ってまとめてみます。

\(A\boldsymbol{x}=\mathbf{0}\)は

$$\begin{bmatrix}(row_1) \boldsymbol{x}\\
(row_2) \boldsymbol{x}\\
(row_3) \boldsymbol{x}\end{bmatrix}=\begin{bmatrix}0\\0\\0 \end{bmatrix}$$

です。

これは、行列\(A\)からの全てのローベクトルが\(\boldsymbol{x}\)に対して直交していることを意味します。

\(\boldsymbol{x}\)はヌルスペース\(N(A)\)上にあります。

「ロースペース\(C(A^T)\)からの全てのベクトル」と「ヌルスペース\(N(A)\)からのあらゆるベクトル\(\boldsymbol{x}\)」は直交するため、ロースペース\(C(A^T)\)とヌルスペース\(N(A)\)は直交していると言えます。

ワカメさん

カラムスペースとレフトヌルスペースについても同様です。

\(A^T\boldsymbol{y}=\mathbf{0}\)は、

$$\begin{bmatrix}(col_1) \boldsymbol{y}\\
(col_2) \boldsymbol{y}\\
(col_3) \boldsymbol{y}\end{bmatrix}
=\begin{bmatrix}0\\0\\0 \end{bmatrix}$$

となり、カラムスペース\(C(A)\)とレフトヌルスペース\(N(A^T)\)は直交の関係にあります。

Pythonによる関係性の可視化

以下、可視化のために使用したコードです。

理解をサポートする動画

理解を深めるために本家のレクチャーを見るのが良いです。

個人的に、愛してやまない「3Blue1Brown」の動画もオススメです。

ヒトデちゃん

Youtubeってホントすごいですねー!

まとめ

この記事の内容をまとめます。

4つの基本部分空間
  • 基本部分空間:カラムスペース、ロースペース、ヌルスペース、レフトヌルスペースの4つ
  • 基本部分空間の次元
    • カラムスペース\(C(A)\)とロースペース\(C(A^T)\)の次元\(r\)の数は同じ
    • ヌルスペース\(N(A)\)の次元は\(n-r\)
    • レフトヌルスペース\(N(A^T)\)の次元は\(m-r\)
  • 基本部分空間の直交性
    • ロースペース\(C(A^T)\)とヌルスペース\(N(A)\)は直交
    • カラムスペース\(C(A)\)とレフトヌルスペース\(N(A^T)\)は直交
ワカメさん

3次元以上は可視化できないため、どうしても線形代数は概念的な話になりますが、手を動かしてみると4つの部分空間の関係性を少しは理解できた気がします。

この記事は以上です。最後まで読んで頂きありがとうございました。

参考資料

(1) Gilbert Strang (1993) The Fundamental Theorem of Linear Algebra, The American Mathematical Monthly, 100:9, 848-855, DOI: 10.1080/00029890.1993.11990500

(2) Gilbert Strang, Introduction to Linear Algebra, Fifth Edition (2016)

スポンサーリンク
この記事が気にいったらシェアしてね!
5 1 vote
Article Rating
Subscribe
Notify of
guest

1 Comment
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
ABOUT US
ワカメ
Data Scientist, Master of Data Science & Master of Engineering in Material Science
このブログは以下2点を目的に運営.
1. 管理人の学び・体験の復習機会
2. 海外留学を目指す方の参考情報
趣味の範囲で淡々と更新します.
*ブログ・SNSは所属組織と無関係の個人発信.