行列の固有値と固有ベクトルは、Pythonで簡単に出力することができます。
本記事では、Pythonを使用した行列の固有値と固有ベクトルの出力方法について、詳しくご説明します。
固有値と固有ベクトル
固有値(eigenvalue)とは、0でないベクトルを線形写像した際の拡大率(スカラー)のことです。
このとき、0でないベクトルのことを固有ベクトル(eigenvector)といいます。
numpy.linalg.eig()
NumPyのnumpy.linalg.eig()を使用すると、引数に指定した行列の固有値と固有ベクトルをタプルで出力することができます。
結果のタプルは、インデックス0が固有値、インデックス1が固有ベクトルになります。
#input
import numpy as np
np.set_printoptions(precision=3)
np.random.seed(3)
A = np.random.randint(0,10,(2,2))
print("行列A:\n{}\n".format(A))
A_eig = np.linalg.eig(A)
print("固有値:\n{}\n".format(A_eig[0]))
print("固有ベクトル\n{}".format(A_eig[1]))
#output
行列A:
[[8 9]
[3 8]]
固有値:
[13.196 2.804]
固有ベクトル
[[ 0.866 -0.866]
[ 0.5 0.5 ]]
numpy.linalg.eigvals()
NumPyのnumpy.linalg.eigvals()を使用すると、引数に指定した行列の固有値を出力することができます。
#input
import numpy as np
np.set_printoptions(precision=3)
np.random.seed(3)
A = np.random.randint(0,10,(2,2))
print("行列A:\n{}\n".format(A))
A_eig = np.linalg.eigvals(A)
print("固有値:\n{}\n".format(A_eig))
#output
固有値:
[13.196 2.804]
scipy.linalg.eig()
SciPyのscipy.linalg.eig()を使用すると、引数に指定した行列の固有値と固有ベクトルを複素数型のタプルで出力することができます。
結果のタプルは、インデックス0が固有値、インデックス1が固有ベクトルになります。
#input
import numpy as np
np.set_printoptions(precision=3)
from scipy import linalg
A = np.array([[-7 + 3j, 7 + 6j],
[-4 + 5j, 2 - 4j]])
print("行列A:\n{}\n".format(A))
A_eig = linalg.eig(A)
print("固有値:\n{}\n".format(A_eig[0]))
print("固有ベクトル\n{}".format(A_eig[1]))
#output
行列A:
[[-7.+3.j 7.+6.j]
[-4.+5.j 2.-4.j]]
固有値:
[-3.921+6.712j -1.079-7.712j]
固有ベクトル
[[ 0.886+0.j -0.122+0.589j]
[ 0.457+0.078j 0.799+0.j ]]
scipy.linalg.eigvals()
SciPyのscipy.linalg.eigvals()を使用すると、引数に指定した行列の固有値を複素数型で出力することができます。
#input
import numpy as np
np.set_printoptions(precision=3)
from scipy import linalg
np.random.seed(3)
A = np.random.randint(0,10,(4,4))
print("行列A:\n{}\n".format(A))
A_eig = linalg.eigvals(A)
print("固有値:\n{}\n".format(A_eig))
#output
行列A:
[[8 9 3 8]
[8 0 5 3]
[9 9 5 7]
[6 0 4 7]]
固有値:
[22.779+0.j -6.936+0.j 0.989+0.j 3.167+0.j]
まとめ
この記事では、Pythonを使用した固有値や固有ベクトルの確認方法について、ご説明しました。
本記事を参考に、ぜひ試してみて下さい。
参考
Python学習用おすすめ教材
Pythonの基本を学びたい方向け
統計学基礎を学びたい方向け
Pythonの統計解析を学びたい方向け
おすすめプログラミングスクール
Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。
私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。
現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。
無料体験ができますので、まずは試してみてください!