X

行列で計算するよさ 加減法ではなく行列の掃き出し法による連立方程式の計算

行列は、どうして生まれたのでしょうか。行列やその計算のよさは何でしょうか。

行列は、主に大量の変数(未知数)を含む複雑な連立方程式を効率よく解くために生まれました。
計算の「型」が決まっており、記号を省いた一つの四角い枠の中で、機械的に処理できるなどのよさがあります。
行列やその計算は、数学的に体系化されていることがその基盤となっています。

はじめに

行列は、主に大量の変数(未知数)を含む複雑な連立方程式を、効率よく解くために生まれました。
歴史的には、紀元前2世紀頃の中国の数学書『九章算術』に、すでに連立方程式を行列のような形(方陣)で並べて解く方法が登場しています。
また、17世紀には日本の関孝和やヨーロッパのライプニッツが、これとは別に「行列式」の概念を見出し、連立方程式を系統的に解く手法を発展させました。
本稿では、連立方程式の解を求めるときに、行列を使うよさについて考えていきます。

参考: ウィキペディア「行列 歴史」[ONLINE]https://ja.wikipedia.org/wiki/%E6%A8%99%E6%BA%96%E5%81%8F%E5%B7%AE(cf.2026.5.10)

1 日常生活の問題

はじめに、日常生活の場面で、連立方程式を使って問題解決を図る場面を考えます。

【問題文】運動による消費カロリー
健康管理のために、Aさんは「ウォーキング(\(x\))」と「ジョギング(\(y\))」を組み合わせて運動しています。
月曜日: ウォーキングを 10 分、ジョギングを 20 分行ったところ、消費カロリーは 50 kcal でした。
火曜日: ウォーキングを 30 分、ジョギングを 40 分行ったところ、消費カロリーは 110 kcal でした。
ウォーキングとジョギングは、それぞれ 10 分あたり何 kcal 消費するでしょうか。(単位:10 kcal)

画像生成:Google Gemini(プロンプト:問題文を表すイラスト)、2026年5月11日生成

2 方程式の立式と解

一般的には、次のように、加減法で一方の変数を求めた後、その値を代入して他方の値を求めるところです。
加減法は、連立方程式を解くのに、左辺どうし,右辺どうしを,それぞれ足すか引くかして、1つの文字を消去する方法です。
等しいものと等しいものを足しても等しいという次の計算法則に基づいて計算します。

\[
\begin{array}{rll}
A &= B \phantom{+ 0y}\\
+) \phantom{+ 00y} C &= D\\
\hline
A+C &= B+D & \\
\end{array}
\]

解く問題:

\begin{cases}
 x + 2y &= 5 & \text{…… (1)} \\
3x + 4y &= 11 & \text{…… (2)}\\
\end{cases}

  1. \(x\) の係数を揃えるため、(1) の両辺を 3 倍する

\begin{align*}
(1 × 3) x + (2 × 3) y &= 5 × 3 && \text{…… (1)× 3}\\
3x + 6y &= 15 && \text{…… (1′)}
\end{align*}

  1. (1′) から (2) を引く

\begin{align*}
(3x – 3x) + (6y – 4y) &= 15 – 11\\
2y &= 4\\
y &= 2
\end{align*}

  1. \(y = 2\) を (1) に代入する

\begin{align*}
x + 2×(2) &= 5\\
x + 4 &= 5\\
x  &= 5 – 4\\
x &= 1
\end{align*}

  1. 解を示す

よって、解は \(x = 1, y = 2\) です。

(1)方程式を並べ手順を確かめる

\begin{array}{rll}
\begin{cases}
\phantom{3}x + 2y &= 5 & \text{…… (1)} \\
3x + 4y &= 11 & \text{…… (2)}\\
\end{cases}
\end{array}
\(x\) の係数を揃えるため、(1) の両辺を 3 倍する  \[( 1 × 3 ) x + ( 2 × 3 )y = 5 × 3\]
\[
\begin{array}{rll}
\begin{cases} 
3x + 6y &= 15 && \text{…… (1′)}\\
3x + 4y &= 11 && \text{…… (2)}\\
\end{cases}
\end{array}
\]
(1′) から (2) を引く
\[
\begin{array}{rll}
3x + 6y &= 15 && \text{…… (1′)}\\
-)\phantom{33}3x + 4y &= 11 && \text{…… (2)}\\
\hline
0x + 2y  &= 4 & \\
2y  &= 4 & \\
\end{array}
\]
両辺を2で割って、\[y = 2 …… (2′)\] を得る。これを (1) と並べると
\[
\begin{array}{rll}
\begin{cases} 
1x + 2y &= 5 && \text{…… (1)}\\
0x + 1y &= 2 && \text{…… (2′)} \\
\end{cases}
\end{array}
\]
ここで、それまでの連立方程式の計算過程で、係数は変わっています。
しかし、変数 \(x , y\) は、変わっていません。無くてもよい記号です。
そこで、これまでの計算過程を、次のように記号 \(x , y , =\) を省いて、簡潔に書き換えてみましょう。

計算手順 行列の計算 方程式
最初の式は、 \[\left[\begin{array}{cc|c}1&2&\phantom{1}5\\ 3&4&11\end{array}\right]\] \[
\begin{array}{rll}
\begin{cases}
\phantom{3}x + 2y &= 5 & \text{…… (1)} \\
3x + 4y &= 11 & \text{…… (2)}\\
\end{cases}
\end{array}
\]
\(x\) を消して、\(y\) を求める
(1) を3倍した式を1行目にかくと
\[\left[\begin{array}{cc|c}3&6&15\\ 3&4&11\end{array}\right]\] \[
\begin{array}{rll}
\begin{cases} 
3x + 6y &= 15 && \text{…… (1′)}\\
3x + 4y &= 11 && \text{…… (2)}\\
\end{cases}
\end{array}
\]
(1′) から (2) を引いて、両辺を2で割った式を2行目にかくと \[\left[\begin{array}{cc|c}1&2&\phantom{1}5\\ 0&1&\phantom{1}2\end{array}\right]\] \[
\begin{array}{rll}
\begin{cases} 
1x + 2y &= 5 && \text{…… (1)}\\
0x + 1y &= 2 && \text{…… (2′)} \\
\end{cases}
\end{array}
\]
\(y\) を消して、\(x\) を求める
続けて、(2′) を2倍して (1) から引いた式を1行目にかくと
\[\left[\begin{array}{cc|c}1&0&\phantom{1}1\\ 0&1&\phantom{1}2\end{array}\right]\] \[
\begin{array}{rll}
\begin{cases} 
1x + 0y &= 1 && \text{…… (1”)}\\
0x + 1y &= 2 && \text{…… (2”)} \\
\end{cases}
\end{array}
\]
よって、解は \[x = 1 , y = 2\]

このように、表現したものを行列といいます。記号 \(x , y , =\) を省いて機械的に計算していくと計算が楽になります。
このようなことから、行列の性質が明らかになり計算が体系化されました。そして、様々な場面で使われるようになっています。

(2)行列 掃き出し法で解を求める

そこで、次は、行列の計算の一つの掃き出し法で解を求めてみましょう。
まずは、1行1列目を「1」にします。

解く問題:

\(\begin{cases} x+2y=5\quad \text{……… (1) }\\ 3x+4y=11\quad \text{…… (2) }\end{cases}\) 


これを係数に着目して、拡大係数行列(数字の箱)にします。

\(\left[\begin{array}{cc|c}1&2&5\\ 3&4&11\end{array}\right]\)

先の「(1)方程式を並べ手順を確かめる」では、はじめに、\(y\) を消して \(x\) を求めました。
しかし、掃き出し法では、まずは、1行1列目を「1」にします。手順を一般化するためです。

  1. 1列目を掃除する(左上を1にして、下を0にする)

    (2行目) - (1行目) \(\times 3\) を計算:

左上(1行1列目)はすでに「1」になっています。これを使って、下の「3」(2行1列目)を消します。

\[\left[\begin{array}{cc|c}1&2&5\\ 3&4&11\end{array}\right]\]
\[\left[\begin{array}{cc|c}1&2&5\\ 0&\mathbf{-2}&-4\end{array}\right]\]
\[\begin{align*}
3 – (1 \times 3) &= \phantom{-}0\\
4 – (2 \times 3) &= -2\\
11 – (5 \times 3) &= -4\\
\end{align*}\]

 

  1. 2列目を掃除する(右下を1にして、上を0にする) その1

    (2行目) \(\div (-2)\) を計算:

まず、右下(2行2列目)の「-2」を「1」にするために、2行目全体を \(-2\) で割ります。

\[\left[\begin{array}{cc|c}1&\mathbf{2}&5\\ 0&1&2\end{array}\right]\]

\[\begin{align*}0 \div (-2) = 0\\-2 \div (-2) = 1\\-4 \div (-2) = 2\\\end{align*}\]

  1. 2列目を掃除する(右下を1にして、上を0にする) その2

    (1行目) - (2行目) \(\times 2\) を計算:

最後に、この中央の「1」を使って、上の「2」を消します。

\[\left[\begin{array}{cc|c}\mathbf{1}&0&\mathbf{1}\\ 0&\mathbf{1}&\mathbf{2}\end{array}\right]\]

\[\begin{align*}1 – (0 \times 2) &= 1\\2 – (1 \times 2) &= 0\\5 – (2 \times 2) &= 1\\\end{align*}\]

左側に単位行列(1と0の並び)が完成しました。一番右の列がそのまま答えです。
\[x = 1, y = 2\]

3 行列の計算 掃き出し法のよさ

(1)行列「掃き出し法」と「加減法」の対比

行列の計算の「掃き出し法」と「加減法」を対比すると、途中で代入しない加減法が、行列の「掃き出し法」そのものであるに気付きます。
「加減法」からみれば、「掃き出し法」は、
  • ステップ1の操作: 行列の計算の「2行1列目を0にする操作」と完全に一致します。
             「\(x\) を消して \(y\) を求める」
  • ステップ2の操作: 行列の計算の「1行2列目を0にする操作」と完全に一致します。
             「\(y\) を消して \(x\) を求める」

二元一次方程式だとまだ実感はわきませんが、三元一次方程式…などではどうでしょう。
大量の変数(未知数)を含む複雑な連立方程式が出てきても、行列による計算なら効率よく解くことができます。よさが際立ってきます。
このことは、行列の計算が生まれた大きな理由です。

(2)対比してわかる行列の「よさ」

  1. 記号の節約: 上記の加減法では、何度も \(x\) や \(y\) や \(=\) を書き直します。行列なら、それらを一切書かずに数字の変化だけを追えるので、「記録する手間」が数分の一になります。
  2. 同時並行の視点: 加減法では「\(x\)を消す作業」と「\(y\)を消す作業」を別々に考えがちですが、行列(掃き出し法)はそれらを一つの四角い枠の中で、左右対称に、機械的に処理できます。
  3. ミスの抑制: 代入法は「一度求めた数値を別の複雑な式に放り込む」というリスクの高い作業ですが、この方法(および掃き出し法)は、常に元の構造を保ったまま消去していくため、計算の進捗が視覚的に崩れにくいのが特徴です。

代入を使わない加減法を体験することで、行列計算が無駄を削ぎ落とした純粋な引き算のつながりであることが分かります。
この「式の掃除」の考え方が、現代では「何万個もの変数を一瞬で消去するスーパーコンピュータの計算」に直結しているのです。
掃き出し法は、最初は「わざわざ行列にするなんて遠回りだ」と感じるかもしれません。しかし、手順が「右往左往しない一本道」になっているため、プログラム(AI)に命令を出す際にはこの上なく便利なのです。

4 検証

得た \((x,y)=(1,2)\) を基に、消費カロリー問題を検証しましょう。

導き出した解:\(x = 1\) (10kcal), \(y = 2\) (20kcal)

(1)数学的な検証(方程式への代入)

まずは、求めた値が全ての方程式を同時に満たしているかを明示します。

  • 月曜日の検証:\((x + 2y = 1 + 2(2) = 1 + 4 = 5)\)
    計算結果が「50kcal(単位5)」と一致するため、整合性が取れている。
  • 火曜日の検証: \((3x + 4y = 3(1) + 4(2) = 3 + 8 = 11)\)
    計算結果が「110kcal(単位11)」と一致するため、整合性が取れている。

(2)行列による検証(逆行列の性質を利用)

行列 \(A\) と解ベクトル \(\mathbfit{x}\) を掛けて、定数ベクトル \(\mathbfit{b}\) に戻るかを確認します。

\[\left[\begin{matrix}1&2\\ 3&4\end{matrix}\right]\left[\begin{matrix}1\\ 2\end{matrix}\right]=\left[\begin{matrix}1\times 1+2\times 2\\ 3\times 1+4\times 2\end{matrix}\right]=\left[\begin{matrix}5\\ 11\end{matrix}\right]\]
行列の積を計算することで、計算の「型」が崩れていないことをダブルチェックできます。

(3)現実的な妥当性の検証

\(10\) 分あたり ウォーキングは \(10kcal (x = 1)\),ジョギングは \(20kcal (y = 2)\)

ここが実務上重要です。数値が現実の物理現象と矛盾していないかを記述します。
  • 正負の確認: カロリー消費量であるため、\(x, y > 0\) である必要がある。結果は正の数であり、妥当である。
  • 強度の比較: 一般的にウォーキングよりもジョギングの方が運動強度が強いため、\(x < y\) であることが期待される。今回の結果(10kcal < 20kcal)は、この常識的な関係性と一致している。

(4)検証のよさ

このように検証を記述するよさは、「計算が合っているか」だけでなく「問題の設定(モデル)が正しかったか」を証明できる点にあります。
もし、計算結果が \(x=1, y=-2\) などと出た場合、計算ミスか、あるいは「運動すればするほど太る(カロリーが増える)」というあり得ないモデルをつくってしまったことに気付けます。
行列はこの検証作業においても、「全てのデータを一気に元通りに掛け合わせる」という一回のアクションで済むため、バラバラに代入するよりも非常にスマートです。

maru320i:
Related Post