連立方程式を行列で解く方法|行の基本変形と掃き出し法とは

行列で連立方程式の解を求めるのは、最も基本的な行列の使い方の一つです。とてもシンプルなものですが、行列を扱う上でなくてはならない技術です。

また、普通の解き方では、未知数が何十何百もあるような連立方程式に対応することはほとんど不可能です。しかし、行列とコンピュータの力を借りると、どれだけ未知数が多い連立方程式でも解くことができます。

とても重要な技術なので、ぜひ、このページでしっかりと学んでいただければと思います。

なお、このページで行列での連立方程式の解き方を学ぶ過程で…

  • 単位行列とは何か
  • 行列の基本変形とは何か
  • 掃き出し方法とは何か

といった重要な概念についてもバッチリと理解することができるようになります。

それでは早速始めましょう。

目次

1. 連立方程式の解き方

それでは、次の問題を一緒に解いていきましょう。

問題
ツルとカメが合わせて9羽(匹)いて、足の数の合計が22本あることがわかりました。ツルとカメは、それぞれ何羽(匹)ずついるでしょうか?

このような問題は、次の連立方程式で解くことができます。

\(
\begin{eqnarray}
x + y & = & 9 \tag{1} \\
2x+4y & = & 22 \tag{2}
\end{eqnarray}
\)

これについて…

  • 普通の解き方
  • 行列を使った解き方

の二つを見ていきましょう。

1.1. 普通の解き方

通常の方法では、この連立方程式を解くには、まず以下のように「 \((2)-2\times(1)\)」 を行うことで \(y\) の値を得ます。

\[\begin{array}{rrr} & 2x+4y&=&22 \\-) & (2x+2y&=&18) \\\hline =)& 2y&=&4\\ =)& y&=&2\end{array}\]

これで \(y = 2\) であることがわかりました。後は、この \(y \) の値を \(x=9-y\) にあてはめると \(x=9-2=7\) であることがわかります。

つまり答えはカメが\(2\)匹、ツルが\(7\)羽 ということになります。普通、連立方程式はこのように解きます。しかし連立方程式は、行列によっても解くことが可能です。次に、それについて見ていきましょう。

1.2. 行列を使った解き方

まず、上の連立方程式は、行列を使うと次のように表現することができます。

\(
\left( \begin{array}{cc} 1 & 1 \\ 2 &4 \end{array} \right)
\left( \begin{array}{cc} x \\ y \end{array} \right)
= \left( \begin{array}{cc} 9 \\ 22 \end{array} \tag{3} \right)
\)

解説すると、この式\((3) \)の左辺は2行2列の行列と、2行1列の行列(ベクトルと見ることもできる)の計算なので、行列の積の法則を使えば、もとの連立方程式と同じものを表していることがわかります。

\[
\left( \begin{array}{cc} 1 & 1 \\ 2 &4 \end{array} \right)
\left( \begin{array}{cc} x \\ y \end{array} \right)
= \left( \begin{array}{cc} 1\times x + 1\times y \\ 2\times x + 4\times y \end{array} \right)
= \left( \begin{array}{cc} x+y \\ 2x+4y \end{array} \right)
\]

さて、\((3) \)の式は、さらに簡素化して次のように表すことができます。

\[
\left( \begin{array}{cc|c} 1 & 1 & 9 \\ 2 & 4 & 22 \end{array} \tag{4} \right)
\]

それでは、この行列\((4) \)を使って、連立方程式を解いていきましょう。

行列を使って連立方程式を解くということは、言ってみれば、行列の成分を変形していくという作業です。

その手順は、上で解説した通常の解き方と全く同じです。先ほどは、式\((1)\)を2倍にしたものを式\((2)\)から引きました。それによって、\(2y\) の値が得られたので、それを\(\frac{1}{2}\)倍したものを式\((1)\)から引きました。

行列の場合も、これと全く同じ操作をします。

以下が実際にそれを行っているものです。

\[\fbox{① 2行目-1行目×2, ② 2行目÷2, ③ 1行目-2行目}\]

\[
\left( \begin{array}{cc|c} 1 & 1 & 9 \\ 2 & 4 & 22 \end{array} \right)
\overset{\text{①}}{\Longrightarrow}
\left( \begin{array}{cc|c} 1 & 1 & 9 \\ 0 & 2 & 4 \end{array} \right) \\
\overset{\text{②}}{\Longrightarrow}
\left( \begin{array}{cc|c} 1 & 1 & 9 \\ 0 & 1 & 2 \end{array} \right)
\overset{\text{③}}{\Longrightarrow}
\left( \begin{array}{cc|c} 1 & 0 & 7 \\ 0 & 1 & 2 \end{array} \right) \\
\]

最後の行列にご注目ください。これを連立方程式に復元すれば、既に答えが出ていることがわかります。

\[
\left( \begin{array}{cc} 1 & 0 \\ 0 &1 \end{array} \right)
\left( \begin{array}{cc} x \\ y \end{array} \right)
= \left( \begin{array}{cc} 7 \\ 2 \end{array} \right)
\Longrightarrow
\begin{cases}
x = 7 \\
y = 2
\end{cases}
\]

このように、行列で連立方程式を解くというのは、元の行列である…

\[
\left( \begin{array}{cc|c} 1 & 1 & 9 \\ 2 & 4 & 22 \end{array} \right)
\]

をどんどん変形して、左辺の行列を…

\[\left( \begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array} \right)\]

の形までもっていくということなのです。このような対角線の成分が\(1\)で、それ以外が\(0\)の正方行列のことを「単位行列」と言います。

そして、元の行列を単位行列に変換するために行う…

  • ①ある行をスカラー倍して、
  • ②スカラー倍した行を別の行に足したり引いたりする

という操作のことを「行列の基本変形」または単に「行の基本変形」といいます。

つまり、行列を使った連立方程式とは、行の基本変形を行うことで、方程式の左側に置いた行列を単位行列に変換する作業なのです。

これが行列を使った連立方程式の解き方です。普通の解き方と比べて大差ないように思えるかもしれませんが、実際は \(x, y, z\cdots\) と未知数が増えていくほど、威力を発揮します。

というよりも、未知数が何十個、何百個にもなるような巨大な連立方程式は、行列とコンピュータの力がなければ解くことはできません。

だからこそ、行列の連立方程式は様々な分野でとても重宝されているのです。

ポイント:行の基本変形と単位行列
行列の連立方程式とは、左側に置いた行列を、行の基本変形を使って単位行列に変換する作業。そうして単位行列の右側に現れた値が連立方程式の解に相当する。

2. 行列での多連立方程式の解き方

行列の基本変形を使って、多連立方程式を解く場合も見ておきましょう。多連立方程式といっても、未知数が3つと少ないものですが、行列の威力は十分に体感することができます。

それでは早速、次の連立方程式を、行列を使って解いていきましょう。

\[
\begin{cases}
x+y-z & = & 6 \\
x+2y+z & = & 12 \\
2x+3y-z & = & 2
\end{cases}
\]

この連立方程式は、行列では以下のように表すことができます。

\[
\left( \begin{array}{ccc|c} 1 & 1 & -1 & 6\\ 1 & 2 & 1 & 12\\ 2 & 3 & -1 & 2 \end{array} \right)
\]

左辺の3×3の行列を、単位行列になるまで変形することがゴールです。

多連立方程式の場合、そのための効率の良いやり方があります。まずは以下のように、行列の対角線より下の部分が0になるようにします。

\[
\left( \begin{array}{ccc}
a_{11} & a_{21} & a_{31}\\
0 & a_{22} & a_{32}\\
0 & 0 & a_{33}
\end{array} \right)
\]

これは以下の手順で行うことができます。

\[\fbox{①2行目-1行目, ②3行目-(1行目×2), ③3行目-2行目, ④3行目×(-1)}\]

\[
\overset{\text{①}}{\Longrightarrow}
\left( \begin{array}{ccc|c}
1 & 1 & -1 & 6\\
0 & 1 & 2 & 6\\
2 & 3 & -1 & 2
\end{array} \right)
\overset{\text{②}}{\Longrightarrow}
\left( \begin{array}{ccc|c}
1 & 1 & -1 & 6\\
0 & 1 & 2 & 6\\
0 & 1 & 1 & -10
\end{array} \right) \\
\overset{\text{③}}{\Longrightarrow}
\left( \begin{array}{ccc|c}
1 & 1 & -1 & 6\\
0 & 1 & 2 & 6\\
0 & 0 & -1 & -16
\end{array} \right)
\overset{\text{④}}{\Longrightarrow}
\left( \begin{array}{ccc|c}
1 & 1 & -1 & 6\\
0 & 1 & 2 & 6\\
0 & 0 & 1 & 16
\end{array} \right)
\]

こうして対角線より下の部分を0にすることができたら、次は同じようにして対角線より上の部分を0にしていきます。

なお、この時点で \(z\) の値がわかっているので、コンピュータの場合は、これを元の連立方程式に代入する方法で、あっという間に解いてしまいます。

しかし、人間にとっては、未知数が増えれば増えるほど、その方法で解を求めるのは困難になっていきます。これはコンピュータの計算能力と人の計算能力の根本的な違いによるものです。

そこで、人の手で連立方程式を解く場合は、次に、対角線より上の部分を0にしていくというステップを経ることになるのです。

それを行っているものが以下です。

\[\fbox{⑤2行目-(3行目×2), ⑥1行目+3行目, ⑦1行目-2行目}\]

\[
\overset{\text{⑤}}{\Longrightarrow}
\left( \begin{array}{ccc|c}
1 & 1 & -1 & 6\\
0 & 1 & 0 & -26\\
0 & 0 & 1 & 16
\end{array} \right)
\overset{\text{⑥}}{\Longrightarrow}
\left( \begin{array}{ccc|c}
1 & 1 & 0 & 22\\
0 & 1 & 0 & -26\\
0 & 0 & 1 & 16
\end{array} \right) \\
\overset{\text{⑦}}{\Longrightarrow}
\left( \begin{array}{ccc|c}
1 & 0 & 0 & 48\\
0 & 1 & 0 & -26\\
0 & 0 & 1 & 16
\end{array} \right)
\]

これで単位行列が出てきましたね。この単位行列を使って連立方程式を再現したら次のようになります。

\[
\left( \begin{array}{ccc}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{array} \right)
\left( \begin{array}{c}
x \\
y \\
z
\end{array} \right)
=
\left( \begin{array}{c}
48 \\
-26 \\
16
\end{array} \right)
\]

つまり、\(x, y, z\) のそれぞれの値は次のようになるということです。

\[
\begin{cases}
x & = & 48 \\
y & = & -26 \\
z & = & 16
\end{cases}
\]

以上が行列を使った多連立方程式の解き方です。

なお、このように「行の基本変形」を使って…

  • ①対角線より下の成分を0にする
  • ②続いて対角線より上の成分を0にする

という方法は、「掃き出し法(またはガウスの消去法)」と呼ばれています。

ポイント:掃き出し法
未知数が多い連立方程式を行列で解く場合、まず対角線より下の要素を0にする。次に対角線より上の要素を0にするという方法がもっとも効率が良い。この方法を掃き出し法という。

行の基本変形の補足
行列の基本変形にはもう1つ、③行を入れ替えるという方法があります。例えば、以下のように対角線に0の成分が既にある場合は途中で演算が行き詰まってしまいます。このような時は、行を入れ替えることで演算を続けることが可能になります。

\[
\left( \begin{array}{ccc|c} 0 & 3 & 2 & 6\\ 1 & 2 & 1 & 12\\ 2 & 3 & 1 & 2 \end{array} \right)
\overset{\text{入れ替え}}{\Longrightarrow}
\left( \begin{array}{ccc|c} 2 & 3 & 1 & 2\\ 1 & 2 & 1 & 12\\ 0 & 3 & 2 & 6 \end{array} \right)
\]

つまり「行列の基本変形(ガウスの消去法)」とは、

  • ①ある行をスカラー倍する
  • ②スカラー倍した行を別の行に足したり引いたりする
  • ③ある行と別の行を入れ替える

という3つの方法を使った連立方程式の解法であると言えます。

3. まとめ

以上が行列の連立方程式の解き方です。これはシンプルな技術ですが、今後、線形代数の様々な場面で使うことになりますので、しっかりと抑えておきましょう。

最後に重要ポイントをまとめておきたいと思います。

行列での連立方程式の解き方は?

行列で連立方程式を解くということは、左に置いた行列を単位行列に変換するという作業です。このとき右側に現れる値が、その連立方程式の解です。そして、行列を単位行列に変換する作業のことを「行列の基本変形」といいます。

行列の基本変形の三つのテクニックとは?

  • ①ある行をスカラー倍する
  • ②スカラー倍した行を別の行に足したり引いたりする
  • ③ある行と別の行を入れ替える

掃き出し法(ガウスの消去法)とは?

掃き出し法とは、主にサイズの大きな行列に対して行われる物で、まず対角線より下の要素を0にして、その後に対角線より上の要素を0にするという方法です。

以上の点はしっかりと覚えておきましょう。なお、行列の連立方程式を解いていると、実はそのうち、解が存在しないか一つに定まらない式に出会うことがあります。そのような行列は「非正則行列」と言います。それでは、非正則行列と正則行列の違いは何なのでしょうか?

それについては、次の『逆行列の求め方と線形代数のために抑えるべきポイントの本質的な解説』で解説しています。

Python初心者におすすめのプログラミングスクール

「未経験からでもPythonを学べるプログラミングスクールを探しているけど、色々ありすぎてわからない」なら、次の3つのプログラミングスクールから選んでおけば間違いはありません。

Aidemy Premium:全くの初心者ができるだけ効率よく短期間で実務的に活躍できるAI人材になることを目的とした講座。キャリアカウンセリングや転職エージェントの紹介などの転職支援も充実しており、受講者の転職成功率が高い。

AIジョブカレPythonの基本をおさえた人が、実際に機械学習やディープラーニングを活用できるようになるための講座。転職補償型があるなどキャリア支援の内容が非常に手厚く、講師の質も最高クラス。コスパ最高。Python初心者用の対策講座もある。

データミックスプログラミング経験者のビジネスマンが、更なるキャリアアップのためにデータの処理方法を学んでデータサイエンティストになるための講座。転職だけでなく起業やフリーランスとして独立する人も多い。Python初心者用の対策講座もある。

特に、あなたが以下のような目標を持っているなら、この中から選んでおけば間違いはないでしょう。

・未経験からPythonエンジニアとして就職・転職したい
・AIエンジニアやデータサイエンティストとしてキャリアアップしたい
・起業やフリーランスを視野に入れたい

理由は「Python初心者のためのおすすめプログラミングスクール3選」で解説しています。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる