最大の大きさの固有値に対応する密行列の固有ベクトルを計算する最も効率的な方法は何ですか?


10

密な実対称正方行列があります。寸法は約1000x1000です。最初の主成分を計算する必要があり、これを行うのに最適なアルゴリズムは何であるのかと思います。

MATLABはArnoldi / Lanczosアルゴリズム(の場合eigs)を使用しているようです。しかし、それらについて読んだだけでは、行列がスパースではなく、最初の固有ベクトルのみに関心があるため、単純な累乗反復よりも利点があるかどうかわかりません。

この場合の最速のアルゴリズムは何ですか?


1
私のコンピューターでは、ランダムに生成された1000 X 1000対称行列で、Rの「固有」関数はすべての固有値とベクトルを計算するために約1秒かかりました。あなたの走行距離は変わるかもしれませんが、私はあなたのアルゴリズムの選択がそのようなタイミングで何らかの違いを生むとは思いません。

はい、もちろんそうです。プログラムの実行速度を上げることにあまり関心はありません。前述のより複雑な手法がこのユースケースでも優れていると考えられるかどうか(密で、最初の固有ベクトルのみ)、または密行列に異なる手法があるかどうか、私は興味があります。

最大または最小の固有値に対応する固有ベクトルを意味しますか?前者が必要なようです。
Jack Poulson、2012年

はい、固有ベクトルは最大の大きさの固有値に対応しています。
ミカフィッシャー

回答:


12

最も高速な方法は、マトリックスのスペクトルと正規性に依存する可能性がありますが、すべての場合において、クリロフアルゴリズムは、パワー反復よりも厳密に優れているはずです。GW Stewartは、この問題についてMatrix Algorithms、Volume II:Eigensystemsの第4章、セクション3で素晴らしい議論をしています:

AuAkuAku

100×100i.95ii=0


うーん、いくつかの固有ベクトルが必要なときは、MRRRが標準の方法になったと思っていました...
JM

kO(kn2+k2n+k3)kn

そうですか; どういうわけか私はあなたがクリロフを行う前に最初に三重対角化する必要があるという印象を持っていました。ありがとう!
JM 2013年

ランチョスは実際、徐々にこの三重対角行列を構築しています。
ジャックポールソン2013年

5

べき乗反復は最も単純ですが、前述のように、行列が非常に非正規の場合、収束が非常に遅くなる可能性があります。漸近行動が始まる前に、シーケンスが多くの反復で発散するように見える「こぶ」現象が発生します。

マトリックスは対称なので、RQIの反復を考慮することができます。対称の場合、3次収束が得られます:http : //en.wikipedia.org/wiki/Rayleigh_quotient_iteration

ArnoldiまたはLanczosの反復が非常に優れているのは(少なくとも私の意見では、数値線形代数の研究はしていません)、非常に用途が広いということです。通常、固有値と固有値を制御することができます。これは特に対称の場合に当てはまります(行列が明確である場合はさらに優れています)。対称問題の場合、それらは非常に堅牢です。ブラックボックスとしてはうまく機能しますが、マトリックスを含むシステムを解く能力など、新しい問題情報を非常によく受け入れます。

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