配列 ベクトル 行列 統計

NumPyで行列式と逆行列を計算する

最終更新日 2023.02.18

行列式は linalg の det 関数、逆行列は linalg の inv 関数で計算します。

行列式:

import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[3, 1, 5], [1, 1, 1], [0, 1, 2]])

d = np.linalg.det(A)
e = np.linalg.det(B)

print(d)  # -2.0000000000000004
print(e)  # 6.0

逆行列:

import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[3, 1, 5], [1, 1, 1], [0, 1, 2]])

C = np.linalg.inv(A)
D = np.linalg.inv(B)

print(C)
# [[-2.   1. ]
#  [ 1.5 -0.5]]

print(D)
# [[ 0.16666667  0.5        -0.66666667]
#  [-0.33333333  1.          0.33333333]
#  [ 0.16666667 -0.5         0.33333333]]

もとの行列と逆行列の積

逆行列はもとの行列とかけて単位行列になる行列です。上で求めた逆行列が本当に逆行列かどうか確かめます。

import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.linalg.inv(A)

C = np.dot(A, B)
D = np.dot(B, A)

print(C)
# [[1.0000000e+00 0.0000000e+00]
#  [8.8817842e-16 1.0000000e+00]]

print(D)
# [[1.00000000e+00 0.00000000e+00]
#  [1.11022302e-16 1.00000000e+00]]

8.8817842e-16 はマイナス 16 乗で、ほぼ 0 とみなしていいでしょう。わずかな誤差はありますが、ほぼ単位行列です。