BunchKaufman-methods
Bunch-Kaufman Decomposition Methods
Description
The Bunch-Kaufman Decomposition of a square symmetric matrix A is A = P LDL' P' where P is a permutation matrix, L is unit-lower triangular and D is block-diagonal with blocks of dimension 1 x 1 or 2 x 2.
This is generalization of a pivoting LDL' Cholesky decomposition.
Usage
## S4 method for signature 'dsyMatrix' BunchKaufman(x, ...) ## S4 method for signature 'dspMatrix' BunchKaufman(x, ...) ## S4 method for signature 'matrix' BunchKaufman(x, uplo = NULL, ...)
Arguments
x | a symmetric square matrix. |
uplo | optional string, |
... | potentially further arguments passed to methods. |
Details
FIXME: We really need an expand()
method in order to work with the result!
Value
an object of class BunchKaufman
, which can also be used as a (triangular) matrix directly. Somewhat amazingly, it inherits its uplo
slot from x
.
Methods
Currently, only methods for dense numeric symmetric matrices are implemented. To compute the Bunch-Kaufman decomposition, the methods use either one of two Lapack routines:
x = "dspMatrix"
-
routine
dsptrf()
; whereas x = "dsyMatrix"
-
, and
x = "matrix"
-
use
dsytrf()
.
References
The original LAPACK source code, including documentation; https://www.netlib.org/lapack/double/dsytrf.f and https://www.netlib.org/lapack/double/dsptrf.f
See Also
The resulting class, BunchKaufman
. Related decompositions are the LU, lu
, and the Cholesky, chol
(and for sparse matrices, Cholesky
).
Examples
data(CAex) dim(CAex) isSymmetric(CAex)# TRUE CAs <- as(CAex, "symmetricMatrix") if(FALSE) # no method defined yet for *sparse* : bk. <- BunchKaufman(CAs) ## does apply to *dense* symmetric matrices: bkCA <- BunchKaufman(as(CAs, "denseMatrix")) bkCA image(bkCA)# shows how sparse it is, too str(R.CA <- as(bkCA, "sparseMatrix")) ## an upper triangular 72x72 matrix with only 144 non-zero entries
Copyright (©) 1999–2012 R Foundation for Statistical Computing.
Licensed under the GNU General Public License.