MatrixCalc

固有値と固有ベクトルの計算機

50×50 までの正方行列の固有値と固有ベクトルを求めます。特性多項式も、ヤコビ法・QR 法・Faddeev–LeVerrier の漸化式で併せて計算します。

行列 A
: 3
: 3
行列 B
: 3
: 3
演算
結果
演算を選択するとここに結果が表示されます。エラーメッセージもここに表示されます。

ヒント: サイズを調整してください (最大 50×50)。A×B は Aの列数 = Bの行数が必要です。行列式/逆行列/トレース/べき乗は正方行列である必要があります。

React, Tailwind & shadcn/ui. No external math deps. — 日本語

正方行列を入力し、応用タブを開いて、固有値なら eig(A)、固有ベクトルなら eigvec(A) を使ってください。分解タブでは、正確な演算による特性多項式も 得られます。この三つは同じ問いを別の角度から見たもので、このページの残りではそれを順に説明します。

固有ベクトルとは何か

行列が働きかけると、ほとんどのベクトルは向きを変えます。固有ベクトルは、それを免れる数少ない方向の 一つです。行列はそれを伸ばすか縮めるだけなのです。その倍率が固有値です。形式的には、0 でないベクトル v について A·v = λ·v が成り立ちます。

行列が空間に対して行うことはすべて、こうした特別な方向に沿った伸縮の混ざり合いです。だからこそ、線形 変換を単に適用するだけでなく理解する必要がある場面には必ず現れます。主成分分析、振動モード、微分方程式 の安定性、PageRank ベクトルなどです。

特性多項式

定義式 A·v = λ·v(A − λI)·v = 0 と書き換えられます。0 でない v がこれを 満たせるのは A − λI が特異なときだけで——そうでなければ唯一の解は v = 0 です——行列が 特異になるのは、その行列式が 0 になるとき、かつその ときに限ります。つまり固有値とは det(A − λI) = 0 を満たす λ のことであり、この式こそが 特性多項式です。

n×n の行列では次数は n になり、係数のうち二つは何も展開せずに行列から直接読み取れます。最高次の すぐ下の係数はトレースの符号を変えたもので、定数項は行列式に (−1)ⁿ を掛けたものです。どちらも手計算の 検算として優秀です。

例題

21
12
→ det
2 − λ1
12 − λ
= λ² − 4λ + 3 = (λ − 1)(λ − 3)

根である 1 と 3 が固有値です。検算に注目してください。トレースは 4 で、λ の係数は −4。行列式は 3 で、 定数項も 3 です。λ = 3 に対する固有ベクトルは (1, 1) で、行列はこの対角方向にあるものをすべて 3 倍 します。λ = 1 に対しては (1, −1) で、行列はこれをそのまま残します。二つが直交しているのは偶然では ありません。この行列は対称であり、対称行列の固有ベクトルは常に直交し、固有値は常に実数です。

固有ベクトルは決して一意ではない

v が条件を満たすなら 2v も満たし、−v も、0 でない任意の定数倍も満たします。方程式が定めているのは 方向だけだからです。そのため計算機は代表を一つ返しており、通常は長さ 1 に正規化されています。あなたの 答えが教科書のものと定数倍だけ違っていても、どちらも同じく正しいのです。比べるべきは方向であって成分 ではありません。零ベクトルは定義から除かれています。どんな λ に対しても方程式を満たしてしまい、何も 語らないからです。

固有ベクトルが足りないとき

n×n の行列は重複度を込めてちょうど n 個の固有値を持ちますが、固有値が重なっていても、同じ数だけ線形 独立な固有ベクトルがあるとは限りません。足りない行列は退化行列と呼ばれ、対角化でき ません。対角化するための固有ベクトルの基底が存在しないからです。代数的重複度を固有ベクトルの個数と 読んでしまうのは、ここで最も起こりやすい誤りの一つです。

実行列が複素固有値を持つこともあります。平面の回転には実の固有ベクトルがまったくありません——回転を くぐり抜けられる実の方向がないからです——そして固有値は共役な複素数の対になります。

この計算機の求め方

固有値は数値的に求めています。対称行列にはヤコビ回転を、それ以外には Wilkinson シフトとデフレーション を伴う QR 法を使います。特性多項式は別の道をたどり、Faddeev–LeVerrier の漸化式によって、累乗の トレースから係数を組み立てます。記号的な行列式を展開せず、最後まで正確な演算にとどまります。

固有値のアルゴリズムは代数的ではなく反復的であるため、固有値はこのサイトで唯一、計算過程を示せない演算です。途中の反復値は丸めによって生じる ものであって、手で追える推論ではありません。また実の固有値にしか収束しないので、スペクトルが複素の 行列については、答えをでっち上げるのではなく収束しなかったと報告します。逆向きの道——多項式から固有値 を求めること——は 3×3 までの手計算なら問題ありませんが、数値的には悪い考えです。多項式の根は係数の 誤差に極端に敏感だからです。

よくある誤り

  • 長方形の行列に固有値を期待する。固有値は正方行列にのみ定義されます。長方形での対応物は特異値です。
  • 固有ベクトルを一意なものとして扱う。固有ベクトルの 0 でない定数倍もまた固有ベクトルであり、定まっているのは方向だけです。
  • 常に実数だと思い込む。実行列が複素固有値を持つことは十分にあり得ます。
  • すべての成分から λ を引く。λI は対角が λ で残りは 0 なので、変わるのは対角だけです。
  • 重複度を固有ベクトルの個数と読む。二重根が線形独立な固有ベクトルを二つもたらすとは限らず、もたらさないとき、その行列は退化しています。
  • 符号の約束を見失う。det(A − λI) と det(λI − A) は (−1)ⁿ だけ違います。どちらも使われるので、一つを選んで貫いてください。

よくある質問

固有値と固有ベクトルはどう違いますか。
固有ベクトルは変換が回転させない方向、固有値はその方向が何倍に伸ばされるかを表す数です。両者は必ず対になっています。
固有値が複素数になることはありますか。
あります。実行列でも特性多項式が複素数の根を持つことがあり、平面の回転がその典型例です。
ここに計算過程がないのはなぜですか。
固有値はヤコビ法や QR 法といった反復的な数値解法で求めるからです。その途中の値は丸めによって生じるもので、手で追える推論ではありません。
求めた固有値はどう検算しますか。
総和をトレースと、積を行列式と比べてください。どちらも一致しなければなりません。
自分の固有ベクトルが教科書と違うのはなぜですか。
固有ベクトルは定数倍を除いてしか定まらないからです。あなたのものが教科書のものの定数倍であれば——負の定数倍であっても——どちらも正しい答えです。
特性多項式は何のためにありますか。
その根が固有値なので、行列とそのスペクトルを結ぶ橋になります。すべての行列は自身の特性方程式を満たすというケイリー・ハミルトンの定理にも登場します。

ほかの計算機