LU-class {Matrix} | R Documentation |
The "LU"
class is the virtual class of LU decompositions of
real matrices. "denseLU"
the class of LU decompositions of
dense real matrices.
The decomposition is of the form
A = P L U
where typically all matrices are of size n by n, and
the matrix P is a permutation matrix, L is lower
triangular and U is upper triangular (both of class
dtrMatrix
).
Note that the dense decomposition is also implemented for a m by n matrix A, when m != n.
If m < n (“wide case”), U is m by n,
and hence not triangular.
If m > n (“long case”), L is m by n,
and hence not triangular.
Objects can be created by calls of the form new("denseLU", ...)
.
More commonly the objects are created explicitly from calls of the form
lu(mm)
where mm
is an object that inherits from the
"dgeMatrix"
class or as a side-effect of other functions applied
to "dgeMatrix"
objects.
"LU"
directly extends the virtual class
"MatrixFactorization"
.
"denseLU"
directly extends "LU"
.
x
:object of class "numeric"
. The "L"
(unit lower triangular) and "U"
(upper triangular) factors
of the original matrix. These are stored in a packed format
described in the Lapack manual, and can retrieved by the
expand()
method, see below.
perm
:Object of class "integer"
- a vector of
length min(Dim)
that describes the permutation applied to
the rows of the original matrix. The contents of this vector are
described in the Lapack manual.
Dim
:the dimension of the original matrix; inherited
from class MatrixFactorization
.
signature(x = "denseLU")
: Produce the "L"
and
"U"
(and "P"
) factors as a named list of matrices,
see also the example below.
signature(a = "denseLU", b = "missing")
: Compute
the inverse of A, A^(-1), solve(A)
using the LU
decomposition.
class sparseLU
for LU decompositions of
sparse matrices;
further, class dgeMatrix
and functions lu
,
expand
.
set.seed(1) mm <- Matrix(round(rnorm(9),2), nrow = 3) mm str(lum <- lu(mm)) elu <- expand(lum) elu # three components: "L", "U", and "P", the permutation elu$L %*% elu$U (m2 <- with(elu, P %*% L %*% U)) # the same as 'mm' stopifnot(all.equal(as(mm, "matrix"), as(m2, "matrix")))