

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: algebra, Profesor: alvaro martinez sevilla, Carrera: Ingeniería Informática, Universidad: UGR
Tipo: Apuntes
1 / 3
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!


Vamos a ver aquí cómo Maxima trae implementados algunos conceptos básicos sobre conjuntos. Lo primero es ver cómo introducir conjuntos. Tenemos, en principio, dos opciones:
Enumerando los elementos, separados por "," y encerrándolos entre llaves. (%ixx) A:{1,2,3,4,5,6,7,8,9}; (%oxx) {1,2,3,4,5,6,7,8,9}
Mediante la sentencia set (%ixx) B:set(2,4,6,8,10,12,14,16); (%oxx) {2,4,6,8,10,12,14,16}
Ahora tenemos comandos para calcular uniones, intersecciones, etc. (%ixx) union(A,B); (%oxx) {1,2,3,4,5,6,7,8,9,10,12,14,16} (%ixx) intersection(A,B); (%oxx) {2,4,6,8} (%ixx) setdifference(A,B); (%oxx) {1,3,5,7,9} También tenemos la posibilidad de preguntar algunas cuestiones, tales como si un elemento pertenece o no a un conjunto, si un conjunto es o no subconjunto de otro, etc. (%ixx) elementp(5,A); (%oxx) true (%ixx) elementp(5,B); (%oxx) false (%ixx) subsetp(A,B); (%oxx) false (%ixx) subsetp({2,6,10},B); (%oxx) true También se puede preguntar a Maxima con el comando is. Como argumento, debe ir una expresión lógica. Por ejemplo: (%ixx) is(A=B); (%oxx) false (%ixx) is(2<3); (%oxx) true Otras funciones elementales sobre conjuntos: (%ixx) cardinality(B); (%oxx) 8 (%ixx) powerset(intersection(A,B));
(%oxx) {{},{2},{2,4},{2,4,6},{2,4,6,8},{2,4,8},{2,6},{2,6,8},{2,8},{4},{4, },{4,6,8},{4,8},{6},{6,8},{8}} Vemos cómo el conjunto vacío lo representa como {} Vamos a calcular, por ejemplo, el cardinal de P(A ∪ B). (%ixx) cardinality(powerset(union(A,B))); (%oxx) 8192 que es 213. A partir de lo visto, definimos una función que nos calcule la diferencia simétrica de dos conjuntos. Sabemos que dados dos conjuntos A y B se define A∆B = (A \ B) ∪ (B \ A) (es decir, A∆B es el conjunto formado por los elementos que están exactamente en uno de los dos conjuntos, A o B). Entonces: (%ixx) dif_sim(X,Y):=union(setdifference(X,Y),setdifference(Y,X))$ (%ixx) dif_sim(A,B); (%oxx) {1,3,5,7,9,10,12,14,16} También puede definirse la diferencia simétrica como A∆B = (A ∪ B) \ (A ∩ B). Como ejercicio, define una función que calcule la anterior expresión, y comprueba con algunos ejemplos que las dos definiciones son equivalentes. Si tenemos un conjunto X, podemos considerar el subconjunto formado por los elementos de X que satisfacen una determinada propiedad. Esto lo hacemos con la sentencia subset, que tiene dos argumentos: por una parte el conjunto de partida, y por otra la condición que deben cumplir los elementos para pertenecer al subconjunto (%ixx) f(x):=is(x>6)$ (%ixx) C:subset(A,f); (%oxx) {7,8,9} Para especificar la condición también es posible utilizar algunas funciones que nos trae Maxima, como por ejemplo primep, que nos dice si un número es o no primo, oddp o evenp, que nos dicen si un número es par o impar, etc. (%ixx) Pr:subset(A,primep); (%oxx) {2,3,5,7} Otra forma de obtener conjuntos es a partir de listas. La función setify transforma una lista en un conjunto, mientras que la función listify transforma un conjunto en una lista. (%ixx) setify([2,3,5,6,8,9,11,12]); (%oxx) {2,3,5,6,8,9,11,12} (%ixx) listify(A); (%oxx) [1,2,3,4,5,6,7,8,9] Como sabemos, en un conjunto no puede haber elementos repetidos, mientras que en una lista sí. Por tanto, si tenemos una lista con elementos repetidos, Maxima los ignora al pasarla a conjunto. (%ixx) x:[1,2,2,3,3,3,4,4,4,4]$ (%ixx) setify(x); (%oxx) {1,2,3,4} También sabemos que en una lista, el orden de los elementos es significativo, no así en conjuntos: (%ixx) is([1,2,3]=[3,2,1]); (%oxx) false (%ixx) is({1,2,3}={3,2,1}); (%oxx) true Como ejemplo, vamos a construir el conjunto de los números primos menores que 100. Para esto primero construimos una lista con los 100 primeros números, a continuación la pasamos a conjunto y por último la filtramos, quedándonos únicamente con los elementos que sean primos. (%ixx) x:makelist(i,i,1,100)$ D:setify(x)$ P:subset(D,primep); (%oxx) {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89, } Con Maxima podemos construir el producto cartesiano de dos o más conjuntos. (%ixx) A1:{a,b,c}$ A2:{3,5}$ cartesian_product(A1,A2); (%oxx) {[a,3],[a,5],[b,3],[b,5],[c,3],[c,5]} También podemos construir conjuntos con la instrucción makeset. Esta función tiene tres argumentos. Una expresión, una lista de variables, y un conjunto de listas. Por ejemplo: