密な実対称正方行列があります。寸法は約1000x1000です。最初の主成分を計算する必要があり、これを行うのに最適なアルゴリズムは何であるのかと思います。
MATLABはArnoldi / Lanczosアルゴリズム(の場合eigs
)を使用しているようです。しかし、それらについて読んだだけでは、行列がスパースではなく、最初の固有ベクトルのみに関心があるため、単純な累乗反復よりも利点があるかどうかわかりません。
この場合の最速のアルゴリズムは何ですか?
密な実対称正方行列があります。寸法は約1000x1000です。最初の主成分を計算する必要があり、これを行うのに最適なアルゴリズムは何であるのかと思います。
MATLABはArnoldi / Lanczosアルゴリズム(の場合eigs
)を使用しているようです。しかし、それらについて読んだだけでは、行列がスパースではなく、最初の固有ベクトルのみに関心があるため、単純な累乗反復よりも利点があるかどうかわかりません。
この場合の最速のアルゴリズムは何ですか?
回答:
最も高速な方法は、マトリックスのスペクトルと正規性に依存する可能性がありますが、すべての場合において、クリロフアルゴリズムは、パワー反復よりも厳密に優れているはずです。GW Stewartは、この問題についてMatrix Algorithms、Volume II:Eigensystemsの第4章、セクション3で素晴らしい議論をしています:
べき乗反復は最も単純ですが、前述のように、行列が非常に非正規の場合、収束が非常に遅くなる可能性があります。漸近行動が始まる前に、シーケンスが多くの反復で発散するように見える「こぶ」現象が発生します。
マトリックスは対称なので、RQIの反復を考慮することができます。対称の場合、3次収束が得られます:http : //en.wikipedia.org/wiki/Rayleigh_quotient_iteration。
ArnoldiまたはLanczosの反復が非常に優れているのは(少なくとも私の意見では、数値線形代数の研究はしていません)、非常に用途が広いということです。通常、固有値と固有値を制御することができます。これは特に対称の場合に当てはまります(行列が明確である場合はさらに優れています)。対称問題の場合、それらは非常に堅牢です。ブラックボックスとしてはうまく機能しますが、マトリックスを含むシステムを解く能力など、新しい問題情報を非常によく受け入れます。