問題
numpy.linalg.linalg.LinAlgError : Singular matrix
といったエラーが出てきました。(実際はもうちょっと長いですが最後だけ切り出してきました)
原因
プログラムが悪いというよりは行列の性質上の問題です。逆行列というのは常に存在するわけではなく、行列によっては存在しない場合もあります。
この記事に書いている通り、行や列同士が線形結合の関係、即ち、ある行(列)に何かをかけたら別の行(列)と等しくなるということ、が成り立つときはランク落ちが起きるので逆行列は存在しません。
ちなみにランク落ちというのは行列式が0になるということです。どこかの行(列)の要素が全て0になると行列式は0になります。
例
2行目 - 1行目 x 2 または 3行目 - 1行目 x 3
の計算をすると2・3列目がゼロになります。