expand-methods 位于 Matrix 包(package)。 说明
expand1 和 expand2 从指定矩阵分解的对象构造矩阵因子。此类对象通常不会显式存储因子,而是采用紧凑表示来节省内存。
用法
expand1(x, which, ...)
expand2(x, ...)
expand (x, ...)
参数
x |
矩阵分解,通常继承自虚拟类 |
which |
表示矩阵因子的字符串。 |
... |
传入或传出方法的更多参数。 |
细节
保留 expand 的方法只是为了向后兼容 Matrix < 1.6-0 。新代码应使用 expand1 和 expand2 ,它们的方法提供更多控制并且行为更一致。值得注意的是, expand2 遵循以下规则:返回列表中矩阵因子的乘积应重现(在一定容差范围内)因式分解矩阵,包括其 dimnames 。
因此,如果 x 是一个矩阵,而 y 是它的分解,那么
all.equal(as(x, "matrix"), as(Reduce(`%*%`, expand2(y)), "matrix"))
在大多数情况下应该返回 TRUE 。
值
expand1 返回一个继承自虚拟类 Matrix 的对象,表示 which 指示的因子,始终没有行名称和列名称。
expand2 返回因子列表,通常使用常规表示法进行名称,如 list(L=, U=) 中。第一个和最后一个因子获取因式分解矩阵的行名称和列名称,这些名称保存在 x 的 Dimnames 槽中。
方法
下表列出了 expand1 的方法以及参数 which 的允许值。
class(x) | which |
Schur | c("Q", "T", "Q.") |
denseLU | c("P1", "P1.", "L", "U") |
sparseLU | c("P1", "P1.", "P2", "P2.", "L", "U") |
sparseQR | c("P1", "P1.", "P2", "P2.", "Q", "Q1", "R", "R1") |
BunchKaufman , pBunchKaufman | c("U", "DU", "U.", "L", "DL", "L.") |
Cholesky , pCholesky | c("P1", "P1.", "L1", "D", "L1.", "L", "L.") |
CHMsimpl , CHMsimpl | c("P1", "P1.", "L1", "D", "L1.", "L", "L.")
|
下面说明expand2和expand的方法。因子名称和类别也适用于 expand1 。
expand2-
signature(x = "CHMsimpl"):将分解 扩展为list(P1., L1, D, L1., P1)(默认)或list(P1., L, L., P1),具体取决于可选逻辑参数LDL。P1和P1.是pMatrix、L1、L1.、L和L.是dtCMatrix,D是ddiMatrix. expand2-
signature(x = "CHMsuper"):与CHMsimpl相同,但三角因子存储为dgCMatrix。 expand2-
signature(x = "p?Cholesky"):将分解 扩展为list(L1, D, L1.)(默认)或list(L, L.),具体取决于可选逻辑参数LDL。L1、L1.、L和L.是dtrMatrix或dtpMatrix,D是ddiMatrix。 expand2-
signature(x = "p?BunchKaufman"):将 展开分解,其中 和 为list(U, DU, U.)或list(L, DL, L.),具体取决于x@uplo。如果可选参数complete是TRUE,则返回一个未命名列表,给出 或 矩阵因子的完整扩展。 表示为pMatrix,和表示为dtCMatrix,和表示为dsCMatrix。 expand2-
signature(x = "Schur"):将分解 展开为list(Q, T, Q.)。Q和Q.是x@Q和t(x@Q)模Dimnames,T是x@T。 expand2-
signature(x = "sparseLU"):将分解 展开为list(P1., L, U, P2.)。P1.和P2.是pMatrix,L和U是dtCMatrix。 expand2-
signature(x = "denseLU"):将分解 展开为list(P1., L, U)。P1.是pMatrix,如果是正方形,L和U是dtrMatrix,否则是dgeMatrix。 expand2-
signature(x = "sparseQR"):将分解 扩展为list(P1., Q, R, P2.)或list(P1., Q1, R1, P2.),具体取决于可选逻辑参数complete。P1.和P2.是pMatrix,Q和Q1是dgeMatrix,R是dgCMatrix,R1是dtCMatrix。 expand-
signature(x = "CHMfactor"):与expand2相同,但返回list(P, L)。expand(x)[["P"]]和expand2(x)[["P1"]]表示相同的置换矩阵,但具有相反的margin槽和倒置的perm槽。expand(x)的组件不保留x@Dimnames。 expand-
signature(x = "sparseLU"): 作为expand2,但返回list(P, L, U, Q).expand(x)[["Q"]]和expand2(x)[["P2."]]表示相同的置换矩阵但有相反的margin插槽和倒置perm插槽。expand(x)[["P"]]表示置换矩阵而不是它的转置;这是expand2(x)[["P1."]]与倒立的perm投币口。expand(x)[["L"]]和expand2(x)[["L"]]表示同一个单位下三角矩阵,但与diag插槽等于"N"和"U", 分别。expand(x)[["L"]]和expand(x)[["U"]]存储排列后的第一和第二分量x@Dimnames在他们的Dimnames插槽。 expand-
signature(x = "denseLU"):与expand2相同,但返回list(L, U, P)。expand(x)[["P"]]和expand2(x)[["P1."]]与模Dimnames相同。expand(x)的组件不保留x@Dimnames。
例子
showMethods("expand1", inherited = FALSE)
showMethods("expand2", inherited = FALSE)
set.seed(0)
(A <- Matrix(rnorm(9L, 0, 10), 3L, 3L))
(lu.A <- lu(A))
(e.lu.A <- expand2(lu.A))
stopifnot(exprs = {
is.list(e.lu.A)
identical(names(e.lu.A), c("P1.", "L", "U"))
all(sapply(e.lu.A, is, "Matrix"))
all.equal(as(A, "matrix"), as(Reduce(`%*%`, e.lu.A), "matrix"))
})
## 'expand1' and 'expand2' give equivalent results modulo
## dimnames and representation of permutation matrices;
## see also function 'alt' in example("Cholesky-methods")
(a1 <- sapply(names(e.lu.A), expand1, x = lu.A, simplify = FALSE))
all.equal(a1, e.lu.A)
## see help("denseLU-class") and others for more examples
也可以看看
可分解矩阵的虚拟类compMatrix。
矩阵分解的虚拟类MatrixFactorization。
用于计算因式分解的通用函数 Cholesky 、 BunchKaufman 、 Schur 、 lu 和 qr 。
相关用法
- R expm-methods 矩阵指数
- R externalFormats 读写外部矩阵格式
- 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-devel大神的英文原创作品 Expand Matrix Factorizations。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
