固有値と固有ベクトルの計算方法と意味|証明つき解説
行列 に対して をみたす でないベクトル を固有ベクトル、そのときのスカラー を固有値といいます。
行列はベクトルを別のベクトルへ移す作用ですが、そのなかで向きを変えられないベクトルがあります。それが固有ベクトルで、伸び縮みの倍率が固有値です。
以下では定義と直観から始め、計算の手順と具体例を数多く並べ、固有値の性質、対角化とその応用までを扱います。要になる主張には証明を付けます。
直観:向きが変わらないベクトル
具体例で見ます。次の行列を考えましょう。
<svg viewBox="0 0 700 300" xmlns="http://www.w3.org/2000/svg" style="max-width:100%;height:auto;display:block;margin:0 auto"><defs><marker id="ev-b" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" fill="#1b81e0"/></marker><marker id="ev-o" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" fill="#e0761b"/></marker></defs><line x1="75" y1="192" x2="290" y2="192" stroke="#dcdcdc" stroke-width="1"/><line x1="99" y1="209" x2="99" y2="53" stroke="#dcdcdc" stroke-width="1"/><line x1="80" y1="205" x2="232" y2="96" stroke="#c9c9c9" stroke-width="1" stroke-dasharray="5 3"/><line x1="99" y1="192" x2="266" y2="70" stroke="#e0761b" stroke-width="2.4" marker-end="url(#ev-o)"/><line x1="99" y1="192" x2="132" y2="167" stroke="#1b81e0" stroke-width="2.4" marker-end="url(#ev-b)"/><text x="144" y="181" font-size="13" fill="#1b81e0">v</text><text x="258" y="60" font-size="13" fill="#e0761b" text-anchor="end">Av</text><text x="183" y="32" font-size="13" fill="#1f1f1f" text-anchor="middle">v = (1, 1) のとき</text><text x="183" y="242" font-size="12" fill="#8a8a8a" text-anchor="middle">同じ直線の上に乗ったまま 5 倍</text><line x1="405" y1="192" x2="620" y2="192" stroke="#dcdcdc" stroke-width="1"/><line x1="429" y1="209" x2="429" y2="53" stroke="#dcdcdc" stroke-width="1"/><line x1="402" y1="192" x2="617" y2="192" stroke="#c9c9c9" stroke-width="1" stroke-dasharray="5 3"/><line x1="429" y1="192" x2="563" y2="143" stroke="#e0761b" stroke-width="2.4" marker-end="url(#ev-o)"/><line x1="429" y1="192" x2="462" y2="192" stroke="#1b81e0" stroke-width="2.4" marker-end="url(#ev-b)"/><text x="474" y="206" font-size="13" fill="#1b81e0">v</text><text x="555" y="133" font-size="13" fill="#e0761b" text-anchor="end">Av</text><text x="513" y="32" font-size="13" fill="#1f1f1f" text-anchor="middle">v = (1, 0) のとき</text><text x="513" y="242" font-size="12" fill="#8a8a8a" text-anchor="middle">直線から外れて向きが変わる</text><text x="350" y="272" font-size="12" fill="#8a8a8a" text-anchor="middle">固有ベクトルは、行列を掛けても自分の張る直線から出ません。それ以外は向きが変わります</text></svg>に を掛けると になります。長さは 倍ですが、向きは変わりません。
に掛けると になり、こちらは向きが変わります。ほとんどのベクトルはこちら側です。
向きが変わらない特別なベクトルを探し、そのときの倍率を調べるのが、これからやることです。
固有値と固有ベクトルの定義
次正方行列 について、 と数 が
をみたすとき、 を の固有値、 を に対する固有ベクトルといいます。
という条件が要ります。 を許すと、どんな についても が成り立ってしまい、固有値という概念が意味を失います。
一方 は許されます。 の固有ベクトルとは をみたす でないベクトルのことで、 が正則でないときに現れます。
固有ベクトルは定数倍を除いて決まる
が の固有ベクトルなら、 でない定数 について も固有ベクトルです。
したがって「固有ベクトルは です」と書いても「 です」と書いても、同じことを言っています。ふつうは成分が簡単になるものを選びます。
長さを にそろえる流儀もあります。数値計算のライブラリはたいていそうします。
なぜ になるのか
定義の式を移項します。 を単位行列として、次のように書き直せます。
が固有値であるとは、この連立方程式が の解を持つことです。
同次連立方程式が自明でない解を持つのは、係数行列が正則でないときにかぎります。正則なら両辺に逆行列を掛けて しか出てこないからです。
正則でないことは、行列式が であることと同値でした。したがって が の固有値であることは、次の方程式をみたすことと同じになります。
固有ベクトルを直接探すのではなく、まず固有値を方程式の解として求める。この順序が計算の骨格になります。
固有多項式
を展開すると、 についての 次多項式になります。これを固有多項式といいます。
次方程式なので、複素数まで許せば重複を込めてちょうど 個の解を持ちます。実行列でも固有値が複素数になることがあります。
実数の範囲では解が存在しない場合もあります。あとで回転行列の例を見ます。
計算の手順
手順は 3 段階です。
まず を解いて固有値を求めます。次に各固有値 について を解き、固有ベクトルを求めます。最後にトレースと行列式で検算します。
以下、はじめに挙げた でこの手順をたどります。
計算例:固有値を求める
の行列式を計算します。
次の行列式は「たすき掛けの差」でした。
これを とおいて解きます。 と因数分解できます。
計算例: の固有ベクトル
を解きます。まず行列を作ります。
とおいて連立方程式を書きます。
2 本の式は同じことを言っています。この重複は偶然ではありません。 になるよう を選んだので、2 本が独立になりようがないのです。
なので、 と取れば固有ベクトルが得られます。
確かめます。 となり、定義をみたしています。
計算例: の固有ベクトル
同じ手順です。
2 行がまったく同じになりました。連立方程式は の 1 本だけです。
なので、 として次を得ます。
検算します。 です。
計算例:トレースと行列式で検算する
固有値が正しいかどうかは、2 つの量ですぐ確かめられます。
のトレース(対角成分の和)は で、固有値の和 と一致します。
の行列式は で、固有値の積 と一致します。
この 2 つは偶然ではなく、いつでも成り立ちます。次の節で証明します。
証明:固有値の和と積
次の場合に固有多項式を一般に展開します。次のようにおきましょう。
の係数に が、定数項に が現れました。
一方、固有値を とすれば固有多項式は と書けます。
係数を比べて結論です。
次でも同じで、固有値の和がトレース、積が行列式になります。固有多項式の の係数と定数項を見れば出ます。
計算例:対称行列
次の対称行列を調べます。トレースが 、行列式が です。
固有値は と です。和が 、積が で検算が合います。
のときの行列を書きます。
すなわち となり、固有ベクトルは です。
のときも同じです。
すなわち となり、固有ベクトルは です。
2 本の固有ベクトルの内積は で、直交しています。対称行列に特有の性質で、あとで証明します。
計算例:三角行列
次のように片側が の行列では、計算がほとんど要りません。
三角行列の行列式は対角成分の積なので、そのまま因数分解された形で出てきます。
固有値は と 、つまり対角成分そのものです。 次でも同じで、三角行列の固有値は対角成分に並んでいます。
固有ベクトルのほうは対角成分だけでは決まらず、上の の部分が効いてきます。ここは計算が要ります。
計算例:射影行列
次の行列は、平面上の点を直線 へ正射影します。
直線の上の点は動きません。 なので、固有値 の固有ベクトルが です。
直線に垂直な向きは潰れます。 なので、固有値 の固有ベクトルが です。
固有値が と だけになるのは射影行列の特徴です。 から が出るので、 は か にかぎられます。
計算例:回転行列には実の固有値がない
角 の回転を表す行列を考えます。
固有多項式を計算します。トレースは 、行列式は です。
判別式は です。 が でも でもなければ負になります。
実の固有値はありません。当たり前で、平面をぐるっと回せば、どんな向きも別の向きへ移ってしまうからです。
複素数まで広げれば という固有値が出てきます。絶対値が なのは、回転が長さを変えないことに対応します。
計算例:3 次の行列
次の 次の行列を調べます。行列式を展開してもよいのですが、構造を使うほうが速いです。
全成分が の行列を とすると です。 は「 の成分の和」を全成分に並べたベクトルになります。
なら成分の和が なので です。したがって で、固有値 が出ます。
成分の和が のベクトル、たとえば や では です。したがって となり、固有値 です。
固有値は と (重解)で、和は 、積は です。
固有空間
固有値 に対する固有ベクトル全体に を加えた集合は、部分空間になります。これを固有空間といいます。
<svg viewBox="0 0 700 300" xmlns="http://www.w3.org/2000/svg" style="max-width:100%;height:auto;display:block;margin:0 auto"><defs><marker id="eig-b" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" fill="#1b81e0"/></marker><marker id="eig-o" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" fill="#e0761b"/></marker></defs><line x1="242" y1="135" x2="458" y2="135" stroke="#dcdcdc" stroke-width="1"/><line x1="350" y1="238" x2="350" y2="32" stroke="#dcdcdc" stroke-width="1"/><line x1="245" y1="234" x2="455" y2="36" stroke="#1b81e0" stroke-width="1.6" stroke-dasharray="6 4"/><line x1="298" y1="36" x2="402" y2="234" stroke="#e0761b" stroke-width="1.6" stroke-dasharray="6 4"/><line x1="350" y1="135" x2="369" y2="117" stroke="#1b81e0" stroke-width="3"/><line x1="369" y1="117" x2="443" y2="47" stroke="#1b81e0" stroke-width="2" marker-end="url(#eig-b)"/><line x1="350" y1="135" x2="370" y2="173" stroke="#e0761b" stroke-width="3"/><line x1="370" y1="173" x2="391" y2="212" stroke="#e0761b" stroke-width="2" marker-end="url(#eig-o)"/><text x="448" y="34" font-size="13" fill="#1b81e0" text-anchor="middle">λ = 5</text><text x="428" y="231" font-size="13" fill="#e0761b" text-anchor="middle">λ = 2</text><text x="482" y="98" font-size="13" fill="#1f1f1f">固有空間は原点を通る直線</text><text x="482" y="126" font-size="12" fill="#8a8a8a">青の直線の上の点は 5 倍に、</text><text x="482" y="148" font-size="12" fill="#8a8a8a">橙の直線の上の点は 2 倍に</text><text x="482" y="170" font-size="12" fill="#8a8a8a">伸びます。直線から出ません。</text><text x="350" y="278" font-size="12" fill="#8a8a8a" text-anchor="middle">2 本の固有直線が骨組みになり、そのほかのベクトルは 2 方向に分解して考えられます</text></svg>さきほどの では、 の固有空間が直線 、 の固有空間が直線 です。
の例では、 の固有空間が平面 で、次元が になっていました。
代数的重複度と幾何的重複度
固有多項式で が何重の解になっているかを代数的重複度といいます。固有空間の次元を幾何的重複度といいます。
いつでも「幾何的重複度 代数的重複度」が成り立ちます。等号になるとはかぎりません。
この 2 つがすべての固有値で一致することが、対角化できるための条件です。 次の 2 つの例が、一致する場合としない場合を示します。
計算例:重解でも対角化できる場合
単位行列の 倍、つまり を考えます。固有多項式は なので、 の代数的重複度は です。
は零行列なので、 はすべての でみたされます。固有空間は平面全体です。
幾何的重複度も で一致しました。実際この行列はもともと対角行列です。
計算例:重解で対角化できない場合
次の行列を考えます。三角行列なので固有値は対角成分の で、代数的重複度は です。
固有空間を求めます。
は を意味します。固有空間は直線 だけで、次元は です。
幾何的重複度 が代数的重複度 より小さくなりました。固有ベクトルが 本そろわないので、この行列は対角化できません。
実際 で、 は固有ベクトルではありません。 軸方向だけが保たれ、それ以外は少しずつ横へずらされる、という作用をしています。
証明:相異なる固有値の固有ベクトルは 1 次独立
とし、それぞれの固有ベクトルを とします。
とおきましょう。両辺に を掛けます。
もとの式を 倍したものを引きます。
かつ なので です。これをもとの式に戻すと となり、 から です。
3 個以上でも同じ筋で、帰納法により示せます。したがって 次行列が相異なる 個の固有値を持てば、固有ベクトルが 本そろい、対角化できます。
と の固有値
の両辺に を掛けると です。繰り返せば次を得ます。
固有ベクトルは同じまま、固有値だけが 乗になります。
が正則なら です。 の両辺に を掛けて で割ると、逆行列の固有値がわかります。
多項式 についても が成り立ちます。行列の式を、固有ベクトルの上ではただの数の式に落とせる、というのが固有値の効きどころです。
証明:対称行列の固有値は実数
を実対称行列とし、()とします。ここでは と が複素数の可能性を許します。
を掛けます。左辺は 、右辺は です。
一方、 が実対称なので の共役転置を取ると、それ自身に戻ります。
の量が自分の共役に等しいので、これは実数です。 も実数なので、商である も実数になります。
証明:対称行列の固有ベクトルは直交する
を実対称行列、 をその固有値、 を対応する固有ベクトルとします。
内積 を 2 通りに評価します。 が対称なので が成り立ちます。
左辺は 、右辺は です。移項します。
なので 、つまり直交します。
さきほどの対称行列 の固有ベクトル と が直交していたのは、この定理の帰結です。
対角化
固有ベクトルを列に並べた行列を 、固有値を対角に並べた行列を とします。
の第 列は なので、 が成り立ちます。
が正則、つまり固有ベクトルが 1 次独立にそろえば、両辺に を掛けられます。
これを対角化といいます。 の列の順序と の対角成分の順序は、そろえておく必要があります。
対角化は座標の取り替え
<svg viewBox="0 0 700 280" xmlns="http://www.w3.org/2000/svg" style="max-width:100%;height:auto;display:block;margin:0 auto"><defs><marker id="dg" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" fill="#9a9a9a"/></marker></defs><rect x="90" y="56" width="190" height="62" rx="4" fill="#ffffff" stroke="#c9c9c9" stroke-width="1.5"/><text x="185" y="82" font-size="14" fill="#1f1f1f" text-anchor="middle">もとの座標</text><text x="185" y="102" font-size="11" fill="#8a8a8a" text-anchor="middle">x を並べた成分</text><rect x="420" y="56" width="190" height="62" rx="4" fill="#ffffff" stroke="#c9c9c9" stroke-width="1.5"/><text x="515" y="82" font-size="14" fill="#1f1f1f" text-anchor="middle">もとの座標</text><text x="515" y="102" font-size="11" fill="#8a8a8a" text-anchor="middle">Ax を並べた成分</text><rect x="90" y="182" width="190" height="62" rx="4" fill="#ffffff" stroke="#1b81e0" stroke-width="1.5"/><text x="185" y="208" font-size="14" fill="#1f1f1f" text-anchor="middle">固有ベクトルの座標</text><text x="185" y="228" font-size="11" fill="#8a8a8a" text-anchor="middle">P⁻¹x</text><rect x="420" y="182" width="190" height="62" rx="4" fill="#ffffff" stroke="#1b81e0" stroke-width="1.5"/><text x="515" y="208" font-size="14" fill="#1f1f1f" text-anchor="middle">固有ベクトルの座標</text><text x="515" y="228" font-size="11" fill="#8a8a8a" text-anchor="middle">DP⁻¹x</text><line x1="288" y1="87" x2="412" y2="87" stroke="#9a9a9a" stroke-width="1.5" marker-end="url(#dg)"/><text x="350" y="78" font-size="13" fill="#1f1f1f" text-anchor="middle">A を掛ける</text><line x1="288" y1="213" x2="412" y2="213" stroke="#1b81e0" stroke-width="1.5" marker-end="url(#dg)"/><text x="350" y="204" font-size="13" fill="#1b81e0" text-anchor="middle">D を掛ける(成分ごとに λ 倍)</text><line x1="185" y1="176" x2="185" y2="124" stroke="#9a9a9a" stroke-width="1.5" marker-end="url(#dg)"/><text x="176" y="154" font-size="12" fill="#8a8a8a" text-anchor="end">P</text><line x1="515" y1="124" x2="515" y2="176" stroke="#9a9a9a" stroke-width="1.5" marker-end="url(#dg)"/><text x="524" y="154" font-size="12" fill="#8a8a8a">P⁻¹</text><text x="350" y="266" font-size="12" fill="#8a8a8a" text-anchor="middle">固有ベクトルを座標軸に取り直すと、行列を掛ける操作が「成分ごとの定数倍」になります</text></svg>固有ベクトルを新しい座標軸に取ると、 を掛ける操作は「各成分を 倍する」だけになります。
が新しい座標へ移す操作、 がそこでの伸縮、 がもとの座標へ戻す操作です。 という式は、この 3 段階をそのまま書いたものになります。
対角化できる行列は、適切な座標から見れば「軸方向の伸縮」でしかない、ということです。
計算例:対角化してみる
はじめの を対角化します。固有値は 、固有ベクトルは と でした。
なので は正則です。逆行列を求めます。
を確かめます。 の第 1 列は 、第 2 列は です。
計算例: を求める
対角化のいちばん直接的な使い道です。 から、間の が次々に消えます。
は対角成分を 乗するだけです。前の節の と を入れて計算します。
を入れるともとに戻ります。
でも確かめます。 を 2 回掛けた結果と一致しました。
計算例:フィボナッチ数列
漸化式 を行列で書きます。
この行列を とおくと、 回掛けたものが数列の一般項を与えます。固有値を求めましょう。トレースが 、行列式が です。
大きいほうが黄金比 、小さいほうが です。対角化して整理すると、有名な式が出ます。
ビネの式といいます。 を入れると になり、実際 を計算した行列の成分と一致します。
整数だけの数列の一般項に、無理数が 2 つ現れる。それでも打ち消し合って整数に戻るのが、この式の見どころです。
長い目で見た振る舞いを決めるのは最大の固有値
なので、 が大きいところでは の項が無視できます。
隣り合う項の比が黄金比に近づくのは、これが理由です。
一般に、絶対値が最大の固有値が長期的な振る舞いを支配します。すべての固有値の絶対値が より小さければ 、 より大きいものがあれば発散します。
マルコフ連鎖の定常分布、人口動態のモデル、力学系の安定性の判定は、どれもこの原理の上に立っています。
固有値と固有ベクトルの意味
ここまでの計算をまとめ直します。

そもそも行列はベクトルを別のベクトルに変換する「作用」でした。その中に、向きを変えられないベクトルがあるということですね。
そのとおりです。行列 を固有ベクトルに作用させると、スカラー 倍になるだけで向きは変わりません。
固有値は、その固有ベクトルが行列でどれだけ伸びるかを表す数です。固有値が なら長さは 倍、 なら長さはそのままで向きが反転します。
対角化できる行列は、固有ベクトルの方向を軸に取れば、ただの伸縮に見えます。複雑に見える行列の作用を、いくつかの方向の伸び縮みに分解する。 これが固有値と固有ベクトルの役目です。
応用:振動のモードと主成分分析
物体の振動を線型近似すると、行列の固有値問題になります。固有ベクトルが振動の型(モード)、固有値が振動数の 2 乗に対応します。
建物の耐震設計で「1 次モード」「2 次モード」と呼ばれるものが、まさに固有ベクトルです。
データ解析では、共分散行列の固有ベクトルがばらつきの大きい方向を与えます。これが主成分分析です。
共分散行列は対称なので、固有値は実数で固有ベクトルは直交します。前に証明した性質が、そのまま「主成分どうしが直交する」という結論になっています。










