R: Packed Triangular Dense Matrices - "dtpMatrix"

dtpMatrix-class {Matrix} | R Documentation

## Packed Triangular Dense Matrices - "dtpMatrix"

### Description

The `"dtpMatrix"` class is the class of triangular, dense, numeric matrices in packed storage. The `"dtrMatrix"` class is the same except in nonpacked storage.

### Objects from the Class

Objects can be created by calls of the form `new("dtpMatrix", ...)` or by coercion from other classes of matrices.

### 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`.

`x`:

  Object of class `"numeric"`. The numeric values that constitute the matrix, stored in column-major order. For a packed square matrix of dimension d * d, `length(x)` is of length d(d+1)/2 (also when `diag == "U"`!).

`Dim`,`Dimnames`:

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

### Extends

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

### Methods

%*%

  `signature(x = "dtpMatrix", y = "dgeMatrix")`: Matrix multiplication; ditto for several other signature combinations, see `showMethods("%*%", class = "dtpMatrix")`.

coerce

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

coerce

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

determinant

  `signature(x = "dtpMatrix", logarithm = "logical")`: the `determinant(x)` trivially is `prod(diag(x))`, but computed on log scale to prevent over- and underflow.

diag

  `signature(x = "dtpMatrix")`: ...

norm

  `signature(x = "dtpMatrix", type = "character")`: ...

rcond

  `signature(x = "dtpMatrix", norm = "character")`: ...

solve

  `signature(a = "dtpMatrix", b = "...")`: efficiently using internal backsolve or forwardsolve, see `solve-methods`.

t

  `signature(x = "dtpMatrix")`: `t(x)` remains a `"dtpMatrix"`, lower triangular if `x` is upper triangular, and vice versa.

### See Also

Class `dtrMatrix`

### Examples

    showClass("dtrMatrix")

    example("dtrMatrix-class", echo=FALSE)
    (p1 <- as(T2, "dtpMatrix"))
    str(p1)
    (pp <- as(T, "dtpMatrix"))
    ip1 <- solve(p1)
    stopifnot(length(p1@x) == 3, length(pp@x) == 3,
              p1 @ uplo == T2 @ uplo, pp @ uplo == T @ uplo,
    	  identical(t(pp), p1), identical(t(p1), pp),
    	  all((l.d <- p1 - T2) == 0), is(l.d, "dtpMatrix"),
    	  all((u.d <- pp - T ) == 0), is(u.d, "dtpMatrix"),
    	  l.d@uplo == T2@uplo, u.d@uplo == T@uplo,
    	  identical(t(ip1), solve(pp)), is(ip1, "dtpMatrix"),
    	  all.equal(as(solve(p1,p1), "diagonalMatrix"), Diagonal(2)))

[Package Matrix version 1.3-4 Index]