大きな正方行列 (100-200 行/列) を頻繁に反転する必要があるコードを python で書いています。
私はマシンの精度の限界に達しているので、mpmath
任意精度の行列反転を行うために使用しようとし始めましたが、 を使用しても非常に遅いgmpy
です。
精度 30 (10 進数) でサイズ 20、30、60 のランダム行列を反転すると、~ 0.19、0.60、および 4.61 秒かかりますが、同じ操作にmathematica
は 0.0084、0.015、および 0.055 秒かかります。
これは、arch Linux マシンでpython3
and mpmath 0.17
(gmpy のバージョンは不明) を使用しています。mpmath が非常に遅い理由はわかりませんが、これに対して mathematica が管理する速度に近づくオープンソース ライブラリはありますか (1/2 の速度でも良いでしょう)。
任意の精度は必要ありません。おそらく 128 ビットで十分でしょう。また、mpmath がどのように非常に遅くなる可能性があるのか もわかりません。非常に異なる行列反転アルゴリズムを使用している必要があります。具体的には、私が使用してM**-1
います。
より高速なアルゴリズムを使用したり、高速化したりする方法はありますか。