[Python]固有値、固有ベクトルを求める
eigen関数を使う。固有値、固有ベクトルを求めたい行列を引数に与えると、固有値と固有ベクトルが一緒に返ってくる。
以下に求めた例を示す。見てのとおり、対称行列でなくても求めることができる。
>>> import numpy as np
>>> mxaa = np.array([[3, -2], [1, 0]])
>>> print(mxaa)
[[ 3 -2]
[ 1 0]]
>>> l, mxxx = np.linalg.eig(mxaa)
>>> print(l)
[2. 1.]
>>> print(mxxx)
[[0.89442719 0.70710678]
[0.4472136 0.70710678]]
1つ目の戻り値が固有値、2つ目が固有ベクトル値。例えば1つ目の固有値と固有ベクトルを取り出すには、以下のようにする。
>>> l[0]
2.0
>>> mxxx[:, 0]
array([0.89442719, 0.4472136 ])
2つ目の固有値と固有ベクトル。
>>> l[1]
1.0
>>> mxxx[:, 1]
array([0.70710678, 0.70710678])
以下、2つの行列の固有値と固有ベクトルを求めた例。
>>> mxaa = np.array([[6, -3, 5], [-1, 4, -5], [-3, 3, -4]])
>>> print(mxaa)
[[ 6 -3 5]
[-1 4 -5]
[-3 3 -4]]
>>> l, mxxx = np.linalg.eig(mxaa)
>>> print(l)
[3. 2. 1.]
>>> print(mxxx)
[[ 7.07106781e-01 -3.01511345e-01 -3.49387479e-15]
[ 7.07106781e-01 -9.04534034e-01 8.57492926e-01]
[ 4.54569491e-16 -3.01511345e-01 5.14495755e-01]]
>>> mxaa = np.array([[3, -1, 1], [0, 2, 1], [0, 0, 3]])
>>> print(mxaa)
[[ 3 -1 1]
[ 0 2 1]
[ 0 0 3]]
>>> l, mxxx = np.linalg.eig(mxaa)
>>> print(l)
[3. 2. 3.]
>>> print(mxxx)
[[1. 0.70710678 0. ]
[0. 0.70710678 0.70710678]
[0. 0. 0.70710678]]
« [Octave]固有値、固有ベクトルを求める | トップページ | [R]平均(「まずはこの一冊から 意味が分かる統計学」(ペレ出版)、p.27) »
「Python」カテゴリの記事
- [Python]コマンドラインでバージョンを確認する(2025.02.06)
- [Python]文字列のハッシュ値を得る(2025.02.03)
- [Python]等差数列を作成する(2023.06.05)
- [Python]連立一次方程式を解く(2023.04.26)
- [Python]ファイルのハッシュ値を得る(2023.04.15)
« [Octave]固有値、固有ベクトルを求める | トップページ | [R]平均(「まずはこの一冊から 意味が分かる統計学」(ペレ出版)、p.27) »

コメント