高校生物553211 views
高校日本史191026 views
小学算数1203731 views
数学講師2913151 views
Computer370048 views
小学理科721729 views
高校化学2933198 views
教育150077 views
高校倫理1444503 views
いろは3025218 views
Help
Tools

English

行列のランク(階数)とは|定義・求め方・連立方程式との関係

行列のランクとは、その行列に本当に効いている行の本数です。重複や無駄を取り除いたあと、いくつ残るかを数えた値だと考えてください。

日本語では階数と呼びます。連立方程式に解があるかどうか、行列に逆行列があるかどうか、どちらもランクを見れば判断できます。

以下では定義から始め、計算例を 1 つずつ手で追います。求め方、性質、連立方程式との関係まで扱います。

ランクとはなにか

行 列の行列 を考えます。 のランクとは、行ベクトルのうち一次独立なものの最大個数です。

記号は あるいは と書きます。

列ベクトルで数えても、まったく同じ値になります。この一致がランクという概念の要になっていて、理由はあとの節で見ます。

一次独立の意味は一次独立と一次従属で扱いました。どの 1 本も他の一次結合では作れない、という条件です。

直観: 無駄な行を除いた本数

行列の行を、連立方程式の式だと思ってみましょう。

2 本目は 1 本目を 2 倍しただけで、新しい情報を何も持ちません。式は 2 本あるように見えて、実質は 1 本です。

この「実質の本数」がランクにあたります。上の係数行列のランクは 1 になります。

直観: 変換で残る次元

行列はベクトルを別のベクトルへ送ります。送った先の全体がどれだけ広がっているか、それがランクのもう 1 つの意味です。

2 行 2 列なら、行き先は平面・直線・原点の 3 通りしかありません。順にランク 2、ランク 1、ランク 0 に対応します。

HTML
CSS
JavaScript
<svg viewBox="0 0 700 300" xmlns="http://www.w3.org/2000/svg" style="max-width:100%;height:auto;display:block;margin:0 auto"><line x1="60" y1="225" x2="200" y2="225" stroke="#8a8a8a" stroke-width="1"/><line x1="90" y1="252" x2="90" y2="150" stroke="#8a8a8a" stroke-width="1"/><polygon points="90,225 126,207 144,171 108,189" fill="#ebf5ff" stroke="#1b81e0" stroke-width="2"/><text x="130" y="40" font-size="13" fill="#1f1f1f" text-anchor="middle">ランク 2</text><text x="130" y="62" font-size="12" fill="#8a8a8a" text-anchor="middle">平面のまま</text><text x="130" y="282" font-size="12" fill="#8a8a8a" text-anchor="middle">面積が残る</text><line x1="270" y1="225" x2="440" y2="225" stroke="#8a8a8a" stroke-width="1"/><line x1="300" y1="252" x2="300" y2="150" stroke="#8a8a8a" stroke-width="1"/><line x1="300" y1="225" x2="408" y2="171" stroke="#a8d2f5" stroke-width="8"/><line x1="300" y1="225" x2="408" y2="171" stroke="#1b81e0" stroke-width="2"/><text x="355" y="40" font-size="13" fill="#1f1f1f" text-anchor="middle">ランク 1</text><text x="355" y="62" font-size="12" fill="#8a8a8a" text-anchor="middle">直線につぶれる</text><text x="355" y="282" font-size="12" fill="#8a8a8a" text-anchor="middle">長さだけ残る</text><line x1="510" y1="225" x2="650" y2="225" stroke="#8a8a8a" stroke-width="1"/><line x1="540" y1="252" x2="540" y2="150" stroke="#8a8a8a" stroke-width="1"/><circle cx="540" cy="225" r="5" fill="#1b81e0"/><text x="580" y="40" font-size="13" fill="#1f1f1f" text-anchor="middle">ランク 0</text><text x="580" y="62" font-size="12" fill="#8a8a8a" text-anchor="middle">1 点につぶれる</text><text x="580" y="282" font-size="12" fill="#8a8a8a" text-anchor="middle">何も残らない</text></svg>

平面のままならランクは 2 です。直線につぶれればランクは 1 に落ち、1 点までつぶれればランクは 0 になります。ランクとは、つぶれ残った次元の数なのです。

行ランクと列ランクが一致する理由

行で数えても列で数えても同じ値になる、というのは意外に感じるかもしれません。

行基本変形を思い出してください。行を定数倍したり、他の行に足したりしても、列ベクトルどうしの一次関係は変わりません。

たとえば 3 列目が 1 列目と 2 列目の和だったとします。行をどう変形しても、この関係は保たれたままです。だから独立な列の本数も動きません。

一方で行基本変形は、独立な行の本数も変えません。変形を進めて階段形にすると、両方の数が同時に読み取れます。

階段形では、 でない行の本数と、先頭成分を含む列の本数が一致します。ここで行の側と列の側がつながるわけです。

計算例: 零行列のランク

行はどちらも零ベクトルです。零ベクトルは一次独立になりえないので、独立な行は 1 本もありません。

したがって です。ランクが になるのは零行列だけになります。

計算例: 単位行列のランク

3 本の行 、、 は互いに独立です。どの 1 本も、残る 2 本の一次結合では作れません。

よって になります。 次の単位行列なら です。

計算例: 列で数えても同じになる

先に行で数えます。2 行目は 1 行目の 2 倍なので余分です。1 行目と 3 行目は互いに定数倍でないため独立で、行ランクは 2 になります。

次に列で数えましょう。3 本の列は 、、 です。

3 列目は 、つまり 1 列目と 2 列目の和になっています。残る 2 本は独立なので、列ランクも 2 でした。

数え方は違っても、答えは同じ 2 です。

行階段形とはなにか

ランクを求めるときの目標地点が行階段形です。次の 2 つを満たす形をいいます。

だけの行があれば、それらは下にまとまっている
各行の先頭にある でない成分は、上の行の先頭より右にある

先頭にある でない成分をピボットと呼びます。ピボットが右下へ階段状にずれていく形です。

HTML
CSS
JavaScript
<svg viewBox="0 0 620 300" xmlns="http://www.w3.org/2000/svg" style="max-width:100%;height:auto;display:block;margin:0 auto"><path d="M 192 85 H 184 V 229 H 192" fill="none" stroke="#1f1f1f" stroke-width="1.5"/><path d="M 424 85 H 432 V 229 H 424" fill="none" stroke="#1f1f1f" stroke-width="1.5"/><path d="M 198 123 H 286 V 157 H 330 V 191 H 418" fill="none" stroke="#1b81e0" stroke-width="2"/><circle cx="220" cy="106" r="5" fill="#1b81e0"/><circle cx="308" cy="140" r="5" fill="#1b81e0"/><circle cx="352" cy="174" r="5" fill="#1b81e0"/><text x="264" y="113" font-size="15" fill="#8a8a8a" text-anchor="middle">*</text><text x="308" y="113" font-size="15" fill="#8a8a8a" text-anchor="middle">*</text><text x="352" y="113" font-size="15" fill="#8a8a8a" text-anchor="middle">*</text><text x="396" y="113" font-size="15" fill="#8a8a8a" text-anchor="middle">*</text><text x="220" y="145" font-size="14" fill="#c4c4c4" text-anchor="middle">0</text><text x="264" y="145" font-size="14" fill="#c4c4c4" text-anchor="middle">0</text><text x="352" y="147" font-size="15" fill="#8a8a8a" text-anchor="middle">*</text><text x="396" y="147" font-size="15" fill="#8a8a8a" text-anchor="middle">*</text><text x="220" y="179" font-size="14" fill="#c4c4c4" text-anchor="middle">0</text><text x="264" y="179" font-size="14" fill="#c4c4c4" text-anchor="middle">0</text><text x="308" y="179" font-size="14" fill="#c4c4c4" text-anchor="middle">0</text><text x="396" y="181" font-size="15" fill="#8a8a8a" text-anchor="middle">*</text><text x="220" y="213" font-size="14" fill="#c4c4c4" text-anchor="middle">0</text><text x="264" y="213" font-size="14" fill="#c4c4c4" text-anchor="middle">0</text><text x="308" y="213" font-size="14" fill="#c4c4c4" text-anchor="middle">0</text><text x="352" y="213" font-size="14" fill="#c4c4c4" text-anchor="middle">0</text><text x="396" y="213" font-size="14" fill="#c4c4c4" text-anchor="middle">0</text><text x="308" y="262" font-size="12" fill="#8a8a8a" text-anchor="middle">青い線の左下はすべて 0 で、ピボットは右へ階段状にずれていきます</text><text x="308" y="284" font-size="12" fill="#8a8a8a" text-anchor="middle">この図ならピボットは 3 個なので、ランクは 3 です</text></svg>

ここまで変形すれば、 でない行の本数を数えるだけでランクが出ます。

行基本変形の 3 つの操作

階段形へ持っていくのに使える操作は 3 つだけです。

2 つの行を入れ替える
ある行を でない定数倍する
ある行に、他の行の定数倍を足す

どれもランクを変えません。逆の操作がいつでもできるので、情報が失われないからです。

列に対して同じ操作をすることもできますが、ふつうは行だけで足ります。行ランクと列ランクが一致する以上、片方を調べれば済むのです。

ランクの求め方

手順は 2 段階です。

行基本変形で行階段形にする

でない行の本数を数える

途中で分数が出ても構いません。ランクは成分が かどうかだけを見る量なので、値の細かさは効いてこないのです。

計算例: 2 行 2 列でランクが 2

2 行目から 1 行目の 3 倍を引きます。

でない行が 2 本残ったので です。

計算例: 2 行 2 列でランクが 1

今度は 2 行目から 1 行目の 2 倍を引きます。

2 行目が消えました。 でない行は 1 本だけで、 となります。

2 行目がもともと 1 行目の定数倍だったので、当然の結果でしょう。

計算例: 3 行 3 列でランクが 2

2 行目から 1 行目の 2 倍を引き、3 行目から 1 行目を引きます。

だけの行は下にまとめる決まりなので、2 行目と 3 行目を入れ替えます。

階段形になりました。 でない行は 2 本なので です。

計算例: 3 行 3 列でランクが 3

3 行目から 1 行目を引きます。

続いて 3 行目に 2 行目の 2 倍を足します。

3 本とも ではないので になります。

計算例: 3 行 3 列でランクが 1

2 行目は 1 行目の 2 倍、3 行目は 3 倍です。それぞれ引くと、下の 2 行がまとめて消えます。

です。3 行 3 列でも、ランクが 1 まで落ちることがあります。

計算例: 横長の行列

行と列の数が違っても、手順は変わりません。

2 行目から 1 行目の 2 倍を引きます。

階段形になりました。 です。

行が 2 本しかないので、ランクは 2 を超えられません。列が 4 本あっても事情は変わらないのです。

計算例: 縦長の行列

2 行目から 1 行目の 2 倍を、3 行目から 3 倍を、4 行目から 1 倍を引きます。

だけの行を下へ送ります。

でした。行が 4 本あっても、列が 2 本しかないのでここが上限になります。

ランクは行数と列数を超えない

これまでの例からわかるとおり、ランクには上限があります。

行で数えるなら 本しかないので 以下、列で数えるなら 以下です。どちらも成り立つ以上、小さいほうが上限になります。

横長の例では 、縦長の例では でした。どちらも上限まで届いています。

転置してもランクは変わらない

行と列を入れ替える操作を転置といい、 と書きます。

転置すると、行ランクと列ランクの役割がそっくり入れ替わります。もともと両者は等しいので、値そのものは動きません。

計算例: 転置のランク

さきほどランクが 2 だった行列を転置します。

2 行目から 1 行目の 2 倍を、3 行目から 3 倍を引きます。

3 行目から 2 行目を引くと消えます。

で、もとの行列と同じ値になりました。

積のランク

2 つの行列をかけても、ランクが増えることはありません。

でつぶれた次元は、あとから をかけても戻りません。 でつぶれる分もあるので、両方の制限を受けます。

つぶす操作を重ねて、つぶれたものが復活することはない。そう考えると自然な不等式でしょう。

計算例: 積でランクが落ちる

どちらも 2 行目が 1 行目の定数倍なので、ランクはともに 1 です。

積を計算します。

零行列になりました。 で、 より小さい値です。

不等号は等号とはかぎらない、という例になっています。

正則行列をかけてもランクは変わらない

が正則行列、つまり逆行列を持つ行列なら、次が成り立ちます。

理由は にあります。 に をかければ に戻せるので、どちら向きにも情報が失われません。

行基本変形がランクを変えないのも、実はこの性質です。1 回の変形は、ある正則行列を左からかけることに相当します。

フルランクとランク落ち

行 列の行列で、ランクが上限の に届いているとき、その行列はフルランクであるといいます。

届いていない行列については、ランク落ちしている、といういい方をします。

フルランク

上限まで届いている。正方行列なら逆行列を持ち、正則である

ランク落ち

上限に届いていない。一次従属な行や列が混ざっていて、正方行列なら逆行列を持たない

正方行列に限れば、フルランクであることと正則であることは同じ条件です。調べる道具が違うだけになります。

計算例: フルランクかどうかを判定する

のランクは 2 でした。 なので、 はフルランクです。逆行列を持ちます。

のランクは 1 です。上限の 2 に届いていないので、 はランク落ちしています。逆行列はありません。

2 次正方行列では行列式と対応する

2 行 2 列にかぎれば、ランクは行列式から読み取れます。

ならランクは 2
で が零行列でなければランクは 1
が零行列ならランクは 0

行列式が でないことは、2 本の列が平行でないことでした。平行でなければ独立な列が 2 本、平行なら 1 本になります。

計算例: 行列式とランク

です。 でないのでランクは 2 になります。

で、しかも は零行列ではありません。よってランクは 1 です。

実際 の 2 列目は 1 列目の 2 倍で、独立な列は 1 本しかありませんでした。

ランクと連立方程式

連立方程式 に解があるかどうかは、2 つのランクを比べればわかります。

係数行列 に右辺 を 1 列足したものを拡大係数行列といい、 と書きます。

なら解はない
なら解はただ 1 つ
なら解は無数にある

ここで は未知数の個数です。連立方程式そのものは行列とベクトルの積と連立方程式でも扱っています。

計算例: 解がただ 1 つの場合

係数行列と拡大係数行列を書き出します。

拡大係数行列の 2 行目から、1 行目の 3 倍を引きます。

左の 2 列だけを見れば 、全体を見ても です。

未知数は 2 個なので、 となり解はただ 1 つに決まります。実際 , で、 と の両方が成り立ちます。

計算例: 解が無数にある場合

2 行目がまるごと消えました。 です。

未知数は 2 個で なので、解は無数にあります。 とおけば です。

計算例: 解がない場合

左辺はさきほどと同じで、右辺だけが変わりました。

左の 2 列は消えましたが、いちばん右に が残りました。 に対して です。

なので解はありません。2 行目は という式を表していて、これは成り立ちようがないのです。

直観: なぜ拡大係数行列と比べるのか

は の列の一次結合でした。だから解があるとは、 が列の作る範囲に入っている、ということです。

が範囲の中にあれば、 を列として足してもランクは増えません。すでに作れるものを足したところで、独立な本数は変わらないからです。

反対に が範囲の外にあれば、足したぶんランクが 1 だけ増えます。この増減を見ているのが、2 つのランクの比較でした。

解がない例で右端に が残ったのは、 が範囲の外にあった証拠です。

よくある誤り

最後に、間違えやすい点を並べておきます。

ランクを行列の大きさと混同する。3 行 3 列でもランクが 1 のことがある
だけの行まで数えてしまう。数えるのは でない行だけ
階段形にする前に行を数える。変形して初めて重複が見える
をランクの積だと思う。積ではなく 以下という不等式である
拡大係数行列のランクだけで解の有無を決める。係数行列と比べて初めて判定できる
ランクが になる行列が零行列以外にもあると思う。 になるのは零行列だけ
列基本変形を使わないと列ランクが出せないと思う。行ランクと一致するので行だけで足りる

どれも定義に戻れば防げます。独立な行が何本あるか、という一点だけを見ればよいのです。

参考文献

Wikipedia: Rank (linear algebra)
Wikipedia: Row echelon form
Wikipedia: Gaussian elimination
Wikipedia: Rouché–Capelli theorem
Interactive Linear Algebra, The Rank Theorem(Georgia Tech)
MIT OpenCourseWare 18.06 Linear Algebra
行列のランク(階数)とは、一次独立な行の最大個数である。行階段形にして数える求め方、行と列で数えても一致する理由、フルランクの意味、連立方程式の解の判定を計算例で解説する。