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

1.1.2

License

GPL

Issues

Pull Requests

Stars

Forks

Maintainer

Mikkel Andersen

Last Published

February 11th, 2022

Functions in caracas (1.1.2)

as_diag

Construct diagonal matrix from vector
ask

Ask for a symbol's property
def_sym

Define caracas symbols in global environment
diag<-.caracas_symbol

Replace diagonal
Ops.caracas_symbol

Math operators
diag-set

Replace matrix diagonal
lim

Limit of a function
linalg

Do linear algebra operation
diag.caracas_symbol

Matrix diagonal
diag

Matrix diagonal
simplify

Simplify expression
solve_lin

Solve a linear system of equations
get_py

Access 'py' object
fraction_parts

Get numerator and denominator of a fraction
matrix_

Symbolic matrix
solve_sys

Solves a system of non-linear equations
%>%

Pipe
do_la

Do linear algebra operation
[.caracas_symbol

Extract or replace parts of an object
doit

Perform calculations setup previously
as_expr

Convert caracas object to R
as.character.caracas_symbol

Convert symbol to character
der

Symbolic differentiation of an expression
subs_vec

Substitute af vector of symbols for a vector of values
der2

Symbolic differentiation of second order of an expression
[<-.caracas_symbol

Extract or replace parts of an object
as_sym

Convert object to symbol
get_sympy

Access 'SymPy' directly
has_sympy

Check if 'SymPy' is available
expand_log

Expand a logarithmic expression
taylor

Taylor expansion
print.caracas_solve_sys_sol

Print solution
print.caracas_symbol

Print symbol
drop_remainder

Remove remainder term
eval_to_symbol

Create a symbol from a string
tex

Export object to TeX
unbracket

Remove inner-most dimension
tuplify

Convert object to tuple
diag_

Symbolic diagonal matrix
dim.caracas_symbol

Dimensions of a caracas symbol
expand

Expand expression
expand_trig

Expand a trigonometric expression
expand_func

Expand a function expression
matrify

Creates matrix from array symbol
matrix-products

Matrix multiplication
listify

Convert object to list of elements
mat_pow

Matrix power
t.caracas_symbol

Transpose of matrix
reciprocal_matrix

Elementwise reciprocal matrix
prod_

Product of a function
sympy_version

Get 'SymPy' version
sum.caracas_symbol

Summation
vec

Stacks matrix to vector
sum_

Sum of a function
int

Integrate a function
install_sympy

Install 'SymPy'
subs_lst

Substitute symbol for of value given by a list
sympy_func

Call a SymPy function directly on x
subs

Substitute symbol for value
symbol

Create a symbol
Math.caracas_symbol

Math functions
as_character_matrix

Get matrix as character matrix
N

Numerical evaluation