列空間と行空間

列空間と行空間

列空間

 これまで学んできたように、$\mathbb{R}^n$ に属するベクトル $\boldsymbol{x}$ の行列 $A$ による線型変換 $A\boldsymbol{x}$ は、$A$ を構成する列ベクトルの線型結合として表せます。後述する行空間と区別するために、$A\boldsymbol{x}$ をあらためて 列空間 という名称で定義して、$\mathbb{C}(A)$ と表記することにします。

正方行列の列空間

 $\boldsymbol{x}$ が $\mathbb{R}^3$ に属するとき、$3\times 3$ の正方行列 $A$ の列空間は
 
\[\begin{bmatrix}a_{11}&a_{12}&a_{13}\\
a_{21}&a_{22}&a_{23}\\
a_{31}&a_{32}&a_{33}\end{bmatrix}
\begin{bmatrix}x\\y\\z\end{bmatrix}
=x\begin{bmatrix}a_{11}\\a_{21}\\a_{31}\end{bmatrix}
+y\begin{bmatrix}a_{12}\\a_{22}\\a_{32}\end{bmatrix}
+z\begin{bmatrix}a_{13}\\a_{23}\\a_{33}\end{bmatrix}\tag{1}\]
のように 3 本のベクトルの線型結合で表せます。$A$ に含まれる独立な列ベクトル (基底ベクトル) の数、すなわち $A$ の階数 $\mathrm{rank}A$ によって変換の性質は異なります。

  $\mathrm{rank}A=3$  $\mathbb{R}^3$ → $\mathbb{R}^3$ 全体
  $\mathrm{rank}A=2$  $\mathbb{R}^3$ → $\mathbb{R}^3$ 内の平面
  $\mathrm{rank}A=1$  $\mathbb{R}^3$ → $\mathbb{R}^3$ 内の直線

 いずれにしても、$3\times 3$ 行列の列空間は $\mathbb{R}^3$ の部分空間であり、連立方程式 $A\boldsymbol{x}=\boldsymbol{b}$ は $\boldsymbol{b}$ が部分空間に含まれるときに解をもちます。

 $A$ の階数が $3$ であれば必ず解をもちますが、階数が $3$ より小さいときには、$A\boldsymbol{x}=\boldsymbol{b}$ を満たすような $\boldsymbol{b}$ は稀であることがわかります (特定の平面や直線上に $\boldsymbol{b}$ が含まれていなければなりません)。

 試しに階数 $2$ の正方行列と $3$ 次元ベクトル
 
\[A=\begin{bmatrix}1&3&0\\1&3&1\\2&6&0\end{bmatrix},\
\quad \boldsymbol{b}=\begin{bmatrix}2\\5\\1\end{bmatrix}\tag{2}\]
を定義して、$A\boldsymbol{x}=\boldsymbol{b}$ が解の存在を調べてみましょう。ガウス・ジョルダンの消去法を使います。拡大係数行列
 
\[\begin{bmatrix}1&3&0&2\\
1&3&1&5\\2&6&0&1\end{bmatrix}\tag{3}\]
をつくって、$2$ 行目から $1$ 行目を引いて、$3$ 行目から $1$ 行目の $2$ 倍を引くと、
 
\[\begin{bmatrix}1&3&0&2\\
0&0&1&3\\0&0&0&-3\end{bmatrix}\tag{4}\]
 $3$ 行目は $0=-3$ という (矛盾した) 等式を表すので、この連立方程式は解をもたないことがわかります。
 

矩形行列の列空間

 $3\times 2$ の矩形行列
 
\[A=\begin{bmatrix}1&1\\1&0\\5&3\end{bmatrix}\tag{5}\]
は $\mathbb{R}^2$ を $\mathbb{R}^3$ 内の平面に写します。
 
\[\begin{bmatrix}1&1\\1&0\\5&3\end{bmatrix}
\begin{bmatrix}x\\y\end{bmatrix}
=x\begin{bmatrix}1\\1\\5\end{bmatrix}
+y\begin{bmatrix}1\\0\\3\end{bmatrix}\tag{6}\]
 
 一般に、$m\times n$ の矩形行列は $\mathbb{R}^n$ を $\mathbb{R}^m$ 内の部分空間に写します ($m\times n$ の矩形行列の列空間は $\mathbb{R}^m$ の部分空間です)。
 

大学基礎数学 線形代数キャンパス・ゼミ

中古価格
¥1,210から
(2019/10/27 13:11時点)

 

行空間

 $A$ の転置行列 $A^T$ の列空間を 行空間 とよび、$\mathbb{C}(A^T)$ で表します。$A$ が $n\times n$ の正方行列であれば、列空間 $\mathbb{C}(A)$ と行空間 $\mathbb{C}(A^T)$ はともに $\mathbb{R}^n$ の部分空間ですが、$A$ が $m\times n$ の矩形行列であれば、列空間 $\mathbb{C}(A)$ は $\mathbb{R}^m$ の部分空間、行空間 $\mathbb{C}(A^T)$ は $\mathbb{R}^n$ の部分空間となります。たとえば $3\times 2$ の矩形行列

\[A=\begin{bmatrix}1&4\\2&5\\3&6\end{bmatrix}\tag{7}\]
について、列空間は
 
\[\mathbb{C}(A)=\begin{bmatrix}1&4\\2&5\\3&6\end{bmatrix}
\begin{bmatrix}x\\y\end{bmatrix}
=x\begin{bmatrix}1\\2\\3\end{bmatrix}
+y\begin{bmatrix}4\\5\\6\end{bmatrix}\tag{8}\]
と表せるので $\mathbb{R}^3$ の部分空間 (平面) となります。行空間は
 
\[\mathbb{C}(A^T)=\begin{bmatrix}1&2&3\\4&5&6\end{bmatrix}
\begin{bmatrix}x\\y\\z\end{bmatrix}
=x\begin{bmatrix}1\\4\end{bmatrix}
+y\begin{bmatrix}2\\5\end{bmatrix}
+z\begin{bmatrix}3\\6\end{bmatrix}\tag{9}\]
と表せます。$3$ 本の列ベクトルのうち $2$ 本を基底に選んで
 
\[\mathbb{C}(A^T)=s\begin{bmatrix}1\\4\end{bmatrix}
+t\begin{bmatrix}2\\5\end{bmatrix}\tag{10}\]
のように書き直すことができます。この式は $\mathbb{R}^2$ 全体を表しています ($\mathbb{R}^2$ 自身も $\mathbb{R}^2$ の部分空間です)。
 

scipy.linalg.orth()

 scipy.linalg.orth(A) は A の列空間を張るための直交基底を生成します。
 たとえば階数 2 の行列を渡すと、2 つの基底ベクトルを並べた行列を返します:

# SLA_52-1

import numpy as np
from scipy import linalg

# rank2の行列
A = np.array([[2, 0, 0],
              [0, 3, 1],
              [0, 0, 0]])

# C(A)を張る基底を生成
CA = linalg.orth(A)

print(CA)
[[0. 1.]
 [1. 0.]
 [0. 0.]]

 A の転置行列を渡すと、行空間を張る基底を返します。

# SLA_52-2

# C(A^T)を張る基底を生成
CAT = linalg.orth(A.T)

print(CAT)
[[ 0.          1.        ]
 [-0.9486833   0.        ]
 [-0.31622777  0.        ]]