Matrix (version 1.5-3)

# lu: (Generalized) Triangular Decomposition of a Matrix

## Description

Computes (generalized) triangular decompositions of square (sparse or dense) and non-square dense matrices.

## Usage

```lu(x, ...)
# S4 method for matrix
lu(x, ...)
# S4 method for dgeMatrix
lu(x, warnSing = TRUE, ...)
# S4 method for dgCMatrix
lu(x, errSing = TRUE, order = TRUE, tol = 1,
keep.dimnames = TRUE, ...)
# S4 method for dsyMatrix
lu(x, cache = TRUE, ...)
# S4 method for dsCMatrix
lu(x, cache = TRUE, ...)```

## Value

An object of class `"LU"`, i.e., `"denseLU"`

(see its separate help page), or `"sparseLU"`, see `sparseLU`; this is a representation of a triangular decomposition of `x`.

## Arguments

x

a dense or sparse matrix, in the latter case of square dimension. No missing values or IEEE special values are allowed.

warnSing

(when `x` is a `"denseMatrix"`) logical specifying if a `warning` should be signalled when `x` is singular.

errSing

(when `x` is a `"sparseMatrix"`) logical specifying if an error (see `stop`) should be signalled when `x` is singular. When `x` is singular, `lu(x, errSing=FALSE)` returns `NA` instead of an LU decomposition. No warning is signalled and the useR should be careful in that case.

order

logical or integer, used to choose which fill-reducing permutation technique will be used internally. Do not change unless you know what you are doing.

tol

positive number indicating the pivoting tolerance used in `cs_lu`. Do only change with much care.

keep.dimnames

logical indicating that `dimnames` should be propagated to the result, i.e., “kept”. This was hardcoded to `FALSE` in upto Matrix version 1.2-0. Setting to `FALSE` may gain some performance.

cache

logical indicating if the result should be cached in `x@factors`; note that this argument is experimental and only available for certain classes inheriting from `compMatrix`.

...

further arguments passed to or from other methods.

## Details

`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 `dgeMatrix` (and all dense, non-triangular matrices) is based on LAPACK's `"dgetrf"` subroutine. It returns a decomposition also for singular and non-square matrices.

The method for class `dgCMatrix` (and all sparse, non-triangular 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.

## References

Golub, G., and Van Loan, C. F. (1989). Matrix Computations, 2nd edition, Johns Hopkins, Baltimore.

Timothy A. Davis (2006) Direct Methods for Sparse Linear Systems, SIAM Series “Fundamentals of Algorithms”.

Class definitions `denseLU` and `sparseLU` and function `expand`; `qr`, `chol`.

## Examples

Run this code
``````
##--- 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