【Python入門】行列式の計算|det()関数を学ぶ

行列式の計算|det()関数を学ぶ_アイキャッチ プログラミング

※ 当サイトはアフィリエイト広告を利用しています。

levtech-ad
スポンサーリンク

「行列式」は、Pythonで簡単に計算することができます。

本記事では、Pythonを使用した行列式の計算方法について、詳しくご説明します。

こんな人に読んでほしい
  • Python初心者の人
  • Pythonを使用した行列式の計算方法について学びたい人
levtech-ad

行列式

行列式(determinant)とは、正方行列に定義される指標で、線形変換による空間の拡大率を表しています。

2次正方行列に対しては、下式のようにたすき掛け(サラスの方法)で計算されます。

\(\begin{vmatrix} ab \\ cd \end{vmatrix}=ad-bc\)

また任意の正方行列の行列式に対し、その転置行列の行列式は等しくなります。

scipy.linalg.det()

SciPyのscipy.linalg.det()を使用すると、引数に指定した行列の行列式を計算することができます。

#input
import numpy as np
from scipy.linalg import det

x = np.array([[ 9, 7],
              [-2, 5]])

tx = x.T

det_x = det(x)
det_tx = det(tx)

print("xの行列式  :{}".format(det_x))
print("転置xの行列式:{}".format(det_tx))
#output
xの行列式  :59.0
転置xの行列式:59.0

手計算でも容易に計算可能な、3次正方行列でも確認してみます。

#input
import numpy as np
from scipy.linalg import det

x = np.array([[ 3, -9,  5],
              [-2,  5, -6],
              [ 7, -2,  1]])

tx = x.T

det_x = det(x)
det_tx = det(tx)

print("xの行列式  :{}".format(det_x))
print("転置xの行列式:{}".format(det_tx))
#output
xの行列式  :184.0
転置xの行列式:184.0

高次元行列の行列式

次に、NumPyのnumpy.random.randint()関数を使用して、高次元行列をランダムに作成し、その行列式を計算してみます。

#input
import numpy as np
from scipy.linalg import det

# 乱数シードを1に設定
np.random.seed(1)

# 5次元正方行列の作成(数値は-99~99)
x = np.random.randint(-99, 100, (5, 5))

print(x)

det_x = det(x)
print("{:.3e}".format(det_x))
#output
[[-62  41 -27  38  34] 
 [-20  93  45  30 -28] 
 [ 35 -74  79 -79   2] 
 [ 47  40  57  58  43] 
 [-49 -31  -3 -13  42]]
4.250e+08

行列式の値は、その行列が線形独立の場合には上記のように、0以外の値となりますが、線形従属の場合、0を取ります。

以下にランダムな3次正方行列を100万個生成し、そのうち何個が線形従属となるか確認してみます。

#input
import numpy as np
from scipy.linalg import det

# 乱数シードを1に設定
np.random.seed(1)

# jの初期値
j = 0

# 3次元正方行列を100万個作成(数値は-99~99)
for i in range(10**5):
    x = np.random.randint(-99, 100, (3, 3))
    if det(x) ==0:
        j += 1
print("線形従属の個数:{}".format(j))
#output
線形従属の個数:2

指定した数値範囲や乱数シードによりますが、上記条件の場合、線形従属となる行列は、100万個のうち、たった2個であることが検証できました。

まとめ

この記事では、Pythonを使用した行列式の計算方法について、ご説明しました。

本記事を参考に、ぜひ試してみて下さい。

参考

Python学習用おすすめ教材

Pythonの基本を学びたい方向け

統計学基礎を学びたい方向け

Pythonの統計解析を学びたい方向け

おすすめプログラミングスクール

Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。

私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。

現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。

無料体験ができますので、まずは試してみてください!

\まずは無料体験!/
スポンサーリンク
タイトルとURLをコピーしました