Transform a triangular matrix
x, i.e., of
from (internally!) unit triangular (“unitriangular”) to
“general” triangular (
diagU2N(x)) or back (
Note that the latter,
diagN2U(x), also sets the diagonal to one
in cases where
diag(x) was not all one.
.diagU2N(x) assumes but does not check that
"U", and should hence be used with care.
diagN2U(x, cl = getClassDef(class(x)), checkDense = FALSE) diagU2N(x, cl = getClassDef(class(x)), checkDense = FALSE) .diagU2N(x, cl = getClassDef(class(x)), checkDense = FALSE)
(optional, for speedup only:) class (definition) of
logical indicating if dense (see
The concept of unit triangular matrices with a
diag slot of
"U" stems from LAPACK.
a triangular matrix of the same
class but with a
diag slot. For
diagU2N (semantically) with
identical entries as
x, whereas in
off-diagonal entries are unchanged and the diagonal is set to all
1 even if it was not previously.
Such internal storage details should rarely be of relevance to the user. Hence, these functions really are rather internal utilities.
(T <- Diagonal(7) + triu(Matrix(rpois(49, 1/4), 7,7), k = 1)) (uT <- diagN2U(T)) # "unitriangular" (t.u <- diagN2U(10*T))# changes the diagonal! stopifnot(all(T == uT), diag(t.u) == 1, identical(T, diagU2N(uT))) T[upper.tri(T)] <- 5 # still "dtC" T <- diagN2U(as(T,"triangularMatrix")) dT <- as(T, "denseMatrix") # (unitriangular) dT.n <- diagU2N(dT, checkDense = TRUE) sT.n <- diagU2N(dT) stopifnot(is(dT.n, "denseMatrix"), is(sT.n, "sparseMatrix"), dT@diag == "U", dT.n@diag == "N", sT.n@diag == "N", all(dT == dT.n), all(dT == sT.n))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.