dtpMatrix-class {Matrix} | R Documentation |
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 can be created by calls of the form new("dtpMatrix",
...)
or by coercion from other classes of matrices.
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.
Class "ddenseMatrix"
, directly.
Class "triangularMatrix"
, directly.
Class "dMatrix"
and more by class "ddenseMatrix"
etc, see
the examples.
signature(x = "dtpMatrix", y = "dgeMatrix")
:
Matrix multiplication; ditto for several other signature
combinations, see showMethods("%*%", class = "dtpMatrix")
.
signature(from = "dtpMatrix", to = "dtrMatrix")
signature(from = "dtpMatrix", to = "matrix")
signature(x = "dtpMatrix", logarithm = "logical")
:
the determinant(x)
trivially is
prod(diag(x))
, but computed on log scale to prevent over-
and underflow.
signature(x = "dtpMatrix")
: ...
signature(x = "dtpMatrix", type = "character")
: ...
signature(x = "dtpMatrix", norm = "character")
: ...
signature(a = "dtpMatrix", b = "...")
:
efficiently using internal backsolve or forwardsolve, see
solve-methods
.
signature(x = "dtpMatrix")
: t(x)
remains
a "dtpMatrix"
, lower triangular if x
is upper
triangular, and vice versa.
Class dtrMatrix
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)))