- 行列は、どうして生まれたのでしょうか。行列やその計算のよさは何でしょうか。
-
行列は、大量の未知数を含む複雑な連立方程式を効率よく解くために生まれました。歴史的には、紀元前の中国の数学書で方程式の係数を表(方陣)に並べたことに始まり、17世紀には日本の関孝和らによって行列式の概念へと発展しました。
行列やその計算のよさは、主に次の3点です。
1. 膨大なデータの簡略化: 文字や記号を省き、数字の塊(入れ物)として整理するため、記述量と視覚的な複雑さを劇的に減らせます。
2. 手順の機械化(アルゴリズム化): 変数が増えても「左上から順に1と0を作る(掃き出し法)」といった決まったルールを繰り返すだけで、パズル的な閃きなしに誰でも機械的に解へ到達できます。
3. コンピュータとの高い親和性: 処理の手順が一定なため、現代のスーパーコンピュータやAI(GPU)が得意とする「超高速の並列計算」に最適な共通言語となります。
はじめに
行列は、主に大量の変数(未知数)を含む複雑な連立方程式を、効率よく解くために生まれました。
歴史的には、紀元前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 日常生活の問題
はじめに、日常生活の場面で、連立方程式を使って問題解決を図る場面を考えます。

2 連立方程式と解
上の問題場面では、解きたい連立方程式は次のようになります。
- 解く問題:
-
\begin{cases}
\phantom{3}x + 2y &= \phantom{1}5 & \text{…… (1)} \\
3x + 4y &= 11 & \text{…… (2)}\\
\end{cases}
一般的には、加減法で一方の変数を求めた後、その値を代入して他方の値を求めるところです。
加減法は、連立方程式を解くのに、左辺どうし,右辺どうしを,それぞれ足すか引くかして、1つの文字を消去する方法です。
「等しいものと等しいものを足しても等しい」という次の計算法則に基づいて計算します。
\[
\begin{array}{rll}
A &= B \phantom{+ 0y}\\
+) \phantom{+ 00y} C &= D\\
\hline
A+C &= B+D & \\
\end{array}
\]
- \(x\) の係数を揃えるため、(1) の両辺を 3 倍する
\begin{align*}
(1 × 3) x + (2 × 3) y &= 5 × 3 && \text{…… (1)× 3}\\
3x + 6y &= 15 && \text{…… (1′)}
\end{align*}
- (1′) から (2) を引く
\begin{align*}
(3x – 3x) + (6y – 4y) &= 15 – 11\\
2y &= 4\\
y &= 2
\end{align*}
- \(y = 2\) を (1) に代入する
\begin{align*}
x + 2×(2) &= 5\\
x + 4 &= 5\\
x &= 5 – 4\\
x &= 1
\end{align*}
- 解を示す
よって、解は \(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にして、下を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 & \text{…2行1列目}\\ 4 – (2 \times 3) &= -2 & \text{…2行2列目}\\ 11 – (5 \times 3) &= -4 & \text{…2行3列目}\\ \end{align*}\] |
- 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*}\] |
- 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)対比してわかる行列の「よさ」
- 記号の節約: 上記の加減法では、何度も \(x\) や \(y\) や \(=\) を書き直します。行列なら、それらを一切書かずに数字の変化だけを追えるので、「記録する手間」が数分の一になります。
- 同時並行の視点: 加減法では「\(x\)を消す作業」と「\(y\)を消す作業」を別々に考えがちですが、行列(掃き出し法)はそれらを一つの四角い枠の中で、左右対称に、機械的に処理できます。
- ミスの抑制: 代入法は「一度求めた数値を別の複雑な式に放り込む」というリスクの高い作業ですが、この方法(および掃き出し法)は、常に元の構造を保ったまま消去していくため、計算の進捗が視覚的に崩れにくいのが特徴です。
代入を使わない加減法を体験することで、行列計算が無駄を削ぎ落とした純粋な引き算のつながりであることが分かります。
この「式の掃除」の考え方が、現代では「何万個もの変数を一瞬で消去するスーパーコンピュータの計算」に直結しているのです。
掃き出し法は、最初は「わざわざ行列にするなんて遠回りだ」と感じるかもしれません。しかし、手順が「右往左往しない一本道」になっているため、プログラム(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}\) に戻るかを確認します。
(3)現実的な妥当性の検証
\(10\) 分あたり ウォーキングは \(10kcal (x = 1)\),ジョギングは \(20kcal (y = 2)\)
- 正負の確認: カロリー消費量であるため、\(x, y > 0\) である必要がある。結果は正の数であり、妥当である。
- 強度の比較: 一般的にウォーキングよりもジョギングの方が運動強度が強いため、\(x < y\) であることが期待される。今回の結果(10kcal < 20kcal)は、この常識的な関係性と一致している。
(4)検証のよさ
このように検証を記述するよさは、「計算が合っているか」だけでなく「問題の設定(モデル)が正しかったか」を証明できる点にあります。
もし、計算結果が \(x=1, y=-2\) などと出た場合、計算ミスか、あるいは「運動すればするほど太る(カロリーが増える)」というあり得ないモデルをつくってしまったことに気付けます。
行列はこの検証作業においても、「全てのデータを一気に元通りに掛け合わせる」という一回のアクションで済むため、バラバラに代入するよりも非常にスマートです。
5 まとめ 行列の計算のよさ
2 行列の計算のよさ
行列は、単なる式の省略形以上のメリットをもたらします。
- 膨大な計算の簡略化:
100個の変数がある連立方程式でも、行列を使えば、係数を100×100の配列(行列)にまとめることができ、コンピュータによる計算がしやすくなります。 - データの整理と一括処理:
商品Aの単価、商品Bの単価……のように、複数のデータを「列ベクトル(縦の塊)」として並べ、それらを一度に計算できます。 - 空間や図形の変形(回転・拡大):
3DゲームやCG制作において、ある点を回転させたり、大きくしたりする計算は、座標のベクトルに特定の「行列」をかける(行列の積)だけで計算できます。 - 線形性の可視化:
機械学習など、「入力」と「出力」の関係を、「線形写像(ある空間を別の空間へ変換する性質)」として計算するのに最適なツールです。
つまり、行列は「複雑なものを塊として扱い、計算のコストを劇的に下げる」ための優れた数学的ツールとして生まれたのです。
そして、重要なのは、以上のような計算をコンピュータが得意としていることです。昨今のAIの驚異的進化を支えているのは行列のような数学理論が基盤となっています。