--- title: "Matrix and vector `Sym` objects" author: "Mikkel Meyer Andersen and Søren Højsgaard" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Matrix and vector `Sym` objects} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) ``` ```{r, message=FALSE} library(Ryacas0) ``` # Matrices Define a character matrix (covariance matrix from a certain $AR(1)$): ```{r} N <- 3 L1 <- diag(1, 1 + N) L1[cbind(1+(1:N), 1:N)] <- "-alpha" L1s <- as.Sym(L1) L1s ``` Now, this can be converted to a `Sym` object: ```{r} L1s <- as.Sym(L1) L1s ``` Operations can be performed: ```{r} L1s + 4 tmp <- L1s^4 tmp Simplify(tmp) ``` Or the concentration matrix $K=L L'$ can be found: ```{r} K1s <- Simplify(L1s * Transpose(L1s)) K1s ``` This can be converted to $\LaTeX$: ```{r} TeXForm(K1s) ``` Which look like this: ```{r, results="asis"} cat("\\[ K_1 = ", TeXForm(K1s), " \\]", sep = "") ``` # Vectors Similar can be done for vectors: ```{r} x <- paste0("x", 1:2) xs <- as.Sym(x) xs ``` And matrix-vector multiplication (or matrix-matrix multiplication): ```{r} A <- matrix(paste0(paste0("a", 1:2), rep(1:2, each = 2)), 2, 2) As <- as.Sym(A) As ``` ```{r} As*xs As*As ``` # Eval ```{r} xs Eval(xs, list(x1 = 2, x2 = 3)) ``` ```{r} As Eval(As, list(a11 = 11, a12 = 12, a21 = 21, a22 = 22)) ``` # Disabling functionality The functionality can be disabled as follows: ```{r} Ryacas_options("module_matvec_enabled") As Ryacas_options(module_matvec_enabled = FALSE) As ```