use_solver#
- scipy.sparse.linalg.use_solver(**kwargs)[источник]#
Выбрать решатель разреженных прямых систем по умолчанию.
- Параметры:
- useUmfpackbool, необязательно
Использовать UMFPACK [1], [2], [3], [4]. над SuperLU. Имеет эффект только если
scikits.umfpackустановлен. По умолчанию: True- assumeSortedIndicesbool, необязательно
Разрешить UMFPACK пропускать шаг сортировки индексов для CSR/CSC матрицы. Имеет эффект только если useUmfpack равен True и
scikits.umfpackустановлен. По умолчанию: False
Примечания
Стандартный разреженный решатель — UMFPACK, когда доступен (
scikits.umfpackустановлен). Это можно изменить, передав useUmfpack = False, что заставит использовать всегда присутствующий решатель на основе SuperLU.UMFPACK требует, чтобы матрицы CSR/CSC имели отсортированные индексы столбцов/строк. Если уверены, что матрица удовлетворяет этому условию, передайте
assumeSortedIndices=Trueдля увеличения скорости.Ссылки
[1]T. A. Davis, Algorithm 832: UMFPACK - несимметричный многофронтальный метод со стратегией предварительного упорядочивания столбцов, ACM Trans. on Mathematical Software, 30(2), 2004, стр. 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, pp. 165–195. https://dl.acm.org/doi/abs/10.1145/992200.992205
[3]T. A. Davis и I. S. Duff, A combined unifrontal/multifrontal method for unsymmetric sparse matrices, ACM Trans. on Mathematical Software, 25(1), 1999, pp. 1–19. https://doi.org/10.1145/305658.287640
[4]T. A. Davis и I. S. Duff, Несимметричный многофронтальный метод для LU-факторизации разреженных матриц, SIAM J. Matrix Analysis and Computations, 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_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