機械学習勉強ログ

機械学習に関連した勉強を記録していこうと思います。

線形代数で連立方程式を解く(1)

はじめに

今回は連立方程式線形代数を使って解くという内容をアウトプットしていきます。 勉強しながら思い出したのは、遥か昔、高校の数Cの授業で習った時のことです。

中学で習った代入法で連立方程式自体は解けるのに、一体なんの為に これを覚えるんだろうと疑問に思いました。

幸い、今勉強してみて、行列ならではの価値が見出せたので、 その辺りから書いていく事にします。

行列化して連立方程式を解くことの意味

汎用的な表現能力

まず行列で表記することで、式が非常にコンパクトになります! どのぐらいコンパクトかというと、

 Ax = b

こんな感じで、実にシンプル!😂 しかも、未知数が2つ(2元)だろうが、100個だろうが同じ式で扱えます。

さすが、多次元を抽象化する行列ならではの表現能力の高さです!

さて、上記のような形にどうやって変形するかというと、

例えば2元の場合は、


\begin{align}
a_{11}x_1 + a_{12}x_2 = b_1 \\\
a_{21}x_1 + a_{22}x_2 = b_2 
\end{align}

という式があったとすると、


A = \begin{bmatrix}
a_{11} & a_{12} \\\ 
a_{21} & a_{22}
\end{bmatrix}



x = \begin{bmatrix}
x_1 \\\ 
x_2
\end{bmatrix}



b = \begin{bmatrix}
b_1 \\\ 
b_2
\end{bmatrix}

上記のような感じで係数の部分が、 Aの部分に来ます。

 A のことを係数行列(coefficient matrix) といい、  A^{-1}を求めることで連立方程式が解けます。

なぜ、逆行列を求める事で連立方程式が解けるか? 式を変形すると下記のようになります。


\begin{align}
Ax&=b\\\
  x&=A^{-1}b
\end{align}

つまり、 A^{-1}  bをかけたものが解になりうるからです。 (なお、 A^{-1}=0となるケースがある為、常に解があるわけではない。次回以降説明予定)

コンピュータと相性が良い

上記の通り、行列で連立一次方程式を解くには、 A^{-1} を求めます。 具体的な手段として、逆行列を求めるには、 余因子展開ガウスの消去法 などがあります。

余因子展開も、ガウスの消去法も本を読みながら手で計算してみましたが、非常に手間のかかる計算ですw。 しかし、計算は大変ですが、計算方法(アルゴリズム)は明確かつ単純です。つまり、プログラム化が簡単で、 コンピュータと相性が良いという事になります。 (次回あたり、実際にNumPyで書いてみようかと思います。)

まとめ

今回は短いですが、イントロということでここまでにしておきます。😁

  • n元連立一次方程式は、n次元の行列とベクトルを使って表現できる。
  • 係数行列の逆行列( A^{-1}) を求めることで、方程式の解が求まる。

次回は、余因子展開を使って、方程式を解いてみようと思います。