sparseLU-class
位于 Matrix
包(package)。 说明
sparseLU
是 实数矩阵 的稀疏、行和 column-pivoted LU 分解类,具有一般形式
或(等效地)
其中 和 是置换矩阵, 是单位下三角矩阵, 是上三角矩阵。
插槽
Dim
,Dimnames
-
从虚拟类
MatrixFactorization
继承。 L
-
类
dtCMatrix
的对象,单位下三角 因子。 U
-
类
dtCMatrix
的对象,即上三角 因子。 p
,q
-
长度从 0 开始的整数向量
Dim[1]
,指定应用于分解矩阵的行和列的排列。q
长度为 0 的值是有效的并且等价于恒等排列,意味着没有列旋转。使用R语法,矩阵 正是A[p+1, q+1]
(A[p+1, ]
当q
长度为 0)。
扩展
直接类 LU
。类 MatrixFactorization
,按类 LU
,距离 2。
实例化
对象可以通过 new("sparseLU", ...)
形式的调用直接生成,但它们更通常作为继承自 sparseMatrix
(通常是 dgCMatrix
)的 x
的 lu(x)
值获得。
方法
determinant
-
signature(from = "sparseLU", logarithm = "logical")
:计算因式分解矩阵 的行列式或其对数。 expand
-
signature(x = "sparseLU")
:参见expand-methods
。 expand1
-
signature(x = "sparseLU")
:参见expand1-methods
。 expand2
-
signature(x = "sparseLU")
:参见expand2-methods
。 solve
-
signature(a = "sparseLU", b = .)
:参见solve-methods
。
例子
showClass("sparseLU")
set.seed(2)
A <- as(readMM(system.file("external", "pores_1.mtx", package = "Matrix")),
"CsparseMatrix")
(n <- A@Dim[1L])
## 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)
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 P2' in floating point
stopifnot(exprs = {
identical(names(e.lu.A), c("P1.", "L", "U", "P2."))
identical(e.lu.A[["P1."]],
new("pMatrix", Dim = c(n, n), Dimnames = c(dn[1L], list(NULL)),
margin = 1L, perm = invertPerm(lu.A@p, 0L, 1L)))
identical(e.lu.A[["P2."]],
new("pMatrix", Dim = c(n, n), Dimnames = c(list(NULL), dn[2L]),
margin = 2L, perm = invertPerm(lu.A@q, 0L, 1L)))
identical(e.lu.A[["L"]], lu.A@L)
identical(e.lu.A[["U"]], lu.A@U)
ae1(A, with(e.lu.A, P1. %*% L %*% U %*% P2.))
ae2(A[lu.A@p + 1L, lu.A@q + 1L], 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)))
参考
Davis, T. A. (2006). Direct methods for sparse linear systems. Society for Industrial and Applied Mathematics. doi:10.1137/1.9780898718881
Golub, G. H., & Van Loan, C. F. (2013). Matrix computations (4th ed.). Johns Hopkins University Press. doi:10.56021/9781421407944
也可以看看
用于密集 LU 分解的类 denseLU
。
相关用法
- R sparseMatrix 从非零项构建一般稀疏矩阵
- R sparseQR-class 稀疏 QR 分解
- R sparse.model.matrix 构造稀疏设计/模型矩阵
- R sparseVector-class 稀疏向量类
- R sparseMatrix-class 虚拟类“sparseMatrix”——稀疏矩阵之母
- R sparseVector 从非零条目构造稀疏向量
- R spMatrix 三元组的稀疏矩阵构造函数
- R solve-methods 函数求解矩阵包中的方法
- R symmetricMatrix-class 包矩阵中对称矩阵的虚拟类
- R symmpart-methods 矩阵的对称部分和偏斜(对称)部分
- R dtrMatrix-class 三角形稠密数值矩阵
- R facmul-methods 乘以矩阵因式分解的因数
- R updown-methods 更新和降级稀疏 Cholesky 分解
- R bdiag 构建分块对角矩阵
- R printSpMatrix 灵活格式化和打印稀疏矩阵
- R all.equal-methods 函数 all.equal() 的矩阵封装方法
- R boolmatmult-methods 布尔算术矩阵乘积:%&% 和方法
- R ltrMatrix-class 三角密集逻辑矩阵
- R Hilbert 生成希尔伯特矩阵
- R nearPD 最近正定矩阵
- R lsyMatrix-class 对称密集逻辑矩阵
- R CHMfactor-class 稀疏 Cholesky 分解
- R dgCMatrix-class 压缩、稀疏、面向列的数值矩阵
- R Cholesky-methods Cholesky 分解方法
- R Subassign-methods “[<-”的方法 - 分配给“矩阵”的子集
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Sparse LU Factorizations。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。