Methods for Function 'isSymmetric' in Package 'Matrix'
Methods for Function 'isSymmetric' in Package 'Matrix'
isSymmetric tests whether its argument is a symmetric square matrix, by default tolerating some numerical fuzz and requiring symmetric [dD]imnames in addition to symmetry in the mathematical sense. isSymmetric is a generic function in base, which has a method for traditional matrices of implicit class"matrix". Methods are defined here for various proper and virtual classes in Matrix, so that isSymmetric works for all objects inheriting from virtual class "Matrix".
methods
## S4 method for signature 'denseMatrix'isSymmetric(object, checkDN =TRUE,...)## S4 method for signature 'CsparseMatrix'isSymmetric(object, checkDN =TRUE,...)## S4 method for signature 'RsparseMatrix'isSymmetric(object, checkDN =TRUE,...)## S4 method for signature 'TsparseMatrix'isSymmetric(object, checkDN =TRUE,...)## S4 method for signature 'diagonalMatrix'isSymmetric(object, checkDN =TRUE,...)## S4 method for signature 'indMatrix'isSymmetric(object, checkDN =TRUE,...)## S4 method for signature 'dgeMatrix'isSymmetric(object, checkDN =TRUE, tol =100* .Machine$double.eps, tol1 =8* tol,...)## S4 method for signature 'dgCMatrix'isSymmetric(object, checkDN =TRUE, tol =100* .Machine$double.eps,...)
Arguments
object: a "Matrix".
checkDN: a logical indicating whether symmetry of the Dimnames slot of object should be checked.
symmetry of numeric (rather than logical) matrices. See also isSymmetric.matrix.
...: further arguments passed to methods (typically methods for all.equal).
Returns
A logical , either TRUE or FALSE
(never NA).
Details
The Dimnames slot of object, say dn, is considered to be symmetric if and only if
dn[[1]] and dn[[2]] are identical or
one is NULL; and
ndn \<- names(dn) is NULLor
ndn[1] and ndn[2] are identical or
one is the empty string "".
Hence list(a=nms, a=nms) is considered to be symmetric, and so too are list(a=nms, NULL) and list(NULL, a=nms).
Note that this definition is looser than that employed by isSymmetric.matrix, which requires dn[1] and dn[2] to be identical, where dn is the dimnames
attribute of a traditional matrix.
See Also
forceSymmetric; symmpart and skewpart; virtual class "symmetricMatrix" and its subclasses.
Examples
isSymmetric(Diagonal(4))# TRUE of courseM <- Matrix(c(1,2,2,1),2,2)isSymmetric(M)# TRUE (*and* of formal class "dsyMatrix")isSymmetric(as(M,"generalMatrix"))# still symmetric, even if not "formally"isSymmetric(triu(M))# FALSE## Look at implementations:showMethods("isSymmetric", includeDefs =TRUE)# includes S3 generic from base