Está en la página 1de 8

Introduccin al programa

Mathematica .

Introduccin
En esta prctica vamos a estudiar las listas, su creacin y manipulacin : tienen gran importancia pues son
las principales instrucciones de Mathematica para el uso de vectores (que para Mathematica son listas de
coordenadas) y de las matrices (que son listas de sus filas, es decir, listas de listas).

Operaciones con listas en Mathematica


Las listas de objetos de cualquier tipo en Mathematica se escriben siempre entre llaves, por ejemplo los
componentes de un vector:

l1 = 81, 2, 3, 4<;
l2 = 84, 5, 6, 7<;
l3 = 82, a, 8b, 3<, 2 3<;

Las operaciones que realicemos con estas listas se producen trmino a trmino. Por ejemplo, podemos
sumar dos listas:

l1 + l2
85, 7, 9, 11<

O realizar todo tipo de operaciones, siempre trmino a trmino:

7 + l1

l1^2

l1^l2

2l1

88, 9, 10, 11<


81, 4, 9, 16<

81, 32, 729, 16 384<


82, 4, 8, 16<

Evidentemente, todo comando o funcin con el atributo Listable puede actuar sobre listas. De este modo,
podemos sumar dos listas de la misma longitud:
Departamento de Matem

Pr

Introducci

Evidentemente, todo comando o funcin con el atributo Listable puede actuar sobre listas. De este modo,
podemos sumar dos listas de la misma longitud:

l1 + l3
:3, 2 + a, 83 + b, 6<,

pero no podemos hacer:

l1 + 81, 2<

14
3

>

Thread::tdlen : Objects of unequal length in 81, 2, 3, 4< + 81, 2< cannot be combined.

81, 2< + 81, 2, 3, 4<

Para averiguar la longitud de una lista, utilizamos el comando Length[lista]:

Length@l1D
4
De una forma un poco ms general, podemos obtener sus dimensiones con el comando Dimensions[lista],
que es el encargado de proporcionar las dimensiones de una matriz (una lista de listas):

Dimensions@l1D
84<

Dimensions@881, 2, 3<, 82, -1, 0<<D


82, 3<

Creando listas en Mathematica


Mathematica proporciona diversos comandos para la construccin de listas. Por ejemplo el comando
Range[n] proporciona una lista de nmeros consecutivos hasta el valor n (si no se indica nada, comenzando en 1 y espaciados en una unidad):

Range@6D
81, 2, 3, 4, 5, 6<

Tambin se puede indicar el nmero de comienzo de la lista:

Range@5, 20D
85, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20<

Range@-1, 5D

8-1, 0, 1, 2, 3, 4, 5<

Y es posible indicar que el paso no sea de una unidad entre los elementos de la lista:

10

Departamento de Matem

Introducci

Pr

Range@3, 12, 4D
83, 7, 11<

El comando Table es mucho ms verstil que Range y requiere un iterador. Genera una lista en funcin de
la variacin del iterador asociado:

Table@i, 85<D

8i, i, i, i, i<

TableA9j, j2 =, 8j, 1, 6<E

881, 1<, 82, 4<, 83, 9<, 84, 16<, 85, 25<, 86, 36<<

Table@k, 8k, 0, 100, 10<D

80, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100<

Tambin se puede generar una tabla para valores concretos del iterador:

Table@l + 1, 8l, 80, 10, 100, 1000<<D


81, 11, 101, 1001<

Podemos generar tablas multidimensionales indicando varios iteradores, con la misma sintaxis anterior:

Table@8i, j<, 85<D

88i, j<, 8i, j<, 8i, j<, 8i, j<, 8i, j<<

TableA9i, j2 =, 8i, 1, 2<, 8j, 1, 3<E

8881, 1<, 81, 4<, 81, 9<<, 882, 1<, 82, 4<, 82, 9<<<

Table@8i, k<, 8i, 3, 12, 4<, 8k, -1, 8, 3<D

8883, -1<, 83, 2<, 83, 5<, 83, 8<<,


887, -1<, 87, 2<, 87, 5<, 87, 8<<, 8811, -1<, 811, 2<, 811, 5<, 811, 8<<<

TableA9Sin@iD, j3 =, 8i, 8-4, 3, 1<<, 8j, 8-3, 5, 6<<E

888-Sin@4D, -27<, 8-Sin@4D, 125<, 8-Sin@4D, 216<<,


88Sin@3D, -27<, 8Sin@3D, 125<, 8Sin@3D, 216<<,
88Sin@1D, -27<, 8Sin@1D, 125<, 8Sin@1D, 216<<<

Los iteradores se pueden concatenar y un iterador puede depender de otro (evidentemente el segundo del
primero), al escribir la instruccin:

Table@8i, j<, 8i, 1, 3<, 8j, i, 2 i<D

8881, 1<, 81, 2<<, 882, 2<, 82, 3<, 82, 4<<, 883, 3<, 83, 4<, 83, 5<, 83, 6<<<

Departamento de Matem

11

Pr

Introducci

Table@8i, j<, 8i, 81, 3<<, 8j, 8-i, i, 2 i<<D

8881, -1<, 81, 1<, 81, 2<<, 883, -3<, 83, 3<, 83, 6<<<

En ocasiones, queremos que la tabla que hemos generado se muestre con forma de tabla; en ese caso
utilizamos el comando TableForm[tabla]

TableFormATableA9j, j2 =, 8j, 1, 6<EE


1
2
3
4
5
6

1
4
9
16
25
36

Si la tabla que queremos mostrar no es cuadrada, la escribe justificada a la izquierda:

TableForm@Table@8i, j<, 8i, 1, 3<, 8j, i, 2 i<DD


1
1
2
2
3
3

1
2
2
3
3
4

2
4
3
5

3
6

Manipulando listas en Mathematica


Existen varias funciones que sirven para recolocar los elementos de una lista. Sort[lista] coloca una lista
en su orden cannico: los nmeros (en primer lugar) de menor a mayor y las letras por orden alfabtico.
Reverse[lista] invierte una lista, mientras que Permutations[lista] proporciona todas las permutaciones
de una lista.

Sort@8c, h, a, g, 3, 5, -3, 4, 1<D


8-3, 1, 3, 4, 5, a, c, g, h<

Reverse@%D

8h, g, c, a, 5, 4, 3, 1, -3<

Permutations@8c, h, 2<D

88c, h, 2<, 8c, 2, h<, 8h, c, 2<, 8h, 2, c<, 82, c, h<, 82, h, c<<

Las diferentes opciones de Drop permiten eliminar parcialmente los elementos de una lista: ciertos
elementos del principio de la lista, ciertos elementos del final y elementos intermedios de la lista. Los
siguientes ejemplos muestran algunas de las posibilidades de este comando:

12

Departamento de Matem

Introducci

Pr

Drop@81, 4, 6, 3, 2, -5, 7<, 3D


83, 2, -5, 7<

elimina los elementos indicados a partir del primer elemento de la lista (los tres primeros).

Drop@81, 4, 6, 3, 2, -5, 7<, -3D


81, 4, 6, 3<

elimina los elementos indicados a partir del ltimo elemento de la lista (los tres ltimos).

Drop@81, 4, 6, 3, 2, -5, 7<, 83<D


81, 4, 3, 2, -5, 7<

elimina el elemento que ocupa el lugar indicado (el tercer lugar).


Si se quiere eliminar un intervalo de elementos de la lista se ejecuta:

Drop@81, 4, 6, 3, 2, -5, 7<, 83, 6<D


81, 4, 7<

que elimina del tercer al sexto elemento, ambos inclusive.


La instruccin Take hace lo contrario que la instruccin Drop: nos indica los elementos que permanecen
en lugar de los que elimina. La sintaxis de la instruccin es muy similar:

Take@81, 4, 6, 3, 2, -5, 7<, 3D


81, 4, 6<

Take@81, 4, 6, 3, 2, -5, 7<, -3D


82, -5, 7<

Take@81, 4, 6, 3, 2, -5, 7<, 83<D


86<

Take@81, 4, 6, 3, 2, -5, 7<, 83, 6<D


86, 3, 2, -5<

Las instrucciones Append y AppendTo aaden elementos al final de una lista. La instruccin Append
aade el elemento a la lista sin alterar sta, mientras que AppendTo aade el elemento de forma definitiva. Las instrucciones Prepend y PrependTo hacen lo mismo al principio de la lista.

lista = 83, 5, 6, 7, 8<


83, 5, 6, 7, 8<

Append@lista, siD

83, 5, 6, 7, 8, si<
Departamento de Matem

13

Pr

Introducci

lista
83, 5, 6, 7, 8<

AppendTo@lista, siD

lista

83, 5, 6, 7, 8, si<
83, 5, 6, 7, 8, si<

Las listas se pueden unir (con Join), unir eliminando los elementos repetidos y ordenando la lista (con
Union), as como dividirla en trozos de la longitud deseada (con Partition).

Join@lista, listaD
83, 5, 6, 7, 8, si, 3, 5, 6, 7, 8, si<

Union@lista, listaD

83, 5, 6, 7, 8, si<

Union@lista, 81, 3, 7, a<D

81, 3, 5, 6, 7, 8, a, si<

Partition@lista, 3D

883, 5, 6<, 87, 8, si<<

Buscando elementos en listas


El manejo de listas es muy importante en Mathematica debido a que, entre otras cosas, los mismos
planteamientos son vlidos para cualquier otra expresin. Por ejemplo, vamos a utilizar la misma lgica en
el tratamiento de las matrices.
Se pueden manipular los elementos de una lista individualmente mediante la utilizacin de variables
indexadas en funcin de la profundidad del nivel en el que est el elemento a seleccionar.

Clear@listaD;
lista = 81, 2, 3, 8a, 8w, r<, b, c<, 84, 5<<
81, 2, 3, 8a, 8w, r<, b, c<, 84, 5<<

lista@@4DD

8a, 8w, r<, b, c<

lista@@4, 2DD
8w, r<
14

Departamento de Matem

Introducci

Pr

lista@@4, 2, 1DD
w
lista@@5, 2DD
5
lista@@84, 2, 5<DD
88a, 8w, r<, b, c<, 2, 84, 5<<

lista@@2 ;; 4DD

82, 3, 8a, 8w, r<, b, c<<

lista@@4, 2 ;; 3DD
88w, r<, b<

Algunos elementos especiales, como el primer elemento o el ltimo elemento de la lista se pueden obtener
con las expresiones First[lista] y Last[lista]:

First@listaD
1
Podemos rastrear la posicin de un elemento dentro de una lista con la siguiente instruccin:

listado = 8a, b, c, a, f, h, v, b, a<;


Position@listado, aD
881<, 84<, 89<<

Tambin podemos contar el nmero de veces que aparece:

Count@listado, aD
3
O simplemente preguntar si ese elemento pertenece al listado mediante una funcin lgica

MemberQ@listado, aD
True
MemberQ@listado, sD
False
Si queremos eliminar los valores repetidos de una lista, podemos utilizar:

DeleteDuplicates@listadoD
8a, b, c, f, h, v<

Si tenemos dos listas y queremos saber qu elementos tienen en comn, podemos utilizar:

Departamento de Matem

15

Pr

Introducci

listado2 = 8h, j, t, a, c, b, p<;


Intersection@listado, listado2D
8a, b, c, h<

Si los valores del listado se pueden ordenar, nos indica cual es el menor y el mayor:

listanumeros = 825, 4, 3, -1, 7, -3, 10<;


Min@listanumerosD
-3
Max@listanumerosD
25

16

Departamento de Matem

También podría gustarte