13

1,000 x 1,000の正方行列がある場合、Lapackはこの行列の固有ベクトルと固有値を計算できますか?そして、それができるとしたら、どれくらいの時間がかかりますか?また、10,000 x 10,000のマトリックス、さらには1,000,000 x1,000,000のマトリックスについてはどうでしょうか。

これらは主に0が入力されたスパース行列になることに注意してください(行列はソーシャルネットワークを表すグラフになります)。スパース行列を処理するための特別な手順はLapackにありますか?Arpackの推奨事項が表示されます。しかし、これは非常に大きな行列を計算することを可能にしますか?

4

3 に答える 3

10

LAPACKにはスパース行列の特別なサポートが組み込まれていませんが、ARPACKにはあります。これを実行する予定のマシンによっては、非常に大きなマトリックスのメモリが不足する可能性があるため、LAPACKの使用が除外される可能性があります。さまざまな線形代数ライブラリの概要については、 http://www.netlib.org/utk/people/JackDongarra/la-sw.htmlを参照してください。

予想される行列(対称行列は何倍も高速になります)、これを実行する予定のプロセッサ、使用可能なメモリの量の詳細がなければ、これらの計算にかかる時間の意味のある見積もりを提供する方法はありません。等

他の質問に基づいて、MATLABを使い続けることをお勧めします。スパース行列のサポートがあり、一般に線形代数に適しています。

于 2010-07-20T18:57:35.623 に答える
3

行列が疎な場合は、おそらく疎行列パッケージを使用する方がよいでしょう。詳細については、この StackOverflowの記事を参照してください。

lapack を使用すると、数秒で 1000 x 1000 を実行できます (マシンによって異なります)。アルゴリズムはすべて O(n^3) になる傾向があるため、10000 x 10000 は 1000 倍の時間がかかります。

于 2010-07-20T19:02:39.333 に答える
1

Lapackは、密な帯行列のみをサポートします(一般的なスパース行列はサポートしません)。したがって、スパース行列がバンド化されていない限り(説明から、通常は圧縮された行ストレージスキームに格納されている一般的なスパース行列のように聞こえます)、lapackは使用したいものではありません。

大きなスパース行列の場合、Arpackから始めるのが適切です。

于 2010-07-20T18:55:36.747 に答える