Learn R Programming

⚠️There's a newer version (2.1.1) of this package.Take me there.

caracas: Computer algebra in R

Installation

caracas is available on CRAN and can be installed as usual:

install.packages('caracas')

Please ensure that you have SymPy installed, or else install it:

if (!caracas::has_sympy()) {
  caracas::install_sympy() 
}

To build and install from Github with vignettes run this command from within R (please install remotes first if not already installed):

# install.packages('remotes')
remotes::install_github("r-cas/caracas", build_vignettes = TRUE)

You can also install the package without vignettes if needed as follows:

remotes::install_github("r-cas/caracas")

Configuring the Python environment

The caracas package uses the reticulate package (to run Python code). Thus, if you wish to configure your Python environment, you need to 1) load reticulate, 2) configure the Python environment, and 3) load caracas. The Python environment can be configured as described here. Again, this need to be done before loading caracas.

Development site

See https://github.com/r-cas/caracas.

Online documentation

See https://r-cas.github.io/caracas/.

Origin of name

The name “caracas” is intended to mean “(inter)face to computer algebra system(s)” - notice that “cara” is Spanish (Castellano to be precise) for “face”.

Code of conduct

Please note that the caracas project is released with a Contributor Code of Conduct (available in CODE_OF_CONDUCT.md). By contributing to this project, you agree to abide by its terms.

Brief introduction

library(caracas)
# options(caracas.print.prettyascii = TRUE)
x <- symbol('x')
eq <- 2*x^2 - x
eq
#> [caracas]:    2    
#>            2⋅x  - x
as.character(eq)
#> [1] "2*x^2 - x"
as_expr(eq)
#> expression(2 * x^2 - x)
tex(eq)
#> [1] "2 x^{2} - x"
solve_sys(eq, x)
#> Solution 1:
#>   x =  0 
#> Solution 2:
#>   x =  1/2
der(eq, x)
#> [caracas]: 4⋅x - 1
subs(eq, x, "y")
#> [caracas]:    2    
#>            2⋅y  - y
A <- matrix(c("x", 2, 0, "2*x"), 2, 2)
B <- as_sym(A)
B
#> [caracas]: ⎡x   0 ⎤
#>            ⎢      ⎥
#>            ⎣2  2⋅x⎦
Binv <- inv(B)
Binv
#> [caracas]: ⎡ 1      ⎤
#>            ⎢ ─    0 ⎥
#>            ⎢ x      ⎥
#>            ⎢        ⎥
#>            ⎢-1    1 ⎥
#>            ⎢───  ───⎥
#>            ⎢  2  2⋅x⎥
#>            ⎣ x      ⎦
tex(Binv)
#> [1] "\\left[\\begin{matrix}\\frac{1}{x} & 0\\\\- \\frac{1}{x^{2}} & \\frac{1}{2 x}\\end{matrix}\\right]"
eigenval(Binv)
#> [[1]]
#> [[1]]$eigval
#> [caracas]: 1
#>            ─
#>            x
#> 
#> [[1]]$eigmult
#> [1] 1
#> 
#> 
#> [[2]]
#> [[2]]$eigval
#> [caracas]:  1 
#>            ───
#>            2⋅x
#> 
#> [[2]]$eigmult
#> [1] 1

Please find more examples in the other vignettes available at https://r-cas.github.io/caracas/.

Contribute, issues, and support

Please use the issue tracker at https://github.com/r-cas/caracas/issues if you want to notify us of an issue or need support. If you want to contribute, please either create an issue or make a pull request.

Copy Link

Version

Install

install.packages('caracas')

Monthly Downloads

610

Version

2.0.1

License

GPL

Issues

Pull Requests

Stars

Forks

Maintainer

Mikkel Andersen

Last Published

August 11th, 2023

Functions in caracas (2.0.1)

expand_trig

Expand a trigonometric expression
fraction_parts

Get numerator and denominator of a fraction
expand

Expand expression
cancel

Put rational function into standard form
collect

Collects common powers of a term in an expression
expand_func

Expand a function expression
diag-set

Replace matrix diagonal
free_symbols

Get free symbol in expression
generic-matrices

Generate generic vectors and matrices
diag<-.caracas_symbol

Replace diagonal
eval_to_symbol

Create a symbol from a string
drop_remainder

Remove remainder term
der2

Symbolic differentiation of second order of an expression
score_hessian

Score and Hessian matrix
der

Symbolic differentiation of an expression
simplify

Simplify expression
as_diag

Construct diagonal matrix from vector
is_sym

Is object a caracas symbol
as_character_matrix

Get matrix as character matrix
diag

Matrix diagonal
jacobian

Compute Jacobian
diag.caracas_symbol

Matrix diagonal
mat_div_mult

Divide or multiply matrix with factor.
reciprocal_matrix

Elementwise reciprocal matrix
rowSums_colSums

Form Row and Column Sums
mat_pow

Matrix power
has_sympy

Check if 'SymPy' is available
get_sympy

Access 'SymPy' directly
solve_lin

Solve a linear system of equations
lim

Limit of a function
solve_sys

Solves a system of non-linear equations
matrix_cross_product

Matrix cross product
[.caracas_symbol

Extract or replace parts of an object
special_matrices

Special matrices: zeros, ones, eyes
symbol_class

Ask type of caracas symbol
symbol

Create a symbol
matrix_

Symbolic matrix
print.caracas_solve_sys_sol

Print solution
symbol_is_matrix

Check if object is a caracas matrix
linalg

Do linear algebra operation
print.caracas_symbol

Print symbol
sympy_func

Call a SymPy function directly on x
dim<-.caracas_symbol

Dimensions of a caracas symbol
as_expr

Convert caracas object to R
as_factor_list

Create list of factors as in a product
subs

Substitute symbol for value
[<-.caracas_symbol

Extract or replace parts of an object
tex.caracas_factor_list

Print factor list
texshow

Dump latex representation of sympy object.
dim.caracas_symbol

Dimensions of a caracas symbol
install_sympy

Install 'SymPy'
do_la

Do linear algebra operation
get_py

Access 'py' object
listify

Convert object to list of elements
sum.caracas_symbol

Summation
doit

Perform calculations setup previously
sum_

Sum of a function
get_basis

Get basis
ls_sym

List defined symbols
unbracket

Remove inner-most dimension
vectorfy

Creates symbol vector from list of caracas symbols
tex

Export object to TeX
%>%

Pipe
taylor

Taylor expansion
print.caracas_factor_list

Print factor list
int

Integrate a function
to_something

Coerce caracas object
matrify

Creates matrix from array symbol
matrix-products

Matrix multiplication
prod_

Product of a function
tuplify

Convert object to tuple
rankMatrix_

Rank of matrix
sym_class

Ask type of caracas symbol
sym_inherits

Ask if type of caracas symbol is of a requested type
sympy_version

Get 'SymPy' version
t.caracas_symbol

Transpose of matrix
all_vars

All variables
Math.caracas_symbol

Math functions
Ops.caracas_symbol

Math operators
apart

Partial fraction decomposition on a rational function
N

Numerical evaluation
as_character

Coerce symbol to character
add_prefix

Add prefix to each element of matrix
as.character.caracas_symbol

Convert symbol to character
as_func

Convert expression into function object.
as_vec

Stacks matrix to vector
ask

Ask for a symbol's property
as_sym

Convert R object to caracas symbol
diag_

Symbolic diagonal matrix
colspan

Column space (range) of a symbolic matrix
diff_mat

Difference matrix
factor_

Expand expression
def_sym

Define (invisibly) caracas symbols in global environment
expand_log

Expand a logarithmic expression