配列 ベクトル 行列 統計

Python で行列のジョルダン標準形を求める - NumPy と SymPy の応用

最終更新日 2023.02.18

Python で行列のジョルダン標準形を求めるには NumPy と SymPy をくみあわせます。

import numpy
from sympy import Matrix

array = numpy.array([[5, 4, 2, 1], [0, 1, -1, -1], [-1, -1, 3, 0], [1, 1, -1, 2]])

matrix = Matrix(array)

P, Jordan = matrix.jordan_form()

print(Jordan)

# Matrix([[1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 4, 1], [0, 0, 0, 4]])

NumPy でつくった配列を SymPy の Matrix で行列にして、jordan_form 関数をつかう。この関数は P とジョルダン標準形のタプルを返します。

ソースコードに使った行列はウィキペディアより参考にしました。