# linalg: Do linear algebra operation In caracas: Computer Algebra

 linalg R Documentation

## Do linear algebra operation

### Description

Performs various linear algebra operations like finding the inverse, the QR decomposition, the eigenvectors and the eigenvalues.

### Usage

``````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 class 'caracas_symbol'
chol(x, ...)

svd_(x, ...)

det(x, ...)

trace_(x)
``````

### Arguments

 `x` A matrix for which a property is requested. `matrix` When relevant should a matrix be returned. `method` The default works by Gaussian elimination. The alternatives are \$LU\$ decomposition (`lu`), the cofactor method (`cf`), and `Ryacas` (`yac`). `...` Auxillary arguments.

### Value

Returns the requested property of a matrix.

`do_la()`

### Examples

``````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)
}

``````

caracas documentation built on June 22, 2024, 10:59 a.m.