ID EN
Vector & List

chol

R Base 3.6.2 🇮🇩 Bahasa Indonesia

Hitung faktorisasi Choleski dari matriks persegi pasti positif simetris nyata.

Syntax

R
chol(x, &#8230;)<p></p><p># S3 method for default
chol(x, pivot = FALSE,  LINPACK = FALSE, tol = -1, &#8230;)</p>

Arguments

Parameter Deskripsi
x an object for which a method exists. The default method applies to numeric (or logical) symmetric, positive-definite matrices.
&#8230; arguments to be based to or from methods.
pivot Should pivoting be used?
LINPACK logical. Should LINPACK be used (now ignored)?
tol A numeric tolerance for use with pivot = TRUE.

Return Value

Faktor segitiga atas dekomposisi Choleski, yaitu matriks \(R\) sedemikian rupa sehingga \(R'R = x\) (lihat contoh). Jika pivot digunakan, maka dua atribut tambahan "pivot" dan "rank" juga dikembalikan.

Details

chol bersifat umum: deskripsi di sini berlaku untuk metode default. Perhatikan bahwa hanya bagian segitiga atas dari x yang digunakan, sehingga \(R'R = x\) ketika x simetris. Jika pivot = FALSE dan x bukan non-negatif pasti terjadi kesalahan. Jika x adalah positif semi-pasti (yaitu, beberapa nilai eigen nol) kesalahan juga akan terjadi karena toleransi numerik digunakan. Jika pivot = TRUE, maka dekomposisi Choleski dari x semi-pasti positif dapat dihitung. Peringkat x dikembalikan sebagai attr(Q, "rank"), tergantung pada kesalahan numerik. Pivot dikembalikan sebagai attr(Q, "pivot"). Tidak lagi berlaku bahwa t(Q) %*% Q sama dengan x. Namun, dengan menyetel pivot <- attr(Q, "pivot") dan oo <- order(pivot), memang benar bahwa t(Q[, oo]) %*% Q[, oo] sama dengan x, atau, alternatifnya, t(Q) %*% Q sama dengan x[pivot, pivot]. Lihat ujiannya

Contoh

Example
R
# NOT RUN {
( 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
# }

See Also

chol2inv for its inverse (without pivoting) backsolve for solving linear systems with upper triangular left sides. qr svd for related matrix factorizations.