2

対称行列(無向グラフの隣接行列)があり、特定の固有値(最大固有値)があり、それに関連付けられた固有ベクトルが必要です(左または右、どちらか一方、左は単に転置であると信じているため)対称行列の権利)。

私が実行しているグラフは、数千から数十万のノードになる可能性があるため、対応する隣接行列は大きくなります。ただし、密度はスパースであるため、対応する行列もスパースになります。

SciPyでこれを行う効率的な方法はありますか?さらに良いことに、与えられた対称行列の先行固有値と対応する固有ベクトルのみを計算する方法があります(つまり、を使用して先行固有値を自分で明示的に計算する必要はありませんlinalg.eigvals)。

4

1 に答える 1

3

はいscipy.sparse.linalg.eigshh最後にエルミートを表すバージョンがあり、非対称行列のバージョンもありscipy.sparse.linalg.eigsます。

がスパースであるかどうかに関係なく、行列の場合a、呼び出しは次のようになります。

evals, evecs = scipy.sparse.linalg.eigsh(a, k=1)

evalsとは、固有値evecsと対応する固有ベクトルの配列ですk。1以外に設定すると、複数を要求できるためです。返される固有値とベクトルは、whichパラメーターで制御されます。デフォルトはLM最大の大きさを表します。

于 2013-01-24T21:29:02.597 に答える