带预处理器的稀疏矩阵求解器

Seb*_*ian 7 python numpy scipy sparse-matrix

我有一个形状scipy.sparse.csc_matrix稀疏的矩阵A(N, N)其中N大约为15000A少于1 %非零元素。

我需要Ax=b尽可能高效地解决问题。

Usingscipy.sparse.linalg.spsolve需要350 ms使用scikit-umfpack. scipy.sparse.linalg.gmres50 ms使用时显著更快ILU的预处理器。如果没有预处理器,则需要一分钟以上的时间。

但是,创建预处理器大约需要1.5 s. 鉴于此,仅使用scipy.sparse.linalg.spsolve.

我创建预调质M

from scipy.sparse.linalg import LinearOperator, spilu
ilu = spilu(A)
Mx = lambda x: ilu.solve(x)
M = LinearOperator((N, N), Mx)
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法来做到这一点,这样使用scipy.sparse.linalg.gmres会更有利可图?