エバンスの雑記帳

MBA、Python、子育て、将棋、文房具、その他

Pythonを使って「マンガ線形代数入門」の練習問題を解く

こんにちは、文系なのにPythonにハマっているエバンスです。仕事で逆行列に触れる機会があり、知識がない者でも読みやすい入門書を探していたところ「マンガ線形代数入門」に辿り着きました。

bookclub.kodansha.co.jp

マンガなのに講談社ブルーバックスシリーズ、これは!ということで購入(電子書籍版)。読み進めたところ、章の終わりに練習問題が。。。

最初は解く気がせず、答えを見て納得しつつ読み飛ばしていたのですが、折角だから Python に解いてもらおう、ということでブラウザ上で Python3 のコードを書いて実行できる paiza.IO にて、それぞれ解いてみました。

paiza.io

第2章練習問題

行列の計算には、Pythonでは Numpy を使うことが多いようです。Numpy 内では選択肢が複数あるようで大きくは array (配列)派か matrix (行列)派に分かれるみたいです。今回は難しいことは考えずに行列用の matrix を採用しました。

この章の練習問題は、連立方程式を行列を使って解くものです。書いたコードを載せておきます。

第3章練習問題

1は2×2の行列の逆行列を求める問題。2は2×2の行列入りの方程式を解く問題。求める行列が、与えられた行列の右側か左側かで計算の過程が変わるのがおもしろいですよね。

第4章練習問題

連立方程式を行列にの形にして解いてみる問題。ちなみに、あえて解がない方程式が出題されていて、解がない場合は不定不能かを判定するべきなのですが、面倒なので「不定 or 不能」と解けないことだけ明示しています。

第5章練習問題

座標上に、格子状に9点(x: 0, 1, 2 と y: 0, 1, 2 の組み合わせ)が与えられており、それを2×2の行列で1次変換する問題。

本当はmatplotlibを使って変換前後を比較したかったものの、paiza.IO上でエラーが出たので視覚化は断念。

まとめ

「行列の計算は機械の方が得意」と本書の中にも記載があったとおり、コードにすると非常にあっけないというのが感想です。Python(というか Numpy?)に感謝ですね!