rcond-methods
位於 Matrix
包(package)。 說明
估計矩陣條件數的倒數。
這是一個具有多種方法的通用函數,如 showMethods(rcond)
所示。
用法
rcond(x, norm, ...)
## S4 method for signature 'sparseMatrix,character'
rcond(x, norm, useInv=FALSE, ...)
參數
x |
一個R繼承自的對象 |
norm |
指示估計中使用的範數類型的字符串。 1-範數的默認值為 |
useInv |
邏輯(或 這可能是一種有效的替代方案(僅)在 請注意,結果可能會有所不同,具體取決於 |
... |
傳入或傳出其他方法的進一步參數。 |
值
x
的倒數條件數的估計。
BACKGROUND
正則(方)矩陣的條件數是矩陣的norm
與其逆矩陣(或pseudo-inverse)的範數的乘積。
更一般地,條件數定義為(也適用於非方陣 ):
每當 x
不是方陣時,在我們的方法定義中,通常通過 rcond(qr.R(qr(X)), ...)
計算,其中 X
是 x
或 t(x)
。
條件數取 1 到無窮大(含 1 和無窮大)之間的值,並且可以被視為一個因子,通過該因子可以放大使用該矩陣作為係數矩陣求解線性係統的誤差。
rcond()
使用 中的值計算條件數的倒數 ,並且可以將其視為矩陣與秩缺陷的接近程度的縮放度量(也稱為 “singular”)。
條件數通常是估計的,因為精確計算在浮點運算方麵的成本很高。給出了倒數條件數的(過)估計,因為這樣做可以避免溢出。如果條件倒數接近 1,則矩陣條件良好;如果條件倒數接近零,則矩陣為 ill-conditioned。
例子
x <- Matrix(rnorm(9), 3, 3)
rcond(x)
## typically "the same" (with more computational effort):
1 / (norm(x) * norm(solve(x)))
rcond(Hilbert(9)) # should be about 9.1e-13
## For non-square matrices:
rcond(x1 <- cbind(1,1:10))# 0.05278
rcond(x2 <- cbind(x1, 2:11))# practically 0, since x2 does not have full rank
## sparse
(S1 <- Matrix(rbind(0:1,0, diag(3:-2))))
rcond(S1)
m1 <- as(S1, "denseMatrix")
all.equal(rcond(S1), rcond(m1))
## wide and sparse
rcond(Matrix(cbind(0, diag(2:-1))))
## Large sparse example ----------
m <- Matrix(c(3,0:2), 2,2)
M <- bdiag(kronecker(Diagonal(2), m), kronecker(m,m))
36*(iM <- solve(M)) # still sparse
MM <- kronecker(Diagonal(10), kronecker(Diagonal(5),kronecker(m,M)))
dim(M3 <- kronecker(bdiag(M,M),MM)) # 12'800 ^ 2
if(interactive()) ## takes about 2 seconds if you have >= 8 GB RAM
system.time(r <- rcond(M3))
## whereas this is *fast* even though it computes solve(M3)
system.time(r. <- rcond(M3, useInv=TRUE))
if(interactive()) ## the values are not the same
c(r, r.) # 0.05555 0.013888
## for all 4 norms available for sparseMatrix :
cbind(rr <- sapply(c("1","I","F","M"),
function(N) rcond(M3, norm=N, useInv=TRUE)))
參考
Golub, G., and Van Loan, C. F. (1989). Matrix Computations, 2nd edition, Johns Hopkins, Baltimore.
也可以看看
base
包中的 norm
、 kappa()
相對於 (歐幾裏得) norm
計算 “traditional” 矩陣的近似條件數,甚至是非方矩陣。 solve
。
condest
,(1-範數)條件數的較新近似估計,對於大型稀疏矩陣特別有效。
相關用法
- R replValue-class 虛擬類“replValue” - 子分配值的簡單類
- R rep2abI 將向量複製到“abIndex”結果中
- R rleDiff-class rle(diff(.)) 存儲向量的“rleDiff”類
- R rankMatrix 矩陣的秩
- R rsparsematrix 隨機稀疏矩陣
- 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-devel大神的英文原創作品 Estimate the Reciprocal Condition Number。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。