#' Affiche le code LaTeX de la matrice augmentée
#'
#' Cette fonction permet l'affichage du code LaTeX d'une matrice augmentée. Elle
#' permet de choisir l'affichage entre \code{crochets} ou parenthèses.
#' Nous pouvons déterminer le nombre de chiffres après la virgule avec
#' \code{digits} et afficher sous forme de \code{fractions} ou non.
#' Le paramètre \code{sel} permet d'afficher la matrice augmentée d'un SEL ou la matrice
#' augmentée de l'inversion d'une matrice.
#'
#' @param A une matrice
#' @param sel logique; si \code{TRUE}, on affiche la matrice augmentée d'un SEL, sinon on affiche la matrice augmentée de l'inversion d'une matrice.
#' @param fractions logique; si \code{TRUE}, essaie d'exprimer les nombres non-entiers sous forme rationnelle.
#' @param crochets logique; si \code{TRUE}, affichage de la matrice entre crochets, si \code{FALSE}, affichage de la matrice entre parenthèses.
#' @param digits; permet de choisir le nombre de chiffres à droite de la virgule lors de l'affichage
#' @param align; permet de choisir le nombre de colonnes des constantes dans la matrice augmentée
#' @importFrom fractional numerators
#' @importFrom fractional denominators
#' @author Marc-André Désautels
#' @export
#' @examples
#' A <- matrix(c(2, 1, -1,
#' -3, -1, 2,
#' -2, 1, 2), 3, 3)
#' B <- matrix(c(2, 1, -1, 4,
#' -3, -1, 2, 6,
#' -2, 1, 2, -4,
#' 0, 4, 7, -5), 4, 4)
#'
#' printMat(A)
#' printMat(A/3, digits = 2)
#' printMat(A, crochets = FALSE)
#' printMat(A/7, fractions = TRUE)
#' printMat(B, sel = FALSE)
#' printMat(cbind(A,diag(ncol(A))), sel = FALSE)
printMat <- function(A,
digits = 2,
fractions = FALSE,
crochets = TRUE,
align = 0){
#if (!missing(align) && (ncol(A) %% 2 != 0)) stop("Le nombre de colonnes de A doit etre pair lors de l'inversion d'une matrice.")
if (crochets)
cat('\\left[\n')
else
cat('\\left(\n')
cat('\\begin{array}{')
if (!missing(align)){
align <- c(rep('r',ncol(A)-align),'|',rep('r',align))
}
else{
align <- c(rep('r',ncol(A)))
}
cat(align, collapse = "", sep = "")
cat('}')
cat("\n")
if (fractions){
for (i in 1:nrow(A)){
cat(dfrac(A[i,]), sep = " & ")
cat(" \\\\")
cat("\n")
}
}
else{
options(digits = digits)
for (i in 1:nrow(A)){
cat(A[i,], sep = " & ")
cat(" \\\\")
cat("\n")
}
}
cat('\\end{array}')
cat("\n")
if (crochets)
cat('\\right]\n')
else
cat('\\right)\n')
}
#' Affiche la fraction sous forme "\frac{}{}"
dfrac <- function(x, oper = FALSE){
n <- fractional::numerators(x)
d <- fractional::denominators(x)
temp <- n
for (i in 1 : length(n)){
if (n[i] == 0){
temp[i] <- 0
}
else{
if (d[i] == 1){
if (n[i] == 1 && oper){
temp[i] <- ""
}
else if (n[i] == -1 && oper){
temp[i] <- "-"
}
else{
temp[i] <- n[i]
}
}
else{
if (n[i] > 0){
temp[i] <- paste(c("\\frac{",n[i],"}{",d[i],"}"), collapse = "")
}
else{
temp[i] <- paste(c("-\\frac{",abs(n[i]),"}{",d[i],"}"), collapse = "")
}
}
}
}
temp
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.