4

matlabでは、関数'eigs()'を使用して、大きな行列(5000x5000)の最小の固有ベクトルのいくつか(約10)を取得します。このような:

[V,UU] = eigs(A, 10,'sm');

試してみたところ、行列'eigs()'が処理できる最大サイズは1300から1500の間であることがわかりました。

行列が大きくなると、'(A-sigma * I)issingularのようなエラーメッセージが表示されます。シフトは固有値です。または、コマンドウィンドウの「APPAPK」(「sr」を使用する場合)に関する情報。

私はグーグルからこれらのエラーについていくつかの情報を得ました、しかしそれらは私が完全に理解していないいくつかの内部コードまたは定理(1つのように聞こえます)についてです。

だから、大きな行列で動作させるためのeigのトリックがあるかどうか知りたいですか?

お手数をおかけしますが、よろしくお願いいたします。

4

1 に答える 1

1

次のように、同じサイズの単位行列を追加してみることができます。A = A + k * eye(size(A、1)); ここで、kは1より小さい実験係数です。これを行うと、行列Aが正則であることが保証されます。

于 2013-05-03T10:14:10.897 に答える