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')

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")

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)
x <- symbol('x')
eq <- 2*x^2 - x
eq
#> [caracas]:    2    
#>            2⋅x  - x
as.character(eq)
#> [1] "2*x^2 - x"
as_r(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_symbol(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]"
eigen_val(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/.

Copy Link

Version

Install

install.packages('caracas')

Monthly Downloads

503

Version

1.0.0

License

GPL

Issues

Pull Requests

Stars

Forks

Maintainer

Mikkel Andersen

Last Published

May 21st, 2020

Functions in caracas (1.0.0)

as_character_matrix

Get matrix as character matrix
subs

Substitute symbol for value
subs_lst

Substitute symbol for of value given by a list
print.caracas_solve_sys_sol

Print solution
eigen_vec

Eigenvectors and eigenvalues
eval_to_symbol

Create a symbol from a string
simplify

Simplify expression
diag.caracas_symbol

Matrix diagonal
limf

Limit of a function
dim.caracas_symbol

Dimensions of a caracas symbol
doit

Perform calculations setup previously
solve_lin

Solve a linear system of equations
expand

Expand expression
intf

Integrate a function
expand_log

Expand a logarithmic expression
sympy_version

Get 'SymPy' version
inv

Find inverse of matrix
t.caracas_symbol

Transpose of matrix
have_sympy

Check if 'SymPy' is available
diag<-

Replace matrix diagonal
diag

Matrix diagonal
expand_trig

Expand a trigonometric expression
install_sympy

Install 'SymPy'
solve_sys

Solves a system of non-linear equations
[.caracas_symbol

Extract or replace parts of an object
get_sympy

Access 'SymPy' directly
prodf

Product of a function
print.caracas_symbol

Print symbol
tex

Export object to TeX
eigen_val

Eigenvalues
%*%.caracas_symbol

Matrix multiplication
%*%

Matrix multiplication
[<-.caracas_symbol

Extract or replace parts of an object
sum.caracas_symbol

Summation
sumf

Sum of a function
symbol

Create a symbol
as.character.caracas_symbol

Convert symbol to character
der

Symbolic differentiation of an expression
der2

Symbolic differentiation of second order of an expression
determinant.caracas_symbol

Calculate the Determinant of a Matrix
diag<-.caracas_symbol

Replace diagonal
as_r

Convert caracas object to R
as_symbol

Convert object to symbol
Math.caracas_symbol

Math functions
Ops.caracas_symbol

Math operators