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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。