noticias y última hora

La regla de los signos de Descartes

En los últimos días se ha nombrado en los comentarios del post Una posible demostración maravillosa del UTF un resultado conocido como regla de los signos de Descartes, relacionado con el número de soluciones positivas de una ecuación polinómica. Este artículo va a servir para presentar esta regla, dar alguna pincelada de su historia y también para demostrarla.
(Leer el resto del post)

El algoritmo de Euclides

Introducción

El lunes pasado, en el post donde se desarrollaba un método para resolver ecuaciones diofánticas lineales, comentábamos la existencia de un método para el cálculo del máximo común divisor que no desarrollamos. Dicho método se atribuye a Euclides y este post va a servir para presentarlo.

El algoritmo de Euclides

El problema inicial es el siguiente:

Encontrar el máximo común divisor entre dos números enteros positivos a y b.

Todos conocemos el método que se nos enseña en el colegio para ello:

  • Descomponemos en factores primos los dos números y tomamos los factores comunes a ambos con el menor exponente con el que aparezcan.

Aunque es un método bastante útil y sencillo para conseguirlo que queremos tiene un evidente problema: si los números son muy grandes, o si sus factores primos lo son, la cosa se complica ya que el cálculo de la descomposición se torna bastante tedioso.

Por ello es interesante tener a mano otro método para casos en los que el procedimiento inicial se complique. El llamado algoritmo de Euclides nos servirá.

El algoritmo de Euclides nos dice lo siguiente:

Para calcular el máximo común divisor entre dos números enteros positivos a y b dividimos el más grande, digamos a, entre el más pequeño, digamos b. Esta división nos proporcionará un cociente, c_1, y un resto, r_1. Si r_1=0, entonces mcd(a,b)=b. Si no es cero dividimos el divisor, c_1, entre el resto, r_1, obteniendo otro cociente, c_2, y otro resto, r_2. Si r_2=0, entonces mcd(a,b)=r_1. Si no es cero volvemos a dividir divisor entre resto. Y así sucesivamente.

Esto es, el máximo común divisor entre a y b es el último resto distinto de cero que obtengamos con el procedimiento anterior.

Si analizamos el algoritmo de Euclides se ve claramente que necesitamos demostrar que el máximo común divisor entre a y b es igual al máximo común divisor entre b y r_1. Así esa igualdad se mantendrá durante todo el proceso y llegaremos a que el último resto distinto de cero es el máximo común divisor de los dos enteros positivos iniciales. Vamos a demostrar este hecho para después ilustrar el algoritmo con un ejemplo:

Teorema:

  • El máximo común divisor de dos números enteros positivos a y b, con a > b > 0, coincide con el máximo común divisor de b y r, siendo r el resto que se obtiene al dividir a entre b.

Demostración:

Sean d=mcd(a,b) y t=mcd(b,r). Vamos a demostrar que d=t.

Por definición de máximo común divisor, se tiene que d es un divisor tanto de a como de b. Por tanto a=a_1d y b=b_1d.

Por otro lado, por el algoritmo de la división se tiene que

a=bq+r, con 0 \le r < b (1)

de donde llegamos a

r=a-bq=a_1d-b_1dq=(a_1-b_1q)d

Por tanto d es un divisor de r. Como ya teníamos que también es un divisor de b entonces debe dividir a su máximo común divisor, esto es, d es un divisor de t.

Por otro lado, t es un divisor tanto de b como de r. Por ello se tiene que b=pt y r=st. Sustituyendo estas dos igualdades en (1) obtenemos lo siguiente:

a=ptq+st=(pq+s)t

Por tanto t es un divisor de a. Como también lo era de b debe ser un divisor de su máximo común divisor, es decir, t es un divisor de d.

Como d es un divisor de t y t es un divisor de d no queda otra opción más que t=d. Por tanto el algoritmo de Euclides funciona. \Box

Ejemplos de aplicación del algoritmo

En esta sección del artículo vamos a ver un par de ejemplos de aplicación del algoritmo de Euclides. Vamos con ellos:

Cálculo de mcd(721,448)

Como hemos explicado antes dividimos el número mayor entre el menor; si el resto no es cero dividimos el divisor entre el resto; y así sucesivamente hasta que llegamos a un punto en el que el resto es cero. Los resultado de las divisiones (expresados como dividendo=divisor · cociente + resto) son:

  • 721=448 \cdot 1+273
  • 448=273 \cdot 1+175
  • 273=175 \cdot 1+98
  • 175=98 \cdot 1+77
  • 98=77 \cdot 1+21
  • 77=21 \cdot 3+14
  • 21=14 \cdot 1+7 *
  • 14=7 \cdot 2+0

Como marca el *, se tiene que mcd(721,448)=7, el último divisor que no es nulo.

Cálculo de mcd(25134,19185)

Vamos con el segundo ejemplo, con números más grandes en este caso. Expresamos los resultados parciales de la misma forma que en el ejemplo anterior:

  • 25134=19185 \cdot 1+5949
  • 19185=5949 \cdot 3+1338
  • 5949=1338 \cdot 4+597
  • 1338=597 \cdot 2+144
  • 597=144 \cdot 4+21
  • 144=21 \cdot 6+18
  • 21=18 \cdot 1+3 *
  • 18=3 \cdot 6+0

Vemos que aunque los números son bastante mayores que los anteriores el número de operaciones necesarias para el cálculo es el mismo. Concluyendo, tenemos que, como marca el *, mcd(25134,19185)=3.

Cómo resolver ecuaciones diofánticas

Este artículo ha sido promovido en Menéame. Si te ha gustado y quieres votarlo entra aquí y menéalo.

Motivación

Supongamos que nos encontramos el siguiente problema:

Un hombre va a una tienda de ropa y compra 12 trajes, unos negros y otros grises, por 1200 €. Si los trajes negros valen 30 € más que los grises y ha comprado el mínimo posible de estos últimos, ¿cuántos trajes ha comprado de cada color?

Vamos a plantearlo:

\{trajes \; negros \}=x
\{trajes \;grises \}=12-x \{precio \; de \; un \; traje \; gris \}=y
\{precio \; de \; un \; traje \; negro \}=y+30

La ecuación queda:

x(y+30)+(12-x)y=1200

Haciendo cuentas nos queda lo siguiente:

30x+12y=1200

Si estabais pensando que nos iba a quedar un sistema de ecuaciones sencillo de resolver estáis equivocados. Nos ha quedado una única ecuación con dos incógnitas. ¿Nos faltan datos? No. Podemos resolverla. Bienvenidos al maravilloso mundo de las ecuaciones diofánticas.
(Leer el resto del post)

Calcular la fecha del Domingo de Resurrección

Gracias a Tito Eliatron por la información que me envió sobre este tema hace ya un tiempo.


Introducción

Recién terminada la Semana Santa planteo la siguiente pregunta: ¿sabéis qué criterio se sigue para asignar la fecha del Domingo de Resurrección cada año?

Yo me he hecho esa pregunta en más de una ocasión viendo que la variedad de fechas para ese día es relativamente grande. ¿Hay algún criterio para asignar fecha a ese día? En el caso de que lo haya (que por otra parte era lo más lógico), ¿en qué se basa ese criterio? ¿Su base es meramente religiosa o hay algo más?

Pues parece que hay algo más. Y, cómo no, lo que hay son matemáticas. Sí, matemáticas, aquí también están. Veámoslo.

Historia

A principios del siglo IV habían surgido varios grupos que calculaban a su manera la fecha del día de la Pascua de Resurrección. No había consenso, cada uno de ellos daba una fecha distinta, por lo que la confusión que rodeaba este asunto era grande. En el Concilio de Arlés (año 314) se obligó a todos los cristianos a celebrar la Pascua el mismo día (que sería fijado por el Papa), aunque no todos los grupos estuvieron de acuerdo en ello. Fue en el año 325, en el Concilio de Nicea, donde se alcanzó un principio de acuerdo.

Las normas que debía cumplir el día de Pascua de Resurrección eran las siguientes:

  • La Pascua debía celebrarse en domingo.
  • No podía coincidir con la Pascua judía (que conmemora la salida del pueblo judío de Egipto) para evitar confusiones entre ambas religiones.
  • Que los cristianos no celebrasen la Pascua dos veces el mismo año.

Pero con todo esto seguía habiendo diferencias entre la iglesia de Roma y la iglesia de Alejandría (principalmente relacionadas con el equinoccio de primavera y el cálculo de la edad de la Luna).

La solución final no llegó hasta el año 525, en el que Dionisio el Exiguo (cuyo nombre proviene de su pequeña estatura) sentó las bases del cálculo de la fecha de Pascua (que eran las del método alejandrino). Las premisas iniciales del método son las siguientes:

  • La Pascua ha de caer en domingo.
  • Este domingo ha de ser el siguiente a la primera luna llena de la primavera boreal (si esta fecha cayese en domingo, la Pascua se trasladará al domingo siguiente para evitar la coincidencia con la Pascua judía).
  • La luna pascual es aquella cuyo plenilunio tiene lugar en el equinoccio de primavera (vernal) del hemisferio norte (de otoño en el sur) o inmediatamente después.
  • Este equinoccio tiene lugar el 21 de marzo.
  • Llamamos epacta a la edad lunar. En concreto nos interesa para este cálculo la epacta del año, la diferencia en días que el año solar excede al año lunar. O, dicho más fácilmente, el día del ciclo lunar en que está la Luna el 1 de enero del año cuya Pascua estamos calculando. Este número (como es lógico) varía entre 0 y 29.

Con estas condiciones la Pascua quedaba encuadrada entre el 22 de marzo y el 25 de abril.

Durante el Renacimiento se construyeron tablas de cálculo para esta fecha, algunas de ellas relacionadas con el número aúreo. En la actualidad el método más sencillo para realizar este cálculo se debe a nuestro admirado Gauss.

Cálculo del Domingo de Resurrección

Como hemos dicho antes, el método más sencillo para el cálculo de esta fecha se lo debemos a quien da nombre a este blog, Carl Friedrich Gauss (como podéis consultar en el extra que encontraréis más adelante, éste no es el método oficial, pero siempre da el mismo resultado). La base del mismo es la aritmética modular. Vamos a explicar en qué consiste:

Definimos diez variables que denotamos así: a,b,c,k,p,q,M,N,d,e. Siendo A el año del que queremos calcular la fecha del Domingo de Resurrección, veamos cómo se define cada una de ellas:

  • a es el resto de la división de A entre 19, es decir, a \equiv A \pmod{19}.
  • b es el resto de dividir A entre 4, es decir, b \equiv A \pmod{4}.
  • c es el resto de la división de A entre 7, esto es, c \equiv A \pmod{7}.
  • k es el resultado de redondear por defecto el resultado de la división de A entre 100, es decir, k= \lfloor \textstyle{\frac{A}{100}} \rfloor.
  • p es el resultado de redondear por defecto el resultado de la división de 13+8k entre $25$, esto es, p=\lfloor \textstyle{\frac{13+8k}{25}} \rfloor.
  • q es el resultado de redondear por defecto el resultado de la división de k entre 4, es decir, q=\lfloor \textstyle{\frac{k}{4}} \rfloor.
  • M es el resto de la división de 15-p+k-q entre 30, esto es, M \equiv 15-p+k-q \pmod{30}.
  • N es el resto de la división de 4+k-q entre 7, es decir, N \equiv 4+k-q \pmod{7}.
  • d es el resto de dividir 19a+M entre 30, o lo que es lo mismo, d \equiv 19a+M \pmod{30}.
  • e es el resto de la división de 2b+4c+6d+N entre 7, es decir, e \equiv 2b+4c+6d+N \pmod{7}.

Calculando el valor de cada una de las variables para el año en cuestión, la fecha del Domingo de Resurrección será la siguiente:

  • Si d+e < 10, la fecha de Pascua de Resurrección será el día d+e+22 de marzo.
  • Si d+e > 9, la fecha de Pascua de Resurrección será el día d+e-9 de abril.

Para esta regla existen dos excepciones:

  • Si obtenemos el 26 de abril (nos salimos del rango establecido), la Pascua será el 19 de abril.
  • Si obtenemos el 25 de abril con d=28, e=6, a > 10, entonces la Pascua será el 18 de abril.

Para ejemplificar el método vamos a calcular la fecha del Domingo de Resurrección de este año 2009 (que como sabemos es el día 12 de abril).

Para el año A=2009 los valores de las variables son los siguientes (como los cálculos son sencillísimos os dejo a vosotros la comprobación):

a=14,b=1,c=0,k=20,p=6,q=5,M=24,N=5,d=20,e=1

Como d+e =21 > 9, entonces la fecha es el d+e-9=21-9=12 de abril, como en realidad es.

Extra: Gracias a nuestro gran amigo fede (¡qué haría yo sin ti algunas veces!) os puedo ofrecer este formulario mediante el cual podréis calcular la fecha del Domingo de Resurrección que él mismo ha programado (utiliza javascript, por lo que si no lo tenéis activado igual no os funciona) a partir de la descripción del método que podéis ver en la fuente de la Wikipedia inglesa que aparece al final de este artículo (hay un par de retoques de diseño que son míos; se aceptan todo tipo de sugerencias y ayudas). Para utilizarlo simplemente tenéis que escribir las cuatro cifras del año del que queréis calcular la fecha del Domingo de Resurrección (siempre un año mayor que 1582) y automáticamente os aparecerá dicha fecha:

Cálculo de la fecha del Domingo de Resurrección Escribe el año del que quieres realizar el cálculo:
En el año introducido, el domingo de Resurrección es (según el algoritmo de Gauss) el día
(El algoritmo de Gauss no es el oficial, aunque da el mismo resultado.)

Las variables M y N

Si nos fijamos en la descripción del método vemos que las variables $latgex k,p$ y q sólo sirven para calcular M y N. Para evitarnos su cálculo os dejo una tabla con los valores de las mismas para ciertos intervalos de años:

Años M N
1583-1699 22 2
1700-1799 23 3
1800-1899 23 4
1900-2099 24 5
2100-2199 24 6
2200-2299 25 0

Fuentes:

Esta entrada estaba programada hace un tiempo, razón por la cual no había visto que Tito Eliatron había publicado el método descrito aquí hace unos días. Os dejo el enlace a ese post:

Aritmética modular y Semana Santa

V Encuentro andaluz de matemáticas discreta

El 4 y 5 de Julio de este año, se celebrará el V Encuentro Andaluz de matemáticas discreta, el cual este año está organizado por el departamento de matemáticas de la Universidad de Cádiz.

Las áreas tratadas durante el encuentro serán:

  • Algoritmos y estructuras de datos
  • Geometría discreta y combinatoria
  • Aplicaciones de la matemática discreta
  • Fundamentos teóricos de la matemática discreta

El V Encuentro Andaluz de Matemática Discreta se desarrollará en el Auditorio de Conferencias del nuevo Palacio de Congresos y Exposiciones de La Línea de la Concepción.

(Más información en web de la Universidad de Cádiz)
(Vía Genciencia)

Criptografía: Cifrado de clave pública II

Cifrado RSA

El algoritmo fue descrito en 1977 por Ron Rivest, Adi Shamir y Len Adleman (la sigla RSA es Rivest Shamir Adleman) en el MIT.

El cifrado RSA es un algoritmo de cifrado de clave pública (o asimétrico) por bloques, que como todos los cifrados de clave pública tiene dos claves: una pública, que se distribuye a los usuarios que quiera el propietario de ella, y otra privada, la cual es guardada en secreto por su propietario. Así cuando se envía un mensaje, el emisor usa la clave pública de cifrado del receptor para cifrar el mensaje y una vez que dicho mensaje llega al receptor, éste se ocupa de descifrarlo usando su clave oculta.

El algoritmo sigue los siguientes pasos:

  1. Se construye un número “N”, que resulta del producto de dos primos “p” y “q” (normalmente son números muy grandes). Teniendo N = p · q y Φ(N) = (p-1) · (q-1)
  2. Se selecciona un número “e”,1 < e < Φ(N), tal que MCD (e, Φ(N)) = 1 (“e” y Φ(N) son primos relativos).
  3. Se calcula el inverso de “e”, denotado por “d”, tal que e · d = 1 (mod Φ(N))
  4. Con esto se consiguen las claves (e, d), siendo la clave pública (e, N) y la clave privada (d, N).

Una vez tenemos las claves podemos pasar a cifrar/descfirar los mensajes:

  • Cifrado: C = Me (mod N) con MCD (M, N) = 1 y M < N
  • Descifrado: M = Cd (mod N)

La seguridad de este algoritmo radica en que no hay maneras rápidas conocidas de factorizar un número grande en sus factores primos utilizando computadoras tradicionales.

(Más información en Wikipedia)

(Leer el resto del post)

Criptografía: Cifrado de clave pública I

¿Qué es el cifrado de clave pública?

Un cifrado de clave pública (o asimétrica), es aquel cifrado que se basa en el uso de una pareja de claves, pública y privada, de las cuales una se usa para cifrar y la otra para descifrar.

Ambas claves están relacionadas por una función trampa, suele ser una función matemática. Las claves se calculan usando la función y la inversa de ésta, siendo la función inversa la función trampa al ser muy difícil o imposible de calcular.

  • Función irreversible
    x ∈ A, f(x) fácil de calcular
    y ∈ f(A), x = f-1(y) difícil de calcular

  • Función trampa
    x = f-1(y) Es calculable conociendo la trampa de la función. Pero sin conocer dicha trampa, y = f(x) es unidireccional.
    Además la trampa sólo se puede calcular con la clave privada.

(Leer el resto del post)

Critpografía: Cifrado por sustitución

¿Qué es un cifrado por sustitución?

Es aquel cifrado que sustituye cada letra o grupo de letras por otra letra o grupo de letras distinta/s para cifrar el texto en claro.

Los primeros y antiguos métodos de cifrado se basaban en este principio, aunque en aquella época no eran muy robustos ni difíciles de descifrar, pero les resultaban muy útiles.

(Leer el resto del post)

Teoría de números elemental: Resumen

Ya que he acabado la serie de posts sobre la Teoría de Números Elemental, en este post os voy a poner los enlaces a todos los posts que he hecho sobre este tema, para que podáis tenerlos a mano.

Teoría de números elemental: Aritmética modular II

Vamos a terminar ya con la teoría de números elemental, que se me está haciendo demasiado larga.

Números pseudoprimos

Los matemáticos Chinos de la antigüedad creían que:

n primo 2n-1 ≡ 1 (mod (n))

Sin embargo se equivocaron y su condición sólo es válida en un sentido:

n primo => 2n-1 ≡ 1 (mod (n))

A los números que sin ser primos, cumplen la propiedad se les conoce como pseudoprimos.

Teorema pequeño de Fermat

Sea “p” primo y a ∈ Z no divisible por “p”. Entonces,

ap-1 ≡ 1 (mod (p))

Como podéis ver no es más que una mejora de la propiedad de los números pseudoprimos.

(Más información en Wikipedia)

(Leer el resto del post)

Anterior