小さな行列の固有値


8

2x2、3x3、および4x4行列(実数、非対称)の小さな数値ライブラリを書いています。

多くの数値分析テキストは、特性多項式の根を計算することを強くお勧めし、ダブルシフトQRアルゴリズムの使用を推奨しています。ただし、行列のサイズから、特性多項式を単純に計算して根を見つけるだけで十分かどうか疑問に思います。これをサポートするStackExchangeこの回答を見つけましたが、多項式係数のエラーにより、多項式のゼロ(したがって、異なる固有値)が不正確になる可能性があることを知っています。一方、方程式はせいぜい4次式であり、多項式の根の分析式があるので、あまり離れすぎないようにしてください。

この場合の固有値を得るために特性多項式を使用することの長所と短所は何ですか?

回答:


12

最初に注意することは、多項式(任意の多項式)の根を見つけることと任意の行列の固有値を見つけることの間の対応は本当に直接的なことであり、それは豊かな主題です、多項式の疑似零点と TohとTrefethenによるコンパニオン行列の疑似スペクトルを参照してくださいそこへの参照。

基本的に、2×2のケースは自明であり、標準の式、 は、行列式が正確に評価されている限り、数値的に安定しており正確 です場合、直接の式は不正確になりますですが、FMAを使用するKahanによる正確な式がありますhttps://hal.inria.fr/ensl-00649347v1/document)。

x1=bsign(b)Δ2a,x2=c/(ax1),Δ=det(b2a2cb)
Δb24ac

3次多項式であっても、そのような直接の等価物はありません。(編集:CADJunkieのコメントで以下のKahanのメソッドへのリンクを参照してください。これは間違いである可能性があります。)直接の式は必ずしも数値的に安定しているとは限らず(想定に反して)、同じように数値的に安定させることはできませんどこかに正しい記号を挿入することにより、二次式のように。たとえば、倍精度の算術演算など、追加の精度で評価してみることができます。しかし、多項式で直接機能するアプローチはかなり複雑です。たとえば、(https://doi.org/10.1145/2699468、これは4次多項式でも機能します)ニュートンの方法を事前に計算された適切な最初の推測で使用できますが、かなり複雑になり、スピードアップもそれほど大きくありません。

同様に、次数4の多項式の明示的な公式は、常に数値的に安定しているとは限りません。最も難しい多項式は、共通の根(小さい、または互いに近く、大きさが大きく異なる)をもつ傾向がありますが、通常、数十億の純粋にランダムな多項式でコードをテストしても、数値エラーが明らかになる可能性があります。

これに関する奇妙なことの1つは、多項式の根を見つける一般的な方法であるJenkins-Traubが、実際には偽装した固有値アルゴリズム(逆反復)であることです。

数式の明示性は、ある意味、誤解を招くものだと思います。数式は閉じた形をしているので、なんとなく安く/安くなっているという考えにだまされます。実際にこれをいくつかのテストデータでテスト/ベンチマークすることをお勧めします。真である必要はありません。次数多項式の根を決定することは、小さな行列の固有値を決定するという完全な問題の難しさの小さな整数係数内であり、固有値の標準ライブラリルーチンははるかに堅牢です十分にテストされています。したがって、小さな固有値問題を低次の多項式根問題に還元しても、必ずしもそれを単純化しているわけではありません。3

この場合の固有値を得るために特性多項式を使用することの長所と短所は何ですか?

主な欠点は、あなたが行うこの仮定が次のことだと私は思います:

一方、方程式はせいぜい4次式であり、多項式の根の分析式があるので、あまり離れすぎないようにしてください。

これは、数式が閉じた形式であり、分析的であること、つまり、簡単/安価/正確であることを意味するため、必ずしも正しくありません。それはあなたが持っているかもしれない特定のデータに当てはまる可能性がありますが、私が知る限り、それは一般的には当てはまりません。

PS閉じた形式と閉じていない形式の違い全体は、コンピュータ演算では非常に扱いにくいものになります。3 次式のは閉じた形式であると考えるかもしれませんが、コンピュータ演算に関しては心配しています、これは単なる別の近似有理関数です。固有値アルゴリズムの結果を定義する近似有理関数とは異なりますが、基本的には異なりません。cos()


すばらしい回答ありがとうございます。固有値と接続されているポリ根についてのビットは私にとって初めてでした。コンピューター演算を処理する場合、閉形式のソリューションが必ずしも優れているとは限りません。私は、Kahanが(people.eecs.berkeley.edu/~wkahan/Math128/Cubic.pdf)について記述した2次および3次のポリルートソルバーを使用し、デカルト分解を使用して2次を3 次に変換することを計画していました。QRアルゴリズムまたは私の述べたアプローチを実装することをお勧めしますか?
CADJunkie 2017

@CADJunkieかっこいいです。ありがとう、Kahanが書いたことを知らなかったので、後で読みます。このように推奨するのは難しいです。むしろ、これらの質問を解決するためのより良い方法は、アイデアを実装し、テストしてベンチマークし、それらのベンチマークを使用することです。結果を確認する前に、このようにパフォーマンスを予測することは非常に困難です。ただし、少なくともすべての標準ライブラリ固有値ソルバーと比較してください。
キリル

@CADJunkie Kahanが書いたものに基づいて、立方体のケースも直接行う方が良いかもしれません。それを想定して、私が書いたものは、二次およびそれ以上のために大丈夫だと思います。
Kirill

1

QRアルゴリズムを使用する方が良い方法です。目の前の作業に最適なアルゴリズムを使用するのが最適だと思います。

実際、多項式の根を行列の固有値として使用することを意図せずに計算しようとしても、その多項式のコンパニオン行列を作成し、その行列の固有値を解くことをお勧めします。(つまり、検討しているプロセスとは逆のプロセスを実行します。)プロセスは非常に堅牢ですが、計算効率はそれほど高くありません。多項式の根を見つけるタスクに固有のアルゴリズム(たとえば、Jenkins-Traub、Method of Laguerreなど)の方が効率的です。また、これらの方法のいずれかを使用した場合でも、コンパニオンマトリックスを形成してその固有値を計算すると、より良い結果得られる場合がまだある場合があります。

また、Kirillが示したように、3次または4次多項式の閉形式解を利用する方法はありません。Jenkins-Traubアルゴリズムの翻訳を書く前に、数年前にこれを調べました。数値結果については、アルゴリズムを最初から離散ソルバーとして記述し、閉じた形の解を無視するのが最善です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.