非常に大きくて非常に疎な隣接行列のすべての固有値を計算する


13

それぞれ約n〜100000個のノードを持つ2つのグラフがあります。両方のグラフで、各ノードはちょうど3つの他のノードに接続されているため、隣接行列は対称で非常にまばらです。

難しい部分は、隣接行列のすべての固有値が必要ですが、固有ベクトルは必要ないことです。正確に言うと、これは私の生涯に1回(少なくとも私が見る限りでは!)になるので、すべての固有値を取得したいのですが、それらを取得するのに数日待つことは気にしません。

scipyラッパーを試してみましたARPACKが、時間がかかりすぎます。複数のライブラリを見つけましたが、最大/最小の固有値のサブセットを取得するのに最適です。すべての固有値を取得するために、おそらく並列実装で対称スパース行列に機能するライブラリはありますか?


6
好奇心から、なぜ正確にすべての固有値が必要なのですか?このサイズの問題のほとんどは、さらに大きな(または無限次元の)問題の近似であるため、小さな問題の固有値は、実際に解決したい問題の固有値にしか近似しません。ほとんどの場合、近似の品質は最小または最大の固有値に対してのみ良好であり、他のすべては近似が不十分であるため、実際にはあまり関心がありません。
ヴォルフガングバンガース


@WolfgangBangerth:(これらがあなたに明らかな場合は私を許してください)問題は材料の物理学から来ています。これは、バンド構造、振動特性、電気特性を得るための材料の緊密な近似に関連しています。これらを取得するには、固有値の完全なスペクトルが必要です。ところで、これは新しいものではなく、70年代と80年代に遡りますが、私のシステムは不定形なので、良い結果を得るには非常に大きなシステムが必要でした。ほとんどの人は結晶だけを気にしますが、これは私の場合と比べて非常に簡単です。
マフディ

2
@Mahdi:さて、私が意味したのは、物理的性質が偏微分演算子のスペクトルによって決定されるということです。私はあなたが持っている大きな行列の固有値問題がPDE問題の単なる近似であると疑っています(もちろん、あなたは問題がどこから来たのかを説明していないのでわかりません)。その結果、固有値近似値になります。
ウルフギャングバンガース

回答:


8

シフト反転スペクトル変換[1]を使用して、バンドごとにスペクトルを計算できます。

この手法は、私の記事[2]でも説明されています。[1]の実装に加えて、実装はGraphiteソフトウェア[3]のC ++で利用可能です1月17日更新:現在すべてがジオグラム/グラファイトバージョン3に移植されています)。最大100万個の頂点を持つメッシュ(あなたと同様の問題)。

使い方:

AVλAV1/λA1AA1ALLtAバツ=bAσdσAσd1σ

[1] http://www.mcs.anl.gov/uploads/cels/papers/P1263.pdf

[2] http://alice.loria.fr/index.php/publications.html?redirect=0&Paper=ManifoldHarmonics@2008

[3] http://alice.loria.fr/software/graphite/doc/html/


ありがとうブルーノ!これらは非常に有望に見えます、私はそれらを調べます!
マフディ

1

別のオプションは、ヤコビ回転を使用することです。マトリックスはすでにほぼ対角線になっているため、収束するのにそれほど時間はかかりません。一般に、線形レートで収束しますが、十分な反復の後、収束レートは2次になります。

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