2つの大きな正方形のスパース行列AとBがあり、次のように計算する必要がありますA * B^-1
。最も効率的な方法で。答えはを使うことだと思いますがscipy.sparse
、一生理解できません。
徹底的に検索した後、私は次のスレッドに出くわしました:逆行列とスパース行列の積のための効率的なnumpy / lapackルーチン?しかし、最も効率的な方法が何であるかを理解することはできません。
誰かがscipyのスパースモジュールに組み込まれているLU分解を使用することを提案しましたが、サンプル行列でLUを実行しようとすると、結果は特異であると言われます(ただし、* B ^ -1を実行すると答えが得られます)。また、誰かがを使用することを提案しているのを聞いたことがありますlinalg.spsolve()
が、2番目の引数としてベクトルが必要なため、これを実装する方法がわかりません。
それが役立つ場合は、解stが得A * B^-1 = C
られたら、行列Cの1行の値を知るだけで済みます。行列はおよそ1000x1000から1500x1500になります。