scipy.sparse.linalg.splu¶
-
scipy.sparse.linalg.
splu
(A, permc_spec=None, diag_pivot_thresh=None, relax=None, panel_size=None, options={})[source]¶ Compute the LU decomposition of a sparse, square matrix.
Parameters: - A : sparse matrix
Sparse matrix to factorize. Should be in CSR or CSC format.
- permc_spec : str, optional
How to permute the columns of the matrix for sparsity preservation. (default: ‘COLAMD’)
NATURAL
: natural ordering.MMD_ATA
: minimum degree ordering on the structure of A^T A.MMD_AT_PLUS_A
: minimum degree ordering on the structure of A^T+A.COLAMD
: approximate minimum degree column ordering
- diag_pivot_thresh : float, optional
Threshold used for a diagonal entry to be an acceptable pivot. See SuperLU user’s guide for details [1]
- relax : int, optional
Expert option for customizing the degree of relaxing supernodes. See SuperLU user’s guide for details [1]
- panel_size : int, optional
Expert option for customizing the panel size. See SuperLU user’s guide for details [1]
- options : dict, optional
Dictionary containing additional expert options to SuperLU. See SuperLU user guide [1] (section 2.4 on the ‘Options’ argument) for more details. For example, you can specify
options=dict(Equil=False, IterRefine='SINGLE'))
to turn equilibration off and perform a single iterative refinement.
Returns: - invA : scipy.sparse.linalg.SuperLU
Object, which has a
solve
method.
See also
spilu
- incomplete LU decomposition
Notes
This function uses the SuperLU library.
References
[1] (1, 2, 3, 4, 5) SuperLU http://crd.lbl.gov/~xiaoye/SuperLU/ Examples
>>> from scipy.sparse import csc_matrix >>> from scipy.sparse.linalg import splu >>> A = csc_matrix([[1., 0., 0.], [5., 0., 2.], [0., -1., 0.]], dtype=float) >>> B = splu(A) >>> x = np.array([1., 2., 3.], dtype=float) >>> B.solve(x) array([ 1. , -3. , -1.5]) >>> A.dot(B.solve(x)) array([ 1., 2., 3.]) >>> B.solve(A.dot(x)) array([ 1., 2., 3.])