数値解析において、最も重要な問題の一つは、行列の固有値を求めるための効率的かつ安定したアルゴリズムを設計することである。これらの固有値アルゴリズムは、固有ベクトルも求めることができる。
実数または複素数のn × n正方行列Aが与えられたとき、固有値λとそれに対応する一般化固有ベクトルvは、関係[ 1 ]を満たすペアである。
ここで、vはゼロでないn × 1列ベクトル、Iはn × n単位行列、kは正の整数であり、Aが実数であってもλとvは複素数でも構いません。k = 1 の場合、ベクトルは単に固有ベクトルと呼ばれ、ペアは固有対と呼ばれます。この場合、A v = λ vとなります。Aの任意の固有値λには、通常の[注 1 ]固有ベクトルが関連付けられています。なぜなら、k が一般化固有ベクトルvに対して( A − λI ) k v = 0となる最小の整数である場合、( A − λI ) k −1 vは通常の固有ベクトルとなるからです。値k は常にn以下とすることができます。特に、λに関連付けられたすべての一般化固有ベクトルvに対して、 ( A − λI ) n v = 0 となります。
行列Aの各固有値λに対して、カーネルker( A − λI )はλに関連付けられたすべての固有ベクトル(および 0) から構成され、λの固有空間と呼ばれます。一方、ベクトル空間ker(( A − λI ) n )はすべての一般化固有ベクトルから構成され、一般化固有空間と呼ばれます。λの幾何学的重複度は、その固有空間の次元です。λの代数的重複度は、その一般化固有空間の次元です。後者の用語は、次の式によって正当化されます。
ここで、detは行列式、λ iはAのすべての異なる固有値、α iは対応する代数的重複度です。関数p A ( z )はAの特性多項式です。したがって、代数的重複度は、特性多項式の零点としての固有値の重複度です。任意の固有ベクトルは一般化固有ベクトルでもあるため、幾何学的重複度は代数的重複度以下です。代数的重複度の合計は、特性多項式の次数nになります。方程式p A ( z ) = 0は、その根がAの固有値と正確に一致するため、特性方程式と呼ばれます。ケイリー・ハミルトンの定理により、A自体も同じ方程式p A ( A ) = 0に従います。[注 2 ]その結果、行列の列はは 0 または固有値λ jの一般化固有ベクトルでなければならない。なぜなら、それらは によって消滅するからである。実際、列空間はλ jの一般化固有空間である。
異なる固有値を持つ一般化固有ベクトルの任意の集合は線形独立であるため、C n全体の基底は一般化固有ベクトルから構成されるように選択できる。より具体的には、この基底{ v i } n i =1 は次のように選択および構成できる。
これらの基底ベクトルを行列V = [ v 1 v 2 ⋯ v n ]の列ベクトルとして配置すると、Vを使用してA をジョルダン標準形に変換できます。
ここで、λ iは固有値であり、β i = 1は( A − λ i +1 ) v i +1 = v iの場合、β i = 0 はそれ以外の場合である。
より一般的に、W が任意の可逆行列であり、λが一般化固有ベクトルvを持つAの固有値である場合、( W −1 AW − λI ) k W − k v = 0 となります。したがって、λは一般化固有ベクトルW − k vを持つW −1 AWの固有値です。つまり、類似の行列は同じ固有値を持ちます。
The adjointM* of a complex matrix M is the transpose of the conjugate of M: M* = MT. A square matrix A is called normal if it commutes with its adjoint: A*A = AA*. It is called Hermitian if it is equal to its adjoint: A* = A. All Hermitian matrices are normal. If A has only real elements, then the adjoint is just the transpose, and A is Hermitian if and only if it is symmetric. When applied to column vectors, the adjoint can be used to define the canonical inner product on Cn: w ⋅ v = w*v.[note 3] Normal, Hermitian, and real-symmetric matrices have several useful properties:
It is possible for a real or complex matrix to have all real eigenvalues without being Hermitian. For example, a real triangular matrix has its eigenvalues along its diagonal, but in general is not symmetric.
数値計算の問題はすべて、入力xに対する関数fの評価として考えることができます。問題の条件数κ ( f , x )は、関数の出力の相対誤差と入力の相対誤差の比であり、関数と入力の両方によって変化します。条件数は、計算中に誤差がどのように増加するかを示します。その常用対数は、結果の精度が入力よりも何桁少ないかを示します。条件数は最良のシナリオです。これは、どのように解決されるかに関わらず、問題に組み込まれた不安定性を反映しています。偶然を除いて、条件数で示されるよりも正確な結果を生成するアルゴリズムは存在しません。ただし、設計の悪いアルゴリズムは、著しく悪い結果を生成する可能性があります。たとえば、後述するように、正規行列の固有値を求める問題は常に条件が良好です。しかし、多項式の根を求める問題は非常に条件が悪い場合があります。したがって、特性多項式の根を見つけることで機能する固有値アルゴリズムは、問題がそうでない場合でも、条件が悪い可能性があります。
線形方程式A v = bを解く問題(ただしAは可逆行列)の場合、行列条件数κ ( A −1 , b )は|| A || op || A −1 || opで与えられます。ここで、|| || opはC n上の通常のユークリッドノルムに従属する演算子ノルム です。この数はbに依存せず、 AとA −1で同じであるため、通常は単に行列Aの条件数κ ( A )と呼ばれます。この値κ ( A )は、 Aの最大特異値と最小特異値の比の絶対値でもあります。Aがユニタリ行列の場合、|| A || op = || A −1 || op = 1となるため、κ ( A ) = 1 となります。一般的な行列の場合、演算子ノルムの計算はしばしば困難です。このため、条件数を推定するために他の行列ノルムがよく使用されます。
固有値問題について、BauerとFikeは、 λが固有ベクトル行列Vを持つ対角化可能なn × n行列Aの固有値である場合、 λを計算する際の絶対誤差はκ ( V )とAの絶対誤差の積で抑えられることを証明した。[ 2 ]その結果、 λを求める条件数はκ ( λ , A ) = κ ( V ) = || V || op || V -1 || opとなる。Aが正規行列であれば、Vはユニタリ行列となり、κ ( λ , A ) = 1となる。したがって、すべての正規行列の固有値問題は良好な条件となる。
正規行列Aの固有値λに対応する固有空間を求める問題の条件数は、λとAの他の異なる固有値との間の最小距離に反比例することが示されている。[ 3 ]特に、正規行列の固有空間問題は、孤立した固有値に対して良好な条件となる。固有値が孤立していない場合、期待できる最善のことは、近傍の固有値のすべての固有ベクトルの張る範囲を特定することである。
固有値を計算する最も信頼性が高く、最も広く使用されているアルゴリズムは、ジョン・GF・フランシスとヴェラ・N・クブラノフスカヤのQRアルゴリズムであり、20世紀のトップ10アルゴリズムの1つと考えられています。[ 4 ]
任意の単項式多項式は、対応する行列の特性多項式です。したがって、固有値を求める一般的なアルゴリズムは、多項式の根を求めるためにも使用できます。アーベル・ルフィニの定理によれば、4 次元を超えるそのようなアルゴリズムは、無限であるか、基本的な算術演算や分数べき乗よりも複雑な関数を含む必要があります。このため、有限ステップで固有値を正確に計算するアルゴリズムは、ごく一部の特殊な行列クラスにしか存在しません。一般的な行列の場合、アルゴリズムは反復的であり、反復ごとに近似解の精度が向上します。
アルゴリズムによってはすべての固有値を生成するものもあれば、少数の固有値、あるいは1つの固有値しか生成しないものもあります。しかし、後者のアルゴリズムでもすべての固有値を求めることができます。行列Aの固有値λが特定されると、それを利用して次回は別の解を求めるようにアルゴリズムを誘導したり、 λが解として存在しない問題に問題を縮小したりすることができます。
方向転換は通常、シフトによって行われます。つまり、A を定数μを用いてA − μIに置き換えます。A − μIに対して見つかった固有値にμ を再び加えることで、 Aの固有値が得られます。たとえば、べき乗反復法では、μ = λとなります。べき乗反復法は絶対値が最大の固有値を見つけるため、λ が近似固有値であっても、べき乗反復法で λ を 2 回見つける可能性は低いでしょう。逆に、逆反復法に基づく手法は最小の固有値を見つけるため、μ はλから十分に離れた値、できれば他の固有値に近い値に選択されます。
行列Aを、 Aが自身に持つ行列A − λIの列空間に制限することで、次元削減が実現できます。A − λIは特異行列であるため、列空間の次元は小さくなります。その後、制限された行列に固有値アルゴリズムを適用できます。このプロセスは、すべての固有値が見つかるまで繰り返すことができます。
固有値アルゴリズムが固有ベクトルを生成しない場合、μ を固有値に近似した値に設定した逆反復ベースのアルゴリズムを使用するのが一般的な方法です。これにより、μ に最も近い固有値の固有ベクトルに迅速に収束します。小さな行列の場合、別の方法として、他の各固有値λ 'に対してA − λ ' Iの積の列空間を調べる方法があります。
正規行列の単位固有ベクトル成分のノルムの公式は、1966年にロバート・トンプソンによって発見され、その後、他の数名によって独立に再発見された。[ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] Aが正規行列である 場合、固有値λ i ( A )と対応する単位固有ベクトルv iを持ち、その成分がv i,jである正規行列A jを行列Aからi番目の行と列を削除して得られる行列をλk ( Aj )とし、λk ( Aj )をそのk番目の固有値とする。すると
もしは、そして式は次のように書き換えることができる。 導関数を仮定するとゼロではない。
三角行列の固有値は対角要素であるため、一般の行列に対しては、固有値を保持したまま行列を三角形式に変換するガウス消去法のような有限の方法はありません。しかし、三角に近いものに到達することは可能です。上ヘッセンベルグ行列は、副対角より下の要素がすべてゼロである正方行列です。下ヘッセンベルグ行列は、上対角より上の要素がすべてゼロである行列です。上ヘッセンベルグ行列と下ヘッセンベルグ行列の両方である行列は三重対角行列です。ヘッセンベルグ行列と三重対角行列は、ゼロ要素によって問題の複雑さが軽減されるため、多くの固有値アルゴリズムの出発点となります。一般の行列を同じ固有値を持つヘッセンベルグ行列に変換するために、いくつかの方法が一般的に使用されています。元の行列が対称行列またはエルミート行列であった場合、結果として得られる行列は三重対角行列になります。
固有値のみが必要な場合は、変換後の行列の固有値は元の行列と同じであるため、類似度行列を計算する必要はありません。固有ベクトルも必要な場合は、ヘッセンベルグ行列の固有ベクトルを元の行列の固有ベクトルに変換するために、類似度行列が必要になる場合があります。
対称三重対角固有値問題では、特性多項式上の二分法を用いて、すべての固有値(固有ベクトルを除く)をO(n log(n))の時間で数値的に計算できます。[ 11 ]
反復アルゴリズムは、固有値に収束する数列を生成することで固有値問題を解きます。一部のアルゴリズムは、固有ベクトルに収束するベクトルの数列も生成します。最も一般的なのは、固有値の数列を、三角形または対角行列に収束する類似行列の数列として表現し、固有値を容易に読み取れるようにすることです。固有ベクトルの数列は、対応する類似行列として表現されます。
一般行列の固有値を直接計算する単純なアルゴリズムは存在しないが、固有値を直接計算できる特殊な行列クラスは数多く存在する。これらには以下が含まれる。
三角行列の行列式は対角成分の積であるため、Tが三角行列であれば、したがって、 Tの固有値はその対角成分である。
pが任意の多項式であり、p ( A ) = 0である場合、 Aの固有値も同じ式を満たします。pが既知の因数分解を持つ場合、Aの固有値はその根の中に含まれます。
例えば、射影とは、 P 2 = Pを満たす正方行列Pのことです。対応するスカラー多項式λ 2 = λの根は0 と 1 です。したがって、任意の射影の固有値は 0 と 1 になります。固有値として 0 が重複する回数はPの零空間の次元であり、固有値として 1 が重複する回数はPのランクです。
別の例として、あるスカラーαに対してA 2 = α 2 Iを満たす行列Aがあります。固有値は± αでなければなりません。射影演算子
満足する
そして
P +とP −の列空間は、それぞれ+ αと− αに対応するAの固有空間である。
2次元から4次元までの行列については、固有値を求めるために使用できる根号を含む公式が存在する。2×2行列や3×3行列では一般的な手法であるが、4×4行列では根号の公式が複雑化するため、この方法はあまり魅力的ではない。
2×2行列の場合
特性多項式は
したがって、固有値は二次方程式の解の公式を用いて求めることができる。
定義する 2つの固有値間の距離を計算するのは簡単です
cとdについても同様の式が成り立つ。このことから、固有値が分離されている場合、計算は良好な条件となることがわかる。
固有ベクトルは、ケイリー・ハミルトンの定理を利用して求めることができます。λ₁、λ₂が固有値である場合、( A − λ₁I)(A − λ₂I) = (A − λ₂I)(A − λ₁I) = 0 となるため、( A − λ₂I )の列ベクトルは( A − λ₁I )によって消去され、その逆も同様です。どちらの行列もゼロでないと仮定すると、それぞれの列ベクトルには、もう一方の固有値に対応する固有ベクトルが含まれるはずです。(どちらかの行列がゼロの場合、Aは単位行列の倍数となり、ゼロでないベクトルはすべて固有ベクトルとなります。)
例えば、
するとtr( A ) = 4 − 3 = 1およびdet( A ) = 4(−3) − 3(−2) = −6となり、特性方程式は次のようになります。
そして固有値は3と-2です。
どちらの行列でも、列は互いに倍数になっているので、どちらの列でも使用できます。したがって、(1, −2) は固有値 -2 に関連付けられた固有ベクトルとして、 (3, −1)は固有値 3 に関連付けられた固有ベクトルとして使用できます。これは、それらをAで乗算することで確認できます。
対称な3 × 3行列Aの特性方程式は次のとおりです。
この方程式はカルダノ法またはラグランジュ法を用いて解くことができますが、 Aをアフィン変換すると式が大幅に簡略化され、直接三角関数による解が得られます。A = pB + qIの場合、AとBは同じ固有ベクトルを持ち、βがBの固有値であるのは、 α = pβ + qがAの固有値である場合のみです。そして与える
置換β = 2cos θと恒等式cos 3 θ = 4cos 3 θ − 3cos θを用いて簡略化すると、方程式はcos 3 θ = det( B ) / 2に簡略化される。したがって
det( B )が複素数であるか、絶対値が 2 より大きい場合、逆余弦はkの3 つの値すべてに対して同じ枝に沿って計算する必要があります。この問題は、 A が実数で対称である場合には発生せず、単純なアルゴリズムになります。[ 17 ]
% 実対称3x3行列Aが与えられた場合、固有値を計算します。% acosとcosはラジアン単位の角度に対して演算を行うことに注意してください。p1 = A ( 1 , 2 ) ^ 2 + A ( 1 , 3 ) ^ 2 + A ( 2 , 3 ) ^ 2 if ( p1 == 0 ) % A は対角行列です。eig1 = A ( 1 , 1 ) eig2 = A ( 2 , 2 ) eig3 = A ( 3 , 3 ) else q = trace ( A ) / 3 % trace(A) はすべての対角値の合計ですp2 = ( A ( 1 , 1 ) - q ) ^ 2 + ( A ( 2 , 2 ) - q ) ^ 2 + ( A ( 3 , 3 ) - q ) ^ 2 + 2 * p1 p = sqrt ( p2 / 6 ) B = ( 1 / p ) * ( A - q * I ) % I は単位行列ですr = det ( B ) / 2% 対称行列の正確な算術では -1 <= r <= 1ですが、計算誤差によりこの範囲からわずかに外れる場合があります。if ( r <= - 1 ) phi = pi / 3 elseif ( r >= 1 ) phi = 0 else phi = acos ( r ) / 3 end% 固有値は eig3 <= eig2 <= eig1 を満たすeig1 = q + 2 * p * cos ( phi ) eig3 = q + 2 * p * cos ( phi + ( 2 * pi / 3 )) eig2 = 3 * q - eig1 - eig3 % trace(A) = eig1 + eig2 + eig3 であるためend再び、Aの固有ベクトルは、ケイリー・ハミルトンの定理を利用して得ることができます。α 1 、α 2 、α 3 が A の異なる固有値である場合、 ( A − α 1 I ) ( A − α 2 I ) ( A − α 3 I ) = 0となります。したがって、これらの行列の任意の 2 つの積の列には、3 番目の固有値に対応する固有ベクトルが含まれます。ただし、α 3 = α 1の場合、( A − α 1 I ) 2 ( A − α 2 I ) = 0および( A − α 2 I )( A − α 1 I ) 2 = 0となります。したがって、α 1の一般化固有空間はA − α 2 Iの列によって張られ、通常の固有空間は( A − α 1 I )( A − α 2 I )の列によって張られる。α 2の通常の固有空間は( A − α 1 I ) 2の列によって張られる。
例えば、
特性方程式は
固有値1(重複度2)と-1を持つ。計算すると、
そして
したがって、(−4, −4, 4)は −1 の固有ベクトルであり、(4, 2, −2)は 1 の固有ベクトルです。 (2, 3, −1)と(6, 5, −3)はどちらも 1 に関連付けられた一般化固有ベクトルであり、どちらか一方を(−4, −4, 4)と(4, 2, −2)と組み合わせることで、 Aの一般化固有ベクトルの基底を形成できます。固有ベクトルが見つかったら、必要に応じて正規化できます。
3×3行列の場合が正規分布であれば、外積を用いて固有ベクトルを求めることができます。は、すると、零空間はは、 その列空間に垂直です。は零空間に存在する。つまり、それは に関連付けられた固有ベクトルとなる。この場合、列空間は2次元なので、固有空間は1次元でなければならず、他の固有ベクトルはすべてそれに平行になります。
もし2 つの独立した列が含まれていないが、0ではない場合でも、クロス積は使用できます。この場合は重複度2の固有値なので、列空間に垂直な任意のベクトルは固有ベクトルになります。は、任意のベクトルを選択する平行ではない。 それから そして 垂直になりますしたがって、はの固有ベクトルになります 。
これは、これは通常ではありません。なぜなら、このような行列では零空間と列空間が直交する必要はないからです。