Performs various linear algebra operations like finding the inverse, the QR decomposition, the eigenvectors and the eigenvalues.
columnspace(x, matrix = TRUE)
nullspace(x, matrix = TRUE)
rowspace(x, matrix = TRUE)
singular_values(x)
inv(x, method = c("gauss", "lu", "cf", "yac"))
eigenval(x)
eigenvec(x)
GramSchmidt(x)
pinv(x)
rref(x)
QRdecomposition(x)
LUdecomposition(x)
# S3 method for caracas_symbol
chol(x, ...)
svd_(x, ...)
det(x, ...)
trace_(x)
A matrix for which a property is requested.
When relevant should a matrix be returned.
The default works by Gaussian elimination. The
alternatives are $LU$ decomposition (lu
), the cofactor
method (cf
), and Ryacas
(yac
).
Auxillary arguments.
Returns the requested property of a matrix.
if (has_sympy()) {
A <- matrix(c("a", "0", "0", "1"), 2, 2) |> as_sym()
QRdecomposition(A)
LUdecomposition(A)
#chol(A) # error
chol(A, hermitian = FALSE)
eigenval(A)
eigenvec(A)
inv(A)
det(A)
## Matrix inversion:
d <- 3
m <- matrix_sym(d, d)
print(system.time(inv(m))) ## Gauss elimination
print(system.time(inv(m, method="cf"))) ## Cofactor
print(system.time(inv(m, method="lu"))) ## LU decomposition
if (requireNamespace("Ryacas")){
print(system.time(inv(m, method="yac"))) ## Use Ryacas
}
A <- matrix(c("a", "b", "c", "d"), 2, 2) %>% as_sym()
evec <- eigenvec(A)
evec
evec1 <- evec[[1]]$eigvec
evec1
simplify(evec1)
lapply(evec, function(l) simplify(l$eigvec))
A <- as_sym("[[1, 2, 3], [4, 5, 6]]")
pinv(A)
}
#> user system elapsed
#> 0.714 0.000 0.714
#> user system elapsed
#> 0.032 0.000 0.032
#> user system elapsed
#> 0.196 0.000 0.196
#> Loading required namespace: Ryacas
#> user system elapsed
#> 0.066 0.000 0.074
#> c: ⎡-17 ⎤
#> ⎢──── 4/9 ⎥
#> ⎢ 18 ⎥
#> ⎢ ⎥
#> ⎢-1/9 1/9 ⎥
#> ⎢ ⎥
#> ⎢ 13 ⎥
#> ⎢ ── -2/9⎥
#> ⎣ 18 ⎦