Pythonで逆行列を求める方法を徹底解説!

逆行列とは何か?

逆行列とは、行列Aが与えられたとき、Aと掛け合わせた結果が単位行列(対角成分が1で、他が0の行列)になるような行列を指します。

逆行列は、線形方程式を解く際や、行列の固有値を求める際などに利用されます。

Pythonでの逆行列の求め方

Pythonでは、numpyというライブラリを利用することで、簡単に逆行列を求めることができます。

import numpy as np
# 逆行列を求めたい行列Aを作成する
A = np.array([[1, 2], [3, 4]])
# Aの逆行列を求める
A_inv = np.linalg.inv(A)
print(A_inv)

上記のように、numpy.linalg.inv()関数を利用することで、行列Aの逆行列が求められます。

Pythonでの逆行列が求められないケースとその原因

ただし、すべての行列に対して逆行列が求められるわけではありません。逆行列が求められないケースとしては、以下のようなものがあります。

  • 行列が正則でない場合
  • 行列の次数が大きすぎる場合

逆行列を用いた計算例

逆行列を用いた計算例としては、以下のようなものがあります。

例えば、以下の2つの方程式があるとします。

x + 2y = 5

3x + 4y = 11

これを行列で表すと、以下のようになります。

A = np.array([[1, 2], [3, 4]])
b = np.array([5, 11])
# Ax = bとなるxを求める
x = np.dot(np.linalg.inv(A), b)
print(x)

このプログラムを実行すると、x=1, y=2という解が得られます。

Pythonで逆行列を求める際の注意点

Pythonで逆行列を求める際には、以下の点に注意が必要です。

  • 行列が正則であることを確認すること
  • 行列の次数が大きすぎないようにすること

Pythonで逆行列を求めるためのライブラリとその活用方法

Pythonで逆行列を求めるためのライブラリとしては、numpyの他にも、scipyやsympyなどがあります。

scipyを使った逆行列の求め方は、以下のようになります。

import numpy as np
from scipy import linalg
# 逆行列を求めたい行列Aを作成する
A = np.array([[1, 2], [3, 4]])
# Aの逆行列を求める
A_inv = linalg.inv(A)
print(A_inv)

sympyを使った逆行列の求め方は、以下のようになります。

import sympy
# 逆行列を求めたい行列Aを作成する
A = sympy.Matrix([[1, 2], [3, 4]])
# Aの逆行列を求める
A_inv = A.inv()
print(A_inv)

まとめ

Pythonで逆行列を求める方法について、以上で解説しました。

逆行列を求める際には、行列が正則であることや、行列の次数が大きすぎないことに注意しながら、numpyやscipy、sympyなどのライブラリを活用してください。