Álgebra y matemática discreta sesión de prácticas 1
TRANSCRIPT
Algebra y Matematica Discreta Sesion de Practicas 1
Algebra y Matematica DiscretaSesion de Practicas 1
(c) 2013 Leandro Marın, Francisco J. Vera, Gema M. Dıaz
16 Sep 2013 - 22 Sep 2013
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Estructuras Algebraicas
La Estructura como Variable
Tenemos una gran cantidad de estructuras algebraicasdefinidas dentro de sage que podemos utilizar.
Una de las mas sencillas es el conjunto de los numeros enterosZ. En sage este conjunto se denota por ZZ.
Si escribimos
ZZ
el programa nos respondera Integer Ring, es decir anillo delos numeros enteros.
ZZ es una variable mas del sistema.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Estructuras Algebraicas
Operaciones con Enteros
Vamos a hacer algunas operaciones basicas en los numerosenteros. La suma, resta y multiplicacion se realizan con lossımbolos habituales +, - y *.
Si escribimos
a = 6*7*8*9
print a
obtendremos 3024.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Estructuras Algebraicas
Division
La division requiere un poco mas de explicacion, porquepodemos hacer la siguiente operacion:
print a/16
y obtenemos 189 porque la division es exacta, pero si hacemos
print a/10
obtenemos 15125
. En este caso la division no es exacta y nosha dejado la operacion en forma fraccionaria.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Estructuras Algebraicas
Cociente y Resto
El realidad este operador en los numeros enteros no es comoen otros lenguajes, el cociente de la division.
Para obtener el cociente de la division tenemos que poner
print a // 10
con lo que obtenemos 302.
El resto de la division se calcula utilizando el sımbolo %.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Estructuras Algebraicas
El conjunto de los numeros racionales se denota QQ y el de losnumeros reales RR.
El conjunto de los numeros reales RR utiliza representacionesdecimales finitas del numero.
Cuando tenemos un elemento en un conjunto y queremosllevarlo a otro, lo que hacemos es utilizar el nombre de laestructura, ası por ejemplo
a = 1/3
b = RR(a)
print a
print b
nos dara los resultados 13y 0.333333333333333.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Estructuras Algebraicas
En realidad si escribimos
RR
nos dice Real Field with 53 bits of precision, esdecir, cuerpo de los numeros reales con 53 bits de precision.
Es una precision suficientemente buena para la mayorıa denuestras necesidades.
Si en alguna ocasion necesitamos ampliarla (o reducirla) esposible.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Estructuras Algebraicas
Si intentamos forzar a que un elemento este dentro de unaestructura en la que no puede estar, obtenemos un error, porejemplo, si ponemos ZZ(2/3) lo que obtenemos es un error
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/leandro/docencia/AMD12/quickref/<ipython console> in <module>()
/usr/local/sage-5.0.beta6/local/lib/python2.7/site-packages/sage/structure/parent.so
/in sage.structure.parent.Parent.__call__ (sage/structure/parent.c:7886)()
/usr/local/sage-5.0.beta6/local/lib/python2.7/site-packages/sage/rings/rational.so
/in sage.rings.rational.Q_to_Z._call_ (sage/rings/rational.c:23746)()
TypeError: no conversion of this rational to integer
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Listas
Listas
Los objetos en sage se pueden agrupar en listas.
Una lista no es mas que una estructura en la que tenemosunos objetos en posiciones concretas. Por ejemplo
milista = [1,2,3]
asigna a la variable milista la lista formada por los numeros1, 2 y 3.
Los elementos estan numerados desde 0, ası milista[0 ]tendra el valor 1, milista[1 ] tendra el valor 2 ymilista[2 ] tendra el valor 3.
Los valores milista[n ] se pueden usar como variablesordinarias y hacer cualquier operacion sobre ellas.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Listas
Recorriendo Listas
La gran ventaja de tener los numeros en una lista, es quepodemos recorrer los elementos de la lista.
Si ponemos
minuevalista = [1,4,7,-1]
for x in minuevalista:
print x*x
Nos escribira los elementos 1,16,49 y 1.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Listas
for,in,:,etc.
Hay varios puntos importantes en el codigo:
minuevalista = [1,4,7,-1]
for x in minuevalista:
print x*x
Utilizamos for para recorrer la lista y decimos comoqueremos llamar a los elementos: los llamaremos x.
Por tanto x ira recorriendo cada uno de los valores de la lista.
Despues ponemos : y la siguiente lınea tiene que estardesplazada a la derecha un numero de espacios. Esedesplazamiento hace a sage reconocer que esas intruccionesestan en el bucle.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Listas
El comando range
Las listas de numeros [ 0,1,2,3,...,n-1] se puedengenerar con el comando range(n)
Si escribimos range(10) nos devolvera la lista[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Podemos usarlo directamente
for j in range(10):
print j
Nos escribira todos los numeros desde el 0 al 9.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Listas
El comando range (II)
Si escribimos range(3,6) nos devolvera [ 3,4,5].
Notemos que el numero 6 no se alcanza, en range(a,b) elprimer valor de la lista sera a y el ultimo b − 1.
Tambien podemos hacer listas que en cada paso sumen unacantidad distinta de 1, por ejemplo
range(7,12 ,2)
Nos escribira [ 7,9,11].
Tambien podemos is hacia abajo, por ejemplorange(10,0,-1)
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Listas
Comandos para Listas
Hay muchos comandos que podemos usar sobre listas. Vamosa ver algunos:
Si milista es una variable que contiene una lista, entoncessu longitud es len(milista)
Si queremos saber el numero de veces que un valor aparece enuna lista, milista.count(x) nos dice el numero de vecesque x aparece en milista (que tambien puede ser 0)
El comando sum(milista) nos dice cuanto suman todos loselementos de la lista y prod(milista) su producto.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Listas
Una Programacion Elegante
Podemos crear listas como sigue:
c = [x^2 for x in range(5)]
Esto nos proporciona la lista [ 0, 1, 4, 9, 16] y la asignaa la variable c.
Podemos incluso anadir condiciones:
c = [sqrt(x^2-7) for x in range(5) if x^2-7 > 0]
asignara a c la lista [ sqrt(2), 3].
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Los Numeros Enteros
Numeros en una Base
Dado un numero entero, podemos representarlo en diferentesbases. Habitualmente lo representamos en base 10, pero consage podemos transformarlo en cualquier otra base.
Si ponemos
a = ZZ(100)
bin(a)
hex(a)
Obtenemos respectivamente las representaciones binarias yhexadecimal del numero, 0b1100100 y 64.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Los Numeros Enteros
Listas de Cifras
Si queremos la lista de todas las cifras, lo podemos hacer con
lascifras = a.digits(2)
Las cifras van desde la menos significativa hasta la massignificativa.
El numero de cifras podemos saberlo con len(lascifras) odirectamente a.ndigits(2).
Lo que se ha hecho para la base 2, se puede hacer paracualquier base.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Los Numeros Enteros
Divisibilidad
Una de las propiedades mas interesantes de los numerosenteros es la divisibilidad.
Para ver si dos numeros son divisibles entre sı, podemoscalcular el resto y ver que es cero o utilizar un comandoespecial que nos lo dice:
a = ZZ(10)
b = ZZ(5)
b.divides(a)
nos devolvera True.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Los Numeros Enteros
Divisores de un Numero
Tambien podemos calcular la lista de divisores de un numero.Nos dara los divisores positivos.
El comando es
150.divisors ()
Nos devolvera la lista
[1, 2, 3, 5, 6, 10 , 15 , 25 , 30 , 50 , 75 , 150]
Esta lista se puede asignar a una variable, recorrerla, ocualquier otra operacion que queramos hacerle.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Los Numeros Enteros
Numeros Primos
Un numero es primo si no es 1 y sus unicos divisores son elmismo y la unidad.
Podemos preguntarnos si un numero es primo de diferentesformas, por ejemplo
1.is_prime ()
2.is_prime ()
nos devolveran respectivamente False y True.
Esto es lo mismo que is_prime(1) y is_prime(2).
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Los Numeros Enteros
Factorizacion
Podemos descomponer un numero en producto de sus factoresprimos, lo que se conce como factorizacion.
Si ponemos por ejemplo
factor(1234567890)
Nos devolvera 2 · 32 · 5 · 3607 · 3803.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Polinomios
El Anillo de Polinomios
Se pueden definir tambien estructuras mas complejas, porejemplo los polinomios.
Podemos asignar a una variable toda una estructuraalgebraica, por ejemplo:
var(’x’)
R = PolynomialRing(QQ ,’x’)
S = PolynomialRing(RR ,’x’)
nos asignara a R el conjunto de los polinomios con coeficientesen los numeros racionales y variable x . En el caso de S seranlos polinomios con coeficientes reales.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Polinomios
Polinomios
Con las anteriores definiciones, podemos poner
p = R(x^2-2)
q = S(x^2-2)
Podemos preguntar a sage si p y q son iguales,
p == q
Nos devolvera True, es decir, son el mismo polinomio, pero sucomportamiento es diferente.
Algebra y Matematica Discreta Sesion de Practicas 1
Aritmetica
Polinomios
Polinomios (II)
Si escribimos
factor(p)
factor(q)
Obtenemos respectivamente
(x2 − 2)
(x − 1.41421356237310) · (x + 1.41421356237310)
Eso es porque como polinomio con coeficientes en Q elpolinomio es irreducible, pero como polinomio con coeficientesreales no lo es.