¿Cómo construyo una matriz nxn?

¿Cómo construyo una matriz nxn?

Estoy intentando crear una matriz nxn grande pero no puedo encontrar una técnica que lo haga más fácil en lugar de hacerlo manualmente, ¿alguna idea?

Respuesta1

Esto imprime una matriz aleatoria con el tamaño especificado.

Las claves son size(obligatorias), lbpara el límite inferior de los enteros aleatorios (predeterminado 0), ubpara el límite superior de los enteros aleatorios (predeterminado 20).

\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}

\ExplSyntaxOn

\NewDocumentCommand{\bigmatrix}{m}
 {
  \group_begin:
  \keys_set:nn { john/bigmatrix } { #1 }
  \john_bigmatrix:
  \group_end:
 }

\tl_new:N \l__john_bigmatrix_tl

\keys_define:nn { john/bigmatrix }
 {
  size .int_set:N = \l__john_bigmatrix_size_int,
  lb   .int_set:N = \l__john_bigmatrix_lb_int,
  ub   .int_set:N = \l__john_bigmatrix_ub_int,
  lb   .initial:n = 0,
  ub   .initial:n = 20,
 }

\cs_new_protected:Nn \john_bigmatrix:
 {
  \int_compare:nT { \l__john_bigmatrix_size_int > \value{MaxMatrixCols} }
   {
    \setcounter{MaxMatrixCols}{\l__john_bigmatrix_size_int}
   }
  \int_step_function:nN { \l__john_bigmatrix_size_int } \__john_bigmatrix_row:n
  \begin{bmatrix}
  \l__john_bigmatrix_tl
  \end{bmatrix}
 }

\cs_new_protected:Nn \__john_bigmatrix_row:n
 {
  \tl_put_right:Nx \l__john_bigmatrix_tl
   {
    \int_rand:nn { \l__john_bigmatrix_lb_int } { \l__john_bigmatrix_ub_int }
   }
  \prg_replicate:nn { \l__john_bigmatrix_size_int - 1 }
   {
    \tl_put_right:Nx \l__john_bigmatrix_tl
     {
      &
      \int_rand:nn { \l__john_bigmatrix_lb_int } { \l__john_bigmatrix_ub_int }
     }
   }
  \tl_put_right:Nn \l__john_bigmatrix_tl { \\ }
 }

\ExplSyntaxOff

\begin{document}

$\bigmatrix{size=5}$ $\bigmatrix{size=6,lb=-12,ub=12}$

\bigskip

$\bigmatrix{size=15,ub=50}$

\end{document}

ingrese la descripción de la imagen aquí

Respuesta2

Utilice Mathematica por ejemplo,

IdentityMatrix[10]  // TeXForm

Y copie el resultado para LaTeX de la siguiente manera.

\documentclass[border=12pt,12pt]{standalone}
\usepackage{amsmath}
\begin{document}
$A=
\begin{pmatrix}
 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\
 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\
 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\
 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\
 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\
\end{pmatrix}
$
\end{document}

ingrese la descripción de la imagen aquí

Respuesta3

Utilice el sistema de álgebra informática Sage junto con el sagetexpaquete. Primero, aquí está el código:

\documentclass{article}
\usepackage{sagetex}
\begin{document}
\begin{sagesilent}
latex.matrix_delimiters(left='[', right=']')
A = Matrix([[0,-1,-1],[-1,-1,0],[-1,0,1],[1,0,0],[0,0,-1],[-1,2,1]])
B = Matrix.identity(4)  
C = random_matrix(ZZ,4,3)
D = random_matrix(QQ,3,4)
\end{sagesilent}
The matrix $A=\sage{A}$ was input by hand. The matrix $B=\sage{B}$ is defined  in Sage.
The matrix $C=\sage{C}$ is $4 \times 4$ matrix consisting of integers determined
at random. The matrix $D=\sage{D}$ is a $3 \times 4$ matrix consisting of rational 
numbers determined randomly.

Computing $C \cdot D= \sage{C*D}$ is easy. You can compute use Sage to test if 
matrices are singular or nonsingular and even calculate their inverses. 
Sage will take care of the calculations but 
you'll have to spend time making the output look a little nicer.
\end{document}

A continuación, aquí está el resultado. Dado que algunas de mis construcciones matriciales son aleatorias, debería verse diferente a la ejecución del mismo código. ingrese la descripción de la imagen aquí

Finalmente, la construcción básica es C = random_matrix(ZZ,4,3) donde

  1. C es la matriz que estás definiendo
  2. 4 es el número de filas
  3. 3 es el número de columnas
  4. ZZ es para que las entradas sean números enteros, QQ para racionales, RR para reales, CC para complejos. También puedes trabajar con campos finitos. Ver la documentación.

Tenga en cuenta que he mostrado cómo usted puede definir la matriz A, entrada por entrada, mientras que B muestra cómo Sage creará la matriz de identidad 4x4 para usted. Una vez que haya configurado sus matrices, Sage también hará los cálculos. Esto evita que se introduzcan errores por descuido en su documento. Sage no forma parte de la distribución LaTeX pero puedes acceder a él en línea con una cuenta gratuita de Cocalc.aquí. Es posible instalar Sage en su computadora para que no necesite Cocalc. Eso es más difícil de poner en marcha. Alguna documentación importante para trabajar con matrices en SAGE esaquí,aquí,aquí, yaquí. Sage no tiene problemas con matrices grandes, pero mostrarlas en la página se vuelve problemático. Usar \usepackage{fullpage} en su código puede liberar espacio para poder imprimir una matriz de 20 por 20.

Respuesta4

Matrices de números aleatorios normales usando knitr:

\documentclass{article}
\usepackage{amsmath}

<<bmatrix,echo=F>>=
options(digits=2) 
bmatrix <- function(matr) {
printmrow <- function(x) {cat(cat(x,sep=" & "),"\\\\ \n")}
cat("\\begin{bmatrix}","\n")
body <- apply(matr,1,printmrow)
cat("\\end{bmatrix}")}
@

\begin{document}
\[ A = 
<<echo=F,results='asis'>>=
bmatrix(round(matrix(rnorm(6), 2 ,3),3))
@
\]
\[ B =
<<echo=F,results='asis'>>=
bmatrix(round(matrix(abs(rnorm(120)), 12 ,10),1))
@
\]
\setcounter{MaxMatrixCols}{12}
\[ C =
<<echo=F,results='asis'>>=
bmatrix(round(matrix(abs(rnorm(144)), 12 ,12),1))
@
\]
\end{document}

ingrese la descripción de la imagen aquí

información relacionada