solve.bdsmatrix {bdsmatrix} | R Documentation |
This function solves the equation Ax=b for x, when
A is a block diagonal sparse matrix
(an object of class bdsmatrix
).
## S3 method for class 'bdsmatrix'
solve(a, b, full=TRUE, tolerance=1e-10, ...)
a |
a block diagonal sparse matrix object |
b |
a numeric vector or matrix, that forms the right-hand side of the equation. |
full |
if true, return the full inverse matrix; if false return only
that portion corresponding to the blocks.
This argument is ignored if |
tolerance |
the tolerance for detecting singularity in the a matrix |
... |
other arguments are ignored |
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.
if argument 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.
bdsmatrix, gchol
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)))