use_solver#
- scipy.sparse.linalg.use_solver(**kwargs)[Quelle]#
Wählt den standardmäßigen dünnbesetzten direkten Löser.
- Parameter:
- useUmfpackbool, optional
Verwendet UMFPACK [1], [2], [3], [4] statt SuperLU. Hat nur dann eine Auswirkung, wenn
scikits.umfpackinstalliert ist. Standard: True- assumeSortedIndicesbool, optional
Erlaubt UMFPACK, den Schritt des Sortierens von Indizes für eine CSR/CSC-Matrix zu überspringen. Hat nur dann eine Auswirkung, wenn useUmfpack True ist und
scikits.umfpackinstalliert ist. Standard: False
Hinweise
Der standardmäßige dünnbesetzte Löser ist UMFPACK, wenn verfügbar (
scikits.umfpackist installiert). Dies kann durch Übergabe von useUmfpack = False geändert werden, wodurch dann der immer vorhandene SuperLU-basierte Löser verwendet wird.UMFPACK erfordert, dass eine CSR/CSC-Matrix sortierte Zeilen-/Spaltenindizes aufweist. Wenn Sie sicher sind, dass die Matrix diese Bedingung erfüllt, übergeben Sie
assumeSortedIndices=True, um etwas Geschwindigkeit zu gewinnen.Referenzen
[1]T. A. Davis, Algorithm 832: UMFPACK - an unsymmetric-pattern multifrontal method with a column pre-ordering strategy, ACM Trans. on Mathematical Software, 30(2), 2004, S. 196–199. https://dl.acm.org/doi/abs/10.1145/992200.992206
[2]T. A. Davis, A column pre-ordering strategy for the unsymmetric-pattern multifrontal method, ACM Trans. on Mathematical Software, 30(2), 2004, S. 165–195. https://dl.acm.org/doi/abs/10.1145/992200.992205
[3]T. A. Davis und I. S. Duff, A combined unifrontal/multifrontal method for unsymmetric sparse matrices, ACM Trans. on Mathematical Software, 25(1), 1999, S. 1–19. https://doi.org/10.1145/305658.287640
[4]T. A. Davis und I. S. Duff, An unsymmetric-pattern multifrontal method for sparse LU factorization, SIAM J. Matrix Analysis and Computations, 18(1), 1997, S. 140–158. https://doi.org/10.1137/S0895479894246905T.
Beispiele
>>> import numpy as np >>> from scipy.sparse.linalg import use_solver, spsolve >>> from scipy.sparse import csc_array >>> R = np.random.randn(5, 5) >>> A = csc_array(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