行列の固有値と固有ベクトルは、線形代数において重要な概念であり、数学だけでなく、統計学や経済学、物理学、コンピューター・サイエンスなど様々な分野において不可欠な概念です。
あまりにも多くの分野において中核を担っている概念であるため、これをどのように利用するのかを解説しようとすると、それだけで一冊の本では収まりきらないほどの分量になります。
それでもほんの一例として、たとえば、コンピューター・サイエンスにおける利用例を挙げると、固有値・固有ベクトルは、 Google が個々のページをランク付けするための骨組みを支える技術ですし、近年もっともホットなトピックである機械学習においても、データの性質を導き出すための重要な技術の一つです。
固有値と固有ベクトルを学ぶと、これらのことも理解できるようになります。
そこで当ページでは、固有値・固有ベクトルとは何か、そして、その求め方をじっくりと解説していきます。
そして、その後に簡単な練習問題を用意していますので、ぜひご自分でも解いてみてください。読み終える頃には、固有値と固有ベクトルについて完璧に理解していることでしょう。
それでは始めます。
1. 固有ベクトルとは
固有ベクトルとは、ある行列で線形変換を行っても向きが変わらないベクトルのことです。
通常、線形変換をするとベクトルは向きが変わります(厳密には「部分空間から外れる」と表現します)。例えば以下のアニメーションは、行列 \(A=\left[ \begin{array}{cc} 3&1 \\ 0&2 \end{array} \right] \)で線形変換したものです。黄色のベクトルに注目してご覧ください。
なお部分空間については、『線形結合とは何か?アニメーション付きで誰でもわかるように解説』で解説しています。
このようにほとんどのベクトルは、線形変換後をすると、元の部分空間から外れて向きが変わります。
しかし、中には線形変換しても、部分空間から外れず、向きが変わらないベクトルがあります。もう一度黄色のベクトルに注目して、以下のアニメーションをご確認ください。
ご覧のように \(\vec{v}=\left[ \begin{array}{c} 1 \\ -1 \end{array} \right] \) は、行列 \(A\) で線形変換を行っても向きが変わりません。このようなベクトル \(\vec{a}\) を行列 \(A\) の「固有ベクトル」と言います。なお、この線形変換では、基底ベクトル \(\hat{\imath}\) も向きが変わっていないので、これも行列 \(A\) の固有ベクトルです。
このように固有ベクトルは複数の場合もありますし、存在しない場合もあります。これについては、固有ベクトルと固有値の求め方のところであらためて解説します。
また固有ベクトルは実際には一つに定まっているわけではありません。部分空間上に位置するすべてのベクトルが行列 \(A\) の固有ベクトルです。つまり上の例では固有ベクトルは \(y=-x\) の線上に存在するあらゆるベクトルです。
ポイント
固有ベクトルとは、ある行列で線形変換しても、元の方向が変わらないベクトルのこと。なお、正反対の方向になることはあるので、厳密には「線形変換しても元々の部分空間から外れないベクトル」という方が正しい。
2. 固有値とは
次に固有値について見てみましょう。
固有値とは、ある行列の固有ベクトルが、線形変換後に何倍になるのかを示す値です。以下のアニメーションをご覧ください。
このアニメーションでは、対角線上のすべてのベクトルは2倍になり、水平線上のすべてのベクトルは3倍になっています。このように、線形変換によって固有ベクトルが何倍になるのかを示すものが固有値です。
このアニメーションの場合では \(\vec{a_1}=\left[ \begin{array}{cc} 1 \\ -1 \end{array} \right] \) の固有値が \(2\) 、\(\vec{a_2}=\left[ \begin{array}{cc} 1 \\ 0 \end{array} \right] \) の固有値が \(3\) ということになります。つまり、それぞれの固有ベクトルごとに固有値が存在します。
なお、固有値は慣習的にラムダ記号 \(\lambda\) で表します。そして、ある行列 \(A\) とその固有ベクトル \(\vec{a}\) ・固有値 \(\lambda\)があるとき、それらは以下の関係にあります。
行列と固有ベクトル・固有値と固有ベクトルの関係
\[
A\vec{a}=\lambda\vec{a}
\]
この式は、一言で表すと、固有ベクトルに行列を掛けることと、固有ベクトルに固有値を掛けることは、幾何学的にまったく同じ結果が得られるということを表しています。以下のアニメーションで簡単に理解することができます。
最初は \(\vec{a_1}\) に行列 \(A\) を掛けて線形変換したもの、次に \(\vec{a_1}\) に固有値 \(2\) を掛けたものです。
詳しくは後述しますが、実はこの式は、固有値と固有ベクトルの関係のすべてを示す重要なものです。
ポイント
固有値とは、ある行列で線形変換をしたときに、固有ベクトルが何倍になるのかを示す値のこと。このことを示しているのが以下の式です。これは重要な式なので覚えておきましょう。
\[
A\vec{a}=\lambda\vec{a}
\]
3. 固有値と固有ベクトルの求め方
それではここから、任意の行列の固有値と固有ベクトルを計算する方法を見ていきましょう。
結論から言うと、これらは以下のステップで求めます。
- 固有方程式 \(|A−\lambda I| = 0\) から固有値 \(\lambda\)を求める。
- 求めた固有値 \(\lambda\) を代入した連立方程式で固有ベクトルを求める。
順番に見ていきましょう。
3.1. 固有方程式で固有値を求める
まずは固有方程式を解いて、固有値を求めます。固有方程式とは、以下の行列式のことです。\(\lambda\) は固有値、\(I\) は単位行列です。なお行列式については『行列式とは?意味と定義・求め方・性質を徹底解説』で解説しています。
固有方程式
\[
|A−\lambda I| = 0
\]
この行列式を解くことで、まず固有値を求めることができます。例として以下の行列 \(A\) の固有値を求めてみましょう。
\[
A=\left[ \begin{array}{cc}3&1 \\ 0&2 \end{array} \right]
\]
これを固有方程式に当てはめると以下のようになります。
\[\begin{eqnarray}
|A−\lambda I|
&=&
\left|
\left[\begin{array}{cc} 3 & 1 \\ 0 &2 \end{array} \right]
–
\lambda
\left[\begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array}\right]
\right|\\
&=&
\left|
\left[\begin{array}{cc} 3 & 1 \\ 0 &2 \end{array} \right]
–
\left[\begin{array}{cc} \lambda & 0 \\ 0 & \lambda \end{array}\right]
\right|\\
&=&
\left|\begin{array}{cc} 3−\lambda & 1 \\ 0 & 2−\lambda \end{array} \right|\\
&=&
(3-\lambda)(2-\lambda)-(1)(0) \\
&=&(3-\lambda)(2-\lambda) \\
&=&0
\end{eqnarray}\]
このように、最終的に \((3-\lambda)(2-\lambda)=0\) となり、\(\lambda= 3, 2\) と求まります。
3.2. 固有値から固有ベクトルを求める
固有値を求めることができたら、次に固有ベクトルを求めることができます。
求め方は簡単です。今度は、固有方程式で用いた \(A-\lambda I\) を使って以下の連立方程式を解きます。
固有ベクトルを求めるための連立方程式
\[
[A-\lambda I]
\left[ \begin{array}{cc} x \\ y \end{array} \right]
=
0
\]
この連立方程式に \(\lambda=3 , 2\) を代入して解くだけです(「連立方程式を行列で解く方法」を参考にしてください)。
まず、\(\lambda=2\) の場合を解いてみましょう。
\[\begin{eqnarray}
A-\lambda I \left[\begin{array}{cc} x \\ y \end{array} \right]
=
\left[ \begin{array}{cc} 0 \\ 0 \end{array} \right] \\
\rightarrow
\left[ \begin{array}{cc} 3−\lambda & 1 \\ 0 &2−\lambda \end{array} \right]
\left[ \begin{array}{cc} x \\ y \end{array} \right]
=
\left[ \begin{array}{cc} 0 \\ 0 \end{array} \right]\\
\rightarrow
\left[ \begin{array}{cc} 3−2 & 1 \\ 0 & 2−2 \end{array} \right]
\left[ \begin{array}{cc} x \\ y \end{array} \right]
=
\left[ \begin{array}{cc} 0 \\ 0 \end{array} \right]\\
\rightarrow
\left[ \begin{array}{cc} 1 & 1 \\ 0 &0 \end{array} \right]
\left[ \begin{array}{cc} x \\ y \end{array} \right]
=
\left[ \begin{array}{cc} 0 \\ 0 \end{array} \right]\\
\end{eqnarray}\]
これによって以下の解が導かれます。
\[
\begin{cases}
1x+1y = 0 \\
0x+0y = 0 \\
\end{cases}
\rightarrow
y = −x
\]
つまり、\(y = −x\) 上にあるすべてのベクトルが、行列 \(A\) の固有ベクトルであり、その固有値は \(2\) であるということです。
次に、\(\lambda=3\) の場合を解いてみましょう。
\[\begin{eqnarray}
A-\lambda I \left[\begin{array}{cc} x \\ y \end{array} \right]
=
\left[ \begin{array}{cc} 0 \\ 0 \end{array} \right] \\
\rightarrow
\left[ \begin{array}{cc} 3−\lambda & 1 \\ 0 &2−\lambda \end{array} \right]
\left[ \begin{array}{cc} x \\ y \end{array} \right]
=
\left[ \begin{array}{cc} 0 \\ 0 \end{array} \right]\\
\rightarrow
\left[ \begin{array}{cc} 3−3 & 1 \\ 0 & 2−3 \end{array} \right]
\left[ \begin{array}{cc} x \\ y \end{array} \right]
=
\left[ \begin{array}{cc} 0 \\ 0 \end{array} \right]\\
\rightarrow
\left[ \begin{array}{cc} 0 & 1 \\ 0 &-1 \end{array} \right]
\left[ \begin{array}{cc} x \\ y \end{array} \right]
=
\left[ \begin{array}{cc} 0 \\ 0 \end{array} \right]\\
\end{eqnarray}\]
これによって以下の解が導かれます。
\[
\begin{cases}
0x+1y = 0 \\
0x-1y = 0 \\
\end{cases}
\rightarrow
y = 0
\]
これは、つまり \(y=0\) 上に存在するすべてのベクトルが 行列 \(A\) の固有ベクトルであり、その固有値は \(3\) であるということです。
以上のことから、最初のアニメーションで確認した通り、行列 \(
A=\left[ \begin{array}{cc}3&1 \\ 0&2 \end{array} \right]
\) の固有値と固有ベクトルは、以下の2つであることがわかります。
- 固有値 \(2\)、 固有ベクトル \(y=-x\)
- 固有値 \(3\)、 固有ベクトル \(y=0\)
以上が固有値と固有ベクトルの計算方法です。
ポイント
固有値と固有ベクトルを求めるには、まず固有方程式で固有値を求めます。そして求めた固有値を連立方程式に代入して固有ベクトルを求めます。
固有方程式
\[
|A−\lambda I| = 0
\]
固有ベクトルを求めるための連立方程式
\[
(A-\lambda I)
\left[ \begin{array}{cc} x \\ y \end{array} \right]
=
\vec{0}
\]
3.3. 固有方程式で求められる理由
さて、それではもう一歩深めて、なぜこの方法で固有値と固有ベクトルを求めることが可能なのかを考えてみましょう。上でお伝えした通り、ある行列 \(A\) とその固有値 \(\lambda\)、固有ベクトル \(\vec{a}\) は以下の関係にあります。
\[A\vec{a}=\lambda\vec{a} \tag{1}\]
行列 \(A\) の固有値と固有ベクトルを見つけるということは、この \((1)\) 式が真となるような \(\vec{a}\) と \(\lambda\) の値を見つけるということです。
そのためにはどうしたら良いでしょうか。
まず、 \((1)\)式の左辺は行列とベクトルの掛け算、右辺はスカラーとベクトルの掛け算であり、それぞれ別の種類の計算です。そのため、最初はこれらを同じ種類の計算にする必要があります。
そうするためには、両辺に単位行列 \(I\) を掛けます。
\[\begin{eqnarray}
(AI)\vec{a}=(\lambda I)\vec{a} \tag{2}
\end{eqnarray}\]
このように両辺に単位行列を掛けるのは、線形代数においてよく見られる方法です。なぜなら、行列と単位行列の積は何も変わらないので結局 \(AI=A\) となり、以下のように両辺を行列とベクトルの掛け算に変換することができるからです。
\[A\vec{a}=(\lambda I) \vec{a} \tag{3}\]
そして \((3)\) 式の右辺を左辺に持ってこれば、次の \((4)\) 式を導き出すことができます。
\[\begin{eqnarray}
A\vec{a}-(\lambda I)\vec{a}=\vec{0} \tag{4}
\end{eqnarray}\]
最後に掛け算と引き算の順番を入れ替えると、以下の \((5)\) 式が導き出されます。
\[
(A-\lambda I)\vec{a}=\vec{0} \tag{5}
\]
以上のことから、固有ベクトル \(\vec{a}\) を求めるということは、行列 \((A-\lambda I)\) を掛けた時にゼロベクトルになるようなベクトルを求めるということになります。なお、そのようなベクトルのことを行列 \((A-\lambda I)\) のゼロ空間と言います。『行列の階数(ランク)とは何か?その意味と求め方をわかりやすく解説』で詳しく解説しているので、復習したい方はぜひご覧ください。
もちろん \(\vec{a}\) 自体がゼロベクトルの時は、この条件を満たしますが、私たちが見つけようとしているのは、ゼロベクトル以外の固有ベクトルです。
そして、これまで学んできた線形代数の知識を思い出せば、ある行列とあるベクトルの積の結果がゼロベクトルである場合というのは、その行列による線形変換で空間の次元数が下がる場合であるということを思い起こすことができます。さらに、ある行列による線形変換で空間の次元数が下がる場合というのは、その行列の行列式の値がゼロになる時です。
そのことから、以下の \((6)\) 式のように表すことができます。
\[
(A-\lambda I)\vec{a}=\vec{0}
\hspace{3mm} \Rightarrow \hspace{3mm}
\mathrm{det}(A-\lambda I)=0
\tag{6}
\]
この \((6)\) 式を視覚的に表しているのが以下のアニメーションです。
さて、\(A=\left[ \begin{array}{cc}2 & 2 \\ 1 & 3 \end{array} \right]\) としたら、\(\mathrm{det}(A-\lambda I)\) は、以下のようになります。
\[
\mathrm{det}(A-\lambda I)
=
\mathrm{det}
\left[ \begin{array}{cc}
2-\lambda & 2 \\
1 & 3-\lambda \\
\end{array} \right]
\]
そして \((6)\) 式より、固有値 \(\lambda\) を見つけるということは、以下の式のように、この行列式の値がゼロになるような値を見つけることであることがわかります。
\[
\mathrm{det}(A-\lambda I)=0
\hspace{3mm} \Rightarrow \hspace{3mm}
\mathrm{det}
\left[ \begin{array}{cc}
2-\lambda & 2 \\
1 & 3-\lambda \\
\end{array} \right]
=
0
\]
この行列式 \(\mathrm{det}(A-\lambda I)\) の値をゼロにするような固有値 \(\lambda\) を見つけるプロセスを視覚的に表したものが以下のアニメーションです。
このように固有値 \(\lambda\) を見つけるという作業は、幾何学的には、\((A-\lambda I)\) が次元数を削減する行列になる \(\lambda\) を求めるということなのです。この行列 \(A\) の場合では、\(\lambda=1\) の場合がそれです。
そして、以下のアニメーションで示しているように、固有値 \(\lambda=1\) の時に、行列 \((A-\lambda I)\) と掛けたらゼロベクトルになるベクトルがあります。
このゼロ空間こそが行列 \(A\) の固有値 \(\lambda=1\) に対する固定ベクトル \(\vec{a}\) です。
この固定ベクトルを求めるには、単純に \((A-\lambda I)\) に \(\lambda=1\) を代入して、\((A-\lambda I)\vec{a}=\vec{0}\) になるような \(\vec{a}\) を求めれば良いのです。
つまり、以下の式を解けば良いということです。
\[
(A-\lambda I)\vec{a}
=
\left[ \begin{array}{cc}
2-1 & 2 \\
1 & 3-1 \\
\end{array} \right]
\left[ \begin{array}{cc}
a_1 \\
a_2
\end{array} \right]
=
\left[ \begin{array}{cc}
0 \\
0
\end{array} \right]
\]
ちなみに、この連立方程式を満たすベクトル \(\vec{a}\) を探すということは、視覚的に表すと、以下のアニメーションのように、線形変換を行うとゼロベクトルになるような直線(=ゼロ空間)を見つけるということです。
\(\lambda=1\) なので、行列 \(A\) は、この直線上にあるすべてのベクトルを \(1\) スカラー倍するということを意味します。
そのため、行列 \(A\) の固有値 \(\lambda=1\) の固有ベクトルは \(y=-\frac{1}{2}x\) になります。
実際に以下のアニメーションで確認すると、この固定ベクトルは、行列 \(A\) で線形変換しても方向が変わらないことがわかります(固定値が \(1\) なので長さも変わりません)。
以上が、固有方程式によって固有値と固有ベクトルを求めることができる理由です。
なお、この行列 \(A\) には、他にも固有値 \(\lambda=4\)と固有ベクトル \(x=y\) が存在します。
ぜひ、ご自身でも計算して導き出してみてください。
4. 固有値と固有ベクトルの数
ここまで見てきたほとんどの二次行列では、すべて固有値が2つあり、固定ベクトルも2つありました。しかし、いつもそうとは限りません。固有値が存在しない場合もありますし、一つだけの場合もあります。ここでは、この点について解説します。
4.1. 固有値が存在しない行列
結論からお伝えすると、2次行列には常に固定ベクトルが存在するとは限りません。
このことは視覚的に確認すれば、簡単に理解することができます。たとえば回転行列を考えてください。以下のアニメーションで示しているように、回転行列では、すべてのベクトルが部分空間から外れて向きを変えます。
実際に、固有方程式を使って計算をしてみると以下のようになります。
\[\begin{eqnarray}
\mathrm{det}(A-\lambda I)
=
\mathrm{det}
\left[ \begin{array}{cc}
-\lambda & -1 \\
1 & -\lambda \\
\end{array} \right]
&=&(-\lambda)(-\lambda)-(-1)(1)\\
&=& \lambda^2+1=0
\end{eqnarray}\]
以上のことから、\(\lambda=i, -i\) となり、固有値が虚数ということになります。これは、この行列には固定ベクトルが存在しないことを意味しています。
補足
実際には虚数 \(i\) は、この2次元ベクトルを90度回転させる固有値です。ただし、これに関しては、線形代数の応用編になりますので扱わないことにします。ここでは、複素数の固有値は、大抵の場合、線形変換における回転を意味しているというように理解しておくと良いでしょう。
4.2. 固有値が1つの場合
固定ベクトルが1つしかない二次行列もあります。これについてもっともわかりやすいのは剪断行列です。
これもアニメーションで視覚的に確認すると簡単に理解することができます。
ご覧のように、この2次行列の剪断写像では、固定ベクトルが1つだけであることがわかります。実際に計算してみましょう。
\[\begin{eqnarray}
\mathrm{det}(A-\lambda I)
=
\mathrm{det}
\left[ \begin{array}{cc}
1-\lambda & 1 \\
0 & 1-\lambda \\
\end{array} \right]
&=&(1-\lambda)(1-\lambda)-(1)(0)\\
&=&(1-\lambda)(1-\lambda)=0\\
\end{eqnarray}\]
このように、固有値は \(\lambda=1\) のみになります。
ただし、固有値が1つだとしたら、固定ベクトルも1つであるとは限りません。これも視覚的に確認するとすぐにわかります。
以下のアニメーションをご覧ください。
このように空間を伸長するだけの行列の場合は、固有値は1つですが、固有ベクトルは空間上の全てのベクトルになります。
実際に計算してみましょう。まずは固有値です。
\[\begin{eqnarray}
\mathrm{det}(A-\lambda I)
=
\mathrm{det}
\left[ \begin{array}{cc}
2-\lambda & 0 \\
0 & 2-\lambda \\
\end{array} \right]
&=&(2-\lambda)(2-\lambda)-(0)(0)\\
&=&(2-\lambda)(2-\lambda)=0\\
\end{eqnarray}\]
そして、この固有値を連立方程式に入れると次のようになります。
\[
(A-\lambda I)\vec{a}
=
\left[ \begin{array}{cc}
2-2 & 0 \\
0 & 2-2 \\
\end{array} \right]
\left[ \begin{array}{cc}
a_1 \\
a_2
\end{array} \right]
=
\left[ \begin{array}{cc}
0 \\
0
\end{array} \right]
\]
ゼロには何を掛けてもゼロなので、これに対応する \(\vec{a}\) は空間上のあらゆるベクトルであるということになります。
4.3. 固有値の数を求める判別式
以上のように行列によって、固有値の数が異なりますし、そもそも固有値が存在しない場合もあります。もし、この点について手軽に知りたい場合は、連立方程式の判別式を使うことができます。
まず二次行列の場合の判別式は以下の通りです。
二次方程式の判別式
\(ax^2+bx+c\)があるとき、判別式 \(D=b^2-4ac\)
それぞれの判別式の値に応じて以下のようになります。
- \(D > 0\) のとき:固有値\(\lambda\)は二つ存在する。
- \(D = 0\) のとき:固有値\(\lambda\)は一つ存在する。
- \(D < 0\) のとき:固有値\(\lambda\)は存在しない(二つの複素数になる)。
そして三次行列の場合の判別式は以下の通りです。
三次方程式の判別式
\(ax^3+bx^2+cx+d\) の解が \(\alpha, \beta, \gamma \)のとき、判別式 \(D=a^4(\alpha-\beta)^2(\beta-\gamma)^2(\gamma-\alpha)^2\)
それぞれの判別式の値に応じて以下のようになります。
- \(D > 0\) のとき:固有値\(\lambda\)は三つ存在する。
- \(D = 0\) のとき:固有値\(\lambda\)は一つ又は二つ存在する。
- \(D < 0\) のとき:固有値\(\lambda\)は一つ存在する。
注意点として、これらの判別式は、行列式 \(\mathrm{det}(A-\lambda I)\) に対して使うという点を覚えておきましょう。
一つだけ計算例を載せておきます。
\[\begin{eqnarray}
\mathrm{det}
\left(
\left[\begin{array}{cc} 1 & 1 \\ −1 & 1 \end{array} \right]
–
\left[\begin{array}{cc} \lambda & 0 \\ 0 & \lambda \end{array}\right]
\right)
=
\mathrm{det}
\left[ \begin{array}{cc} 1−\lambda & 1 \\ −1 & 1−\lambda \end{array} \right]
=
0
\end{eqnarray}\]
この行列式を計算すると以下の二次方程式が導き出されます。
\[\begin{eqnarray}
(1−\lambda)(1−\lambda) −1(−1) = 0 \\
\rightarrow
\lambda^2-2\lambda+2= 0
\end{eqnarray}\]
二次方程式の判別式 \(D = b^2−4ac\) を使って確認すると、\(D=(−2)^2−4\times1\times2=−4\) となるので、\(D < 0\) となり、この行列には固有値 \(\lambda\) は存在しないということがわかります。
5. 練習問題
それでは、最後に固有値と固有ベクトルの計算に関する練習問題を解いてみましょう。ここでは3×3行列の場合の問題と解説も行っていますので、ぜひ挑戦してみてください。
6. まとめ
以上が、行列の固有値と固有ベクトルです。ボリュームが大きくなってしまいましたが、少しでも理解の役に立ったなら嬉しく思います。
コメント
コメント一覧 (1件)
ここで解説されている固有ベクトルと固定ベクトルは同じ意味でしょうか