bdsmatrix
).
solve.bdsmatrix(a, b, tolerance=1e-10, full=T)
b
is present.
If the bdsmatrix
a
has a non-sparse portion,
i.e., if the
rmat
component is present,
then the inverse of
a
will not be
block-diagonal sparse.
In this case setting full=F returns only a portion of the inverse.
The elements that are returned are those of the full inverse, but the
off-diagonal elements that are not returned would not have been zero.
b
is not present, the inverse of
a
is returned, otherwise the solution to
matrix equation.
The equation is solved using a generalized Cholesky decomposition.
The matrix
a
consists of a block diagonal
sparse portion with an optional dense border.
The inverse of
a
, which is to be computed if
y
is not provided, will have the same
block diagonal structure as
a
only if there
is no dense border, otherwise the resulting matrix will not be sparse.
However, these matrices may often be very large, and a non sparse
version of one of them will require gigabytes of even terabytes of
space.
For one of the common computations
(degrees of freedom in a penalized model)
only those elements of the inverse that correspond to the non-zero part of
a
are required;
the
full=F
option returns only that portion
of the (block diagonal portion of) the inverse matrix.
tmat <- bdsmatrix(c(3,2,2,4), c(22,1,2,21,3,20,19,4,18,17,5,16,15,6,7, 8,14,9,10,13,11,12), matrix(c(1,0,1,1,0,0,1,1,0,1,0,10,0, 0,1,1,0,1,1,0,1,1,0,1,0,10), ncol=2)) dim(tmat) solve(tmat, cbind(1:13, rep(1,13)))