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