noticias y última hora

La ecuación del logo de Batman en Mathematica

Hace ya unas semanas apareció por internet una imagen con una ecuación cuyas soluciones tenían como representación gráfica, en teoría, el logo de Batman. Aquí la tenemos:

Hasta donde yo sé el tema comenzó en Reddit. Blogs de todo el mundo se hicieron eco de este asunto, y durante un tiempo se dudó de la veracidad del mismo: ¿de verdad las soluciones de esa ecuación representaban el logo de Batman?

Pues sí. Y fue en StackExchange donde se encargaron de comprobarlo, representando de forma aislada cada una de las partes de la misma y explicándolas todas muy claramente.

Lo que vamos a hacer en este post es explicar cómo realizar esta representación en Mathematica. Los datos los he tomado de este post de Playing with Mathematica (por cierto, blog muy recomendable para los interesados en este programa), donde Sol Lederman (que también lleva Wild About Math) nos comenta el trabajo de Heike Gramberg en este sentido publicado en este grupo de Google.

Heike divide la ecuación en seis partes (los seis paréntesis grandes que aparecen en la imagen), define cada una de ellas por separado y después las representa todas juntas. Nosotros vamos a seguir el mismo camino.

Parte1

Código Mathematica:

pl1 = ContourPlot[((x/7)^2 + (y/3)^2 - 1) == 0, {x, -8, 8}, {y, -5,
5}, RegionFunction -> ((Abs[#1] > 3 && #2 > -(3 Sqrt[33])/7) &)]

Representación:

Parte 2

Código Mathematica:

pl2 = ContourPlot[(Abs[x/2] – ((3 Sqrt[33] – 7)/112) x^2 – 3 +
Sqrt[1 - (Abs[Abs[x] – 2] – 1)^2] – y) == 0, {x, -7, 7}, {y, -3,
3}]

Representación:

Parte 3

Código Mathematica:

pl3 = ContourPlot[(9 - 8 Abs[x] – y) == 0, {x, -7, 7}, {y, -3, 3},
RegionFunction -> ((3/4 < Abs[#] < 1) &)]

Representación:

Parte 4

Código Mathematica:

pl4 = ContourPlot[(3 Abs[x] + 3/4 – y) == 0, {x, -7, 7}, {y, -3, 3},
RegionFunction -> ((1/2 < Abs[#1] < 3/4) &)]

Representación:

Parte 5

Código Mathematica:

pl5 = ContourPlot[(9/4 - y) == 0, {x, -7, 7}, {y, -3, 3},
RegionFunction -> ((Abs[#1] < 1/2) &)]

Representación:

Parte 6

Código Mathematica:

pl6 = ContourPlot[((6 Sqrt[10])/
7 + (3/2 – Abs[x]/2) – (6 Sqrt[10])/14 Sqrt[
4 - (Abs[x] – 1)^2] – y) == 0, {x, -7, 7}, {y, -3, 3},
RegionFunction -> ((Abs[#1] > 1) &)]

Representación:

Logo Batman

Mostrando ahora en Mathematica las seis partes juntas con

Show[{pl1, pl2, pl3, pl4, pl5, pl6}]

obtenemos la siguiente representación:

que se parece bastante al contorno del logo de Batman.

Aunque, como proponen en un comentario en StackExchange, se consigue el logo más directamente con el código

Plot[{With[{w = 3*Sqrt[1 - (x/7)^2], l = (6/7)*Sqrt[10] + (3 + x)/2 – (3/7)*Sqrt[10]*Sqrt[4 - (x + 1)^2], h = (1/2)*(3*(Abs[x - 1/2] + Abs[x + 1/2] + 6) – 11*(Abs[x - 3/4] + Abs[x + 3/4])), r = (6/7)*Sqrt[10] + (3 – x)/2 – (3/7)*Sqrt[10]*Sqrt[4 - (x - 1)^2]}, w + (l – w)*UnitStep[x + 3] + (h – l)*UnitStep[x + 1] + (r – h)*UnitStep[x - 1] + (w – r)*UnitStep[x - 3]], (1/2)*(3*Sqrt[1 - (x/7)^2] + Sqrt[1 - (Abs[Abs[x] – 2] – 1)^2] + Abs[x/2] – ((3*Sqrt[33] – 7)/112)*x^2 – 3)*((x + 4)/Abs[x + 4] – (x – 4)/Abs[x - 4]) – 3*Sqrt[1 - (x/7)^2]}, {x, -7, 7}, AspectRatio -> Automatic, Axes -> None, Frame -> True, PlotStyle -> GrayLevel[0]]

que nos da la siguiente representación:

Y digo yo que si le añadimos a la primera representación la elipse

pl7 = ContourPlot[((x/8)^2 + (y/3.5)^2 - 1) == 0, {x, -8, 8}, {y, -5,
5}]

nos queda lo siguiente:

Y con un pelín de Paint obtenemos esto

que se parece mucho más a

(Imagen tomada de aquí)

Ha quedado bien, ¿verdad?

Artículos relacionados

24 comentarios

  1. mrvalenz | 15 de September de 2011 | 09:15

    ¡La batiseñal en mathematica! No se como no se me había ocurrido añadir la elipse siendo que hace tanto que vi la “ecuación del logo de batman”. Excelente y como ha sido siempre con todos las publicaciones de Gaussianos, esta no me defraudó. :)

  2. Tito Eliatron | 15 de September de 2011 | 09:54

    Paint, paint…. con un poco de paciencia se podría sacar los coloreados directamente con el Mathematica.

    Por cierto, que yo cambiaría el título al post por este otro BAT-MATH

  3. Trackback | 15 Sep, 2011

    La ecuación del logo de Batman en Mathematica

  4. josejuan | 15 de September de 2011 | 10:38

    ¡Muy bueno lo de la elipse!

    Si en toda la ecuación se le aplica un escalado en X inversamente proporcional a Y todavía se parecerá más al original. (Como si pinzárais con los dedos a izq. y der. y estirárais; pero no como un acordeón, más como una masa de pizza).

    XD XD

  5. Trackback | 15 Sep, 2011

    Bitacoras.com

  6. loumalou | 15 de September de 2011 | 12:52

    ¿Pero cómo se hace para integrarlo todo en una única función?

  7. gaussianos | 15 de September de 2011 | 13:59

    mrvalenz, gracias :) .

    Tito Eliatron, te prometo que lo intenté con Mathematica, pero no fui capaz de hacerlo y me pasé a la solución sencilla: Paint. Ah, y el título que propones habría sido mucho más acertado, sí :D .

    josejuan, es posible que jugando con la opción AspectRatio de Mathematica, y ajustando después si es necesario, el logo se parecería más. Si tengo un rato lo intento :) .

    loumalou, ¿en Mathematica? Con Show. Así sin la elipse:

    Show[{pl1, pl2, pl3, pl4, pl5, pl6}]

    y así para que también aparezca la elipse:

    Show[{pl1, pl2, pl3, pl4, pl5, pl6,pl7}]

  8. Dib | 15 de September de 2011 | 15:00

    Yo lo hice en Maple y también funciona perfectamente.

    restart;
    batman := (((1/7)*x)^2*sqrt(abs(abs(x)-3)/(abs(x)-3))+((1/3)*y)^2*sqrt(abs(y+3*sqrt(33)*(1/7))/(y+3*sqrt(33)*(1/7)))-1)*(abs((1/2)*x)-((3*sqrt(33)-7)*(1/112))*x^2-3+sqrt(1-(abs(abs(x)-2)-1)^2)-y)*(9*sqrt(abs((abs(x)-1)*(abs(x)-3/4))/((1-abs(x))*(abs(x)-3/4)))-8*abs(x)-y)*(3*abs(x)+(3/4)*sqrt(abs((abs(x)-3/4)*(abs(x)-1/2))/((3/4-abs(x))*(abs(x)-1/2)))-y)*((9/4)*sqrt(abs((x-1/2)*(x+1/2))/((1/2-x)*(x+1/2)))-y)*(6*sqrt(10)*(1/7)+(3/2-(1/2)*abs(x))*sqrt(abs(abs(x)-1)/(abs(x)-1))-(6*sqrt(10)*(1/14))*sqrt(4-(abs(x)-1)^2)-y);
    plots:-implicitplot(batman, x = -7 .. 7, y = -3 .. 3, factor = true, scaling = constrained, grid = [100, 100], gridrefine = 4);

    Posteriormente, intenté pasar esa ecuación a paramétricas para ver si mis robots se la aventaban, pero fallé en la parametrización u_u A ver si alguien me ayuda con eso.

  9. Fernando | 15 de September de 2011 | 15:03

    Qué grande! Nunca lo había pensado. Me ha encantado.
    Por si a alguien le interesa hacerla en Matlab (yo es que el Mathematica no lo uso habitualmente), este es el código. He añadido instrucciones para que salga el fondo negro y las líneas en amarillo (así se aproxima más a la realidad). Pintar el interior de la elipse de amarillo ya es más difícil, ya que la función del murciélago se va pintando por partes.

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    clc;
    clear all;
    syms x y;

    f1 = figure(1);

    b1 = ((x/7)^2*sqrt(abs(abs(x)-3)/(abs(x)-3)) + …
    (y/3)^2*sqrt(abs(y+3*sqrt(33)/7)/(y+3*sqrt(33)/7))-1);
    b2 = (abs(x/2)-((3*sqrt(33)-7)/112)*x^2 -3 + …
    sqrt(1-(abs(abs(x)-2)-1)^2) -y);
    b3 = (9*sqrt(abs((abs(x)-1)*(abs(x)-0.75))/…
    ((1-abs(x))*(abs(x)-0.75))) -8*abs(x) -y);
    b4 = (3*abs(x) + 0.75*sqrt(abs((abs(x)-0.75)*…
    (abs(x)-0.5))/((0.75-abs(x))*(abs(x)-0.5))) -y);
    b5 = (2.25*sqrt(abs((x-0.5)*(x+0.5))/…
    ((0.5-x)*(0.5+x))) -y);
    b6 = (6*sqrt(10)/7 + (1.5-0.5*abs(x))*sqrt(abs(abs(x)-1)…
    /(abs(x)-1)) -6*sqrt(10)/14*sqrt(4-(abs(x)-1)^2) -y);
    b7 = (x/8)^2 + (y/3.5)^2 -1;

    axes(‘Xlim’, [-8.5 8.5], ‘Ylim’, [-5 5]);
    hold on;

    h = ezplot(b1, [-8 8 -3*sqrt(33)/7 6-4*sqrt(33)/7]);
    set(h,’Color’, ‘Yellow’);
    h = ezplot(b2, [-4 4]);
    set(h,’Color’, ‘Yellow’);
    h = ezplot(b3, [-1 -0.75 -5 5]);
    set(h,’Color’, ‘Yellow’);
    h = ezplot(b3, [0.75 1 -5 5]);
    set(h,’Color’, ‘Yellow’);
    h = ezplot(b4, [-0.75 0.75 2.25 5]);
    set(h,’Color’, ‘Yellow’);
    h = ezplot(b5, [-0.5 0.5 -5 5]);
    set(h,’Color’, ‘Yellow’);
    h = ezplot(b6, [-3 -1 -5 5]);
    set(h,’Color’, ‘Yellow’);
    h = ezplot(b6, [1 3 -5 5]);
    set(h,’Color’, ‘Yellow’);
    h = ezplot(b7, [-8 8 -5 5]);
    set(h,’Color’, ‘Yellow’);

    set(gca,’Color’,[0 0 0]);

    title(”);
    xlabel(”);
    ylabel(”);

    hold off;
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  10. Imanol Pérez | 15 de September de 2011 | 15:35

    Ya lo conocía, pero nunca me canso de verlo…

  11. Trackback | 15 Sep, 2011

    La ecuación del logo de Batman en Mathematica

  12. Trackback | 15 Sep, 2011

    La ecuación del logo de Batman en Mathematica

  13. Nadym | 15 de September de 2011 | 21:08

    Nene, yo quiero que me pongas la de Superman, va más con mi estilo. Hala, reto complicado eh!! Muac!!

  14. Asier | 15 de September de 2011 | 21:41

    Muy chulo. Esto me ha recordado a un post sobre una curiosidad aun más espectacular, la fórmula autorreferente de Tupper:

    http://gaussianos.com/la-formula-autorreferente-de-tupper/

  15. gaussianos | 15 de September de 2011 | 23:14

    Nadym, eso va a ser más difícil, aunque bueno, nunca se sabe :) .

    Asier, sí, la fórmula autorreferente de Tupper es tremenda, de lo mejor que yo he visto de este tema :) .

  16. anmderfon | 16 de September de 2011 | 09:33

    Enhorabuena: Sigue habiendo gente que utiliza su mente sin esperar recompensas

  17. Kovalevsky | 16 de September de 2011 | 15:11

    Me encanta ese gráfico, porque es una muestra de cómo se puede crear un logo con matemáticas.
    XD
    Lo vi primeramente en un blog amigo de Gaussianos, y quedé sorprendida de ver el logo. Aunque asumí que verdaderamente se podía hacer, nunca lo comprobé.

  18. Sebastian Muniz | 17 de September de 2011 | 23:03

    Yo hubiera esperado que fuera mas facil en coordenadas polares.
    Ahora que llega la primavera, en una de esas es incorrecto.

  19. Samuel | 17 de September de 2011 | 23:15

    ¡Qué grande! La cantidad de buenos ratos que nos puede proporcionar la paciencia y perseverancia de otros…

  20. Trackback | 20 Sep, 2011

    Ecuación matemática del logo de Batman | NETAMBULO | Tecnología, Internet y Ocio : Noticias y Curiosidades

  21. Trackback | 20 Sep, 2011

    La Ecuación de Batman | DistroGeek

  22. marko | 28 de October de 2011 | 00:02

    me encanta, una pruebe contundente sobre lo maravilloso de la matematica

  23. Trackback | 6 Nov, 2011

    Die Batman-Gleichung

  24. Trackback | 22 Feb, 2012

    De “carita sonriente” a “señor con bigote” con Mathematica - Gaussianos | Gaussianos

Escribe un comentario

Puedes utilizar código LaTeX para insertar fórmulas en los comentarios. Sólo tienes que escribir
[latex]código-latex-que-quieras-insertar[/latex]
o
$latex código-latex-que-quieras-insertar$.

Si tienes alguna duda sobre cómo escribir algún símbolo puede ayudarte la Wikipedia. Utiliza la Vista Previa antes de publicar tu comentario para asegurarte de que las fórmulas están correctamente escritas.



Comments will be closed on 21/02/2013.