Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

固有値と固有ベクトル

固有値と固有ベクトル

定義

nn次の正方行列AAに対して

Ax=λxA \boldsymbol{x} = \lambda \boldsymbol{x}

が成り立つとき、スカラーλ\lambdaAA固有値(eigenvalue)といい、 nn次元ベクトルx(0)\boldsymbol{x} (\neq \boldsymbol{0})AAλ\lambdaに対応する固有ベクトル(eigenvector)と呼ぶ。

線形変換を使う定義

ベクトル空間VVから自分自身への線形写像を 線形変換 という。

「線形変換f:VVf:V\to Vが与えられたとき、あるベクトルx0x \neq 0があって、ffxxxxの定数倍λx\lambda xに写すようにできるだろうか?」が固有値の議論の出発点となる

線形写像は具体的には行列で表すことができるため(線形写像の行列表現)、 f(x)=λxf(\boldsymbol{x})=\lambda \boldsymbol{x}Ax=λxA\boldsymbol{x}=\lambda \boldsymbol{x}と等しい。

固有空間

証明

(1) 0V(λ)\boldsymbol{0}\in V(\lambda)について

x=0\boldsymbol{x} = \boldsymbol{0}も等式f(x)=λxf(\boldsymbol{x})=\lambda \boldsymbol{x}を満たす

(2) 和について

x1,x2V\boldsymbol{x}_1, \boldsymbol{x}_2 \in Vに対し

f(x1+x2)=f(x1)+f(x2)=λx1+λx2=λ(x1+x2)f(\boldsymbol{x}_1 + \boldsymbol{x}_2) = f(\boldsymbol{x}_1) + f(\boldsymbol{x}_2) = \lambda \boldsymbol{x}_1 + \lambda \boldsymbol{x}_2 = \lambda (\boldsymbol{x}_1 + \boldsymbol{x}_2)

より、

x1+x2V(λ)\boldsymbol{x}_1 + \boldsymbol{x}_2 \in V(\lambda)

(3) 定数倍について

xV,cR\boldsymbol{x} \in V, c \in \mathbb{R}に対し、

f(cx)=cf(x)=cλx=λ(cx)f(c\boldsymbol{x}) = c f(\boldsymbol{x}) = c \lambda \boldsymbol{x} = \lambda (c\boldsymbol{x})

より

cxV(λ)c \boldsymbol{x} \in V(\lambda)

よって部分空間の3条件(1)~(3)を満たすため、V(λ)V(\lambda)VVの部分空間である

固有空間は、ffに対応するnn次正方行列AAnn次単位行列IIを用いて

Ker(AλI)={xV(AλI)x=0}\operatorname{Ker}(A - \lambda I) = \{\boldsymbol{x} \in V \mid (A - \lambda I) \boldsymbol{x} = 0 \}

と表すこともできる。

広義固有空間

ある自然数kkに対して

(AλI)kx=0(A - \lambda I)^k \boldsymbol{x} = 0

を満たすxRn\boldsymbol{x} \in \mathbb{R}^nAAの固有値λ\lambdaに対する 広義固有ベクトル (generalized eigenvector) という。

固有値λ\lambdaに対する広義固有ベクトル全体に0\boldsymbol{0}を加えた集合

W~(λ)={xRnkN,(AλI)kx=0}\widetilde{W}(\lambda) = \{ \boldsymbol{x} \in \mathbb{R}^n \mid \exists k \in \mathbb{N}, (A - \lambda I)^k \boldsymbol{x} = 0 \}

λ\lambdaに対する 広義固有空間 (generalized eigenspace) という。

広義固有空間もRn\mathbb{R}^nの部分空間である

x,yW~(α),cC とする。このとき, (AαI)kx=0,(AαI)ly=0\begin{aligned} & \boldsymbol{x}, \boldsymbol{y} \in \widetilde{W}(\alpha), c \in \mathbb{C} \text { とする。このとき, } \\ & \qquad(A-\alpha I)^k \boldsymbol{x}=\mathbf{0}, \quad(A-\alpha I)^l \boldsymbol{y}=\mathbf{0} \end{aligned}

となる自然数 k,lk, l がとれる.すると。

(AαI)k+l(x+y)=0(AαI)k(cx)=c(AαI)kx=0\begin{aligned} & (A-\alpha I)^{k+l}(\boldsymbol{x}+\boldsymbol{y})=\mathbf{0} \\ & (A-\alpha I)^k(c \boldsymbol{x})=c(A-\alpha I)^k \boldsymbol{x}=\mathbf{0} \end{aligned}

により、 x+y,cxW~(α)\boldsymbol{x}+\boldsymbol{y}, c \boldsymbol{x} \in \widetilde{W}(\alpha) である. よって W~(α)\widetilde{W}(\alpha) は部分空間である。

固有値の必要十分条件

固有方程式

Ax=λxA \boldsymbol{x} = \lambda \boldsymbol{x}

は単位行列IIを用いて

(AλI)x=0(A - \lambda I) \boldsymbol{x} = \boldsymbol{0}

と表すことができる(もちろん(λIA)x=0(\lambda I - A) \boldsymbol{x} = \boldsymbol{0}も可)。

斉次連立一次方程式の解が非自明な解 x0\boldsymbol{x} \neq \boldsymbol{0}を持つことと、行列式det(AλI)=0\det(A-\lambda I) = 0となることは同値であるので、固有ベクトルがx0\boldsymbol{x} \neq \boldsymbol{0}であるためには

det(AλI)=0\det(A - \lambda I) = 0

でなければならない。この式を 固有方程式 あるいは 特性方程式 と呼び、固有値は固有方程式の解として求める。

固有多項式(特性多項式)

nn次正方行列AAに対し、

ϕA(λ)=det(AλI)=det(a11λa12a1na21a22λa2nan1annλ)\phi_A(\lambda) = \det( A - \lambda I) = \det\left(\begin{array}{cccc} a_{11}-\lambda & a_{12} & \cdots & a_{1 n} \\ a_{21} & a_{22}-\lambda & \cdots & a_{2 n} \\ \vdots & & \ddots & \vdots \\ a_{n 1} & \cdots & \cdots & a_{n n}-\lambda \end{array}\right)

で定義される変数λ\lambdaについての多項式ϕA(λ)\phi_A(\lambda)を、行列AA固有多項式 または 特性多項式という。

固有値・固有ベクトルの求め方

例題
A=(1122)A = \begin{pmatrix} 1 & 1\\ 2 & 2 \end{pmatrix}

とする。

AAの固有値と、各固有値に属する1つの固有ベクトルと、固有空間V(λ)V(\lambda)を求めよ

固有値を求める

(AλE)x=0(A-\lambda E)x = 0が非自明な解x0x\neq 0を持つためにはdet(AλE)=0\det(A - \lambda E)=0である必要があるため、そのようなλ\lambdaを求める(固有方程式を解く)

(もしAAが対角行列などの行列式を求めやすい形状の行列であった場合、この部分が少し楽になるので活用しよう)

det(AλI)=det(1λ122λ)=(1λ)(2λ)2=23λ+λ22=λ23λ=(λ3)λ=0\begin{aligned} \det(A - \lambda I) &= \det \begin{pmatrix} 1 - \lambda & 1\\ 2 & 2 - \lambda \end{pmatrix}\\ &= (1 - \lambda)(2 - \lambda) - 2\\ &= 2 - 3\lambda + \lambda^2 - 2\\ &= \lambda^2 - 3\lambda\\ &= (\lambda - 3) \lambda &= 0 \end{aligned}

なので、λ=0,3\lambda = 0, 3

固有空間・固有ベクトルを求める

固有値に対応するベクトルを求める

λ=0\lambda = 0の場合:

Ax=λxAx = \lambda x

(1122)(x1x2)=λ(x1x2)\begin{pmatrix} 1 & 1\\ 2 & 2 \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \end{pmatrix} = \lambda \begin{pmatrix} x_1 \\ x_2 \end{pmatrix}

であり

{x1+x2=02x1+2x2=0\begin{cases} x_1 + x_2 = 0\\ 2 x_1 + 2 x_2 = 0 \end{cases}

となる。

これを解くと

x1=x2x2=x1x_1 = -x_2\\ x_2 = -x_1

つまり

x=(x1x1)\boldsymbol{x} = \begin{pmatrix} x_1 \\ -x_1 \end{pmatrix}

であるため、未知の数cRc\in\mathbb{R}をもちいて

x=c(11)\boldsymbol{x} = c \begin{pmatrix} 1 \\ -1 \end{pmatrix}

と表すことができる。そのため、例えば (11)\begin{pmatrix}1 \\ -1\end{pmatrix}は固有値0に属する固有ベクトルのひとつになる。

固有空間は

V(0)={c(11)cR}V(0) = \left . \left\{ c \begin{pmatrix} 1 \\ -1 \end{pmatrix} \right | c\in \mathbb{R} \right\}

となる。

λ=3\lambda = 3の場合:

Ax=λxAx = \lambda x

{x1+x2=3x12x1+2x2=3x2\begin{cases} x_1 + x_2 = 3x_1\\ 2 x_1 + 2 x_2 = 3x_2 \end{cases}

となる。

これを解くと

x2=2x1x_2 = 2 x_1

であるため、

x=(x12x1)=c(12),cR\boldsymbol{x} = \begin{pmatrix} x_1 \\ 2 x_1 \end{pmatrix} = c \begin{pmatrix} 1 \\ 2 \end{pmatrix}, c\in \mathbb{R}

となり、例えば(12)\begin{pmatrix}1 \\ 2\end{pmatrix}が固有値3の固有ベクトルの一つである。

固有空間V(λ)V(\lambda)

V(3)={c(12)cR}V(3) = \left . \left\{ c \begin{pmatrix} 1 \\ 2 \end{pmatrix} \right | c\in \mathbb{R} \right\}

となる。

numpy

numpyのnumpy.linalg.eig()の返り値はノルムが1になるように正規化されている

import numpy as np

A = np.array([
    [1, 1],
    [2, 2],
])

lambdas, vectors = np.linalg.eig(A)
print(f"""
λ={lambdas}
x1={vectors[:, 0].round(3)}
x1'={(vectors[:, 0].round(3) * -np.sqrt(2)).round(1)}
x2={vectors[:, 1].round(3)}
x2'={(vectors[:, 1].round(3) * -np.sqrt(5)).round(1)}
""")

λ=[0. 3.]
x1=[-0.707  0.707]
x1'=[ 1. -1.]
x2=[-0.447 -0.894]
x2'=[1. 2.]

np.array([1, -1]) / np.sqrt(2)
array([ 0.70710678, -0.70710678])

λ=0\lambda=0について、

x=15(12)(0.4470.894)\boldsymbol{x} = -\frac{1}{\sqrt{5}} \begin{pmatrix} 1 \\ 2 \end{pmatrix} \simeq \begin{pmatrix} 0.447 \\ 0.894 \end{pmatrix}

λ=3\lambda=3について、

x=12(11)(0.7070.707)\boldsymbol{x} = -\frac{1}{\sqrt{2}} \begin{pmatrix} 1 \\ -1 \end{pmatrix} \simeq \begin{pmatrix} -0.707 \\ 0.707 \end{pmatrix}

例1. 対角行列

対角行列の固有値は対角成分になる。

A=(4003)A = \begin{pmatrix} 4 & 0\\ 0 & 3 \end{pmatrix}

なら

ϕA(λ)=det(4λ003λ)=0\phi_A(\lambda) = \det \begin{pmatrix} 4 - \lambda & 0 \\ 0 & 3 - \lambda \end{pmatrix} = 0

より

(4λ)(3λ)=0(4 - \lambda)(3 - \lambda) = 0

なので解は

λ=4,3\lambda = 4, 3
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.

A=(3210)A = \begin{pmatrix} 3 & -2\\ 1 & 0 \end{pmatrix}

なら

ϕA(λ)=det(3λ21λ)=0=(3λ)(λ)(2)1=λ23λ+2=(λ2)(λ1)\begin{align} \phi_A(\lambda) &= \det \begin{pmatrix} 3 - \lambda & -2 \\ 1 & - \lambda \end{pmatrix} = 0 \\ &= (3 - \lambda) \cdot (- \lambda) - (-2) \cdot 1\\ &= \lambda^2 - 3 \lambda + 2\\ &= (\lambda - 2) (\lambda - 1) \end{align}

よってλ=2,1\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.

A=(3210)A = \begin{pmatrix} 3 & -2\\ 1 & 0 \end{pmatrix}

の場合、λ=1,2\lambda = 1, 2なので

まずλ=1\lambda = 1の場合

Ax=λx(3210)(x1x2)=(x1x2)\begin{align} A \boldsymbol{x} &= \lambda \boldsymbol{x} \\ \to \begin{pmatrix} 3 & -2\\ 1 & 0 \end{pmatrix} \begin{pmatrix} x_1\\ x_2 \end{pmatrix} &= \begin{pmatrix} x_1\\ x_2 \end{pmatrix} \end{align}

なので

3x12x2=x1x1=x2\begin{align} 3x_1 - 2x_2 &= x_1\\ x_1 &= x_2 \end{align}

これを解き、0以外の任意の数ssを使って表すと

x=s(11)\boldsymbol{x} = s \begin{pmatrix} 1\\ 1 \end{pmatrix}

となる。

そのため、固有空間W(λ)W(\lambda)

W(1)={s(11)sR}.W(1) = \left\{\left. s \binom{1}{1} \right\rvert\, s \in \boldsymbol{R} \right\} .

であり、固有空間のうちの一つの固有ベクトルが(11)\binom{1}{1}となる。

λ=2\lambda = 2の場合、

(3210)(x1x2)=2(x1x2)\begin{pmatrix} 3 & -2\\ 1 & 0 \end{pmatrix} \begin{pmatrix} x_1\\ x_2 \end{pmatrix} = 2 \begin{pmatrix} x_1\\ x_2 \end{pmatrix}
3x12x2=2x1x1=2x2\begin{align} 3x_1 - 2x_2 &= 2x_1\\ x_1 &= 2x_2 \end{align}
x=s(21)\boldsymbol{x} = s \begin{pmatrix} 2\\ 1 \end{pmatrix}
  • 対象行列の固有値は負をとらない

  • 固有値に0がある(正定値じゃない)と、ランクが下がり、逆行列をもたない

固有値を求めやすい行列

三角行列や対角行列は求めやすい

証明

AAが次のような上三角行列だったとする。

A=(a11a12a1n0a2200ann)A=\left(\begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1 n} \\ 0 & a_{22} & & \vdots \\ \vdots & \ddots & \ddots & \vdots \\ 0 & \cdots & 0 & a_{n n} \end{array}\right)

行列AλIA-\lambda Iの行列式(固有多項式)は対角成分の積で求められるため

φA(λ)=det(a11λa12a1n0a22λ00annλ)=(a11λ)(a22λ)(annλ)\varphi_A(\lambda)= \det \left(\begin{array}{cccc} a_{11}-\lambda & a_{12} & \cdots & a_{1 n} \\ 0 & a_{22}-\lambda & & \vdots \\ \vdots & \ddots & \ddots & \vdots \\ 0 & \cdots & 0 & a_{n n}-\lambda \end{array}\right) = (a_{11}-\lambda)(a_{22}-\lambda)\cdots(a_{nn}-\lambda)

となる。これを解くと、固有値はa11,a22,,anna_{11},a_{22},\cdots,a_{nn}と、対角成分である。

固有値の重複度

固有方程式の解の重複度を、固有値の 重複度 という。

固有値の重複度と固有空間の次元数には次のような関係がある

A=(1101)A = \begin{pmatrix} 1 & 1\\ 0 & 1 \end{pmatrix}

は、三角行列なので

det(AλI)=det(1λ101λ)=(1λ)2\det(A - \lambda I) = \det \begin{pmatrix} 1-\lambda & 1\\ 0 & 1-\lambda \end{pmatrix} = (1-\lambda)^2

と、λ=1\lambda = 1だけが固有値で、その重複度は2である。固有空間V(1)V(1)

V(1)={c(10)cR}V(1)=\left\{\left.c\binom{1}{0} \right\rvert\, c \in \boldsymbol{R}\right\}

この空間の次元は1である。

線形変換と表現行列の固有値は同じものになる。

証明

v1,,vnv_1, \cdots, v_nVV の 1 組の基底とする。 VV のベクトル xx をこの基底の 1 次結合 x=x1v1++xnvn\boldsymbol{x}=x_1 \boldsymbol{v}_1+\cdots+x_n \boldsymbol{v}_n と書く。そのとき、

f(x)=λx    A(x1xn)=λ(x1xn)f(x)=\lambda \boldsymbol{x} \iff A\left(\begin{array}{c}x_1 \\ \vdots \\ x_n\end{array}\right)=\lambda\left(\begin{array}{c}x_1 \\ \vdots \\ x_n\end{array}\right)

であるから、この定理の主張が成り立つ。

固有値・固有ベクトルに関する定理

固有値・固有ベクトルの存在

任意の正方行列について、「固有値・固有ベクトルは存在する」という解説と「固有値・固有ベクトルは存在するとは限らない」という解説がある。どちらが正しいのか・・・。

固有値・固有ベクトルは存在する

λ\lambda に関する nn 次方程式であるので、 代数学の基本定理によって、 複素数の範囲に解が存在することが保証される。

固有値と固有ベクトルの解説 ~ 具体例と性質 ~ (証明付)   - 理数アラカルト -

解があっても非自明な解とは限らないのでは

固有値・固有ベクトルは存在するとは限らない

川久保(2010)の反例

行列 A=(0110)A=\left(\begin{array}{rr}0 & 1 \\ -1 & 0\end{array}\right) で与えられる線形変換 A:R2R2A: R^2 \rightarrow R^2 を考える。

Ax=λxx=(xy)A x=\lambda x \quad x=\binom{x}{y}

をみたす λR\lambda \in Rx0\boldsymbol{x} \neq \mathbf{0} が存在したとすると、

(0110)(xy)=λ(xy)\left(\begin{array}{rr} 0 & 1 \\ -1 & 0 \end{array}\right)\binom{x}{y}=\lambda\binom{x}{y}

これより等式

{y=λxx=λy\left\{\begin{array}{r} y=\lambda x \\ -x=\lambda y \end{array}\right.

を得る。第1式を第2式に代入して

x=λ(λx)=λ2x ゆえに (λ2+1)x=0-x=\lambda(\lambda x)=\lambda^2 x \text { ゆえに } \quad\left(\lambda^2+1\right) x=0

となる. これより x=0x=0. これを第 1 式に代入して y=0y=0 となる. つまり x=0\boldsymbol{x}=\boldsymbol{0} である。固有ベクトルはゼロベクトルでないものをいうから,これは固有ベク トルではない。つまり,この行列には固有値も固有ベクトルも存在しない。

(川久保勝夫. (2010). 線形代数学 [新装版]. より)

固有ベクトルの1次独立性

証明

まずs=1s=1のとき、固有ベクトルはx10x_1\neq \mathbf{0}なので、明らかにc1x1=0    c1=0c_1 x_1 = \mathbf{0} \iff c_1 = 0なので1次独立である。

次にr2r \geq 2について、s=r1s = r - 1が1次独立だと仮定したときs=rs = rのときも1次独立となることを示す。

c1,,cnRc_1,\cdots,c_n\in \mathbb{R}について、

c1x1++csxs=0()c_1 \boldsymbol{x}_1 + \cdots + c_s \boldsymbol{x}_s = 0 \tag{$*$}

とおくと、()(*)に左からAAをかければ、Axi=λixiA x_i = \lambda_i x_iより

c1Ax1++csAxs=c1λ1x1++csλsxs=0c_1 A \boldsymbol{x}_1 + \cdots + c_s A \boldsymbol{x}_s = c_1 \lambda_1 \boldsymbol{x}_1 + \cdots + c_s \lambda_s \boldsymbol{x}_s = 0

他方、()(*)に左からλs\lambda_sをかければ、

c1λsx1++csλsxs=0c_1 \lambda_s \boldsymbol{x}_1 + \cdots + c_s \lambda_s \boldsymbol{x}_s = 0

となる。2つの式を引くと

c1(λ1λs)x1++cs(λsλs)xs=c1(λ1λs)x1++cs1(λs1λs)xs1=0\begin{aligned} &c_1 (\lambda_1-\lambda_s) \boldsymbol{x}_1 + \cdots + c_s (\lambda_s-\lambda_s) \boldsymbol{x}_s \\ &= c_1 (\lambda_1-\lambda_s) \boldsymbol{x}_1 + \cdots + c_{s-1} (\lambda_{s-1} -\lambda_s) \boldsymbol{x}_{s-1}\\ &= 0 \end{aligned}

となる。異なる固有値に属するs1s-1個の固有ベクトルx1,,xs1\boldsymbol{x}_1,\cdots, \boldsymbol{x}_{s-1}は1次独立であり、その係数はすべてゼロであるから、

c1(λ1λs)==cs1(λs1λs)=0c_1 (\lambda_1-\lambda_s) = \cdots = c_{s-1} (\lambda_{s-1} -\lambda_s) = 0

であり、すべての固有値λ1,,λs1\lambda_1, \cdots, \lambda_{s-1}が相異なるという仮定から、

c1==cs1=0c_1 = \cdots = c_{s-1} = 0

が導かれる。これらを()(*)に代入すれば

csxs=0c_s \boldsymbol{x}_s = 0

となり、固有ベクトルの定義よりxs0\boldsymbol{x}_s\neq \boldsymbol{0}であるため、cs=0c_s = 0である。

よってx1,,xs\boldsymbol{x}_1,\cdots,\boldsymbol{x}_sは1次独立である

三角化定理

線形変換ffの固有多項式ϕ(λ)\phi(\lambda)nn個の1次式の積に分解される

フロベニウスの定理

フロベニウスの定理 (Frobenius theorem)

ケイリー・ハミルトンの定理

ケイリー・ハミルトンの定理 - Wikipedia

例:

2次正方行列

A=(abcd)A=\left(\begin{array}{ll} a & b \\ c & d \end{array}\right)

の場合、固有多項式は

ϕA(λ)=det(AλI)=det(aλbcdλ)=(aλ)(dλ)bc=adaλdλ+λ2bc=λ2(a+d)λ+(adbc)\begin{align} \phi_A(\lambda) &= \det(A - \lambda I) = \det\left(\begin{array}{cc} a - \lambda & b \\ c & d - \lambda \end{array}\right)\\ &= (a - \lambda) (d - \lambda) - bc\\ &= ad - a \lambda - d \lambda + \lambda^2 - bc\\ &= \lambda^2 - (a + d) \lambda + (ad - bc)\\ \end{align}

なので

ϕA(A)=A2(a+d)A+(adbc)I=O\phi_A(A) = A^2-(a+d) A+(a d-b c) I = O

という形になる。 実際に計算してみると

A2(a+d)A+(adbc)I=(abcd)(abcd)a(abcd)d(abcd)+(adbc)I=(a2+bcab+bdac+cdbc+d2)(a2abacad)(adbdcdd2)+(adbc)I=(bcbdcdbc+d2ad)(adbdcdd2)+(adbc)I=(bcad00bcad)+(adbc)I=(0000)\begin{align} &A^2-(a+d) A+(a d-b c) I \\ &= \begin{pmatrix} a & b \\ c & d \end{pmatrix} \begin{pmatrix} a & b \\ c & d \end{pmatrix} - a \begin{pmatrix} a & b \\ c & d \end{pmatrix} - d \begin{pmatrix} a & b \\ c & d \end{pmatrix} +(a d-b c) I \\ &= \begin{pmatrix} a^2 + bc & ab + bd\\ ac + cd & bc + d^2 \end{pmatrix} - \begin{pmatrix} a^2 & ab \\ ac & ad \end{pmatrix} - \begin{pmatrix} ad & bd \\ cd & d^2 \end{pmatrix} +(a d-b c) I \\ &= \begin{pmatrix} bc & bd\\ cd & bc + d^2 - ad \end{pmatrix} - \begin{pmatrix} ad & bd \\ cd & d^2 \end{pmatrix} +(a d-b c) I \\ &= \begin{pmatrix} bc - ad & 0\\ 0 & bc - ad \end{pmatrix} +(a d-b c) I \\ &= \begin{pmatrix} 0 & 0\\ 0 & 0 \end{pmatrix} \end{align}

となる。

ケイリー・ハミルトンの定理は何の役に立つのか

nn乗を計算するときに計算量を抑えられる

例えばケイリー・ハミルトンの定理からA3A+2I=OA^3 - A + 2I = Oがわかっている状況でA7A^7を求めたいとする。

A3=A2IA^3 = A - 2Iだから、3乗をくくりだせば

A7=A3A3A=(A2I)(A2I)A=(A24A+4I)A=A34A2+4A=(A2I)4A2+4A=4A2+5A2I\begin{align} A^7 &= A^3 A^3 A\\ &= (A - 2I) (A - 2I) A\\ &= (A^2 - 4A + 4I)A\\ &= A^3 - 4A^2 + 4A\\ &= (A - 2I) - 4A^2 + 4A\\ &= - 4A^2 + 5A - 2I\\ \end{align}

となり、行列積の計算としてはA2A^2だけを計算すれば済む。

固有値は写像の行列表現のとりかた(基底のとりかた)に依らず一定

証明
φB(t)=BtE=P1APtE\varphi_B(t)=|B-t E|=\left|P^{-1} A P-t E\right|

tEt E は任意の行列と可換であるから

=P1APP1tEP=P1(AtE)P=P1AtEP=P1AtEP=AtE=φA(t)\begin{aligned} & =\left|P^{-1} A P-P^{-1} t E P\right|=\left|P^{-1}(A-t E) P\right|=\left|P^{-1}\right||A-t E||P| \\ & =|P|^{-1}|A-t E||P|=|A-t E|=\varphi_A(t) \end{aligned}
証明

線形変換を行列表示するとき、基底の取り換えは相似の関係になるから、前出の定理よりそれらの行列の固有多項式は一致する。

具体例(うまくいかなかった

線形写像f:R2R2f: \mathbb{R}^2 \to \mathbb{R}^2が存在し、

f(v)=(1221)vf(\boldsymbol{v}) = \begin{pmatrix} 1 & 2\\ 2 & 1 \end{pmatrix} \boldsymbol{v}

であるとする。

R2\mathbb{R}^2の標準基底

v1=(10), v2=(01)\boldsymbol{v}_1 = \begin{pmatrix} 1 \\ 0\end{pmatrix},\ \boldsymbol{v}_2 = \begin{pmatrix} 0 \\ 1\end{pmatrix}

を使ってWWへ写したものは

(f(v1),f(v2))=(1221)( f(\boldsymbol{v}_1), f(\boldsymbol{v}_2)) = \begin{pmatrix} 1 & 2\\ 2 & 1 \end{pmatrix}

となる。

これらに対し、WWの基底

w1=(11), w2=(11)\boldsymbol{w}_1 = \begin{pmatrix} 1 \\ 1\end{pmatrix},\ \boldsymbol{w}_2 = \begin{pmatrix} 1 \\ -1\end{pmatrix}

を使って

(f(v1),f(v2))=(w1,w2)A( f(\boldsymbol{v}_1), f(\boldsymbol{v}_2)) = ( \boldsymbol{w}_1, \boldsymbol{w}_2 ) A

と写すような行列AA

(w1,w2)1=(12121212)( \boldsymbol{w}_1, \boldsymbol{w}_2 )^{-1}= \begin{pmatrix} \frac{1}{2} & \frac{1}{2}\\ \frac{1}{2} & -\frac{1}{2} \end{pmatrix}

を左から両辺にかけて

(w1,w2)1(f(v1),f(v2))=(w1,w2)1(w1,w2)A( \boldsymbol{w}_1, \boldsymbol{w}_2 )^{-1} ( f(\boldsymbol{v}_1), f(\boldsymbol{v}_2)) = ( \boldsymbol{w}_1, \boldsymbol{w}_2 )^{-1} ( \boldsymbol{w}_1, \boldsymbol{w}_2 ) A
(12121212)(1221)=(32321212)=A\begin{pmatrix} \frac{1}{2} & \frac{1}{2}\\ \frac{1}{2} & -\frac{1}{2} \end{pmatrix} \begin{pmatrix} 1 & 2\\ 2 & 1 \end{pmatrix} = \begin{pmatrix} \frac{3}{2} & \frac{3}{2}\\ -\frac{1}{2} & \frac{1}{2} \end{pmatrix} = A
import numpy as np

V = np.array([
    [1, 2],
    [2, 1],
])

W = np.array([
    [1, 1],
    [1, -1],
])

A = np.linalg.inv(W) @ V

lambdas, vectors = np.linalg.eig(A)
print(f"""
λ={lambdas}
x1={vectors[:, 0].round(3)}
x1'={(vectors[:, 0].round(3) * -np.sqrt(2)).round(1)}
x2={vectors[:, 1].round(3)}
x2'={(vectors[:, 1].round(3) * -np.sqrt(5)).round(1)}
""")

λ=[1.+0.70710678j 1.-0.70710678j]
x1=[ 0.866+0.j    -0.289+0.408j]
x1'=[-1.2+0.j   0.4-0.6j]
x2=[ 0.866-0.j    -0.289-0.408j]
x2'=[-1.9+0.j   0.6+0.9j]

import numpy as np

A = np.array([
    [1, 2],
    [2, 1],
])

lambdas, vectors = np.linalg.eig(A)
print(f"""
λ={lambdas}
x1={vectors[:, 0].round(3)}
x1'={(vectors[:, 0].round(3) * -np.sqrt(2)).round(1)}
x2={vectors[:, 1].round(3)}
x2'={(vectors[:, 1].round(3) * -np.sqrt(5)).round(1)}
""")

λ=[ 3. -1.]
x1=[0.707 0.707]
x1'=[-1. -1.]
x2=[-0.707  0.707]
x2'=[ 1.6 -1.6]