magister

Archive for the ‘matemáticas’ Category

Compiling polymake on archlinux

In linux, matemáticas on mayo 19, 2010 at 7:17 am

This is a followup on my previous post.

This one easier. Install gmp.

Unpack the polymake 2.9.8 tarball.

Install whatever perl module required to get ./configure going. Before running ./configure, however before trying open support/locate_build_dir

and change line 78 from  uname -p to  uname -m

Now, go /lib/PTL/include/Bitset.h and edit line 57 that says

=__GMP_BITS_PER_MP_LIMB

change it to

=GMP_NUMB_BITS

save, configure and make!

1.1 Elección social : Introducción

In matemáticas, politica on octubre 25, 2008 at 11:41 pm

Serie de notas de estudio basadas en el texto «Mathematics and Politics»

Se quiere analizar los procesos por los cuales un colectivo, una comunidad, desea elegir una opción entre un grupo de alternativas. El proceso democrático estándar funciona muy bien cuando sólo hay dos opciones: cada votante selecciona su opción preferida y el ganador de la votación corresponde a la opción que tiene más apoyo.

Sin embargo, cuando hay más de dos candidatos la situación no es tan clara. Por ejemplo, supongamos que hay tres candidatos A, B, C. Hay 6 diferentes formas de ordenar la preferencia de los votantes:

  • A  B  C : (20)
  • A  C  B : (26)
  • B  A  C : (18)
  • B  C  A : (26)
  • C  A  B : (2)
  • C  B  A : (8)

Los números a la izquierda de cada orden indican el número (o porcentaje) de votantes que ordenan a los candidatos en ese orden de preferencia: por ejemplo, hay 26 votantes (o el 26% de los votantes) para los que A es el mejor candidato, C el segundo y B el peor de todos.

Se efectúa la votación, cada votante selecciona su candidato favorito. El resultado de la elección es:

  • A : 20 + 26 = 46 votos a favor.
  • B : 18 + 26 = 44 votos a favor.
  • C : 2 + 8 = 10 votos a favor.

El ganador de la elección es A con 46 votos a favor. Dado que A ganó la elección, debe ser el mejor candidato. ¿no? Veamos…

¿Cuanta gente piensa que B es mejor candidato que C?

  • Hay 20 + 18 + 26 =64 votantes que prefieren a B sobre C.
  • Hay 26 + 2 + 8 = 36 votantes que prefieren a C sobre B.

Hasta ahí no hay ninguna sorpresa, la mayoría de los votantes prefiere a B sobre C.

¿Cuanta gente piensa que A es mejor candidato que B?

  • Hay 20 + 26 + 2 = 48 votantes que piensan que A es mejor que B.
  • Hay 18 + 26 + 8 = 52 votantes que piensan que B es mejor que A.

Entonces… la mayoría de los votantes prefieren a B sobre A.

Es decir… la mayoría de los votantes piensa que B es mejor candidato que A,  y la mayoría de los candidatos piensa que B es mejor candidato que C. Sin embargo…. ¡B pierde la elección!

—-

Referencia. Taylor & Pacelli. Mathematics and Politics: Strategy, Voting, Power and Proof. Springer. 2008.

Soporte para MathML

In matemáticas on julio 24, 2008 at 6:35 pm

Tengo una wiki personal en mi unidad USB. Pero el soporte de matemáticas de mediawiki depende de ocaml, imagemagick, texvc, etc. Una alternativa simple es la extensión ASCIIMath4Wiki, que usa MathML para crear las formulas.

mathml en firefox

mathml en firefox

El problema… Internet Explorer no soporta MathML y firefox necesita unas fuentes extras para mostrar correctamente ciertas expresiones (como radicales). La solución viene en dos pasos

  • Instalar las fuentes STIX, lo cual resuelve el problema en los navegadores Mozilla (así por ejemplo sqrt(2/x)  ya no se mostrará erróneamente como sqrt(2)/x  al no ser extensible el símbolo de radical)
  • Instalar MathPlayer, lo cual permite que Internet Explorer entienda el Doctype apropiado para soporte MathML.

El resultado (en Internet Explorer):

MathML en internet explorer

MathML en internet explorer

El estándar MathML debería ser más utilizado, pero para ello es necesario que el soporte para ambos se extienda más por lo que ya saben… a instalar las fuentes stix y el mathplayer.

Funciones hash

In criptografía, matemáticas on junio 16, 2008 at 3:54 am

Corre

: Drini: Vamos a jugar un juego, mi estimado Luis. Yo pienso un color (como blanco, rojo, azul, etc. para simplificar, nada de “azul prusiano” o “rojo bermellón”). Tienes una oportunidad de adivinar. Si atinas, te doy 20 euros, si pierdes, me das 10. ¿Vale?
: Luis: Ok.

(Drini piensa VERDE)

: Luis: Pues… estás pensando en VERDE.
: Drini: No, fallaste, estaba pensando en CAFE
: Luis: Bueno, psshh… toma los 10 euros, pero me parece que has hecho trampa
: Drini: ¿trampa yo? ¿cómo te atreves a sugerir eso?

Lola

: Drini: Vamos a jugar un juego, Luis. Yo pienso un color (como blanco, rojo, azul, etc. para simplificar, nada de “azul prusiano” o “rojo bermellón”). Tienes una oportunidad de adivinar. Si atinas, te doy 10 euros, si pierdes, me das 5. ¿Vale?
: Luis: Hmm… ¿y quién me garantiza que no mentirás sobre tu elección?
: Drini: Bueno, aquí anda Netito, le digo a Netito el color que pienso, tú adivinas y él corrobora mi elección.
: Luis: Ok, me parece.
: Drini: Ya pensé el color, acércate, Netito, para que te diga mi elección.

(Netito se acerca)

: Drini: (en secreto) Mira Netito, tú limítate a asentir a lo que yo diga y te ganas 5 euros, ¿ok?
: Netito: Ok.

: Drini: Estamos listos, Luis, ya pensé un color. Adivina.
: Luis: Estás pensando AZUL.
: Drini: No, pensé en ROJO. ¿verdad Netito?
: Netito: Sí, pensó ROJO.
: Luis: Pshh.. otra vez perdí, toma los 10 euros. Nos vemos luego.
: Drini: Bye, Luis.

(Drini le da 5 euros a Netito)

Matrix

Los ejemplos son bastante metafóricos, y en realidad está hablando de Internet, para aquellos a los que no les ha caído el veinte.

En un entorno digital, donde las interacciones no son persona a persona, hay un elemento de incertidumbre siempre presente sobre la fiabilidad de la información. ¿Cómo garantizar que la persona con la que hablamos sea quien afirma ser? Leer el resto de esta entrada »

Generando particiones

In matemáticas, programación, python on mayo 27, 2008 at 9:15 pm

… o cómo aprendí a amar los generadores en Python y dejé de preocuparme.

En estos días mi trabajo en el doctorado involucra contar cuántos puntos con coordenadas enteras tienen ciertos “poliedros” en 12 dimensiones. Tales poliedros están determinados por las formas diferentes en que se puede descomponer un número como sumas ordenadas, es decir particiones. Así, dado que 6=3+1+1+1, entonces [3,1,1,1] es una partición de 6.

Las distintas particiones de n=6 son

[6] [5, 1] [4, 2] [4, 1, 1] [3, 2, 1] [3, 1, 1, 1]
[2, 2, 2] [2, 2, 1, 1] [2, 1, 1, 1, 1] [1, 1, 1, 1, 1, 1, 1]

En la aplicación particular que estoy trabajando, únicamente nos importan particiones de longitud 3. Entonces de las anteriores sólo se considerarían

[4, 1, 1]
[3, 2, 1]
[2, 2, 2]

Como siempre es mejor usar la computadora para las tareas mecánicas, me propuse elaborar un programa en Python que genere particiones de un número entero.

El esquema básico es el siguiente: Leer el resto de esta entrada »