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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。