R: Triangular, (compressed) sparse column matrices

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 coercion such as `as(x, "dtCMatrix")`.

### 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"`; see `triangularMatrix`.

`p`:

  (only present in `"dtCMatrix"`:) an `integer` vector for providing pointers, one for each column, see the detailed description in `CsparseMatrix`.

`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 the `dtTMatrix` class.)

`x`:

  Object of class `"numeric"` - the non-zero elements of the matrix.

`Dim`,`Dimnames`:

  The dimension (a length-2 `"integer"`) and corresponding names (or `NULL`), inherited from the `Matrix`, see there.

### Extends

Class `"dgCMatrix"`, directly. Class `"triangularMatrix"`, directly. Class `"dMatrix"`, `"sparseMatrix"`, and more by class `"dgCMatrix"` etc, see the examples.

### Methods

coerce

  `signature(from = "dtCMatrix", to = "dgTMatrix")`

coerce

  `signature(from = "dtCMatrix", to = "dgeMatrix")`

coerce

  `signature(from = "dtTMatrix", to = "dgeMatrix")`

coerce

  `signature(from = "dtTMatrix", to = "dtrMatrix")`

coerce

  `signature(from = "dtTMatrix", to = "matrix")`

solve

  `signature(a = "dtCMatrix", b = "....")`: sparse triangular solve (aka “backsolve” or “forwardsolve”), see `solve-methods`.

t

  `signature(x = "dtCMatrix")`: returns the transpose of `x`

t

  `signature(x = "dtTMatrix")`: returns the transpose of `x`

### 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, "dtCMatrix"))
    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
    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)
    )

[Package Matrix version 1.1-4 Index]