fastMisc
位於 Matrix
包(package)。 說明
Matrix
內部使用的 “Semi-API” 函數通常用於繞過 S4 調度並避免相關的開銷。這些被導出以便為專家用戶提供此函數。典型用戶應繼續依賴 S4 通用函數來調度合適的方法,例如調用 as(., <class>)
進行強製轉換。
用法
.M2kind(from, kind = ".", sparse = NA)
.M2gen(from, kind = ".")
.M2sym(from, ...)
.M2tri(from, ...)
.M2diag(from)
.M2v(from)
.M2m(from)
.M2unpacked(from)
.M2packed(from)
.M2C(from)
.M2R(from)
.M2T(from)
.sparse2dense(from, packed = FALSE)
.diag2dense(from, shape = "t", packed = FALSE, uplo = "U")
.ind2dense(from, kind = "n")
.m2dense(from, class, uplo = "U", diag = "N")
.dense2sparse(from, repr = "C")
.diag2sparse(from, shape = "t", repr = "C", uplo = "U")
.ind2sparse(from, kind = "n", repr = ".")
.m2sparse(from, class, uplo = "U", diag = "N")
.tCRT(x, lazy = TRUE)
.diag.dsC(x, Chx = Cholesky(x, LDL = TRUE), res.kind = "diag")
.solve.dgC.lu (a, b, tol = .Machine$double.eps, check = TRUE)
.solve.dgC.qr (a, b, order = 3L, check = TRUE)
.solve.dgC.chol(a, b, check = TRUE)
.updateCHMfactor(object, parent, mult = 0)
參數
from , x , a , b |
|
kind |
指定結果的 “kind” 的字符串( |
shape |
指定結果的 “shape” 的字符串( |
repr |
一個字符串( |
packed |
指示結果是否應從 |
sparse |
指示結果是否應從 |
uplo |
一個字符串( |
diag |
一個字符串( |
class |
一個字符串,其前三個字符指定結果的類。它應與 |
... |
傳遞給 |
lazy |
一個邏輯,指示是否應使用最小分配來構造轉置,但可能不保留表示。 |
Chx |
可選地, |
res.kind |
中的一個字符串 |
tol |
請參閱 |
order |
請參閱 |
check |
一個邏輯,指示是否應測試第一個參數是否從 |
object |
從虛擬類 |
parent |
|
mult |
正長度的數值向量。僅使用第一個元素,並且該元素必須是有限的。 |
細節
名稱格式為 .<A>2<B>
的函數實現從虛擬類 A 到虛擬類 B 的 “nearest” 非虛擬子類的強製轉換,其中虛擬類縮寫如下:
M
m
-
矩陣或向量
v
-
向量
dense
unpacked
packed
sparse
C
R
T
gen
sym
tri
diag
ind
縮寫應被視為指南,而不是行為的準確說明。例如,.m2dense
和 .m2sparse
除了矩陣之外還接受向量。
.tCRT(x)
如果lazy = TRUE
, 然後.tCRT
構造轉置x
使用最有效的表示,這對於‘CRT' 是 '隨機對照試驗’。如果lazy = FALSE
, 然後.tCRT
保留了表示x
,表現為泛型函數的相應方法t
.
.diag.dsC(x)
.diag.dsC
將 x
的 Cholesky 分解計算為 (如果提供了 Chx
,則使用),以便根據 的對角線條目計算幾個可能的統計數據之一。請參閱“參數”下的res.kind
。
.solve.dgC.*(a, b)
.solve.dgC.lu(a, b)
需要方陣 a
。 .solve.dgC.qr(a, b)
需要一個 “long” 矩陣 a
和 nrow(a) >= ncol(a)
。 .solve.dgC.chol(a, b)
需要 “wide” 矩陣 a
和 nrow(a) <= ncol(a)
。
所有這三個都可以用來直接求解稀疏線性係統。僅.solve.dgC.qr
和.solve.dgC.chol
可用於解決稀疏最小二乘問題。
.updateCHMfactor(object, parent, mult)
.updateCHMfactor
使用 Cholesky 分解 F(parent) + mult[1] * diag(nrow(parent))
的結果更新 object
,即 F(parent)
加上 mult[1]
乘以單位矩陣,其中 F = identity
如果 parent
是 dsCMatrix
和 F = tcrossprod
如果parent
是 dgCMatrix
。如果 object = Cholesky(S, ...)
,則 F(parent)
的非零模式必須與 S
的非零模式匹配。
例子
D. <- diag(x = c(1, 1, 2, 3, 5, 8))
D.0 <- Diagonal(x = c(0, 0, 0, 3, 5, 8))
S. <- toeplitz(as.double(1:6))
C. <- new("dgCMatrix", Dim = c(3L, 4L),
p = c(0L, 1L, 1L, 1L, 3L), i = c(1L, 0L, 2L), x = c(-8, 2, 3))
stopifnot(exprs = {
identical(.M2tri (D.), as(D., "triangularMatrix"))
identical(.M2sym (D.), as(D., "symmetricMatrix"))
identical(.M2diag(D.), as(D., "diagonalMatrix"))
identical(.M2kind(C., "l"),
as(C., "lMatrix"))
identical(.M2kind(.sparse2dense(C.), "l"),
as(as(C., "denseMatrix"), "lMatrix"))
identical(.diag2sparse(D.0, "t", "C"),
.dense2sparse(.diag2dense(D.0, "t", TRUE), "C"))
identical(.M2gen(.diag2dense(D.0, "s", FALSE)),
.sparse2dense(.M2gen(.diag2sparse(D.0, "s", "T"))))
identical(S.,
.M2m(.m2sparse(S., ".sR")))
identical(S. * lower.tri(S.) + diag(1, 6L),
.M2m(.m2dense (S., ".tr", "L", "U")))
identical(.M2R(C.), .M2R(.M2T(C.)))
identical(.tCRT(C.), .M2R(t(C.)))
})
A <- tcrossprod(C.)/6 + Diagonal(3, 1/3); A[1,2] <- 3; A
stopifnot(exprs = {
is.numeric( x. <- c(2.2, 0, -1.2) )
all.equal(x., .solve.dgC.lu(A, c(1,0,0), check=FALSE))
all.equal(x., .solve.dgC.qr(A, c(1,0,0), check=FALSE))
})
## Solving sparse least squares:
X <- rbind(A, Diagonal(3)) # design matrix X (for L.S.)
Xt <- t(X) # *transposed* X (for L.S.)
(y <- drop(crossprod(Xt, 1:3)) + c(-1,1)/1000) # small rand.err.
str(solveCh <- .solve.dgC.chol(Xt, y, check=FALSE)) # Xt *is* dgC..
stopifnot(exprs = {
all.equal(solveCh$coef, 1:3, tol = 1e-3)# rel.err ~ 1e-4
all.equal(solveCh$coef, drop(solve(tcrossprod(Xt), Xt %*% y)))
all.equal(solveCh$coef, .solve.dgC.qr(X, y, check=FALSE))
})
相關用法
- R facmul-methods 乘以矩陣因式分解的因數
- R formatSparseM 格式化稀疏數值矩陣實用程序
- R forceSymmetric-methods 強製矩陣為“對稱矩陣”而不進行對稱性檢查
- R dtrMatrix-class 三角形稠密數值矩陣
- 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大神的英文原創作品 “Low Level” Coercions and Methods。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。