LU-class
位於 Matrix
包(package)。 說明
denseLU
是 實數矩陣 的稠密類 row-pivoted LU 分解,具有一般形式
或(等效地)
其中 是 置換矩陣, 是 單位下梯形矩陣, 是 上梯形矩陣。如果 ,則因子 和 是三角形的。
插槽
Dim
,Dimnames
-
從虛擬類
MatrixFactorization
繼承。 x
-
長度為
prod(Dim)
的數值向量,以打包格式存儲三角形 和 因子。表示的細節由 LAPACK 例程dgetrf
的手冊指定。 perm
-
長度為
min(Dim)
的整數向量,指定排列 作為轉置的乘積。可以得到對應的排列向量為asPerm(perm)
。
擴展
直接類 LU
。類 MatrixFactorization
,按類 LU
,距離 2。
實例化
對象可以通過 new("denseLU", ...)
形式的調用直接生成,但它們更通常作為繼承自 denseMatrix
(通常是 dgeMatrix
)的 x
的 lu(x)
值獲得。
方法
coerce
-
signature(from = "denseLU", to = "dgeMatrix")
:返回dgeMatrix
,其維度為分解矩陣 ,等於對角線下方的 以及對角線上方和上方的 。 determinant
-
signature(from = "denseLU", logarithm = "logical")
:計算因式分解矩陣 的行列式或其對數。 expand
-
signature(x = "denseLU")
:參見expand-methods
。 expand1
-
signature(x = "denseLU")
:參見expand1-methods
。 expand2
-
signature(x = "denseLU")
:參見expand2-methods
。 solve
-
signature(a = "denseLU", b = "missing")
:參見solve-methods
。
例子
showClass("denseLU")
set.seed(1)
n <- 3L
(A <- Matrix(round(rnorm(n * n), 2L), n, n))
## With dimnames, to see that they are propagated :
dimnames(A) <- dn <- list(paste0("r", seq_len(n)),
paste0("c", seq_len(n)))
(lu.A <- lu(A))
str(e.lu.A <- expand2(lu.A), max.level = 2L)
## Underlying LAPACK representation
(m.lu.A <- as(lu.A, "dgeMatrix")) # which is L and U interlaced
stopifnot(identical(as(m.lu.A, "matrix"), `dim<-`(lu.A@x, lu.A@Dim)))
ae1 <- function(a, b, ...) all.equal(as(a, "matrix"), as(b, "matrix"), ...)
ae2 <- function(a, b, ...) ae1(unname(a), unname(b), ...)
## A ~ P1' L U in floating point
stopifnot(exprs = {
identical(names(e.lu.A), c("P1.", "L", "U"))
identical(e.lu.A[["P1."]],
new( "pMatrix", Dim = c(n, n), Dimnames = c(dn[1L], list(NULL)),
margin = 1L, perm = invertPerm(asPerm(lu.A@perm))))
identical(e.lu.A[["L"]],
new("dtrMatrix", Dim = c(n, n), Dimnames = list(NULL, NULL),
uplo = "L", diag = "U", x = lu.A@x))
identical(e.lu.A[["U"]],
new("dtrMatrix", Dim = c(n, n), Dimnames = c(list(NULL), dn[2L]),
uplo = "U", diag = "N", x = lu.A@x))
ae1(A, with(e.lu.A, P1. %*% L %*% U))
ae2(A[asPerm(lu.A@perm), ], with(e.lu.A, L %*% U))
})
## Factorization handled as factorized matrix
b <- rnorm(n)
stopifnot(identical(det(A), det(lu.A)),
identical(solve(A, b), solve(lu.A, b)))
參考
The LAPACK source code, including documentation; see https://netlib.org/lapack/double/dgetrf.f.
Golub, G. H., & Van Loan, C. F. (2013). Matrix computations (4th ed.). Johns Hopkins University Press. doi:10.56021/9781421407944
也可以看看
用於稀疏 LU 分解的類 sparseLU
。
相關用法
- R dtrMatrix-class 三角形稠密數值矩陣
- R facmul-methods 乘以矩陣因式分解的因數
- R solve-methods 函數求解矩陣包中的方法
- R updown-methods 更新和降級稀疏 Cholesky 分解
- R bdiag 構建分塊對角矩陣
- R printSpMatrix 靈活格式化和打印稀疏矩陣
- R symmetricMatrix-class 包矩陣中對稱矩陣的虛擬類
- R all.equal-methods 函數 all.equal() 的矩陣封裝方法
- R boolmatmult-methods 布爾算術矩陣乘積:%&% 和方法
- R ltrMatrix-class 三角密集邏輯矩陣
- R Hilbert 生成希爾伯特矩陣
- R nearPD 最近正定矩陣
- R lsyMatrix-class 對稱密集邏輯矩陣
- R CHMfactor-class 稀疏 Cholesky 分解
- R symmpart-methods 矩陣的對稱部分和偏斜(對稱)部分
- R sparseMatrix 從非零項構建一般稀疏矩陣
- R dgCMatrix-class 壓縮、稀疏、麵向列的數值矩陣
- R Cholesky-methods Cholesky 分解方法
- R Subassign-methods “[<-”的方法 - 分配給“矩陣”的子集
- R ldenseMatrix-class 密集邏輯矩陣的虛擬類“ldenseMatrix”
- R norm-methods 矩陣範數
- R ngeMatrix-class 一般密集非零模式矩陣的“ngeMatrix”類
- R CAex 阿爾伯斯的示例矩陣與“困難”特征分解
- R diagonalMatrix-class 對角矩陣的“diagonalMatrix”類
- R matmult-methods 矩陣(叉)積(轉置)
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Dense LU Factorizations。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。