
lu(x, ...)
## S3 method for class 'matrix':
lu(x, warnSing = TRUE, \dots)
## S3 method for class 'dgeMatrix':
lu(x, warnSing = TRUE, \dots)
## S3 method for class 'dgCMatrix':
lu(x, errSing = TRUE, order = TRUE, tol = 1, \dots)
x
is a
"denseMatrix "
) logical specifying if a warning
should be signalled when x
is singular.x
is a
"sparseMatrix "
) logical specifying if an error
(see stop
) should be signalled when x
is
singular. When x
cs_lu
. Do only change with much care."LU"
, i.e., "denseLU "
(see its separate help page),
or "sparseLU"
, see sparseLU
; this is
a representation of a triangular decomposition of x
.lu()
is a generic function with special methods for different types
of matrices. Use showMethods("lu")
to list all the methods
for the lu
generic. The method for class
(and all dense
matrices) is based on LAPACK's "dgetrf"
subroutine. It returns
a decomposition also for singular and non-square matrices.
The method for class
(and all sparse
matrices) is based on functions from the CSparse library. It signals
an error (or returns NA
, when errSing = FALSE
, see
above) when the decomposition algorithm fails, as when x
is
(too close to) singular.
Tim Davis (2005)
Timothy A. Davis (2006)
Direct Methods for Sparse Linear Systems, SIAM Series
LU
and sparseLU
and function expand
;
qr
, chol
.##--- Dense -------------------------
x <- Matrix(rnorm(9), 3, 3)
lu(x)
dim(x2 <- round(10 * x[,-3]))# non-square
expand(lu2 <- lu(x2))
##--- Sparse (see more in ?"sparseLU-class")----- % ./sparseLU-class.Rd
pm <- as(readMM(system.file("external/pores_1.mtx",
package = "Matrix")),
"CsparseMatrix")
str(pmLU <- lu(pm)) # p is a 0-based permutation of the rows
# q is a 0-based permutation of the columns
## permute rows and columns of original matrix
ppm <- pm[pmLU@p + 1L, pmLU@q + 1L]
pLU <- drop0(pmLU@L %*% pmLU@U) # L \%*\% U -- dropping extra zeros
## equal up to "rounding"
ppm[1:14, 1:5]
pLU[1:14, 1:5]
Run the code above in your browser using DataLab