逆行列の求め方~掃き出し法と逆行列の公式の2つの方法の徹底解説~

逆行列の求め方(掃き出し法と逆行列の公式)

当ページでは逆行列の求め方について、以下の2つの方法を解説します。

  • 掃き出し法
  • 逆行列の公式

先にお伝えすると、逆行列は掃き出し法で求めるのが一般的です。

一方で、逆行列の公式は、手計算において実際に使うことはほとんどありません。しかし、逆行列について数学的に考える力を身に着けるという点においては、とても有用です。

そこで当ページでは、両方について解説していきます。

なお、内容を理解するには最低限、行列を使った連立方程式の解き方を理解しておく必要があります。不安な方は、先に『連立方程式を行列で解く方法|行の基本変形と掃き出し法』をぜひ復習しておきましょう。

それでは始めましょう。

目次

1. 逆行列の求め方【掃き出し法】

まずは一般的な方法である掃き出し法による求め方を解説します。

まずは、その方法を解説した後に、なぜこの方法で求めることができるのかについても詳しくお伝えします。その後で練習問題も用意していますので、ぜひチャレンジしてみてください。

1.1. 掃き出し法による求め方

掃き出し法は以下のステップで行います。

  • ① \(A\) と同じサイズの単位行列 \(I\) を右側に並べる。
  • ② 行列の基本変形を用いて \(A\) を単位行列 \(E\) に変換する。
  • ③ ②の結果、右側に出来た行列が\(A\)の逆行列\(A^{-1}\)である。

実際に、行列 \(A = \left[ \begin{array}{cc} 2 & 1 \\ 0 & 1 \end{array} \right]\) の逆行列を求めてみましょう。

まずは右側に単位行列を並べます。

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

次に行列で連立方程式を解くのと同じように、行の基本変形を行って、左側を単位行列に変換していきます。

\[\begin{eqnarray}
\left[ \begin{array}{cc|cc} 2 & 1 & 1 & 0 \\ 0 & 1 & 0 & 1 \end{array} \right]
&\overset{\text{①}}{\Longrightarrow}&
\left[ \begin{array}{cc|cc} 2 & 0 & 1 & -1 \\ 0 & 1 & 0 & 1 \end{array} \right]
\hspace{3mm}
&①&1行目−2行目\\
&\overset{\text{②}}{\Longrightarrow}&
\left[ \begin{array}{cc|cc} 1 & 0 & 0.5 & -0.5 \\ 0 & 1 & 0 & 1 \end{array} \right]
\hspace{3mm}
&②&1行目 \times \dfrac{1}{2}\\
\end{eqnarray}\]

こうして左側を単位行列に変換したときに、右側にできる行列が \(A\) の逆行列 \(A^{-1}\)です。

元の行列 \(A\) が何次行列だとしても、すべてこの方法で逆行列を求めることができます。

1.2. 理由解説

それでは、なぜこの方法で逆行列を求めることができるのでしょうか。なぜ、ある行列の右側に単位行列を起き、左側の行列を単位行列に変換したとき、最初に右側に置いた単位行列が逆行列になるのでしょうか。

この点についても理解しておきましょう。

掃き出し法では、行の基本変形というテクニックを使っています。これは具体的には以下の3つのテクニックのことです。

  1. ある行をスカラー倍する
  2. ある行と別の行を入れ替える
  3. スカラー倍した行を別の行に足し引きする

この行の基本変形は、実はそれぞれ、「基本行列」と呼ばれる以下の3つの行列を左側から掛けるということと同じことなのです。

\[\begin{eqnarray}
P_{i(s)}=
\left[ \begin{array}{cc} 1 & 0 \\
0 & s \end{array} \right],
\hspace{3mm}
T_{i,j}=
\left[ \begin{array}{cc|cc} 0 & 1 \\
1 & 0 \end{array} \right],
\hspace{3mm}
E_{i,j(s)}
=
\left[ \begin{array}{cc|cc} 1 & 0 \\
s & 1 \end{array} \right]
\end{eqnarray}\]

これらの行列は、それぞれ左から次のような働きをします。

  1. 対象の行列の \(i\) 行目を \(s\) 倍する(=ある行のスカラー倍)。
  2. 対象の行列の \(i\) 行目と \(j\) 行目を入れ替える(=行の入れ替え)。
  3. 対象の行列の \(i\) 行目に、\(j\) 行目を \(s\) 倍したものを足す(=足し引き)。

※基本行列についての詳しい説明
基本行列について、上の説明では足りないところがありますので、この補足で詳しく解説しています。ぜひご確認ください。または『行列の基本変形とは?その幾何学的意味や逆行列との関係の解説』でも詳しく解説しています。

[補足]基本行列についての解説

基本行列とは、以下の三つの働きのいずれかを行う行列のことです。

  1. 対象の行列の \(i\) 行目を \(s\) 倍する。
  2. 対象の行列の \(i\) 行目と \(j\) 行目を入れ替える。
  3. 対象の行列の \(i\) 行目に、\(j\) 行目を \(s\) 倍したものを足す。

そして、連立方程式を行列で解くときに行う「行の基本変形」とは結局、これらの三つの基本行列のうちのいずれかを、左から掛けるということと同じです。

「行の基本変形」とは以下の3つのことです。

  1. ある行をスカラー倍する
  2. ある行と別の行を入れ替える
  3. スカラー倍した行を別の行に足し引きする

これらの一つひとつが、基本行列を左から掛けることと同じことを意味します。

例として以下の行列 \(A\) を対象として見ていきましょう。

\[A=
\left( \begin{array}{ccc}
a & b & c \\
d & e & f \\
g & h & i
\end{array} \right)
\]

特定の行を \(s\) 倍する

この行列 \(A\) の1行目を3倍にしたいとします。それは以下の行列を左から掛けることと同じことを意味します。

\[
\left( \begin{array}{ccc}
3 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{array} \right)
\left( \begin{array}{ccc}
a & b & c \\
d & e & f \\
g & h & i
\end{array} \right)
=
\left( \begin{array}{ccc}
3a & 3b & 3c \\
d & e & f \\
g & h & i
\end{array} \right)
\]

他にも、2行目を \(s\) 倍するのは以下の行列の左のものを掛けるのと同じことですし、3行目 を \(s\) 倍するのは以下の行列の右のものを掛けるのと同じことです。

\[
\left( \begin{array}{ccc}
1 & 0 & 0 \\
0 & s & 0 \\
0 & 0 & 1
\end{array} \right),
\hspace{4mm}
\left( \begin{array}{ccc}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & s
\end{array} \right)
\]

この行列のことを記号で \(P_{i}(s)\) と表します。\(i\) は \(s\) 倍にする対象の行を表します。

特定の行と特定の行を入れ替える

次にこの行列 \(A\) の1行目と2行目を入れ替えたいとします。それは、以下の行列を左から掛けることと同じことを意味します。

\[
\left( \begin{array}{ccc}
0 & 1 & 0 \\
1 & 0 & 0 \\
0 & 0 & 1
\end{array} \right)
\left( \begin{array}{ccc}
a & b & c \\
d & e & f \\
g & h & i
\end{array} \right)
=
\left( \begin{array}{ccc}
d & e & f \\
a & b & c \\
g & h & i
\end{array} \right)
\]

他にも1行目と3行目を入れ替えるのは以下の左側の行列を、2行目と3行目を入れ替えるのは以下の右側の行列を左から掛けるのと同じことです。

\[
\left( \begin{array}{ccc}
0 & 0 & 1 \\
0 & 1 & 0 \\
1 & 0 & 0
\end{array} \right),
\hspace{4mm}
\left( \begin{array}{ccc}
1 & 0 & 0 \\
0 & 0 & 1 \\
0 & 1 & 0
\end{array} \right)
\]

この行列のことを記号で \(T_{i,j}\) と表します。\(i,j\) はそれぞれ入れ替える対象となる行を示します。

特定の行に特定の行を \(s\) 倍したものを足す

最後に、この行列 \(A\)の1行目を-3倍したものを3行目に足したいとします。それは以下の行列を左から掛けることと同じことを意味します。

\[
\left( \begin{array}{ccc}
1 & 0 & 0 \\
0 & 1 & 0 \\
-3 & 0 & 1
\end{array} \right)
\left( \begin{array}{ccc}
a & b & c \\
d & e & f \\
g & h & i
\end{array} \right)
=
\left( \begin{array}{ccc}
a & b & c \\
d & e & f \\
-3a+g & -3b+h & -3c+i
\end{array} \right)
\]

他にも2行目に1行目を\(s\)倍したものを足すには以下の左側の行列を、1行目に3行目を\(s\)倍したものを足すには以下の右側の行列を、左から掛けるのと同じことです。

\[
\left( \begin{array}{ccc}
1 & 0 & 0 \\
s & 1 & 0 \\
0 & 0 & 1
\end{array} \right),
\hspace{4mm}
\left( \begin{array}{ccc}
1 & 0 & s \\
0 & 1 & 0 \\
0 & 0 & 1
\end{array} \right)
\]

この行列のことを記号で \(E_{i,j}(s)\) と表します。\(i\) に \(j\) 行目を\(s\)倍したものを足すということを表しています。

これらの三つの行列 \(P_{i}(s)\), \(T_{i,j}\), \(E_{i,j}(s)\) がそれぞれ左から、行の基本変形のテクニックである以下の三つに対応しています。

  1. ある行をスカラー倍する
  2. ある行と別の行を入れ替える
  3. スカラー倍した行を別の行に足し引きする

このことから、これらの3つの行列は「基本行列」と名付けられているのです。

それでは上の解説で用いた行列 \(A = \left[ \begin{array}{cc} 2 & 1 \\ 0 & 1 \end{array} \right]\) を使って、もう一度確認してみましょう。

まず最初の行基本変形では、1行目と、2行目を −1倍したものを足すという計算を行いました。この計算は、以下のように基本行列 \(E_{1,2(-1)}\) を掛けるということとまったく同じ計算を意味します。

\[\begin{eqnarray}
E_{1,2(-1)}A
&=&
\left[ \begin{array}{cc} 1 & -1 \\ 0 & 1 \end{array} \right]
\left[ \begin{array}{cc|cc} 2 & 1 & 1 & 0 \\ 0 & 1 & 0 & 1 \end{array} \right]\\
&=&
\left[ \begin{array}{cc|cc} 2 & 0 & 1 & -1 \\ 0 & 1 & 0 & 1 \end{array} \right]
\end{eqnarray}\]

次の行基本変形では、1行目に \(\frac{1}{2}\) を掛けました。これは、以下のように基本行列 \(P_{1(\frac{1}{2})}\) を掛けるということとまったく同じ計算を意味します。

\[\begin{eqnarray}
P_{1(\frac{1}{2})}A
&=&
\left[ \begin{array}{cc} 0.5 & 0 \\ 0 & 1 \end{array} \right]
\left[ \begin{array}{cc|cc} 2 & 0 & 1 & -1 \\ 0 & 1 & 0 & 1 \end{array} \right]\\
&=&
\left[ \begin{array}{cc|cc} 1 & 0 & 0.5 & -0.5 \\ 0 & 1 & 0 & 1 \end{array} \right]
\end{eqnarray}\]

これらの逆行列を求めるために行った2つの行基本変形(線形変換)が、幾何学的にはどのようなことを意味しているのかを、以下のアニメーションで確認してみてください。

このように元の行列 \(A\) は基底ベクトル \(\hat{\imath}\) と \(\hat{\jmath}\) になりました。

これは基本行列 \(E_{1,2(-1)}\) と \(P_{1(\frac{1}{2})}\) の積 \(P_{1(\frac{1}{2})}E_{1,2(-1)}\) が行列 \(A\) の逆行列であるということを意味しています。そして、最初に単位行列を置いた部分は、まさにこれらの行列の積の解を表しています(行列と基本行列を掛けても値が変わらないという点を思い出してください)

以上が、掃き出し法で逆行列を求められる理由です。

1.3. 練習問題

2次正方行列と3次正方行列の場合の練習問題を用意しています。理解を深めるために、ぜひ一度はご自身で解いてみてください。

練習問題① 2×2行列

問題:以下の行列 \(A\) の逆行列を求めよ。

\[ A=
\left[ \begin{array}{cc} 0 & -1 \\ 1 & 0 \end{array} \right]
\]

まずは、この行列の右側に単位行列を加えます。

\[
\left[ \begin{array}{cc|cc} 0 & -1 & 1 & 0 \\ 1 & 0 & 0 & 1 \end{array} \right]
\]

そして左側の行列を単位行列に変換します。

まずは1行目と2行目を入れ替えます。

\[
\left[ \begin{array}{cc|cc} 1 & 0 & 0 & 1 \\ 0 & -1 & 1 & 0 \end{array} \right]
\]

そして、2行目に \(-1\) を掛けます。

\[
\left[ \begin{array}{cc|cc} 1 & 0 & 0 & 1 \\ 0 & 1 & -1 & 0 \end{array} \right]
\]

これで左側が単位行列に変換されました。このことから \(A\) の逆行列 \(A^{-1}\) は以下の通りです。

\[ A^{-1} =
\left[ \begin{array}{cc} 0 & 1 \\ -1 & 0 \end{array} \right]
\]

行列と逆行列の積は単位行列になる、つまり「 \(A^{-1}A=I\)」になるので、答えが合っているかどうかは次のように計算することができます。

\[ A^{-1}A =
\left[ \begin{array}{cc} 0 & 1 \\ -1 & 0 \end{array} \right]
\left[ \begin{array}{cc} 0 & -1 \\ 1 & 0 \end{array} \right]
=
\left[ \begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array} \right]
\]

練習問題② 3×3行列

問題:以下の行列 \(A\) の逆行列を求めよ。

\[ A=
\left[ \begin{array}{cc} 1 & 0 & 3 \\ 0 & 2 &1 \\ 0 & 0 & 2\end{array} \right]
\]

まずは、この行列の右側に単位行列を加えます。

\[ A=
\left[ \begin{array}{ccc|ccc}
1 & 0 & 3 & 1 & 0 & 0 \\
0 & 2 &1 &0 & 1 & 0 \\
0 & 0 & 2 & 0 & 0 & 1
\end{array} \right]
\]

次に3行目を \(0.5\) を掛けます。

\[
\left[ \begin{array}{ccc|ccc}
1 & 0 & 3 & 1 & 0 & 0 \\
0 & 2 &1 &0 & 1 & 0 \\
0 & 0 & 1 & 0 & 0 & 0.5
\end{array} \right]
\]

続いて3行目を\(3\)倍したものを1行目から引きます。

\[
\left[ \begin{array}{ccc|ccc}
1 & 0 & 0 & 1 & 0 & -1.5 \\
0 & 2 &1 &0 & 1 & 0 \\
0 & 0 & 1 & 0 & 0 & 0.5
\end{array} \right]
\]

そして、2行目から3行目を引きます。

\[
\left[ \begin{array}{ccc|ccc}
1 & 0 & 0 & 1 & 0 & -1.5 \\
0 & 2 &0 &0 & 1 & -0.5 \\
0 & 0 & 1 & 0 & 0 & 0.5
\end{array} \right]
\]

最後に2行目に \(0.5\) を掛けます。

\[
\left[ \begin{array}{ccc|ccc}
1 & 0 & 0 & 1 & 0 & -1.5 \\
0 & 1 &0 &0 & 0.5 & -0.25 \\
0 & 0 & 1 & 0 & 0 & 0.5
\end{array} \right]
\]

これで左側が単位行列に変換されました。つまり、\(A^{-1}\) は…

\[ A^{-1} =
\left[ \begin{array}{cc} 1 & 0 & -1.5 \\ 0 & 0.5 &-0.25 \\ 0 & 0 & 0.5\end{array} \right]
\]

となります。これも行列と逆行列の積は単位行列になることから、以下の式で答えが合っているかどうかを確認することができます。

\[ A^{-1}A =
\left[ \begin{array}{cc} 1 & 0 & -1.5 \\ 0 & 0.5 &-0.25 \\ 0 & 0 & 0.5\end{array} \right]
\left[ \begin{array}{cc} 1 & 0 & 3 \\ 0 & 2 &1 \\ 0 & 0 & 2\end{array} \right]
=
\left[ \begin{array}{cc} 1 & 0 & 0 \\ 0 & 1 &0 \\ 0 & 0 & 1\end{array} \right]
\]

2. 逆行列の求め方【逆行列の公式】

逆行列は公式によっても求めることが可能です。

ただし、掃き出し法の方が計算のミスが少ないですし、どのようなサイズの正方行列の逆行列でも無理なく求めることができます。一方で、逆行列の公式は正方行列のサイズが大きくなればなるほど複雑なものになりますし、ミスの余地も大きいので、実際の計算には適していません。

しかし数学的に考えるという点では逆行列の公式は役に立ちます。そこで \(2×2\) と \(3×3\) の逆行列の公式を見てから、どうやってこの公式が求められるのかを解説します。

それでは始めましょう。

2.1. 逆行列の公式による求め方

まず \(2×2\) の行列の逆行列は以下の公式で求めることができます。

\(2×2\) の逆行列の公式

\[\begin{eqnarray}
A=\left( \begin{array}{cc} a & b \\ c & d \end{array} \right),
\hspace{4mm}
A^{-1} =
\dfrac{1}{ad−bc}
\left( \begin{array}{cc} d & −b \\ −c & a \end{array} \right)
\end{eqnarray}
\]

逆行列の公式を用いた計算例

以下の行列 \(A\) を対象に実際に計算してみましょう。

\[\begin{eqnarray}
A
=
\left( \begin{array}{cc} 1 & 2 \\ 3 & 2 \end{array} \right)
\end{eqnarray}
\]

次のようになります。

\[\begin{eqnarray}
A^{-1}
&=&
\dfrac{1}{1 \cdot 2 – 2 \cdot 3}
\left( \begin{array}{cc} 2 & -2 \\ -3 & 1 \end{array} \right)\\
&=&
\dfrac{1}{-4}
\left( \begin{array}{cc} 2 & -2 \\ -3 & 1 \end{array} \right)\\
&=&
\left( \begin{array}{cc} -0.5 & 0.5 \\ 0.75 & -0.25 \end{array} \right)
\end{eqnarray}\]

実際は、この公式を使うよりも掃き出し法の方が間違える可能性が少なく便利です。

次に \(3×3\) の行列の逆行列は以下の公式で求めることができます。

\(3×3\) の逆行列の公式

\[\begin{eqnarray}
A=
\left( \begin{array}{ccc}
a_{11} & a_{12} & a_{13} \\
a_{21} & a_{22} & a_{23} \\
a_{31} & a_{32} & a_{33}
\end{array} \right),
\hspace{4mm}
A^{-1} &=&
\dfrac{1}{(a_{12}a_{23}-a_{13}a_{22})a_{31} + (a_{13}a_{21}-a_{11}a_{23})a_{32} + (a_{11}a_{22}-a_{12}a_{21})a_{33}}
\left( \begin{array}{ccc}
a_{22}a_{33}-a_{23}a_{32} & −(a_{12}a_{33}-a_{13}a_{32}) &a_{12}a_{23}-a_{13}a_{22} \\
−(a_{21}a_{33}-a_{23}a_{31}) & a_{11}a_{33}-a_{13}a_{31} & −(a_{11}a_{23}-a_{13}a_{21}) \\
a_{21}a_{32}-a_{22}a_{31} & −(a_{11}a_{32}-a_{12}a_{31}) & a_{11}a_{22}-a_{12}a_{21} \\
\end{array} \right)
\end{eqnarray}
\]

\(2×2\) の場合は、まだ逆行列の公式から求めるのも、そこまで苦ではありませんが、\(3×3\) 以上になると最早もはや、掃き出し法の方が遥かに簡単です。そのため、上述のように実際に逆行列を手計算で求める際は、この逆行列の公式を使うことはありません。したがって計算例は省略させて頂きます。

2.2. 理由解説

さて逆行列の公式は実際に使うことはまずありませんが、なぜこの公式が求められるのかを考えることは、数学的思考法を鍛えるという点で役に立ちます。そこで、その点について解説したいと思います。

ただし、ここの内容は最初は理解できなくても全く問題ありません。というよりも数学目的以外では、ほとんど必要ないと思います。それでももし必要になったときに読み返してみたら、自然とわかるようになっていくことでしょう。

それでは始めましょう。

前提知識:クロネッカーのデルタ

それでは行列式の展開を用いて、逆行列の公式を導き出してみましょう。まずは、「クロネッカーのデルタ」という記号が必要になるので、これについて解説します。

まず、\(3×3\) の行列式を第3行について展開すると次のように書くことができます。展開については『余因子による行列式の展開とは?~アニメーションですぐわかる解説~』で解説しています。

\[\begin{eqnarray} 
|A|
&=&
\left| \begin{array}{ccc} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{array} \right|\\
&=&
a_{31}
\left| \begin{array}{cc} a_{12} & a_{13} \\ a_{22} & a_{23} \end{array} \right|

a_{32}
\left| \begin{array}{cc} a_{11} & a_{13} \\ a_{21} & a_{23} \end{array} \right|
+
a_{33}
\left| \begin{array}{cc} a_{11} & a_{12} \\ a_{21} & a_{22} \end{array} \right|\\
&=&
a_{31}\Delta_{31}+a_{32}\Delta_{32}+a_{33}\Delta_{33} \tag{1}
\end{eqnarray}
\]

これに対して、1行目と3行目を同じにした行列式を考えてみます。この行列式の場合は、この行列のそれぞれの列ベクトルが独立していないので、値はゼロになるのですが、それでも構わず第3行について展開すると次のようになります(ベクトルの独立については『ベクトルの一次独立とは?驚くほど理解できるアニメーション解説』をご覧ください)。

\[\begin{eqnarray} 
|A|=0 &=&
\left| \begin{array}{ccc} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{11} & a_{12} & a_{13} \end{array} \right|\\
&=&
a_{11}\left| \begin{array}{cc} a_{12} & a_{13} \\ a_{22} & a_{23} \end{array} \right|

a_{12}\left| \begin{array}{cc} a_{11} & a_{23} \\ a_{21} & a_{23} \end{array} \right|
+
a_{13}\left| \begin{array}{cc} a_{11} & a_{12} \\ a_{21} & a_{22} \end{array} \right|\\
&=&
a_{11}\Delta_{11}+a_{12}\Delta_{12}+a_{13}\Delta_{33} \tag{2}
\end{eqnarray}
\]

比較のために \((1)\) と \((2)\) を並べてみましょう。

\[\begin{eqnarray} 
|A|&=&a_{31}\Delta_{31}+a_{32}\Delta_{32}+a_{33}\Delta_{33} \tag{1} \\
|A|=0&=&a_{11}\Delta_{11}+a_{12}\Delta_{12}+a_{13}\Delta_{33} \tag{2}
\end{eqnarray}\]

違いは、行列式の値が \(0\) にならない上のケースでは \(a_{ij}\) と \(\Delta_{ij}\) が揃っており、下のケースではズれているということです。つまり、\(a_{ij}\) の行にあたる \(i\) の部分を、無理やり他の行 \(k\) に置き換えると、その行列式の値はゼロになるということがわかります。

「クロネッカーのデルタ」を使うと、この二つの式を一行で表現することができます。クロネッカーのデルタは以下のように使います。

\[
\delta_{ik} =
\begin{cases}
1 \hspace{5mm} (i=k)\\
0 \hspace{5mm} (i≠k)
\end{cases}
\]

この式は、\(i=k\) のときは \(1\) になり、\(i≠k\) のときは \(0\) になるということを表しています。これを使うと、上の二つの展開式 \((1)\) と \((2)\) を合わせて次の一つの式で表現することができるのです。

\[\begin{eqnarray} 
|A|\delta_{ik}
=
\Delta_{i1}a_{k1}+\Delta_{i2}a_{k2}+\Delta_{i3}a_{k3}
=
\sum_{j=1}^3 \Delta_{ij}a_{kj} \tag{3}
\end{eqnarray}\]

つまり、\(i=k\) のときは \(\delta_{ik}=1\) なので、左辺はそのまま \(|A|\times1=1\)ですが、\(i≠k\) のとき、\(\delta_{ik}=0\) なので、左辺は\(|A|\times0=0\) になる、ということを表しています。これがクロネッカーのデルタです。

さあ、これで前置きは終わりです。いよいよ 3×3の逆行列の公式を作ってみましょう。

逆行列の公式の導出

逆行列の公式を導きだすために、まずは逆行列の定義を思い出しましょう。単位行列を \(I\) とすると、ある正方行列 \(A\) と、その逆行列 \(A^{-1}\) は以下の関係にありました。

\[
AA^{-1} = A^{-1}A = I
\]

単位行列 \(I\) は対角線成分の値が \(1\) で、それ以外が \(0\) の行列ですので、クロネッカーのデルタで表現することができます。

行列の対角成分というのは要するに \((i, i)\) 成分のことなので \(\delta_{ii}=1\) になり、対角成分以外の部分は、\(i, k\) 成分 (\(i≠k\)) のことなので \(\delta_{ik}=0\) になるのです。このことから、たとえば \(3×3\) の単位行列のそれぞれの成分は、\(\delta_{ik}\) \((i, k=1, 2, 3)\) と表すことができます。

これを踏まえて、もう一度先ほどの式\((3)\)を見てみましょう。

\[\begin{eqnarray} 
|A|\delta_{ik}
=
\Delta_{i1}a_{k1}+\Delta_{i2}a_{k2}+\Delta_{i3}a_{k3}
=
\sum_{j=1}^3 \Delta_{ij}a_{kj}
\end{eqnarray}\]

そう、この式の左辺には、既に単位行列 \(E=\delta_{ik}\) が含まれているのです。

そして、\(|A|≠0\) のとき、両辺を \(|A|\) で割ることができます。すると以下のようになります。

\[\begin{eqnarray} 
\delta_{ik}
=
\dfrac{\Delta_{i1}a_{k1}+\Delta_{i2}a_{k2}+\Delta_{i3}a_{k3}}{|A|}
=
\dfrac{1}{|A|}\sum_{j=1}^3 \Delta_{ij}a_{kj}
\end{eqnarray}\]

次にこの式を変形して、\(\dfrac{1}{|A|}\) を \(\Delta_{ij}\) に押しつけます。

\[\begin{eqnarray} 
\delta_{ik}
=
\dfrac{1}{|A|}\sum_{j=1}^3 \Delta_{ij}a_{kj}
=
\sum_{j=1}^3 a_{kj}\left(\dfrac{1}{|A|}\Delta_{ij}\right)
\end{eqnarray}\]

最後に、この式の中の \(\Delta_{ij}\) は、ある行列 \(\Delta\)の \((i,j)\) 成分と考えることができるので、これを転置して \({}^t\!\Delta_{ji} \) に置き換えます。それにともなって、\(\delta_{ik}\) も \(\delta_{ki}\) に変えます。

\[
\delta_{ki} = \sum_{j=1}^3a_{kj}\left(\dfrac{1}{|A|}{}^t\!\Delta_{ji}\right) \tag{4}
\]

転置は線形代数で非常によく使うテクニックで、あらゆる行列式は転置しても値は変わらないという性質を用いたものです。そして、単位行列も転置しても何も変わりません。乱暴ですが、ここでは転置は式をわかりやすくするのに便利で、とりあえずよく行われるものぐらいに覚えておいてください。

さて、この式 \((4)\) の左辺は単位行列 \(E\) の\((k,i)\) 成分を表しており、右辺は 行列 \(A\)の \(a_{kj}\) 成分と、 \(\frac{1}{|A|}{}^t\!\Delta_{ji}\) 成分との積を表しています。

つまり、それぞれ…

  • \(\delta_{ki}=E\)
  • \(a_{kj}=A\)
  • \(\frac{1}{|A|}{}^t\!\Delta_{ji}=A^{-1}\)

なので、これは \(E = AA^{-1}\) と同じ式ということになります。後は、逆行列の各成分に当たる \(A^{-1} = \frac{1}{|A|}{}^t\!\Delta_{ji}\) をシンプルに表現しなおすだけです。

\[
(A^{-1})_{ji} = \dfrac{1}{|A|}{}^t\!\Delta_{ji}
\]

これが、ある行列 \(A\) の逆行列 \(A^{−1}\) を求めるための一般公式です。この一般公式は、どのようなサイズの正方行列の逆行列にも当てはめることができます。

公式から2×2の逆行列を求める

たとえば、この一般公式から 以下の2×2行列\(A\)の逆行列を求めるとします。

\[A = \left( \begin{array}{cc} a & b \\ c & d \end{array} \right)\]

これは次のようになります。

\[
\begin{eqnarray}
(A^{-1})_{ij} = \dfrac{1}{|A|}{}^t\!\Delta_{ij}
\Longrightarrow
A^{-1} =
\dfrac{1}{|A|}
\left( \begin{array}{cc} \Delta_{11} & \Delta_{21} \\ \Delta_{12} & \Delta_{22} \end{array} \right)
\end{eqnarray}
\]

2×2の行列式 \(|A|\) の計算方法は \(ad−bc\) ですね。

そして、2×2の行列 \(A\) の\(\Delta_{ij}\) はそれぞれ次のように求めます。

\[\begin{eqnarray}
\Delta_{11} &=& (−1)^{1+1}d = d \\
\Delta_{21} &=& (−1)^{2+1}b = −b \\
\Delta_{12} &=& (−1)^{1+2}c = −c \\
\Delta_{22} &=& (−1)^{2+2}a = a \\
\end{eqnarray}
\]

後はこれを、先ほどの式に当てはめるだけです。

\[
\begin{eqnarray}
A^{-1} =
\dfrac{1}{|A|}
\left( \begin{array}{cc} \Delta_{11} & \Delta_{21} \\ \Delta_{12} & \Delta_{22} \end{array} \right)
\Longrightarrow
A^{-1} =
\dfrac{1}{ad−bc}
\left( \begin{array}{cc} d & −b \\ −c & a \end{array} \right)
\end{eqnarray}
\]

これが公式から、2×2行列の逆行列を求める方法です。

公式から3×3の逆行列を求める

続いて、一般公式から以下の3×3行列の逆行列を求めてみましょう。

\[A=\left( \begin{array}{ccc}
a_{11} & a_{12} & a_{13} \\
a_{21} & a_{22} & a_{23} \\
a_{31} & a_{32} & a_{33}
\end{array} \right)\]

これを公式に当てはめると以下のようになります。

\[
\begin{eqnarray}
(A^{-1})_{ij} = \dfrac{1}{|A|}{}^t\!\Delta_{ij}
\Longrightarrow
A^{-1} =
\dfrac{1}{|A|}
\left( \begin{array}{ccc}
\Delta_{11} & \Delta_{21} & \Delta_{31} \\
\Delta_{12} & \Delta_{22} & \Delta_{32} \\
\Delta_{13} & \Delta_{23} & \Delta_{33} \\
\end{array} \right)
\end{eqnarray}
\]

3×3の行列式 \(|A|\) の計算方法は…

\begin{eqnarray}
|A|
= (a_{12}a_{23}-a_{13}a_{22})a_{31}
+ (a_{13}a_{21}-a_{11}a_{23})a_{32}
+ (a_{11}a_{22}-a_{12}a_{21})a_{33}
\end{eqnarray}

ですね。

そして、3×3の行列 \(A\) の\(\Delta_{ij}\) はそれぞれ次のように求めます。

\[\begin{eqnarray}
\Delta_{11} &=& (-1)^{1+1}
\left| \begin{array}{cc}
a_{22} & a_{23} \\
a_{32} & a_{33} \\
\end{array} \right|
= a_{22}a_{33}-a_{23}a_{32}
, \hspace{10mm}
\Delta_{21} &=& (-1)^{2+1}
\left| \begin{array}{cc}
a_{12} & a_{13} \\
a_{32} & a_{33} \\
\end{array} \right|
= −(a_{12}a_{33}-a_{13}a_{32})
, \hspace{7mm}
\Delta_{31} &=& (-1)^{3+1}
\left| \begin{array}{cc}
a_{12} & a_{13} \\
a_{22} & a_{23} \\
\end{array} \right|
= a_{12}a_{23}-a_{13}a_{22} \\
\Delta_{12} &=& (-1)^{1+2}
\left| \begin{array}{cc}
a_{21} & a_{23} \\
a_{31} & a_{33} \\
\end{array} \right|
= −(a_{21}a_{33}-a_{23}a_{31})
, \hspace{3mm}
\Delta_{22} &=& (-1)^{2+2}
\left| \begin{array}{cc}
a_{11} & a_{13} \\
a_{31} & a_{33} \\
\end{array} \right|
= a_{11}a_{33}-a_{13}a_{31}
, \hspace{14mm}
\Delta_{32} &=& (-1)^{3+2}
\left| \begin{array}{cc}
a_{11} & a_{13} \\
a_{21} & a_{23} \\
\end{array} \right|
= −(a_{11}a_{23}-a_{13}a_{21}) \\
\Delta_{13} &=& (-1)^{1+3}
\left| \begin{array}{cc}
a_{21} & a_{22} \\
a_{31} & a_{32} \\
\end{array} \right|
= a_{21}a_{32}-a_{22}a_{31}
, \hspace{10mm}
\Delta_{23} &=& (-1)^{2+3}
\left| \begin{array}{cc}
a_{11} & a_{12} \\
a_{31} & a_{32} \\
\end{array} \right|
= −(a_{11}a_{32}-a_{12}a_{31})
, \hspace{7mm}
\Delta_{33} &=& (-1)^{3+3}
\left| \begin{array}{cc}
a_{11} & a_{12} \\
a_{21} & a_{22} \\
\end{array} \right|
= a_{11}a_{22}-a_{12}a_{21}
\end{eqnarray}\]

これを先ほどの式に当てはめます。

\[
\begin{eqnarray}
A^{-1} &=&
\dfrac{1}{|A|}
\left( \begin{array}{ccc}
\Delta_{11} & \Delta_{21} & \Delta_{31} \\
\Delta_{12} & \Delta_{22} & \Delta_{32} \\
\Delta_{13} & \Delta_{23} & \Delta_{33}
\end{array} \right)\\
\Longrightarrow
A^{-1} &=&
\dfrac{1}{(a_{12}a_{23}-a_{13}a_{22})a_{31} + (a_{13}a_{21}-a_{11}a_{23})a_{32} + (a_{11}a_{22}-a_{12}a_{21})a_{33}}
\left( \begin{array}{ccc}
a_{22}a_{33}-a_{23}a_{32} & −(a_{12}a_{33}-a_{13}a_{32}) &a_{12}a_{23}-a_{13}a_{22} \\
−(a_{21}a_{33}-a_{23}a_{31}) & a_{11}a_{33}-a_{13}a_{31} & −(a_{11}a_{23}-a_{13}a_{21}) \\
a_{21}a_{32}-a_{22}a_{31} & −(a_{11}a_{32}-a_{12}a_{31}) & a_{11}a_{22}-a_{12}a_{21} \\
\end{array} \right)
\end{eqnarray}
\]

これが公式から、3×3行列の逆行列を求める方法です。あとは、これと全く同じ方法で N×N行列の逆行列を求めることができます。

以上が逆行列の公式の求め方です。

3. まとめ

以上が逆行列の求め方です。

実はプログラミングができると、ほんの数行で、どれだけサイズの大きな行列のの逆行列でも、あっという間に求めることができます。例えば、以下はPythonのコードです。

In [1]:
import numpy as np
from numpy import linalg as LA
A = np.array([[-2, 0], [-2, 1]])
LA.inv(A)
Out[1]:
array([[-0.5, -0. ],
       [-1. ,  1. ]])

ですので、今は逆行列の求め方を暗記することは必須ではありません。また数学者でもない限り、逆行列の公式も必ずしも全て理解しなければいけないというわけではありません。

しかし線形代数において逆行列とはどのような働きをする行列なのか、逆行列を求めるとはどういうものなのかを幾何学的にイメージできるようになっておくことは実務上とても重要です。そのため、この点をしっかり理解する為にも、ぜひここで用意したアニメーションを有効活用して頂ければと思います。

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

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

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

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

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

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

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

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



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

この記事を書いた人

コメント

コメントする

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

目次
閉じる