dtCMatrix-class {Matrix} | R Documentation |
Triangular, (compressed) sparse column matrices
Description
The "dtCMatrix"
class is a class of triangular, sparse
matrices in the compressed, column-oriented format. In this
implementation the non-zero elements in the columns are sorted into
increasing row order.
The "dtTMatrix"
class is a class of triangular, sparse matrices
in triplet format.
Objects from the Class
Objects can be created by calls of the form new("dtCMatrix",
...)
or calls of the form new("dtTMatrix", ...)
,
but more typically automatically via Matrix()
or coercions such as as(x, "triangularMatrix")
.
Slots
uplo
:Object of class
"character"
. Must be either "U", for upper triangular, and "L", for lower triangular.diag
:Object of class
"character"
. Must be either"U"
, for unit triangular (diagonal is all ones), or"N"
; seetriangularMatrix
.p
:(only present in
"dtCMatrix"
:) aninteger
vector for providing pointers, one for each column, see the detailed description inCsparseMatrix
.i
:Object of class
"integer"
of length nnzero (number of non-zero elements). These are the row numbers for each non-zero element in the matrix.j
:Object of class
"integer"
of length nnzero (number of non-zero elements). These are the column numbers for each non-zero element in the matrix. (Only present in thedtTMatrix
class.)x
:Object of class
"numeric"
- the non-zero elements of the matrix.Dim
,Dimnames
:The dimension (a length-2
"integer"
) and corresponding names (orNULL
), inherited from theMatrix
, see there.
Extends
Class "dgCMatrix"
, directly.
Class "triangularMatrix"
, directly.
Class "dMatrix"
, "sparseMatrix"
, and more by class
"dgCMatrix"
etc, see the examples.
Methods
- solve
signature(a = "dtCMatrix", b = "....")
: sparse triangular solve (aka “backsolve” or “forwardsolve”), seesolve-methods
.- t
signature(x = "dtCMatrix")
: returns the transpose ofx
- t
signature(x = "dtTMatrix")
: returns the transpose ofx
See Also
Classes dgCMatrix
, dgTMatrix
,
dgeMatrix
, and dtrMatrix
.
Examples
showClass("dtCMatrix")
showClass("dtTMatrix")
t1 <- new("dtTMatrix", x= c(3,7), i= 0:1, j=3:2, Dim= as.integer(c(4,4)))
t1
## from 0-diagonal to unit-diagonal {low-level step}:
tu <- t1 ; tu@diag <- "U"
tu
(cu <- as(tu, "CsparseMatrix"))
str(cu)# only two entries in @i and @x
stopifnot(cu@i == 1:0,
all(2 * symmpart(cu) == Diagonal(4) + forceSymmetric(cu)))
t1[1,2:3] <- -1:-2
diag(t1) <- 10*c(1:2,3:2)
t1 # still triangular
(it1 <- solve(t1))
t1. <- solve(it1)
all(abs(t1 - t1.) < 10 * .Machine$double.eps)
## 2nd example
U5 <- new("dtCMatrix", i= c(1L, 0:3), p=c(0L,0L,0:2, 5L), Dim = c(5L, 5L),
x = rep(1, 5), diag = "U")
U5
(iu <- solve(U5)) # contains one '0'
validObject(iu2 <- solve(U5, Diagonal(5)))# failed in earlier versions
I5 <- iu %*% U5 # should equal the identity matrix
i5 <- iu2 %*% U5
m53 <- matrix(1:15, 5,3, dimnames=list(NULL,letters[1:3]))
asDiag <- function(M) as(drop0(M), "diagonalMatrix")
stopifnot(
all.equal(Diagonal(5), asDiag(I5), tolerance=1e-14) ,
all.equal(Diagonal(5), asDiag(i5), tolerance=1e-14) ,
identical(list(NULL, dimnames(m53)[[2]]), dimnames(solve(U5, m53)))
)