すべての特異値分解を実行することにより、多くの実対称50x50行列の最大固有値を計算するプログラムがあります。SVDはプログラムのボトルネックです。
最大の固有値を見つけるのにはるかに速いアルゴリズムがありますか、またはこの部分を最適化しても投資収益率があまり高くないでしょうか?
すべての特異値分解を実行することにより、多くの実対称50x50行列の最大固有値を計算するプログラムがあります。SVDはプログラムのボトルネックです。
最大の固有値を見つけるのにはるかに速いアルゴリズムがありますか、またはこの部分を最適化しても投資収益率があまり高くないでしょうか?
回答:
最大固有値に必要な精度に応じて、Power Iterationを使用してみてください。
特定の例では、明示的に形成しない限り、各反復でx ← X (X T x )を計算します。Aの計算にはO(n 3)演算が必要ですが、マトリックスとベクトルの積にはO(n 2)しか必要ありません。
収束率は、最大の2つの固有値の分離に依存するため、これはすべての場合に適したソリューションではない可能性があります。
5つの固有値のみが非常に重要である場合、行列ベクトル乗算としてを使用するLanczsosアルゴリズムは、5つの初期ステップの後に高速線形収束を提供する必要があります。
ような正の半正定行列の場合、スペクトルシフトを使用して収束を加速する価値があります。すなわち、適切なスカラμが選択され、電源方法が印加されるA - μ Iの代わりにA。
基本的なべき乗法のいくつかの反復により、大まかな見積もりが得られます最大固有値のλ 1。支配的な固有値が多数1を有し、他のすべてがであると仮定すると[ 0 、5次に、A-5最大の固有値だろう7とで残り[-5。
つまり、最大の固有値の優位性を、次の最大の固有値の20%から次の最大の固有値の40%に増やします。それに応じて、累乗法の幾何学的収束が加速します。最大固有値一度、十分な精度で発見されたλ 1は、バックシフト加えることによって推定されるμ連れ去られていました。