scipy.sparse.linalg.
use_solver#
- scipy.sparse.linalg.use_solver(**kwargs)[source]#
选择要使用的默认稀疏直接求解器。
- 参数:
注释
默认的稀疏求解器是 UMFPACK,前提是它可用(已安装
scikits.umfpack
)。 可以通过将 useUmfpack 设置为 False 来更改,这会导致始终存在的基于 SuperLU 的求解器被使用。UMFPACK 需要 CSR/CSC 矩阵具有排序的列/行索引。 如果确定矩阵满足此条件,请传递
assumeSortedIndices=True
以提高速度。参考文献
[1]T. A. Davis,算法 832:UMFPACK - 一种具有列预排序策略的非对称模式多前沿方法,ACM 算术软件交易,30(2),2004,第 196-199 页。 https://dl.acm.org/doi/abs/10.1145/992200.992206
[2]T. A. Davis,非对称模式多前沿方法的列预排序策略,ACM 算术软件交易,30(2),2004,第 165-195 页。 https://dl.acm.org/doi/abs/10.1145/992200.992205
[3]T. A. Davis 和 I. S. Duff,用于非对称稀疏矩阵的组合统一前沿/多前沿方法,ACM 算术软件交易,25(1),1999,第 1-19 页。 https://doi.org/10.1145/305658.287640
[4]T. A. Davis 和 I. S. Duff,用于稀疏 LU 分解的非对称模式多前沿方法,SIAM 矩阵分析与计算杂志,18(1),1997,第 140-158 页。 https://doi.org/10.1137/S0895479894246905T.
示例
>>> import numpy as np >>> from scipy.sparse.linalg import use_solver, spsolve >>> from scipy.sparse import csc_matrix >>> R = np.random.randn(5, 5) >>> A = csc_matrix(R) >>> b = np.random.randn(5) >>> use_solver(useUmfpack=False) # enforce superLU over UMFPACK >>> x = spsolve(A, b) >>> np.allclose(A.dot(x), b) True >>> use_solver(useUmfpack=True) # reset umfPack usage to default