chol
位于 base
包(package)。 说明
计算实数对称正定方阵的 Cholesky 分解。
用法
chol(x, ...)
## Default S3 method:
chol(x, pivot = FALSE, LINPACK = FALSE, tol = -1, ...)
参数
x |
存在方法的对象。默认方法适用于数值(或逻辑)对称正定矩阵。 |
... |
基于方法或来自方法的参数。 |
pivot |
是否应该使用旋转? |
LINPACK |
合乎逻辑的。是否应该使用 LINPACK(现在是一个错误)? |
tol |
与 |
细节
chol
是通用的:此处的说明适用于默认方法。
请注意,仅使用x
的上三角部分,因此当x
对称时, 。
如果pivot = FALSE
和x
不是非负定的,则会发生错误。如果 x
是半正定的(即某些零特征值),则在使用数值公差时也会出现错误。
如果 pivot = TRUE
,则可以计算正半定 x
的 Cholesky 分解。 x
的排名返回为 attr(Q, "rank")
,可能存在数值错误。枢轴返回为 attr(Q, "pivot")
。 t(Q) %*% Q
不再等于 x
。但是,设置 pivot <- attr(Q, "pivot")
和 oo <- order(pivot)
时,t(Q[, oo]) %*% Q[, oo]
等于 x
,或者 t(Q) %*% Q
等于 x[pivot,
pivot]
。请参阅示例。
tol
的值传递给 LAPACK,负值选择(通常)nrow(x) *
.Machine$double.neg.eps * max(diag(x))
的默认容差。一旦主元小于 tol
,算法就会终止。
底层 LAPACK 代码的不成功结果将导致错误,并给出正错误代码:这些只能通过详细研究 FORTRAN 代码来解释。
值
Cholesky 分解的上三角因子,即矩阵 使得 (参见示例)。
如果使用透视,则还会返回两个附加属性"pivot"
和"rank"
。
警告
该代码不检查对称性。
如果pivot = TRUE
和x
不是非负定的,则会出现警告消息,但会出现无意义的结果。因此,仅当 x
通过构造非负定时才使用 pivot = TRUE
。
例子
( m <- matrix(c(5,1,1,3),2,2) )
( cm <- chol(m) )
t(cm) %*% cm #-- = 'm'
crossprod(cm) #-- = 'm'
# now for something positive semi-definite
x <- matrix(c(1:5, (1:5)^2), 5, 2)
x <- cbind(x, x[, 1] + 3*x[, 2])
colnames(x) <- letters[20:22]
m <- crossprod(x)
qr(m)$rank # is 2, as it should be
# chol() may fail, depending on numerical rounding:
# chol() unlike qr() does not use a tolerance.
try(chol(m))
(Q <- chol(m, pivot = TRUE))
## we can use this by
pivot <- attr(Q, "pivot")
crossprod(Q[, order(pivot)]) # recover m
## now for a non-positive-definite matrix
( m <- matrix(c(5,-5,-5,3), 2, 2) )
try(chol(m)) # fails
(Q <- chol(m, pivot = TRUE)) # warning
crossprod(Q) # not equal to m
来源
这是 LAPACK 例程 DPOTRF
和 DPSTRF
的接口,
LAPACK 来自https://netlib.org/lapack/,其指南在参考文献中列出。
参考
Anderson. E. and ten others (1999)
LAPACK Users' Guide. Third Edition. SIAM.
Available on-line at
https://netlib.org/lapack/lug/lapack_lug.html.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
相关用法
- R chol2inv Cholesky(或 QR)分解的逆分解
- R chooseOpsMethod 选择适当的操作方法
- R chartr 字符翻译和装箱
- R character 字符向量
- R charmatch 部分字符串匹配
- R chkDots 警告调用者的“...”中存在无关参数
- R char.expand 相对于目标表展开字符串
- R cumsum 累积和、乘积和极值
- R col 列索引
- R c 将值组合到向量或列表中
- R conditions 状况处理和恢复
- R cut 将数字转换为因子
- R class 对象类
- R connections 操作连接的函数(文件、URL...)
- R comment 查询或设置“评论”属性
- R complex 复数和基本函数
- R colSums 形成行和列的总和及平均值
- R commandArgs 提取命令行参数
- R cbind 按行或列组合 R 对象
- R crossprod 矩阵叉积
- R curlGetHeaders 从 URL 中检索标头
- R cat 连接并打印
- R capabilities 此 R 版本的报告函数
- R callCC 调用当前延续
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 The Cholesky Decomposition。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。