File: isTriangular-methods.Rd

package info (click to toggle)
rmatrix 1.7-5-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 12,156 kB
  • sloc: ansic: 97,207; makefile: 280; sh: 165
file content (86 lines) | stat: -rw-r--r-- 3,084 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
\name{isTriangular-methods}
\title{Test whether a Matrix is Triangular or Diagonal}
%
\docType{methods}
\keyword{array}
\keyword{programming}
\keyword{methods}
%
\alias{isTriangular}
\alias{isTriangular-methods}
\alias{isDiagonal}
\alias{isDiagonal-methods}
%
\alias{isTriangular,CsparseMatrix-method}
\alias{isTriangular,RsparseMatrix-method}
\alias{isTriangular,TsparseMatrix-method}
\alias{isTriangular,denseMatrix-method}
\alias{isTriangular,diagonalMatrix-method}
\alias{isTriangular,indMatrix-method}
\alias{isTriangular,matrix-method}
%
\alias{isDiagonal,CsparseMatrix-method}
\alias{isDiagonal,RsparseMatrix-method}
\alias{isDiagonal,TsparseMatrix-method}
\alias{isDiagonal,denseMatrix-method}
\alias{isDiagonal,diagonalMatrix-method}
\alias{isDiagonal,indMatrix-method}
\alias{isDiagonal,matrix-method}
%
\description{
  \code{isTriangular} and \code{isDiagonal} test whether their argument
  is a triangular or diagonal matrix, respectively.  Unlike the analogous
  \code{\link{isSymmetric}}, these two functions are generically
  from \pkg{Matrix} rather than \code{base}.  Hence \pkg{Matrix}
  defines methods for traditional matrices of implicit \link{class}
  \code{"\link{matrix}"} in addition to matrices inheriting from
  virtual class \code{"\linkS4class{Matrix}"}.

  By our definition, triangular and diagonal matrices are \emph{square},
  i.e., they have the same number of rows and columns.
}
\usage{
isTriangular(object, upper = NA, \dots)

isDiagonal(object)
}
\arguments{
  \item{object}{an \R object, typically a matrix.}
  \item{upper}{a \link{logical}, either \code{TRUE} or \code{FALSE},
    in which case \code{TRUE} is returned only for upper or lower
    triangular \code{object}; or otherwise \code{\link{NA}} (the
    default), in which case \code{TRUE} is returned for any triangular
    \code{object}.}
  \item{\dots}{further arguments passed to methods
    (currently unused by \pkg{Matrix}).}
}
\value{
  A \link{logical}, either \code{TRUE} or \code{FALSE}
  (never \code{\link{NA}}).

  If \code{object} is triangular and \code{upper} is \code{NA}, then
  \code{isTriangular} returns \code{TRUE} with an \link[=attr]{attribute} 
  \code{kind}, either \code{"U"} or \code{"L"}, indicating that
  \code{object} is \bold{u}pper or \bold{l}ower triangular, respectively.  
  Users should not rely on how \code{kind} is determined for diagonal
  matrices, which are both upper and lower triangular.
}
\seealso{
  \code{\link{isSymmetric}};
  virtual classes \code{"\linkS4class{triangularMatrix}"} and
  \code{"\linkS4class{diagonalMatrix}"} and their subclasses.
}
\examples{
isTriangular(Diagonal(4))
## is TRUE: a diagonal matrix is also (both upper and lower) triangular
(M <- Matrix(c(1,2,0,1), 2,2))
isTriangular(M) # TRUE (*and* of formal class "dtrMatrix")
isTriangular(as(M, "generalMatrix")) # still triangular, even if not "formally"
isTriangular(crossprod(M)) # FALSE

isDiagonal(matrix(c(2,0,0,1), 2,2)) # TRUE

## Look at implementations:
showMethods("isTriangular", includeDefs = TRUE)
showMethods("isDiagonal", includeDefs = TRUE)
}