# sparseLU-class

0th

Percentile

##### Sparse LU decomposition of a square sparse matrix

Objects of this class contain the components of the LU decomposition of a sparse square matrix.

Keywords
classes
##### Note

The decomposition is of the form $$A = P'LUQ,$$ or equivalently $PAQ' = LU$, where all matrices are sparse and of size $n\times n$. The matrices $P$ and $Q$, and their transposes $P'$ and $Q'$ are permutation matrices, $L$ is lower triangular and $U$ is upper triangular.

##### Objects from the Class

Objects can be created by calls of the form new("sparseLU", ...) but are more commonly created by function lu() applied to a sparse matrix, such as a matrix of class '>dgCMatrix.

##### Slots

L:

Object of class "'>dtCMatrix", the lower triangular factor from the left.

U:

Object of class "'>dtCMatrix", the upper triangular factor from the right.

p:

Object of class "integer", permutation applied from the left.

q:

Object of class "integer", permutation applied from the right.

Dim:

the dimension of the original matrix; inherited from class '>MatrixFactorization.

##### Extends

Class "'>LU", directly. Class "'>MatrixFactorization", by class "LU".

##### Methods

expand

signature(x = "sparseLU") Returns a list with components P, L, U, and Q, where $P$ and $Q$ represent fill-reducing permutations, and $L$, and $U$ the lower and upper triangular matrices of the decomposition. The original matrix corresponds to the product $P'LUQ$.

lu, solve, '>dgCMatrix

##### Aliases
• sparseLU-class
• expand,sparseLU-method
##### Examples
# NOT RUN {
## Extending the one in   examples(lu), calling the matrix  A,
## and confirming the factorization identities :
package = "Matrix")),
"CsparseMatrix")
## with dimnames(.) - to see that they propagate to L, U :
dimnames(A) <- dnA <- list(paste0("r", seq_len(nrow(A))),
paste0("C", seq_len(ncol(A))))
str(luA <- lu(A)) # p is a 0-based permutation of the rows
# q is a 0-based permutation of the columns
xA <- expand(luA)
## which is simply doing
stopifnot(identical(xA$L, luA@L), identical(xA$ U, luA@U),
identical(xA$P, as(luA@p +1L, "pMatrix")), identical(xA$ Q, as(luA@q +1L, "pMatrix")))

P.LUQ <- with(xA, t(P) %*% L %*% U %*% Q)
stopifnot(all.equal(A, P.LUQ, tolerance = 1e-12),
identical(dimnames(P.LUQ), dnA))
## permute rows and columns of original matrix
pA <- A[luA@p + 1L, luA@q + 1L]
stopifnot(identical(pA, with(xA, P %*% A %*% t(Q))))

pLU <- drop0(luA@L %*% luA@U) # L %*% U -- dropping extra zeros
stopifnot(all.equal(pA, pLU, tolerance = 1e-12))
# }

Documentation reproduced from package Matrix, version 1.2-18, License: GPL (>= 2) | file LICENCE

### Community examples

Looks like there are no examples yet.