既約行階段形(RREF)計算機:行列をステップごとに解く方法
既約行階段形(RREF)計算機は、ガウス・ジョルダン消去法を自動で適用して、どんな行列でも数秒でその一意なRREFへと変換してくれます。しかし、その裏側にある行基本変形を理解してこそ、答えを自分で検算でき、必要なときに手計算で連立方程式を解け、計算機がなぜその結果を返したのかも納得できるようになります。RREFは、行基本変形によって行列が到達できる最もすっきりした形です。どのピボット列にも1が1つだけあり、それ以外はすべて0になっているため、RREFの形で書かれた連立一次方程式は、多くの場合そのまま答えとして読み取れます。この記事では、RREFが何を意味するのか、ガウス・ジョルダンのアルゴリズムがどうやってそこへ到達するのかを解説し、さらに2つの完全な例題——単純な行列の簡約化と、実際の連立方程式を解く例——を、すべての計算ステップと検算つきで手計算していきます。REFとRREFの違い、よくある間違い、そして完全解答つきの練習問題も掲載しています。
目次
既約行階段形(RREF)とは何か?
既約行階段形(RREF)とは、行基本変形によって行列を変換して得られる特定の形であり、行階段形をさらに最大限まで簡約したものです。行列がRREFであるとは、次の4つの条件をすべて満たすときを指します。すなわち、0でないすべての行の先頭要素(ピボット)がちょうど1であること、各ピボットが1つ上の行のピボットよりも厳密に右側にあること、ピボットの下だけでなく上にあるすべての要素も0であること、そしてすべての要素が0の行は一番下に置かれていることです。この3つ目の条件——ピボットの下だけでなく上も0にする——こそが、RREFを単なる行階段形と区別するポイントです。 どんな行列にも、RREFはちょうど1つしか存在しません。行基本変形をどんな順番で行っても結果は変わりません。この一意性こそがRREFを非常に便利なものにしています。同じ行列を2人が別々の手順で手計算しても、最終的な行列は必ず完全に一致するのです。
RREFの条件:0でないすべての行に先頭の1があること、下の行へ進むほどピボットが右へずれること、すべてのピボットの上下が0であること、0の行は最下部にあること。結果は与えられた行列に対して一意に定まります。
既約行階段形計算機はどのようにして答えにたどり着くのか?
既約行階段形計算機は、ガウス消去法をもう一歩推し進めたガウス・ジョルダン消去法というアルゴリズムを適用しています。使うのは3つの正当な行基本変形だけで、いずれも行列が表す連立方程式の解集合を変えません。すなわち、2つの行を入れ替えること、ある行を0でない定数倍すること、そしてある行の定数倍を別の行に加えることです。計算機は、行列が4つのRREF条件をすべて満たすまで、列ごとにこれらの操作を繰り返します。 内部的には、この処理は2つのパスで行われます。前進パスではピボットを作り、その下の要素を消去して、通常の行階段形を作ります。続く後退パスでは、一番下のピボットから上に向かって作業し、各ピボットの上の要素を消去して、すべてのピボット行をスケーリングし、先頭要素をちょうど1にします。この2番目のパスこそ、単なる行階段形計算機が省略している部分であり、REFとRREFの違いそのものです。
行階段形と既約行階段形:何が違うのか?
行階段形(REF)が要求するのは、各ピボットの下がすべて0であることと、下の行へ進むにつれてピボットが右へずれていくことだけです。ピボットの値自体は0でなければどんな数でもよく、ピボットより上の要素は0でなくても構いません。既約行階段形はさらに一歩進みます。ピボットはちょうど1でなければならず、ピボットより上の要素もすべて0に消去されている必要があります。 どちらの形も同じ3つの行基本変形で到達できますが、REFは一意ではありません——同じ元の行列でも、消去の順序が違えば見た目の異なるREF行列が得られます——のに対し、RREFは常に一意です。連立方程式を解く場合、REFでも後退代入によって解を求めるには十分ですが、RREFなら追加の代数計算なしに行列からそのまま答えを読み取れることが多く、これが計算機がREFで止まらずRREFまで求めるのを既定としている理由です。
REF:各ピボットの下が0、ピボットの値は0以外なら何でもよい、一意ではない。RREF:各ピボットの上「も」下も0、ピボットの値は必ず1、常に一意。
すべてのRREFを支える3つの行基本変形
手計算であれ計算機であれ、あらゆる簡約化はちょうど3つの操作だけで組み立てられます。行列が同じ連立方程式を表し続けるためには、これ以外の操作は許されません。
1. 操作1 — 行の入れ替え
2つの行の位置を交換します:Rᵢ ↔ Rⱼ。ピボットに必要な位置の要素が0で、下の行のその列に0でない値があるときに使います。
2. 操作2 — 行のスケーリング
行のすべての要素に0でない定数cを掛けます:Rᵢ → c·Rᵢ。ピボットをちょうど1にするために使います。
3. 操作3 — 行の加算
ある行の定数倍を別の行に加えます:Rᵢ → Rᵢ + c·Rⱼ。ピボットのある列の、上下すべての要素を0にするために使います。
入れ替える、定数倍する、定数倍を加える。この3つの操作は、行列が表す連立方程式の解集合を決して変えません——だからこそ行簡約は正当なのです。
例題:3×3行列を手計算でRREFに簡約する
M = [[1, 2, -1], [2, 3, 1], [3, 5, 0]] をRREFまで行簡約してみましょう。行3が行1と行2の和になっている(1+2=3、2+3=5、-1+1=0)ことに注目してください。この行列がフルランクにならないというヒントです。
1. ステップ1 — ピボットの下の第1列を消去する
ピボットは m₁₁ = 1 です。 R2 = R2 - 2R1: [2-2(1), 3-2(2), 1-2(-1)] = [0, -1, 3] R3 = R3 - 3R1: [3-3(1), 5-3(2), 0-3(-1)] = [0, -1, 3] 行列は現在:[[1, 2, -1], [0, -1, 3], [0, -1, 3]]
2. ステップ2 — ピボットの下の第2列を消去する
R3 = R3 - R2: [0-0, -1-(-1), 3-3] = [0, 0, 0] 行列は現在:[[1, 2, -1], [0, -1, 3], [0, 0, 0]]。これが行階段形です——0でないピボット行が2つ、0の行が1つあります。
3. ステップ3 — ピボットを1にスケーリングする
R2 = -1 × R2: [0, 1, -3] 行列は現在:[[1, 2, -1], [0, 1, -3], [0, 0, 0]]
4. ステップ4 — ピボットの上を消去する(後退パス)
R1 = R1 - 2R2: [1-0, 2-2(1), -1-2(-3)] = [1, 0, 5] 最終的なRREF:[[1, 0, 5], [0, 1, -3], [0, 0, 0]]
MのRREFは [[1, 0, 5], [0, 1, -3], [0, 0, 0]]。ピボットが2つ、0の行が1つ——したがって rank(M) = 2 となり、最初に気づいた行の従属関係が裏づけられます。
例題:RREFで連立一次方程式を解く
拡大係数行列 [A|b] をRREFに簡約して、2x + y - z = 8、-3x - y + 2z = -11、-2x + y + 2z = -3 を解きましょう。
1. ステップ1 — 拡大係数行列を書く
[2, 1, -1 | 8] [-3, -1, 2 | -11] [-2, 1, 2 | -3]
2. ステップ2 — 行を組み合わせて行2と行3からxを消去する
新しい R2 = 3R1 + 2R2: [3(2)+2(-3), 3(1)+2(-1), 3(-1)+2(2), 3(8)+2(-11)] = [0, 1, 1, 2] 新しい R3 = R1 + R3: [2+(-2), 1+1, -1+2, 8+(-3)] = [0, 2, 1, 5] 行列は現在:[2, 1, -1 | 8] / [0, 1, 1 | 2] / [0, 2, 1 | 5]
3. ステップ3 — 行3からyを消去し、次に行1をスケーリングする
R3 = R3 - 2R2: [0, 2-2(1), 1-2(1), 5-2(2)] = [0, 0, -1, 1] R1 = R1 ÷ 2: [1, 0.5, -0.5, 4] 行列は現在:[1, 0.5, -0.5 | 4] / [0, 1, 1 | 2] / [0, 0, -1 | 1]
4. ステップ4 — 行基本変形で後退代入し、RREFに到達する
R3 = -1 × R3: [0, 0, 1, -1] → z = -1 R2 = R2 - R3: [0, 1, 1-1, 2-(-1)] = [0, 1, 0, 3] → y = 3 R1 = R1 + 0.5R3: [1, 0.5, -0.5+0.5, 4-0.5] = [1, 0.5, 0, 3.5] R1 = R1 - 0.5R2: [1, 0.5-0.5, 0, 3.5-1.5] = [1, 0, 0, 2] → x = 2 最終的なRREF:[1, 0, 0 | 2] / [0, 1, 0 | 3] / [0, 0, 1 | -1]
5. ステップ5 — 元の3つの方程式すべてで解を検算する
x=2, y=3, z=-1: 2(2)+3-(-1) = 4+3+1 = 8 ✓ -3(2)-3+2(-1) = -6-3-2 = -11 ✓ -2(2)+3+2(-1) = -4+3-2 = -3 ✓ 3つの方程式すべてが成り立ち、解が正しいことが確認できました。
拡大係数行列がRREFに達して左側が単位行列になれば、最後の列がそのまま解になります:x=2, y=3, z=-1。後退代入の計算は一切不要です。
RREFにおけるピボットの配置はなぜ重要なのか?
RREFにおけるピボットの位置と個数こそが、その行列をどう解釈すべきかを教えてくれます。ピボットのある列は一意に値が定まる変数に対応し、ピボットのない列は任意の値を取れる自由変数に対応します。このとき他の変数は自由変数を使って表されます。上の例題のように、拡大係数行列のRREFで左側が単位行列になる場合、すべての変数がちょうど1つのピボットと1つの確定値を持ちます——つまり解は一意です。 もしある行が、最後の(定数の)列を除いてすべて0に簡約された場合、たとえば [0, 0, 0 | 5] のようになったなら、その行は 0 = 5 という成り立たない主張を表しています。これは他の行がどうであれ、その連立方程式にはまったく解が存在しないことを意味します。
既約行階段形計算機を正しく使うには?
どんなRREF計算機でも、信頼できる答えを得る鍵は、行列を正しく入力することと、出力を正しく読み取ることの2点に尽きます。
1. ステップ1 — 行列のサイズを設定する
まず行数と列数を選びます。n個の未知数を含むn本の方程式を解く場合は、n行 n+1列の拡大係数行列を使い、最後の列に定数項を入れます。
2. ステップ2 — すべての係数を順番に入力する
各行を方程式に現れるとおりに左から右へ入力します。方程式に現れない変数についても0を必ず入力してください——0を1つ飛ばすと、それ以降のすべての要素が間違った列にずれてしまいます。
3. ステップ3 — 簡約を実行し、ピボット列を読み取る
計算機はRREF行列を返します。どの列にピボット(他がすべて0の1)があるかを見極めましょう——それらが連立方程式によって値が定まる変数です。ピボットのない列は自由変数を示します。
4. ステップ4 — 最後の列を変数の値に読み替える
係数部分が単位行列に簡約されていれば、上の例題で示したとおり、各行の最終列の値がそのままその行の変数の値になります。
RREFの計算を台無しにするよくあるミスとは?
手計算にせよ計算機への入力ミスにせよ、間違ったRREF結果のほとんどは、ごく限られたいくつかのミスが原因です。
1. ミス1 — 行階段形で止めてしまう
ピボットの下だけを消去して得られるのはREFであって、RREFではありません。各ピボットの上の要素を消去し、すべてのピボットをちょうど1にスケーリングする後退パスがまだ必要です。
2. ミス2 — ピボット位置が0のときに行を入れ替え忘れる
ピボットに必要な位置の要素が0で、下の行のその列に0でない値がある場合、消去の前に必ず行を入れ替えなければなりません——これを飛ばすと、0での除算や誤った消去ステップにつながります。
3. ミス3 — 行の一部にだけ行基本変形を適用してしまう
拡大係数行列の定数列を含め、行のすべての要素をまとめて更新しなければなりません。最後の列を忘れるのは、手計算で最もよくあるミスの1つです。
4. ミス4 — 定数を確認せずに0の行を「情報なし」と読み違える
[0, 0, 0 | 0] のような行は無害です——1つの方程式が冗長だったことを意味します。しかし [0, 0, 0 | 5] は連立方程式が矛盾していることを意味します。行に意味がないと結論づける前に、必ず定数列の中身を確認しましょう。
RREFの誤りの多くは、後退パスが不完全であるか、行の一部にしか行基本変形を適用していないことから生じます——定数列を含め、常にすべての要素を更新しましょう。
RREFから階数(ランク)と解の個数はわかるのか?
わかります。行列がRREFになれば、その階数はピボット行の数——簡約後に残った0でない行の数——そのものです。連立方程式 Ax = b については、rank(A) と拡大係数行列 [A|b] の階数を比べます。両者が異なれば、その連立方程式に解はありません。等しく、かつ未知数の個数と一致すれば、解はちょうど1つです。等しいが未知数の個数より小さければ、解は無限に存在し、ピボットのない列1つにつき自由変数が1つ生じます。 上の簡約の例では、Mは3行のうち2つがピボットだったので rank(M) = 2 でした——1つの行が他の行に線形従属だったということです。連立方程式を解く例では、3行すべてがピボット行となり単位行列になったので rank(A) = rank([A|b]) = 3 となり、3つの未知数とちょうど一致しました。だからこそ、あの連立方程式は一意な解を持っていたのです。
RREFから読み取る階数 = ピボット行の数。rank(A) と rank([A|b]) を比較する:等しくなければ解なし、等しくて未知数と一致すれば解は1つ、等しいが未知数より少なければ解は無限に存在する。
練習問題:RREFのスキルを試してみよう
まずは自分で各行列を行簡約してから、下の解答と照らし合わせてみましょう。
1. 問題1 — [[2, 4], [1, 3]] をRREFに簡約せよ
解答:R1 = R1 ÷ 2 で [1, 2]。R2 = R2 - R1 で [0, 1]。R1 = R1 - 2R2 で [1, 0]。最終的なRREF:[[1, 0], [0, 1]] ——両方の行が独立している(階数2)ので、単位行列になります。
2. 問題2 — RREFを使って x + 2y = 5 と 3x + 6y = 15 を解け
解答:拡大係数行列は [1, 2 | 5] / [3, 6 | 15]。R2 = R2 - 3R1 で [0, 0 | 0]。最終的なRREF:[1, 2 | 5] / [0, 0 | 0]。rank(A) = rank([A|b]) = 1 < 未知数2 なので、解は無限に存在します:任意のyに対して x = 5 - 2y。
3. 問題3 — RREFを使って x + y = 4 と 2x + 2y = 10 を解け
解答:拡大係数行列は [1, 1 | 4] / [2, 2 | 10]。R2 = R2 - 2R1 で [0, 0 | 2]。この行は 0 = 2 を意味し、これは偽なので rank(A) = 1 だが rank([A|b]) = 2 ——連立方程式は矛盾しており、解は存在しません。
既約行階段形は実生活のどこで使われているのか?
RREFは教室の中だけの練習ではありません。技術者はキルヒホッフの電圧則・電流則から得られる回路方程式を解くのに使います。各ループやノードが1本の一次方程式を生み出すからです。経済学者は複数の産業にまたがる産業連関モデルの均衡を求めるのに使います。コンピュータグラフィックスやロボティクスのパイプラインでは、変換係数や逆運動学を求めるためにガウス・ジョルダン消去法が活躍します。化学者は、3種類以上の元素を含む化学反応式を釣り合わせるために行簡約を使い、各元素の原子数を行列の1行として扱います。いずれの場合も魅力は同じです。RREFは絡み合った連立方程式を、答えも階数も解のタイプ(一意・無限・存在しない)も一目で読み取れる形へと変えてくれるのです。
関連記事
関連する数学ソルバー
ステップ別の解答
最終的なRREFの答えだけでなく、すべての行基本変形について詳しい説明が得られます。
スマートスキャン解答
行列や連立方程式を撮影するだけで、その場でステップ別の解答が手に入ります。
AI数学チューター
行基本変形やピボット、階数について追加の質問をすれば、24時間いつでも一人ひとりに合わせた解説が返ってきます。
