
Last chance! 50% off unlimited learning
Sale ends in
The "dsyMatrix"
class is the class of symmetric, dense matrices
in non-packed storage and
"dspMatrix"
is the class of symmetric dense matrices in
packed storage, see pack()
. Only the upper
triangle or the lower triangle is stored.
Objects can be created by calls of the form new("dsyMatrix",
...)
or new("dspMatrix", ...)
, respectively.
uplo
:Object of class "character"
. Must be
either "U", for upper triangular, and "L", for lower triangular.
x
:Object of class "numeric"
. The numeric
values that constitute the matrix, stored in column-major order.
Dim
,Dimnames
:The dimension (a length-2
"integer"
) and corresponding names (or NULL
), see the
Matrix
.
factors
:Object of class "list"
. A named
list of factorizations that have been computed for the matrix.
"dsyMatrix"
extends class "dgeMatrix"
, directly, whereas
"dspMatrix"
extends class "ddenseMatrix"
, directly.
Both extend class "symmetricMatrix"
, directly,
and class "Matrix"
and others, indirectly, use
showClass("dsyMatrix")
, e.g., for details.
signature(x = "dspMatrix", type = "character")
, or
x = "dsyMatrix"
or type = "missing"
: Computes the
matrix norm of the desired type, see, norm
.
signature(x = "dspMatrix", type = "character")
, or
x = "dsyMatrix"
or type = "missing"
: Computes the
reciprocal condition number, rcond()
.
signature(a = "dspMatrix", b = "....")
, and
signature(a = "dsyMatrix", b = "....")
: x
<- solve(a,b)
solves solve-methods
.
signature(x = "dsyMatrix")
: Transpose; swaps from
upper triangular to lower triangular storage, i.e., the uplo slot
from "U"
to "L"
or vice versa, the same as for all
symmetric matrices.
library(utils, pos = "package:base", verbose = FALSE)
## Only upper triangular part matters (when uplo == "U" as per default)
(sy2 <- new("dsyMatrix", Dim = as.integer(c(2,2)), x = c(14, NA,32,77)))
str(t(sy2)) # uplo = "L", and the lower tri. (i.e. NA is replaced).
chol(sy2) #-> "Cholesky" matrix
(sp2 <- pack(sy2)) # a "dspMatrix"
## Coercing to dpoMatrix gives invalid object:
sy3 <- new("dsyMatrix", Dim = as.integer(c(2,2)), x = c(14, -1, 2, -7))
try(as(sy3, "dpoMatrix")) # -> error: not positive definite
# \dontshow{
tr <- try(as(sy3, "dpoMatrix"), silent=TRUE)
stopifnot(1 == grep("not a positive definite matrix",
as.character(tr)),
is(sp2, "dspMatrix"))
# }
## 4x4 example
m <- matrix(0,4,4); m[upper.tri(m)] <- 1:6
(sym <- m+t(m)+diag(11:14, 4))
(S1 <- pack(sym))
(S2 <- t(S1))
stopifnot(all(S1 == S2)) # equal "seen as matrix", but differ internally :
str(S1)
S2@x
Run the code above in your browser using DataLab