« [Octave]固有値、固有ベクトルを求める | トップページ | [R]平均(「まずはこの一冊から 意味が分かる統計学」(ペレ出版)、p.27) »

2023年1月21日 (土)

[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」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« [Octave]固有値、固有ベクトルを求める | トップページ | [R]平均(「まずはこの一冊から 意味が分かる統計学」(ペレ出版)、p.27) »

無料ブログはココログ

■■

■■■