行空間と列空間

Basis
最終更新: タグ: Linear Algebra

前提知識

すべての行列は二つの自然なベクトルの族を持つ:行と列だ。行のスパンと列のスパンはともに重要な部分空間であり、どの線型方程式系が解を持つかと行列の「到達範囲」をエンコードする。最初は自明でない驚くべき事実は、これらの二つのスパン——全く異なる空間に住む——の次元が常に一致するということだ。

行空間と列空間

体 FF 上の m×nm \times n 行列 AA に対して、r1,…,rm∈Fnr_1, \ldots, r_m \in F^n を行ベクトル、c1,…,cn∈Fmc_1, \ldots, c_n \in F^m を列ベクトルとする。

  • AA の行空間(row space)とは row(A)≔span(r1,…,rm)⊆Fn\text{row}(A) \coloneqq \text{span}(r_1, \ldots, r_m) \subseteq F^n。
  • AA の列空間(column space)とは col(A)≔span(c1,…,cn)⊆Fm\text{col}(A) \coloneqq \text{span}(c_1, \ldots, c_n) \subseteq F^m。

どちらも各々の周辺空間の線型部分空間だ。なぜならベクトルの任意の集合のスパンは常に部分空間だからだ。住む空間が異なることに注目しよう:行空間は FnF^n(列の数だけの座標)に、列空間は FmF^m(行の数だけの座標)に住む。

列空間が教えてくれること

積 AxAx は AA の列の線型結合だ:

Ax=x1 c1+x2 c2+⋯+xn cn.Ax = x_1\,c_1 + x_2\,c_2 + \cdots + x_n\,c_n.

だから xx が FnF^n の全体を動くとき、AxAx は col(A)\text{col}(A) の全体を動く。これにより解の存在に関するきれいな判定基準が得られる:

Ax=b が解を持つ  ⟺  b∈col(A).Ax = b \text{ が解を持つ} \iff b \in \text{col}(A).

bb が列空間の外にあれば、方程式系は不能だ——列の組み合わせで bb を作ることはできない。

行変換は行空間を保存する

行空間と列空間を計算する主な道具はガウス・ジョルダン消去法だ。それが各空間とどう相互作用するかを見よう。

基本行変換はどれも(二行を交換する;ある行を非ゼロスカラーで掛ける;ある行のスカラー倍を別の行に加える)、行の集合を同じスパンを持つ新しい集合に置き換える。なぜなら各操作は可逆で、新しい行は古い行の線型結合であり、古い行は新しい行の線型結合として取り戻せるからだ。スパンは到達できる線型結合にのみ依存するので、スパンは変わらない。

帰結:行空間は行変換の下で不変だ。特に、AA の行簡約階段形(RREF)の非ゼロ行が row(A)\text{row}(A) の基底をなす——それらは同じ空間をスパンし、各行が他の非ゼロ行がゼロの位置に先頭の 1 を持つため明らかに線型独立だ。

行変換は列空間を保存しない

行変換は列ベクトルを変える。ある行に別の行の cc 倍を加えることは、その行のすべての成分を変え、すべての列を同時に変える。だから RREF の列から col(A)\text{col}(A) の基底を読み取ることはできない。

行変換が保存するのは列の間の線型依存関係だ:簡約前に列が他の列の線型結合であれば、簡約後も同じ関係が成り立ち、逆も同様だ。これはピボット列の位置が信頼できることを意味する——AA のピボット列が col(A)\text{col}(A) の基底をなす——が、それらの列は RREF からではなく元の行列 AA から取らなければならない。

計算例

次の行列の行空間と列空間の基底を求める:

A=(123246112).A = \begin{pmatrix} 1 & 2 & 3 \\ 2 & 4 & 6 \\ 1 & 1 & 2 \end{pmatrix}.

ガウス・ジョルダン消去法を適用する。R2←R2−2R1R_2 \leftarrow R_2 - 2R_1、R3←R3−R1R_3 \leftarrow R_3 - R_1:

(1230000−1−1).\begin{pmatrix} 1 & 2 & 3 \\ 0 & 0 & 0 \\ 0 & -1 & -1 \end{pmatrix}.

R2R_2 と R3R_3 を交換し、R2←−R2R_2 \leftarrow -R_2:

(123011000).\begin{pmatrix} 1 & 2 & 3 \\ 0 & 1 & 1 \\ 0 & 0 & 0 \end{pmatrix}.

後退代入:R1←R1−2R2R_1 \leftarrow R_1 - 2R_2:

(101011000).\begin{pmatrix} 1 & 0 & 1 \\ 0 & 1 & 1 \\ 0 & 0 & 0 \end{pmatrix}.

行空間:RREF の非ゼロ行は (1,0,1)(1, 0, 1) と (0,1,1)(0, 1, 1) だ。これらが row(A)⊆F3\text{row}(A) \subseteq F^3 の基底をなす。

列空間:ピボット列は列 1 と列 2 だ(先頭の 1 がある位置)。元の AA のそれらの列を取る:

col(A)=span ⁣{(121), (241)}⊆F3.\text{col}(A) = \text{span}\!\left\{\begin{pmatrix}1\\2\\1\end{pmatrix},\ \begin{pmatrix}2\\4\\1\end{pmatrix}\right\} \subseteq F^3.

行ランクと列ランクの一致

この例では行空間と列空間の両方の次元が 2 だ。これは偶然ではない。

定理:任意の行列 AA に対して dim⁡(row(A))=dim⁡(col(A))\dim(\text{row}(A)) = \dim(\text{col}(A))。

証明:AA の RREF において、すべてのピボットは非ゼロ行(行空間に寄与)とピボット列(列空間に寄与)に対応する。どちらの場合もピボットの数は同じだ。RREF の非ゼロ行が row(A)\text{row}(A) の基底をなし、AA のピボット列が col(A)\text{col}(A) の基底をなすので、両方の次元がピボットの数に等しい。□\square

ランク

この共通の次元が AA のランク(rank)だ:

\text{rank}(A) \coloneqq \dim(\text{row}(A)) = \dim(\text{col}(A)) = \text{(RREF のピボットの数)}. \tag{1}

ランクは行列の真に独立な部分がどれだけあるかを測る——線型独立な行(等価的に列)が何本あるか。m×nm \times n 行列では rank(A)≤min⁡(m,n)\text{rank}(A) \le \min(m, n)。なぜなら行空間(次元 ≤m\le m)も列空間(次元 ≤n\le n)も各々の周辺空間を超えられないからだ。

ランク、零化次元(nullity)、解の構造の関係は次元定理で精密に述べられる。

まとめ

  • 行空間 row(A)=span(r1,…,rm)⊆Fn\text{row}(A) = \text{span}(r_1, \ldots, r_m) \subseteq F^n と列空間 col(A)=span(c1,…,cn)⊆Fm\text{col}(A) = \text{span}(c_1, \ldots, c_n) \subseteq F^m はともに線型部分空間だ。
  • 方程式系 Ax=bAx = b が無矛盾であることと b∈col(A)b \in \text{col}(A) は同値だ。
  • 行変換は行空間を保存する:RREF の非ゼロ行が基底を与える。
  • 行変換は列空間を保存しない:基底は元の行列 AA のピボット列を使う。
  • 行ランクは列ランクに等しい:dim⁡(row(A))=dim⁡(col(A))\dim(\text{row}(A)) = \dim(\text{col}(A))。
  • ランク rank(A)\text{rank}(A) はこの共通値であり、RREF のピボットの数に等しい。