lu-methods
位于 Matrix
包(package)。 说明
计算 实数矩阵 的旋转 LU 分解,其具有一般形式
或(等效地)
其中 是 置换矩阵, 是 置换矩阵, 是 单位下梯形矩阵, 是 上梯形矩阵。
denseMatrix
的方法基于 LAPACK 例程 dgetrf
构建,该例程不会置换列,因此 是单位矩阵。
sparseMatrix
的方法基于 CSparse 例程 cs_lu
构建,该例程需要 ,因此 和 是三角矩阵。
用法
lu(x, ...)
## S4 method for signature 'dgeMatrix'
lu(x, warnSing = TRUE, ...)
## S4 method for signature 'dgCMatrix'
lu(x, errSing = TRUE, order = NA_integer_,
tol = 1, ...)
## S4 method for signature 'dsyMatrix'
lu(x, cache = TRUE, ...)
## S4 method for signature 'dsCMatrix'
lu(x, cache = TRUE, ...)
## S4 method for signature 'matrix'
lu(x, ...)
参数
x |
|
warnSing |
一个逻辑,指示是否应针对单数 |
errSing |
一个逻辑,指示是否应针对单数 |
order |
|
tol |
一个号码。如果原始主元元素的绝对值超过 |
cache |
指示结果是否应缓存在 |
... |
传入或传出方法的更多参数。 |
细节
当 x
被确定为 near-singular 时发生的情况因方法而异。类 dgeMatrix
的方法完成因式分解,如果 warnSing = TRUE
则发出警告,并且在任何情况下返回有效的 denseLU
对象。使用此方法的用户可以使用合适的警告处理程序来检测奇异的x
;请参阅tryCatch
。相反,类 dgCMatrix
的方法放弃进一步计算,如果 errSing = TRUE
则抛出错误,否则返回 NA
。此方法的用户可以使用错误处理程序或通过设置 errSing = FALSE
并使用 is(., "sparseLU")
测试正式结果来检测单个 x
。
值
表示分解的对象,继承自虚拟类 LU
。特定类是 denseLU
,除非 x
继承自虚拟类 sparseMatrix
,在这种情况下它是 sparseLU
。
例子
showMethods("lu", inherited = FALSE)
set.seed(0)
## ---- Dense ----------------------------------------------------------
(A1 <- Matrix(rnorm(9L), 3L, 3L))
(lu.A1 <- lu(A1))
(A2 <- round(10 * A1[, -3L]))
(lu.A2 <- lu(A2))
## A ~ P1' L U in floating point
str(e.lu.A2 <- expand2(lu.A2), max.level = 2L)
stopifnot(all.equal(A2, Reduce(`%*%`, e.lu.A2)))
## ---- Sparse ---------------------------------------------------------
A3 <- as(readMM(system.file("external/pores_1.mtx", package = "Matrix")),
"CsparseMatrix")
(lu.A3 <- lu(A3))
## A ~ P1' L U P2' in floating point
str(e.lu.A3 <- expand2(lu.A3), max.level = 2L)
stopifnot(all.equal(A3, Reduce(`%*%`, e.lu.A3)))
参考
The LAPACK source code, including documentation; see https://netlib.org/lapack/double/dgetrf.f.
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
也可以看看
通用函数 expand1
和 expand2
,用于根据结果构造矩阵因子。
通用函数 Cholesky
、 BunchKaufman
、 Schur
和 qr
用于计算其他因式分解。
相关用法
- R ltrMatrix-class 三角密集逻辑矩阵
- R lsyMatrix-class 对称密集逻辑矩阵
- R ldenseMatrix-class 密集逻辑矩阵的虚拟类“ldenseMatrix”
- R lgeMatrix-class 一般稠密逻辑矩阵的“lgeMatrix”类
- R ldiMatrix-class 对角逻辑矩阵的“ldiMatrix”类
- R lsparseMatrix-classes 稀疏逻辑矩阵
- 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 Hilbert 生成希尔伯特矩阵
- R nearPD 最近正定矩阵
- R CHMfactor-class 稀疏 Cholesky 分解
- R symmpart-methods 矩阵的对称部分和偏斜(对称)部分
- R sparseMatrix 从非零项构建一般稀疏矩阵
- R dgCMatrix-class 压缩、稀疏、面向列的数值矩阵
- R Cholesky-methods Cholesky 分解方法
- R Subassign-methods “[<-”的方法 - 分配给“矩阵”的子集
- R norm-methods 矩阵范数
- R ngeMatrix-class 一般密集非零模式矩阵的“ngeMatrix”类
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Methods for LU Factorization。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。