3. Listas: Tablas, matrices y vectores

Ejemplos con Mathematica

1. Listas

Ejemplo 3.1.

Introducimos la lista l={2, x, (π/2),3+i}.

l = {2, x, Pi/2, 3 + I};

Observemos que tenemos elementos de distinta naturaleza y que podremos multiplicar todos sus elementos por 2

h = 2*l

o calcular una aproximación decimal del seno de cada uno de los elementos de la lista

Sin[h] // N

Ejemplo 3.2.

Consideremos una nueva "lista"

lista = {0, 2, -7, y, 4, 3  x^2 + 1, E, 5 + 2  I};

Calculamos:
Su longitud

Length[lista]

El elemento que ocupa el cuarto lugar

lista[[4]]

El primer y último elemento, respectivamente

First[lista]
Last[lista]

Al final de "lista" añadimos el elemento α

Append[lista, α]

pero el contenido de "lista" no varía

lista

Si queremos que el elemento α quede incluido en el contenido, de "lista", en la última posición utilizaremos la función AppendTo[]

AppendTo[lista, α]

Aparentemente el resultado es el mismo pero el contenido ha variado como podemos ver a continuación

lista

Análogamente ocurre con las funciones Prepend[] y PrependTo[], que incorporarán el elemento 2π al principio de la lista sin modificar o variando, respectivamente, el contenido de la "lista"

Prepend[lista, 2  Pi]

lista

PrependTo[lista, 2  Pi]

lista

Si ahora, quisiéramos obtener una nueva lista (que llamaremos lista1) eliminando de la anterior, el numero e, que ocupa la octava posición, escribiremos

lista1 = Delete[lista, 8]

También podríamos estar interesados en una lista que se obtenga de la anterior el elemento y + 7 en la segunda posición, entonces

lista2 = Insert[lista1, y + 7, 2]

nos daría el resultado.

2. La función Table

Ejemplo 3.3.

Calcular, utilizando la función Table[], una lista formada por los cinco primeros múltiplos positivos de  3.

v = Table[3  i, {i, 1, 5, 1}]

Ejemplo 3.4.

Crear una tabla 2×4, utilizando la función Table[], cuya primera fila sea los números positivos pares, menores de 10 y la segunda los cuadrados de los números de la primera fila

a = Table[(2*j)^i, {i, 2}, {j, 4}]

Ejemplo 3.5.

Para que las listas de los ejemplos 3.3. y 3.4. adopten un formato de tabla podríamos escribir

TableForm[v]
TableForm[a]

Ejemplo 3.6.

Otra forma de definir la lista del ejemplo 3.3., v={3, 6, 9, 12, 15}, utilizando la función Table[], podría ser detallando todos sus elementos:

v = Table[0, {i, 5}];
v[[1]] = 3;
v[[2]] = 6;
v[[3]] = 9;
v[[4]] = 12;
v[[5]] = 15;
v

También podemos definir la tabla del ejemplo 3.4.,  a={{2, 4, 6, 8}, {4, 16, 36, 64}}, utilizando la función Table[] y especificando todos sus elementos:

a = Table[0, {i, 2}, {j, 4}];
a[[1, 1]] = 2;
a[[1, 2]] = 4;
a[[1, 3]] = 6;
a[[1, 4]] = 8;
a[[2, 1]] = 4;
a[[2, 2]] = 16;
a[[2, 3]] = 36;
a[[2, 4]] = 64;
a

3. Vectores y matrices

Ejemplo 3.7.

Para trabajar con el vector (-1, 2, 0)∈\(TraditionalForm\`\(\(\ \)\(ℝ\^\(\(3\)\(\ \)\)\)\)\)introduciremos

u = {-1, 2, 0};

Ejemplo 3.8.

La matriz b=(({{1, 2, 3}, {2, -3, 0}})) podemos interpretarla como una lista de sus filas y así escribiremos

b = {{1, 2, 3}, {2, -3, 0}};

Ejemplo 3.9.

Para que aparezcan los paréntesis del vector u o de la matriz b de los dos ejemplos anteriores podremos escribir

MatrixForm[u]
MatrixForm[b]

Observemos en la siguiente salida cómo MatrixForm[] devuelve una representación gráfica de una lista y no podemos utilizarla para operar con ella

M = MatrixForm[u];
M[[3]]

Ejemplo 3.10.

Obtenemos el número de coordenadas de u y el orden de la matriz b a través de

Dimensions[u]
Dimensions[b]

Ejemplo 3.11.

Para describir con Mathematica el vector (A, B, C, D) podremos hacer

vector = {A, B, C, D}

o bien

vector = Table[0, {i, 4}];
vector[[1]] = A;
vector[[2]] = B;
vector[[3]] = C;
vector[[4]] = D;
vector

Ejemplo 3.12.

Para definir la matriz 3×3 que contiene cero en todas sus coordenadas escribiremos

matriz = Table[0, {i, 3}, {j, 3}]

MatrixForm[matriz]

y en forma de tabla

TableForm[matriz]

Análogamente, a la lista siguiente podemos darle aspecto de matriz o de tabla

matriz = {{1, 2, 3},  {4, 5, 6}, {7, 8, 9}};
MatrixForm[matriz]
TableForm[matriz]

4. Ejercicios

Ejercicio 3.9.

Calendario perpetuo

años = 
        Table[If[
            1901 > 1896 + i + (28*(j - 2)) || 
              1896 + i + (28*(j - 2)) > 2099, "-", 
            1896 + i + (28*(j - 2))], {i, 28}, {j, 9}];
Do[años[[i, 1]] = i, {i, 28}];
TableForm[años]

meses = {{4, 0, 0, 3, 5, 1, 3, 6, 2, 4, 0, 2}, {5, 1, 1, 4, 6, 2, 4, 
            0, 3, 5, 1, 3}, {6, 2, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4}, {0, 3, 4, 
            0, 2, 5, 0, 3, 6, 1, 4, 6}, {2, 5, 5, 1, 3, 6, 1, 4, 0, 2, 5, 
            0}, {3, 6, 6, 2, 4, 0, 2, 5, 1, 3, 6, 1}, {4, 0, 0, 3, 5, 1, 3, 
            6, 2, 4, 0, 2}, {5, 1, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4}, {0, 3, 3, 
            6, 1, 4, 6, 2, 5, 0, 3, 5}, {1, 4, 4, 0, 2, 5, 0, 3, 6, 1, 4, 
            6}, {2, 5, 5, 1, 3, 6, 1, 4, 0, 2, 5, 0}, {3, 6, 0, 3, 5, 1, 3, 
            6, 2, 4, 0, 2}, {5, 1, 1, 4, 6, 2, 4, 0, 3, 5, 1, 3}, {6, 2, 2, 
            5, 0, 3, 5, 1, 4, 6, 2, 4}, {0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 
            5}, {1, 4, 5, 1, 3, 6, 1, 4, 0, 2, 5, 0}, {3, 6, 6, 2, 4, 0, 2, 
            5, 1, 3, 6, 1}, {4, 0, 0, 3, 5, 1, 3, 6, 2, 4, 0, 2}, {5, 1, 1, 
            4, 6, 2, 4, 0, 3, 5, 1, 3}, {6, 2, 3, 6, 1, 4, 6, 2, 5, 0, 3, 
            5}, {1, 4, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6}, {2, 5, 5, 1, 3, 6, 1, 
            4, 0, 2, 5, 0}, {3, 6, 6, 2, 4, 0, 2, 5, 1, 3, 6, 1}, {4, 0, 1, 
            4, 6, 2, 4, 0, 3, 5, 1, 3}, {6, 2, 2, 5, 0, 3, 5, 1, 4, 6, 2, 
            4}, {0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5}, {1, 4, 4, 0, 2, 5, 0, 
            3, 6, 1, 4, 6}};

dia = 
        Table[If[
            0 > (i + 7*(j - 2)) || (i + 7*(j - 2)) > 
                37, "-", i + 7*(j - 2)], {i, 7}, {j, 7}];
dia[[1, 1]] = Domingo; dia[[2, 1]] = Lunes; 
    dia[[3, 1]] = Martes;
dia[[4, 1]] = Miercoles; dia[[5, 1]] = Jueves; 
    dia[[6, 1]] = Viernes;
dia[[7, 1]] = Sabado;
TableForm[dia]

¿Qué día de la semana fue el 7 de junio de 1956? Primero buscamos en la tabla “años” el año 1956, y vemos que pertenece a la fila 4. Con este número y el número que corresponde al mes de junio, en este caso 6, calculamos el número que se encuentra en la fila 4, columna 6 de la tabla meses:

meses[[4, 6]]

Ahora basta con añadir a este número el guarismo del día del mes, en este caso el resultado es 12 y la tabla “dia” muestra que fue jueves porque es el día que corresponde al número 12.

Ejercicio 3.10.

Matriz = {{0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 1, 1, 0, 0, 0}, {0, 1, 
            0, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 
            0, 0}, {0, 1, 0, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 1, 0, 0}, {0, 0, 
            0, 0, 0, 0, 0, 0}};

n = Dimensions[Matriz];
e = 1;
lista = {};
Do[Do[AppendTo[
                lista, {GrayLevel[(e - Matriz[[j, i]])/e], 
                  Rectangle[{i, -j}, {i + 1, -j + 1}]}];, {j, 1, 
              n[[2]]}];, {i, 1, n[[1]]}];
Show[Graphics[lista]]
MatrixForm[Matriz]

n = Dimensions[Matriz];
e = 5;
lista = {};
Do[Do[AppendTo[
                lista, {GrayLevel[(e - Matriz[[j, i]])/e], 
                  Rectangle[{i, -j}, {i + 1, -j + 1}]}];, {j, 1, 
              n[[2]]}];, {i, 1, n[[1]]}];
Show[Graphics[lista]]
MatrixForm[Matriz]