固有値と固有ベクトル#
行列の対角化#
\(p\)次正方行列\(A\)について、
となるような(\(P^{-1} A P\)が対角行列となるような)正則行列\(P\)と対角行列\(\Lambda\)を求めることを\(A\)の対角化という。そしてこのような\(P\)と\(\Lambda\)が存在するとき、\(A\)は対角化可能という。
例:\(n\)乗の計算がラクになる
なので
となる。この\(\Lambda\)は固有値を求めることで得られる。
固有値#
定義#
\(n\)次の正方行列\(A\)に対して
が成り立つとき、スカラー\(\lambda\)を\(A\)の固有値(eigenvalue)といい、 \(n\)次元ベクトル\(\b{x} (\neq \b{o})\)を\(A\)の\(\lambda\)に対応する固有ベクトル(eigenvector)と呼ぶ。
固有方程式#
上の式は
と表すことができる(もちろん\((\lambda I - A) \b{x} = \b{o}\)も可)
\(\b{x} \neq \b{o}\)であるためには
でなければならない。この式を 固有方程式 あるいは 特性方程式 と呼び、固有値は固有方程式の解として求める。
固有多項式(特性多項式)#
\(n\)次正方行列\(A\)に対し、
で定義される変数\(t\)についての多項式\(\phi_A(\lambda)\)を、行列\(A\)の固有多項式 または 特性多項式という。
固有値の計算#
例1. 対角行列
対角行列の固有値は対角成分になる。
なら
より
なので解は
import numpy as np
A = np.array([
[4, 0],
[0, 3],
])
lambdas, vectors = np.linalg.eig(A)
print(f"""
λ={lambdas}
x1={vectors[:, 1].round(3)}
x2={vectors[:, 0].round(3)}
""")
λ=[4. 3.]
x1=[0. 1.]
x2=[1. 0.]
例2.
なら
よって\(\lambda = 2, 1\)
import numpy as np
A = np.array([
[3, -2],
[1, 0],
])
lambdas, vectors = np.linalg.eig(A)
print(f"""
λ={lambdas}
x1={vectors[:, 1].round(3)}
x2={vectors[:, 0].round(3)}
""")
λ=[2. 1.]
x1=[0.707 0.707]
x2=[0.894 0.447]
固有ベクトルの計算#
固有値が求まれば、あとは定義にあうベクトルを求めるのみ。
例1.
の場合、\(\lambda = 1, 2\)なので
まず\(\lambda = 1\)の場合
なので
これを解き、\(0\)以外の任意の数\(s\)を使って表すと
となる
\(\lambda = 2\)の場合
の場合
より、\(\lambda = 1, -1\)が求まる。(それぞれ\(\lambda_1, \lambda_2\)とおくことにする)
\(\lambda_1 = 1\)に対応する固有ベクトルを\(\b{x}=(x_1,x_2)^\top\)とおいて次のように求める
より\(-2 x_1 = x_2\)という関係性になるので、変数\(s\)を使って次のように表す。
同様に、\(\lambda_2 = -1\)に対応する固有ベクトルを\(\b{y}=(y_1, y_2)^\top\)とおいて次のように求める
より\(y_1 = -y_2\)という関係性なので、変数\(t\)を使って
となる。
\(s\)や\(t\)は任意の値でよいので、固有ベクトルの長さが1になるように定めると、固有ベクトルは
となる。
import numpy as np
A = np.array([
[-3, -2],
[4, 3],
])
lambdas, vectors = np.linalg.eig(A)
print(f"""
λ={lambdas}
x={vectors[:, 1].round(3)}
y={vectors[:, 0].round(3)}
""")
λ=[-1. 1.]
x=[ 0.447 -0.894]
y=[-0.707 0.707]
対象行列の固有値は負をとらない
固有値に0がある(正定値じゃない)と、ランクが下がり、逆行列をもたない
ケイリー・ハミルトンの定理#
ケイリー・ハミルトンの定理
\(A\)の固有多項式を\(\phi_A(t)\)とするとき
になる
例:
2次正方行列
の場合、固有多項式は
なので
という形になる。 実際に計算してみると
となる。
→ \(n\)乗を計算するときに計算量を抑えられる
例えばケイリー・ハミルトンの定理から\(A^3 - A + 2I = O\)がわかっている状況で\(A^7\)を求めたいとする。
\(A^3 = A - 2I\)だから、3乗をくくりだせば
となり、行列積の計算としては\(A^2\)だけを計算すれば済む。