当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R BunchKaufman-methods Bunch-Kaufman 分解方法


R语言 BunchKaufman-methods 位于 Matrix 包(package)。

说明

计算 实对称矩阵 的 Bunch-Kaufman 分解,其具有一般形式

其中 是对称的,由 对角块组成的块对角矩阵; row-permuted 单位上三角矩阵的乘积,每个单位上三角矩阵在对角线上方有 1 或 2 列的非零项; row-permuted 单位下三角矩阵的乘积,每个单位下三角矩阵在对角线下方有 1 或 2 列非零条目。

方法基于 LAPACK 例程 dsytrfdsptrf 构建。

用法

BunchKaufman(x, ...)
## S4 method for signature 'dsyMatrix'
BunchKaufman(x, warnSing = TRUE, ...)
## S4 method for signature 'dspMatrix'
BunchKaufman(x, warnSing = TRUE, ...)
## S4 method for signature 'matrix'
BunchKaufman(x, uplo = "U", ...)

参数

x

要因式分解的 finite 对称矩阵或 Matrix。如果x是正方形但不对称,则将其视为对称;请参阅uplo

warnSing

一个逻辑,指示是否应针对单数 x 发出 warning 信号。

uplo

一个字符串,"U""L" ,指示应使用 x 的哪个三角形来计算因式分解。

...

传入或传出方法的更多参数。

表示分解的对象,继承自虚拟类 BunchKaufmanFactorization 。特定类是 BunchKaufman ,除非 x 继承自虚拟类 packedMatrix ,在这种情况下它是 pBunchKaufman

例子


showMethods("BunchKaufman", inherited = FALSE)
set.seed(0)

data(CAex, package = "Matrix")
class(CAex) # dgCMatrix
isSymmetric(CAex) # symmetric, but not formally

A <- as(CAex, "symmetricMatrix")
class(A) # dsCMatrix

## Have methods for denseMatrix (unpacked and packed),
## but not yet sparseMatrix ...
## Not run: 
(bk.A <- BunchKaufman(A))

## End(Not run)
(bk.A <- BunchKaufman(as(A, "unpackedMatrix")))

## A ~ U DU U' in floating point
str(e.bk.A <- expand2(bk.A), max.level = 2L)
stopifnot(all.equal(as(A, "matrix"), as(Reduce(`%*%`, e.bk.A), "matrix")))

参考

The LAPACK source code, including documentation; see https://netlib.org/lapack/double/dsytrf.f and https://netlib.org/lapack/double/dsptrf.f.

Golub, G. H., & Van Loan, C. F. (2013). Matrix computations (4th ed.). Johns Hopkins University Press. doi:10.56021/9781421407944

也可以看看

BunchKaufmanpBunchKaufman 及其方法。

dsyMatrixdspMatrix

通用函数 expand1expand2 ,用于根据结果构造矩阵因子。

通用函数 CholeskySchurluqr 用于计算其他因式分解。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Methods for Bunch-Kaufman Factorization。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。