2016-05-27 16 views
1

私は、疎行列Aの疑似逆行列の列のサブセットを計算する最良の方法を探しています。ここではいくつかの関連する事実は以下のとおりです。scipy.sparse行列の疑似逆行列の列のサブセットを計算する最速の方法

  1. Aは、既知の固有ベクトル

  2. を持つ単一のゼロ固有値を持つスパースNxN行列である私は唯一の擬似がある擬似

  3. M < N/2列を必要とします高密度マトリックス

私は現在を使用しています(IdNxN単位行列のNxMサブマトリクスです)、これを行うにはより良い方法があると思われます。

ご意見をお寄せください。

更新:つのみゼロ固有値があるので、それは可逆拡張(N+1)x(N+1)マトリックスを作成し、scipy.linalg.solveを使用するより高速であることが判明しました。しかし、これはまだAの希薄さを利用していません。

+0

'scipy.sparse.linalg.inv'は 'もしAの逆数が疎でないと予想されるならば、Aを密に変換してscipy.linalg.invを使う方が速いでしょう。 – hpaulj

+0

私は可能な限りNを増やそうとしていますが、密行列で作業することは、もはや実行可能なオプションではありません。私は完全な逆を必要としないので、反復的な疎なソルバーが良いかもしれないと思った。 – Dunham

+0

私は、疎な行列形式に関するあらゆる種類の詳細を解読することができますが、逆の方法を大いに掘り下げたわけではありません。 – hpaulj

答えて

1

scipy.sparse.linalg.svdsを探しています。「kの唯一の値/ベクトルを疎行列に計算します」(これは密度の高い行列でもそうですが、やや誤解を招きます)

人気のあるFortran77パッケージARPACKに実装されているArnoldi iterationを使用しています.ARPACKは、ほとんどの数学システム(Matlab、Rなど)にラッパーを備えています。

関連する問題