我有scipy.sparse.csc_matrix
形状为A
的稀疏矩阵(N, N)
,其中N
约为15000
。 A
的元素数少于1 %
。
我需要尽可能快地解决Ax=b
。
使用scipy.sparse.linalg.spsolve
使用350 ms
大约scikit-umfpack
。
使用scipy.sparse.linalg.gmres
预处理程序时50 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)
scipy.sparse.linalg.gmres
是否有更有效的方法可以做到这一点,这样使用{{1}}会更有利可图?