當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。