Pythonで逆行列を求めたい時にnumpyでさくっとできるようメモ
関数定義
ndarrayを引数にとり、その逆行列を返却する関数を定義します
import numpy as np
def to_inv(matrix: np.ndarray) -> np.ndarray:
return np.linalg.inv(matrix)
p = np.array([
[-1, 1],
[4, 1]
])
to_inv(p)
> array([[-0.2, 0.2],
[ 0.8, 0.2]])
分数で取得したい
要件によっては分数で逆関数が欲しい場合もあるかもしれません。
import fractions
np.set_printoptions(formatter={'all':lambda x: str(fractions.Fraction(x).limit_denominator())})
np.set_printoptionsで表示形式を変更します。
to_inv(p)
> array([[-1/5, 1/5],
[4/5, 1/5]])
あー、数学難しいなあ