Python/Numpyを使用して行列のジョルダン標準形を計算する方法


方法1: Numpyのlinalg.eig関数を使用する方法

import numpy as np
# 行列の定義
A = np.array([[1, 1], [0, 1]])
# 固有値と固有ベクトルの計算
eigenvalues, eigenvectors = np.linalg.eig(A)
# ジョルダン標準形の計算
J = np.diag(eigenvalues)  # 固有値を対角行列に配置
for i in range(len(eigenvectors)):
    if i < len(eigenvectors) - 1 and np.allclose(eigenvectors[i], eigenvectors[i + 1]):
        J[i, i + 1] = 1  # 重複する固有ベクトルがある場合、上三角行列に1を配置
print("行列 A:\n", A)
print("ジョルダン標準形 J:\n", J)

方法2: SciPyのlinalg.schur関数を使用する方法

import numpy as np
from scipy.linalg import schur
# 行列の定義
A = np.array([[1, 1], [0, 1]])
# シューア分解を計算
T, U = schur(A)
# ジョルダン標準形の計算
J = T
print("行列 A:\n", A)
print("ジョルダン標準形 J:\n", J)

これらの方法を使用すると、PythonとNumpyを介して行列のジョルダン標準形を計算することができます。これにより、行列の固有値と固有ベクトルの情報が得られ、行列の特性を分析するのに役立ちます。