numpyで中間固有値を計算するにはどうすればよいですか?
これは正しい方法ですか?
import numpy as np
(1/a.ndim)*np.trace(a)
a numpy 行列です。
numpyで中間固有値を計算するにはどうすればよいですか?
これは正しい方法ですか?
import numpy as np
(1/a.ndim)*np.trace(a)
a numpy 行列です。
そのコードは、単語「中間」のほとんどの定義に対して中間固有値を計算しません (ただし、2x2 行列では偶然に機能します)。
固有値の平均 (記述したコードが最も近いもの) が必要な場合は、次を使用できます。
import numpy as np
def mean_eigenvalue(a):
return np.trace(a)/len(a)
a が NxN 行列であると仮定します。これは、トレースが固有値の合計であるためです。そのため、行列のサイズ (次元ではなく、常に 2 である必要があります) で除算すると、平均が得られます。
固有値の中央値が必要な場合 (行列のサイズが奇数の場合は固有値の 1 つです。それ以外の場合は 2 つの値の中間です)、次を使用できます。
import numpy as np
def median_eigenvalue(a):
return np.median(np.linalg.eigvals(a))
2x2 行列の場合、これら 2 つの値は同じであることに注意してください。