You are on page 1of 3

CONJUNTOS EN MXIMA

Mxima maneja conjuntos finitos y definidos por enumeracin. Su construccin


es similar a las listas, pero encerrando sus elementos entre llaves:
A:{0,1,2,1,6,4,3,1,5,6};
B:{8,5,9,7,6};
Podemos saber si un elemento pertenece o no a un conjunto con la funcin
"elementp()":
elementp(3,A); elementp(3,B);
Podemos saber si dos conjuntos son iguales con la funcin "setequalp()".
Podemos saber si un conjunto est contenido en otro con la funcin
"subsetp()":
setequalp(A,B); setequalp({6,5,8,9,7}, B);
subsetp(A,B); subsetp({9,7},B);
Podemos saber si un conjunto es el vaco con la funcin "emptyp()".
Podemos saber si dos conjuntos son disjuntos con "disjointp()":
emptyp(A); emptyp({});
disjointp(A,B); disjointp({1},B);
El vaco en Mxima se representa por {}.
La funcion "cardinality()" propociona el cardinal de un conjunto:
cardinality(A); cardinality(B);

OPERACIONES CON CONJUNTOS


La unin e interseccin de dos o ms conjuntos es posible en Mxima:
union(A,B,{x,y}); intersection(A,B);
Tambin est disponible la diferencia de dos conjuntos:
setdifference(A,B);
Con la funcion "adjoin()" se agrega un elemento a un conjunto. Con "disjoin()"
se suprime un elemento:
adjoin(x,A); disjoin(5,B);
El producto cartesiano de dos o mas conjuntos se construye con
"cartesian_product()":
cartesian_product({0,1,2},{a,b,c},{x,y});

GENERACIN DE CONJUNTOS
La primera, "powerset()", que nos proporciona el conjunto de las partes de otro
conjunto:
powerset(B);
Una funcin muy til manejando nmeros es "divisors()", que nos da el
conjunto de divisores de un entero:
D:divisors(3248);
Otra funcin es "subset()", que nos proporciona el subconjunto formado por
los elementos de un conjunto para los que cierta funcin booleana no es false.
Su sintaxis: subset(A,f), siendo A un conjunto y f una funcin booleana (una
funcin que devuelve "true" o "false"). Por ejemplo, obtengamos el subconjunto
formado por los divisores primos de 3248:
subset(D,primep);
Seis(n):=if remainder(n,10)=6 then true else false;
subset(D,Seis);
La funcin "setify()" construye un conjunto con los miembros de una lista. Los
elementos duplicados de la lista son borrados y ordenados conforme al orden
interno de Mxima.
S:setify ([3, 2, 3, c, b, a, 0, x, c]);
La funcin "listify()" obtiene una lista con los elementos de un conjunto:
listify(S);
Una funcin muy potente es "makeset()". Tiente la siguiente sintaxis:
makeset(expr, lista_var, A) siendo "expr" una expresin, "lista_var" una lista
de variables que aparecen en expr y "A" un conjunto cuyos elementos son
listas con la misma longitud que lista_var. La expresin se evala sustituyendo
las variables de lista_var con los elementos de las listas de A. Cada evaluacin
es un elemento del conjunto devuelto por makeset.
Por ejemplo, obtengamos el conjunto formado por todas las fracciones cuyo
numerador o denominador es un divisor de 3248 (esto es, un elemento del
anterior conjunto D):
F:makeset(num/den, [num,den], cartesian_product(D,D));
Mxima permite construir conjuntos cocientes con la funcin "equiv_classes":
equiv_classes(A,Rel) siendo A un conjunto y Rel una funcin booleana que
acta sobre el producto cartesiano de A. Dos elementos a,b de A estn
relacionados si y solo si Rel(a,b)=true. Por ejemplo, en el anterior conjunto de
fracciones F, consideremos la relacin de equivalencia xRy si y solo si x-y es
entero. Calculemos el conjunto cociente:

Rel(x,y) := if denom(x-y)=1 then true else false$


equiv_classes(F,Rel);
Nota: La funcin denom() proporciona el denominador de una fraccin.
APLICACIONES
Para tratar con aplicaciones entre conjunto nos remitimos al punto "3.
Funciones" del tema "Nmeros y Funciones". Solo aadimos que mediante
map() podemos calcular imgenes de conjuntos:
f(x):= x^2 - x;
A;
map(f, A);
g(x):= remainder(x,10);
D;
map(g,D);

You might also like