行列のランク
この章の目標
行列のランク (階数) を「線形独立な行・列の最大個数 = 行列の本質的な次元」として理解する。行基本変形による計算法、階数退化次数の定理、連立方程式の解の構造との対応までを一本の筋で結ぶ。
前提知識
- 第1章: ベクトル空間の基礎 — 部分空間・基底・次元 ($\dim$)・線形写像の概念を使う。
- 第2章: 線形独立と線形従属 — ランクは「線形独立な行・列の最大個数」として定義される。
- 第3章: 行列式 — 行列式 ($\det$)・小行列式・可逆性 ($A^{-1}$ の存在) の話を使う。
- 行基本変形 (3 種類の操作) — 連立方程式の掃き出し法と同じ。
目次
§1. 概要
行列のランク (rank, 階数) は、その行列の線形独立な行 (または列) の最大個数を表す整数で、行列の「本質的な次元」を測る。たとえば 3 行の行列でも、第 2 行が第 1 行の 2 倍・第 3 行が第 1 行と第 2 行の和で書けるなら、独立な情報は 1 行分しかなく、ランクは 1 になる。
ランクは、連立一次方程式の解の存在性、線形写像の像と核の次元、データの実効的な次元など、線形代数のあらゆる場面で中心的な役割を果たす。特に次が同値であることが、基礎を通じての要点になる:
- $n$ 次正方行列 $A$ がフルランク ($\text{rank}(A) = n$)
- $A$ が可逆 ($A^{-1}$ が存在)
- $\det(A) \neq 0$
- $A\mathbf{x} = \mathbf{0}$ の解が $\mathbf{x} = \mathbf{0}$ のみ
完全な同値条件 (6 項目) は §5.5 にまとめる。
§2. ランクの定義
定義: 行列のランク
$m \times n$ 行列 $A$ のランク (rank) $\text{rank}(A)$ は、次のいずれかで定義される (すべて同値):
- 行ランク: $A$ の線形独立な行ベクトルの最大個数
- 列ランク: $A$ の線形独立な列ベクトルの最大個数
- 小行列式: 非零の小行列式をもつ最大の正方小行列のサイズ
ランクの上限とフルランク
$m \times n$ 行列 $A$ のランクは $$\text{rank}(A) \leq \min(m, n)$$ を満たす (行は $m$ 本、列は $n$ 本しかないため)。等号 $\text{rank}(A) = \min(m, n)$ が成り立つとき、$A$ はフルランク (full rank) であるという。正方行列の場合、フルランクは可逆性と同値。
§3. 定理: 行ランク = 列ランク
定理: 行ランク = 列ランク
任意の行列について、行ランクと列ランクは等しい。したがって「行」か「列」かを区別せず、単にランクと呼ぶ。
この定理により、ランクの定義 §2 の「行ランク」「列ランク」「小行列式」 3 つの定義はすべて同じ値を与える。幾何学的には、「行が張る部分空間の次元」と「列が張る部分空間の次元」が常に一致するという主張であり、自明ではない事実だが証明は短い。
証明はランク分解 $A = CB$ ($C$ は $m \times r$、$B$ は $r \times n$) と、$A^T$ に対する対称な議論から両方向の不等式を取り出して結合する。この分解は SVD や低ランク近似にも繋がる重要な道具である。
完全な証明は付録ページ
Strang 流の完全な証明 (図解・ステップ 1-6) は、読みやすさのため別ページに分離している:
本筋 (ランクの計算・応用・連立方程式との対応) だけを追いたい読者は、付録を飛ばして下の §4 以降へ進んでよい。
§4. 計算法
4.1 行基本変形による方法 (標準)
行列を行基本変形 (行の入れ替え・行の定数倍・ある行に他の行の定数倍を加える) により階段行列 (row echelon form) に変形する。階段行列の各行の先頭の非零成分をピボット (pivot) と呼び、ピボットの個数 = 非零行の個数 = ランクとなる。
行基本変形は行の線形独立性を保つため、途中でランクは変わらない。階段形では独立性が一目で判定できるので、この手順がランク計算の王道になる。
例: $$A = \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{pmatrix}$$ 行2から行1の4倍を引く、行3から行1の7倍を引く: $$\begin{pmatrix} 1 & 2 & 3 \\ 0 & -3 & -6 \\ 0 & -6 & -12 \end{pmatrix}$$ 行3から行2の2倍を引く: $$\begin{pmatrix} 1 & 2 & 3 \\ 0 & -3 & -6 \\ 0 & 0 & 0 \end{pmatrix}$$ 非零行は2行なので $\text{rank}(A) = 2$。
4.2 小行列式による方法
$k$ 次の正方小行列の行列式 (minor) がすべて 0 で、$(k-1)$ 次の小行列式に非零のものが 1 つでもあれば、ランクは $k-1$。理論的定義に忠実だが、組合せ数が多く手計算には重い。
4.3 特異値分解 (SVD) による方法 ★発展
$A = U\Sigma V^T$ と分解したとき、対角行列 $\Sigma$ の非零特異値の個数がランクに等しい。浮動小数点演算で「どこまでを 0 とみなすか」を閾値で制御できるため、数値計算ではこれが最も安定する (詳細は §11)。
§5. 基本性質
用語: 像 (Im) と核 (ker)
本節以降で繰り返し使う $A$ の像 (image) と核 (kernel) を先に定義しておく。$m \times n$ 行列 $A$ について:
- 像: $\text{Im}(A) = \{A\mathbf{x} : \mathbf{x} \in \mathbb{R}^n\} \subset \mathbb{R}^m$ — $A$ で写したベクトル全体。$A$ の列ベクトル全体で張られる部分空間 (= 列空間) と一致する。
- 核 (null space): $\ker A = \{\mathbf{x} \in \mathbb{R}^n : A\mathbf{x} = \mathbf{0}\} \subset \mathbb{R}^n$ — $A$ で $\mathbf{0}$ に写されるベクトル全体。同次方程式 $A\mathbf{x} = \mathbf{0}$ の解空間。
これらは $A$ を線形写像 $\mathbb{R}^n \to \mathbb{R}^m$ と見たときの像と $\mathbf{0}$ の逆像であり、それぞれの次元はランクと退化次数で表される (§7.1 の階数・退化次数の定理を参照)。
5.1 転置とランク
$$\text{rank}(A) = \text{rank}(A^T)$$ 行ランク = 列ランクの別表現。転置しても独立な行・列の数は変わらない。
5.2 積とランク
$$\text{rank}(AB) \leq \min(\text{rank}(A), \text{rank}(B))$$ $\text{Im}(AB) \subseteq \text{Im}(A)$ なので $\text{rank}(AB) \leq \text{rank}(A)$。また $AB$ の入力は $B$ の像を経由するので $\text{rank}(AB) \leq \text{rank}(B)$。
5.3 和とランク
$$\text{rank}(A + B) \leq \text{rank}(A) + \text{rank}(B)$$ $A+B$ の像が $\text{Im}(A) + \text{Im}(B)$ に含まれることから得られる不等式。
5.4 Sylvester の不等式 ★発展
$A$ が $m \times n$、$B$ が $n \times p$ のとき、 $$\text{rank}(A) + \text{rank}(B) - n \leq \text{rank}(AB).$$ 積でのランク低下量が高々 $n - \text{rank}(B)$ (もしくは $n - \text{rank}(A)$) に抑えられる、という定量評価。
5.5 フルランクの同値条件
$n$ 次正方行列 $A$ について、以下はすべて同値:
- $\text{rank}(A) = n$ (フルランク)
- $A$ は可逆 (逆行列 $A^{-1}$ をもつ)
- $\det(A) \neq 0$
- $A$ の列ベクトル (行ベクトル) は線形独立
- $A\mathbf{x} = \mathbf{0}$ の解は $\mathbf{x} = \mathbf{0}$ のみ
- 任意の $\mathbf{b} \in \mathbb{R}^n$ に対して $A\mathbf{x} = \mathbf{b}$ が一意解をもつ
§6. 例
例1: フルランクの行列
$$A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}$$ 列ベクトル $(1, 3)^T$ と $(2, 4)^T$ は線形独立(一方は他方の定数倍でない)。よって $\text{rank}(A) = 2$(フルランク)。
例2: ランク落ちの行列
$$B = \begin{pmatrix} 1 & 2 & 3 \\ 2 & 4 & 6 \end{pmatrix}$$ 第2行は第1行の2倍なので、線形独立な行は1つのみ。$\text{rank}(B) = 1$。
例3: ゼロ行列
$$O = \begin{pmatrix} 0 & 0 \\ 0 & 0 \end{pmatrix}$$ すべての行・列が零ベクトルなので $\text{rank}(O) = 0$。
例4: 単位行列
$$I_n = \begin{pmatrix} 1 & & \\ & \ddots & \\ & & 1 \end{pmatrix}$$ すべての行・列が線形独立なので $\text{rank}(I_n) = n$(フルランク)。
§7. ランクと連立一次方程式
7.1 同次方程式 $A\mathbf{x} = \mathbf{0}$
解空間 (核, null space) の次元を $A$ の退化次数 (nullity) と呼び、$\dim(\ker A)$ と書く。$m \times n$ 行列 $A$ について次が成り立つ: $$\dim(\ker A) = n - \text{rank}(A).$$ これを階数・退化次数の定理 (rank-nullity theorem) という。
直感: 階段行列化したとき、ピボットをもつ列 ($\text{rank}(A)$ 本) は「値が自動的に決まる変数」に対応し、ピボットのない列 ($n - \text{rank}(A)$ 本) が自由パラメータになる。自由パラメータの本数 = 解空間の次元 = 退化次数、というのがこの定理の正体である。
正方行列が正則な場合の特別ケース: $A$ が $n$ 次正方行列で正則 (= 可逆。$\text{rank}(A) = n$ と同値) なら、上式から $$\dim(\ker A) = n - n = 0$$ となる。次元 $0$ の部分空間はゼロベクトルだけからなる空間 $\{\mathbf{0}\}$ なので、$A\mathbf{x} = \mathbf{0}$ の解は $\mathbf{x} = \mathbf{0}$ のみ。これは §5.5 フルランクの同値条件 で挙げた「$A$ 可逆 ⇔ $A\mathbf{x} = \mathbf{0}$ の解が $\mathbf{x} = \mathbf{0}$ のみ」を、階数退化次数の定理から次元の引き算として導いた形になる。
7.2 非同次方程式 $A\mathbf{x} = \mathbf{b}$
解の存在条件: $A\mathbf{x} = \mathbf{b}$ が解をもつ $\Leftrightarrow$ $\text{rank}(A) = \text{rank}(A \mid \mathbf{b})$ (拡大係数行列のランクが等しい)。これは $\mathbf{b}$ が $A$ の列空間に入っていることと同値。
解の一意性:
- $\text{rank}(A) = n$ (列数と等しい) $\Rightarrow$ 解は一意 (存在すれば)
- $\text{rank}(A) < n$ $\Rightarrow$ 解は無数 (自由度 $n - \text{rank}(A)$)
§8. 階数標準形
任意の $m \times n$ 行列 $A$ は、行基本変形と列基本変形を有限回適用することで、以下の形に変形できる: $$A \sim \begin{pmatrix} I_r & O \\ O & O \end{pmatrix}$$ ここで $r = \text{rank}(A)$、$I_r$ は $r$ 次単位行列、$O$ は零行列。記号 $A \sim B$ は「$A$ から $B$ へ行・列基本変形の有限回の組合せで移れる (=同値)」を意味する。この特別な形を階数標準形 (rank normal form) と呼ぶ。
階数標準形により、ランクが行列の「本質的な次元」を表すことが明確になる。
§9. 応用
9.1 線形写像の像と核
線形写像 $T: \mathbb{R}^n \to \mathbb{R}^m$ の表現行列 $A$ に対し:
- $\dim(\text{Im } T) = \text{rank}(A)$ (像の次元)
- $\dim(\ker T) = n - \text{rank}(A)$ (核の次元)
9.2 データ解析・画像処理 ★発展
データ行列のランクは、データの実効的な次元 (独立な特徴の数) を表す。主成分分析 (PCA) や画像圧縮では、特異値分解により低ランク近似を行い、本質的な成分だけを残してノイズや冗長性を除去する。
9.3 制御理論 ★発展
可制御性行列・可観測性行列のランクにより、動的システムの制御可能性・可観測性を判定する (Kalman のランク条件)。
9.4 機械学習 ★発展
行列補完 (matrix completion) 問題では、低ランク仮定のもとで欠損データを推定する (推薦システムなど)。
§10. 実装例
10.1 Python (NumPy)
import numpy as np
# 行列の定義
A = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# ランクの計算
rank_A = np.linalg.matrix_rank(A)
print(f"rank(A) = {rank_A}") # 2
# フルランクの行列
B = np.array([[1, 2],
[3, 4]])
rank_B = np.linalg.matrix_rank(B)
print(f"rank(B) = {rank_B}") # 2
# ランク落ちの行列
C = np.array([[1, 2, 3],
[2, 4, 6]])
rank_C = np.linalg.matrix_rank(C)
print(f"rank(C) = {rank_C}") # 1
# SVDによるランク計算
U, s, Vt = np.linalg.svd(A)
print(f"特異値: {s}")
# 非零特異値の個数 = ランク
rank_svd = np.sum(s > 1e-10)
print(f"SVDによるランク: {rank_svd}")
# 階数・退化次数の定理の検証
n = A.shape[1] # 列数
nullity = n - rank_A
print(f"n - rank(A) = {nullity}") # 核の次元
10.2 MATLAB
% 行列の定義
A = [1 2 3; 4 5 6; 7 8 9];
% ランクの計算
rank_A = rank(A);
fprintf('rank(A) = %d\n', rank_A); % 2
% SVDによる検証
[U, S, V] = svd(A);
singular_values = diag(S);
disp('特異値:');
disp(singular_values');
% 階数・退化次数の定理
n = size(A, 2);
nullity = n - rank_A;
fprintf('n - rank(A) = %d\n', nullity);
§11. 数値計算上の注意
11.1 浮動小数点誤差
浮動小数点演算では丸め誤差により、理論上零の行・特異値が「非常に小さい値」として残る。どこまでを 0 とみなすかの判断が必要になるため、純粋な行基本変形より SVD ベースの判定が安定する。
11.2 許容誤差 (tolerance)
NumPy の matrix_rank は、デフォルトで許容誤差を $\sigma_{\max} \cdot \max(m, n) \cdot \varepsilon$ ($\sigma_{\max}$: 最大特異値、$\varepsilon \approx 10^{-16}$: 機械イプシロン) とし、これ以下の特異値を零とみなす。用途に応じて tol パラメータで調整する。
11.3 条件数とランク
条件数が大きい (ill-conditioned) 行列では、わずかな入力誤差で特異値の大小関係が逆転し、ランク判定が不安定になる。この場合は「数値ランク」 (しきい値で切った有効ランク) の概念を併用する。
§12. 参考文献
- Strang, G. (2016). Introduction to Linear Algebra (5th ed.). Wellesley-Cambridge Press.
- Axler, S. (2015). Linear Algebra Done Right (3rd ed.). Springer.
- Hoffman, K., & Kunze, R. (1971). Linear Algebra (2nd ed.). Prentice-Hall.
- Golub, G. H., & Van Loan, C. F. (2013). Matrix Computations (4th ed.). Johns Hopkins University Press.
- Horn, R. A., & Johnson, C. R. (2012). Matrix Analysis (2nd ed.). Cambridge University Press.
- Weisstein, E. W. "Matrix Rank." From MathWorld--A Wolfram Web Resource.