rankって何?行列の「実質的な次元」を表す数

数学で「rank(ランク)」という言葉を聞いたことはありますか?日常では「順位」や「階級」を意味する言葉ですが、数学では特別な意味を持つ重要な概念なんです。
数学でのrankは、主に 行列(ぎょうれつ) に関する概念で、日本語では 階数(かいすう) といいます。簡単に言えば、「行列が持つ本質的な情報量」や「独立な情報の数」を表す数値です。
この記事では、rankの基本的な意味から具体的な求め方、連立方程式との関係、そして実生活での応用まで、具体例をたっぷり使いながら丁寧に解説していきます。
少し難しく感じるかもしれませんが、図やイメージを使って説明するので、最後まで読めば必ず理解できますよ。
それでは、まず「行列とは何か」から見ていきましょう!
行列の基本:数を並べた表
rankを理解するには、まず 行列(ぎょうれつ) を知る必要があります。英語では “matrix” といいます。
行列とは
行列 とは、数や文字を長方形の形に並べたもののことです。
実例:
A = [1 2 3]
[4 5 6]
この行列は2行3列(2×3行列)です。
説明:
- 横の並びを「行(ぎょう)」、英語で “row”
- 縦の並びを「列(れつ)」、英語で “column”
- 2行3列なら「2×3行列」と読みます
行列の例
実例1:2×2行列
B = [1 2]
[3 4]
実例2:3×3行列
C = [1 0 0]
[0 1 0]
[0 0 1]
これは 単位行列 と呼ばれる特別な行列です。
なぜ行列を使うのか
行列は、たくさんの数をまとめて扱うのに便利です。
実例:
- 座標変換(回転、拡大縮小)
- 連立方程式の表現
- データの整理(表計算)
- コンピュータグラフィックス
rankの基本定義:独立な行(列)の数
それでは、rank(階数) の定義を見ていきましょう。
rankとは何か
行列のrank とは、その行列の中で 線形独立(せんけいどくりつ) な行(または列)の最大個数のことです。
説明:
もう少し分かりやすく言うと、「行列の中に含まれる、互いに独立した情報の数」です。重複していない本質的な情報が何個あるか、という意味ですね。
簡単な例で理解しよう
実例1:rank = 2の行列
A = [1 2]
[3 4]
この行列は:
- 1行目 [1, 2] と2行目 [3, 4] は独立
- どちらも他方の定数倍では表せない
- よって rank(A) = 2
実例2:rank = 1の行列
B = [1 2]
[2 4]
この行列は:
- 2行目 [2, 4] は1行目 [1, 2] の2倍
- 本質的には1つの情報しかない
- よって rank(B) = 1
rankの別の見方
rankは次のようにも理解できます:
「行列が何次元の情報を持っているか」
実例:
- 2×2行列で rank = 2 → 2次元の情報を持つ(フルランク)
- 2×2行列で rank = 1 → 実質1次元の情報しかない
- 3×3行列で rank = 3 → 3次元の情報を持つ
線形独立と線形従属:rankを理解する鍵
rankを正しく理解するには、線形独立 と 線形従属 の概念が必要です。
線形独立(せんけいどくりつ)
複数のベクトル(または行)が 線形独立 であるとは、どのベクトルも他のベクトルの組み合わせで表せないということです。
説明:
「お互いに全く別の方向を向いている」というイメージです。どれも他のものから作り出せない独立した情報を持っています。
実例:平面上の2つのベクトル
v₁ = [1, 0](右方向)
v₂ = [0, 1](上方向)
この2つは線形独立です。どちらも他方の何倍にもなりません。
線形従属(せんけいじゅうぞく)
複数のベクトルが 線形従属 であるとは、少なくとも1つのベクトルが他のベクトルの組み合わせで表せるということです。
説明:
「誰かが余計」な状態です。1つのベクトルを取り除いても、情報量は変わりません。
実例:
v₁ = [1, 2]
v₂ = [2, 4](v₁の2倍)
v₃ = [3, 6](v₁の3倍)
この3つは線形従属です。v₂とv₃はv₁から作れるので、本質的にはv₁だけの情報しかありません。
rankとの関係
行列のrank = 線形独立な行(列)の最大個数
実例:
A = [1 2 3]
[2 4 6]
[1 1 2]
- 1行目:[1, 2, 3]
- 2行目:[2, 4, 6](1行目の2倍、従属)
- 3行目:[1, 1, 2](独立)
1行目と3行目は独立なので、rank(A) = 2です。
rankの求め方:行基本変形を使う方法
実際にrankを求める最も一般的な方法は、行基本変形(ぎょうきほんへんけい) を使う方法です。
行基本変形とは
行列を変形する以下の3つの操作を 行基本変形 といいます。
操作1:行の入れ替え
2つの行を入れ替える。
操作2:行の定数倍
ある行を0でない定数で掛ける。
操作3:行の足し算
ある行に、別の行の定数倍を足す。
重要:
これらの操作を行っても、行列のrankは変わりません。
階段行列(かいだんぎょうれつ)に変形する
行基本変形を使って、行列を 階段行列 または 行簡約階段形 に変形します。
階段行列とは:
各行の最初の0でない要素(これを主成分という)が、上の行の主成分より右にある形の行列です。
実例:階段行列
[1 2 3]
[0 1 4]
[0 0 1]
階段状に0が並んでいますね。
具体的な手順
実例:次の行列のrankを求めよ
A = [1 2 1]
[2 4 3]
[3 6 4]
ステップ1:2行目から1行目の2倍を引く
[1 2 1]
[0 0 1](2行目 - 2×1行目)
[3 6 4]
ステップ2:3行目から1行目の3倍を引く
[1 2 1]
[0 0 1]
[0 0 1](3行目 - 3×1行目)
ステップ3:3行目から2行目を引く
[1 2 1]
[0 0 1]
[0 0 0](3行目 - 2行目)
結果:
0でない行が2つあるので、rank(A) = 2
rankの判定方法
階段行列に変形したら:
rank = 0でない行の数
説明:
全部が0の行は数えません。0でない要素が1つでも残っている行だけを数えます。
rankの重要な性質
rankには、いくつかの重要な性質があります。
rankの範囲
m×n行列Aに対して:
0 ≤ rank(A) ≤ min(m, n)
説明:
rankは0以上で、行数mと列数nの小さい方以下になります。
実例:
- 3×5行列のrankは、最大でも3
- 4×2行列のrankは、最大でも2
行rankと列rankは等しい
定理:任意の行列において、行rankと列rankは等しい。
説明:
- 行rank:線形独立な行の最大個数
- 列rank:線形独立な列の最大個数
- これらは常に等しいので、単に「rank」と呼びます
実例:
A = [1 2]
[2 4]
- 行から見ると:2行目は1行目の2倍なので、独立な行は1つ
- 列から見ると:2列目は1列目の2倍なので、独立な列は1つ
- どちらから見ても rank = 1
転置行列のrank
定理:rank(A) = rank(Aᵀ)
説明:
行列を転置(行と列を入れ替え)しても、rankは変わりません。
実例:
A = [1 2 3] Aᵀ = [1 4]
[4 5 6] [2 5]
[3 6]
どちらも rank = 2 です。
積のrank
定理:rank(AB) ≤ min(rank(A), rank(B))
説明:
2つの行列の積のrankは、それぞれのrankの小さい方以下になります。
フルランクと階数落ち

rankには特別な状態があります。
フルランク(full rank)
行列が可能な最大のrankを持つとき、フルランク といいます。
m×n行列がフルランクである:
rank = min(m, n)
実例1:正方行列の場合
A = [1 2]
[3 4]
2×2行列で rank = 2 なら、フルランクです。
実例2:長方形行列の場合
B = [1 2 3]
[4 5 6]
2×3行列で rank = 2 なら、フルランクです。
階数落ち(rank deficient)
フルランクでない状態を 階数落ち または ランク落ち といいます。
実例:
C = [1 2]
[2 4]
2×2行列ですが rank = 1 なので、階数落ちしています。
説明:
階数落ちが起こるのは、行(列)の間に線形従属関係があるときです。つまり、余計な情報(重複した情報)が含まれているということですね。
逆行列の存在
正方行列において:
フルランク ⇔ 逆行列が存在する
説明:
n×n行列がフルランク(rank = n)であることと、逆行列を持つことは同値です。
実例:
A = [1 2] → rank = 2(フルランク) → 逆行列あり
[3 4]
B = [1 2] → rank = 1(階数落ち) → 逆行列なし
[2 4]
連立方程式とrank:解の存在条件
rankは 連立方程式 の解の個数を調べるのに非常に重要です。
連立方程式と拡大係数行列
連立方程式は行列で表現できます。
実例:連立方程式
x + 2y = 3
2x + 4y = 6
これを行列で表すと:
[1 2 | 3]
[2 4 | 6]
左側が 係数行列、右側まで含めて 拡大係数行列 といいます。
解の存在条件
定理:連立方程式 Ax = b が解を持つための条件
rank(A) = rank([A|b])
説明:
- Aは係数行列
- [A|b]は拡大係数行列
- 両者のrankが等しいとき、解が存在します
実例1:解がある場合
x + 2y = 3
2x + 4y = 6
係数行列:rank = 1
拡大係数行列:rank = 1(2行目は1行目の2倍)
rank が等しいので解あり
実例2:解がない場合
x + 2y = 3
2x + 4y = 7
係数行列:rank = 1
拡大係数行列:rank = 2(矛盾している)
rank が異なるので解なし
解の個数
rank(A) = rank([A|b]) = r のとき:
変数の数をnとすると:
- r = n → 解は1つだけ(一意解)
- r < n → 解は無数にある(不定)
実例:
3つの変数、3つの方程式で:
- rank = 3 → 解は1つ
- rank = 2 → 解は無限個(1次元の自由度)
- rank = 1 → 解は無限個(2次元の自由度)
具体的な計算例
実際にrankを求める問題を解いてみましょう。
例題1:基本的な計算
問題:次の行列のrankを求めよ
A = [1 2 3]
[2 4 6]
[1 0 1]
解答:
行基本変形を行います。
ステップ1:2行目 – 2×1行目
[1 2 3]
[0 0 0]
[1 0 1]
ステップ2:3行目 – 1行目
[1 2 3]
[0 0 0]
[0 -2 -2]
ステップ3:2行目と3行目を入れ替え
[1 2 3]
[0 -2 -2]
[0 0 0]
0でない行が2つなので、rank(A) = 2
例題2:単位行列のrank
問題:n×n単位行列のrankは?
解答:
I = [1 0 0]
[0 1 0]
[0 0 1]
すべての行が線形独立なので、rank(I) = n
単位行列は常にフルランクです。
例題3:零行列のrank
問題:すべての要素が0の行列のrankは?
解答:
O = [0 0 0]
[0 0 0]
線形独立な行が1つもないので、rank(O) = 0
零行列のrankは常に0です。
ベクトル空間とrank
大学数学では、rankを ベクトル空間 の観点から理解します。
列空間(column space)
行列Aの 列空間 とは、Aの列ベクトルの線形結合で表せるすべてのベクトルの集合です。
説明:
行列の列を組み合わせて作れる空間のことです。
rank(A) = 列空間の次元
行空間(row space)
行列Aの 行空間 とは、Aの行ベクトルの線形結合で表せるすべてのベクトルの集合です。
rank(A) = 行空間の次元
核空間(kernel / null space)
行列Aの 核空間 とは、Ax = 0 を満たすすべてのベクトルxの集合です。
階数・退化次数の定理:
n列の行列Aに対して:
rank(A) + dim(Ker(A)) = n
説明:
- dim(Ker(A))は核空間の次元(退化次数)
- rankと退化次数を足すと、列数になります
テンソルのrank:より高次元の概念
行列を一般化した テンソル にもrankの概念があります。
テンソルとは
テンソル は、行列をさらに高次元に拡張したものです。
説明:
- 0次のテンソル:スカラー(単なる数)
- 1次のテンソル:ベクトル
- 2次のテンソル:行列
- 3次以上のテンソル:多次元配列
テンソルのrank
テンソルのrankは、そのテンソルを rank-1テンソルの和 として表すのに必要な最小個数です。
説明:
これは行列のrankとは少し異なる定義になります。機械学習やデータ圧縮で重要な概念です。
実生活でのrankの応用
rankの概念は、実際の問題解決に役立ちます。
データ圧縮
画像や動画のデータは行列として表現できます。
実例:
1000×1000ピクセルの画像を行列Aとするとき:
- rank(A) = 1000 なら、フルの情報が必要
- rank(A) = 50 なら、大幅に圧縮できる
説明:
低rankの近似を使うことで、データサイズを小さくできます。これが 特異値分解(SVD) を使った圧縮の原理です。
推薦システム
Netflixやアマゾンの推薦システムでも、rankの概念が使われます。
実例:
ユーザーと映画の評価行列:
映画A 映画B 映画C
太郎 5 ? 4
花子 ? 4 5
次郎 4 3 ?
説明:
この行列のrankが低ければ、少数の「潜在的な好みの要素」で全体を説明できます。欠けている評価(?)を予測するのに使えますね。
経済学での応用
経済データの分析で、変数間の独立性を調べるときにrankを使います。
実例:
複数の経済指標を並べた行列のrankを調べることで:
- フルランク → すべての指標が独立
- 階数落ち → 一部の指標が他から予測可能
制御工学
ロボットや自動車の制御システムで、可制御性(かせいぎょせい) や 可観測性(かかんそくせい) を判定するのにrankが使われます。
説明:
制御行列のrankによって、システムを完全に制御できるかどうかが分かります。
機械学習
主成分分析(PCA) など、次元削減の手法でrankの考え方が重要です。
実例:
100個の特徴量を持つデータでも、実効的なrankが10なら:
- 10個の主成分だけで、ほとんどの情報を表現できる
- 計算量を大幅に削減できる
行列式(determinant)とrankの関係
行列式(ぎょうれつしき) は、正方行列に対して定義される値です。
行列式とrankの関係
n×n正方行列Aに対して:
rank(A) = n ⇔ det(A) ≠ 0
説明:
- フルランク ⇔ 行列式が0でない
- 階数落ち ⇔ 行列式が0
実例:
A = [1 2] → det(A) = 4 - 6 = -2 ≠ 0 → rank = 2
[3 4]
B = [1 2] → det(B) = 4 - 4 = 0 → rank < 2
[2 4]
行列式を使ったrank判定
小さな正方行列なら、行列式を計算することでrankを判定できます。
rankを求める他の方法
行基本変形以外にも、rankを求める方法があります。
小行列式を使う方法
定理:行列のrank = 0でない小行列式の最大次数
説明:
行列から適当な行と列を選んで作った小さな正方行列(小行列)の行列式を調べる方法です。
特異値分解(SVD)を使う方法
特異値分解 を使うと、rankを正確に求められます。
説明:
行列を3つの行列の積に分解し、その中の対角行列の0でない要素の個数がrankになります。
応用:
数値計算では、行基本変形より特異値分解の方が精度が高いことがあります。
数値計算における注意点
コンピュータでrankを計算するときには、注意が必要です。
数値誤差の問題
コンピュータでは、小さな誤差が蓄積することがあります。
実例:
理論上は rank = 2 の行列でも、計算誤差で:
[1.00000000 2.00000000]
[2.00000000 4.00000001]
のようになり、rank = 2 と判定されることがあります。
数値的rank
実用的には、ある閾値以下の特異値を0とみなす ことで、数値的なrankを定義します。
説明:
完全な0ではなく、非常に小さい値を「実質的に0」と扱います。
練習問題で理解を深めよう
実際に問題を解いて、理解を確認しましょう。
問題1
次の行列のrankを求めよ
A = [1 3 2]
[2 6 4]
[3 9 6]
解答:
2行目は1行目の2倍、3行目は1行目の3倍です。
すべての行が1行目の定数倍なので、rank(A) = 1
問題2
次の連立方程式が解を持つか判定せよ
x + y + z = 1
2x + 2y + 2z = 2
x + y + z = 3
解答:
係数行列:
[1 1 1]
[2 2 2]
[1 1 1]
rank = 1(すべての行が1行目の定数倍)
拡大係数行列:
[1 1 1 | 1]
[2 2 2 | 2]
[1 1 1 | 3]
3行目を見ると、左辺は1行目と同じなのに右辺が異なります。
rank = 2(矛盾がある)
rank(係数行列) ≠ rank(拡大係数行列) なので、解なし
問題3
3×3の単位行列に、ある行を別の行に加えたとき、rankはどうなるか
解答:
行基本変形は rankを変えないので、rank = 3のまま
まとめ:rankは行列の本質的な情報量
rankは、行列が持つ本質的な情報の量を表す重要な概念です。
rankの基本:
- 線形独立な行(列)の最大個数
- 行列の実質的な次元
- 0 ≤ rank ≤ min(行数, 列数)
- 行rankと列rankは等しい
rankの求め方:
- 行基本変形で階段行列にする
- 0でない行の個数を数える
- 小行列式や特異値分解も使える
重要な概念:
- フルランク:最大のrankを持つ状態
- 階数落ち:フルランクでない状態
- 線形独立:互いに独立した情報
- 線形従属:重複した情報がある
連立方程式との関係:
- rank(A) = rank([A|b]) なら解あり
- rank = 変数の数 なら一意解
- rank < 変数の数 なら無数の解
実生活での応用:
- データ圧縮(画像、動画)
- 推薦システム
- 制御工学(可制御性判定)
- 機械学習(次元削減)
- 経済データ分析
関連する概念:
- 逆行列:フルランク ⇔ 逆行列あり
- 行列式:フルランク ⇔ det ≠ 0
- ベクトル空間:rank = 部分空間の次元
rankの概念を理解すると、線形代数の様々なトピックが統一的に見えてきます。
最初は抽象的に感じるかもしれませんが、「独立な情報の数」というイメージを持ちながら、たくさんの例題に触れていくことで、必ず理解できるようになりますよ!


コメント