Я пытаюсь инвертировать большую разреженную матрицу (150000,150000)
следующим образом:
import scipy as sp
import scipy.sparse.linalg as splu
#Bs is a large sparse matrix with shape=(150000,150000)
#calculating the sparse inverse
iBs=splu.inv(Bs)
приводит к следующему сообщению об ошибке:
Traceback (most recent call last):
iBs=splu.inv(Bs)
File "/usr/lib/python2.7/dist-packages/scipy/sparse/linalg/dsolve/linsolve.py", line 134, in spsolve
autoTranspose=True)
File "/usr/lib/python2.7/dist-packages/scipy/sparse/linalg/dsolve/umfpack/umfpack.py", line 603, in linsolve
self.numeric(mtx)
File "/usr/lib/python2.7/dist-packages/scipy/sparse/linalg/dsolve/umfpack/umfpack.py", line 450, in numeric
umfStatus[status]))
RuntimeError: <function umfpack_di_numeric at 0x7f2c76b1d320> failed with UMFPACK_ERROR_out_of_memory
Я запустил программу, чтобы просто решить систему линейных дифференциальных уравнений:
import numpy as np
N=Bs.shape[0]
I=np.ones(N)
M=splu.spsolve(Bs,I)
и я снова получаю ту же ошибку
Я использовал этот код на машине с 16 ГБ ОЗУ, а затем переместил ее на сервер с 32 ГБ ОЗУ, но все же безрезультатно.
Кто-нибудь сталкивался с этим раньше?