行列のランク

この章の目標

行列のランク (階数) を「線形独立な行・列の最大個数 = 行列の本質的な次元」として理解する。行基本変形による計算法、階数退化次数の定理、連立方程式の解の構造との対応までを一本の筋で結ぶ。

前提知識

目次

§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)$ は、次のいずれかで定義される (すべて同値):

  1. 行ランク: $A$ の線形独立な行ベクトルの最大個数
  2. 列ランク: $A$ の線形独立な列ベクトルの最大個数
  3. 小行列式: 非零の小行列式をもつ最大の正方小行列のサイズ

ランクの上限とフルランク

$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) は、読みやすさのため別ページに分離している:

付録: 行ランク = 列ランクの証明 (Strang 流)

本筋 (ランクの計算・応用・連立方程式との対応) だけを追いたい読者は、付録を飛ばして下の §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$。

行基本変形でランクを求めるプロセス 元の行列 A 1 2 3 4 5 6 7 8 9 行変形 途中経過 1 2 3 0 -3 -6 0 -6 -12 行変形 階段行列 1 2 3 0 -3 -6 0 0 0 pivot 2個 → rank = 2 非零行の数 = ランク
図1: 行基本変形により階段行列を求め、主成分(pivot)の個数からランクを判定する。

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}$ のみ」を、階数退化次数の定理から次元の引き算として導いた形になる。

階数・退化次数の定理: n = rank(A) + dim(ker A) 階数・退化次数の定理: n = rank(A) + dim(ker A) Rⁿ (列数 n = 定義域の次元) ker(A) — 核(Null Space) dim = n − rank(A) = 退化次数 Ax = 0 の解空間 Im(A) — 像 dim = rank(A) 列空間
図2: 階数・退化次数の定理。定義域 Rⁿ の次元 n は、核の次元(退化次数)と像の次元(ランク)に分割される。

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) と呼ぶ。

階数標準形により、ランクが行列の「本質的な次元」を表すことが明確になる。

階数標準形: A ~ [[Iᵣ, O], [O, O]] A (m×n) * * * * * * * * * * * * * * * * * * * * 行・列 基本変形 階数標準形 1 0 0 1 Iᵣ O O O } r ランクの意味 r = rank(A) = 本質的な次元 = 独立な行・列の数 = 像の次元
図3: 階数標準形。任意の行列は行・列変形により、左上に r 次単位行列、残りが零行列の形に変形でき、r が行列の本質的な次元(ランク)を表す。

§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.