{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Batman, ecuaciones y python" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Esta notebook fue creada originalmente como un blog post por [Raúl E. López Briega](http://relopezbriega.com.ar/) en [Mi blog sobre Python](http://relopezbriega.github.io). El contenido esta bajo la licencia BSD.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\"Ecuación" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Batman](https://es.wikipedia.org/wiki/Batman) siempre fue mi superhéroe favorito porque es uno de los pocos héroes que no posee ningún superpoder, sino que debe recurrir a su intelecto y a la ciencia para construir las bati-herramientas que utiliza para combatir al crimen. Además posee ese toque de oscuridad producto de la dualidad entre realizar el bien, protegiendo a la gente de ciudad gótica, y su sed de venganza contra el crimen y la corrupción que acabó con la vida de su familia. \n", "\n", "Es un personaje con muchos recursos, en cada nueva aparición podemos verlo utilizar nuevas y muy modernas bati-herramientas; su intelecto es tan agudo que incluso escondió una ecuación matemática en su bati-señal!!\n", "\n", "La [ecuación de batman](http://www.wolframalpha.com/input/?i=batman+equation) fue creada por el profesor de matemáticas [Matthew Register](http://www.quora.com/J-Matthew-Register) y se popularizó a través de un post de uno de sus alumnos en la red social [reddit](https://www.reddit.com/r/pics/comments/j2qjc/do_you_like_batman_do_you_like_math_my_math/); su expresión matemática es la siguiente:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", "((\\frac{x}{7})^2 \\cdot \\sqrt{\\frac{||x|-3|}{(|x|-3)}}+ (\\frac{y}{3})^2 \\cdot \\sqrt{\\frac{|y+3 \\cdot \\frac{\\sqrt{33}}{7}|}{y+3 \\cdot \\frac{\\sqrt{33}}{7}}}-1) \\cdot (|\\frac{x}{2}|-((3 \\cdot \\frac{\\sqrt{33}-7)}{112}) \\cdot x^2-3+\\sqrt{1-(||x|-2|-1)^2}-y) \\cdot (9 \\cdot \\sqrt{\\frac{|(|x|-1) \\cdot (|x|-0.75)|}{((1-|x|)*(|x|-0.75))}}-8 \\cdot |x|-y) \\cdot (3 \\cdot |x|+0.75 \\cdot \\sqrt{\\frac{|(|x|-0.75) \\cdot (|x|-0.5)|}{((0.75-|x|) \\cdot (|x|-0.5))}}-y) \\cdot (2.25 \\cdot \\sqrt{\\frac{|(x-0.5) \\cdot (x+0.5)|}{((0.5-x) \\cdot (0.5+x))}}-y) \\cdot (\\frac{6 \\cdot \\sqrt{10}}{7}+(1.5-0.5 \\cdot |x|) \\cdot \\sqrt{\\frac{||x|-1|}{|x|-1}}-(\\frac{6 \\cdot \\sqrt{10}}{14}) \\cdot \\sqrt{4-(|x|-1)^2}-y) =0\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Si bien a simple vista la ecuación parece sumamente compleja e imposible de graficar, la misma se puede descomponer en seis curvas distintas, mucho más simples.\n", "\n", "La primera de estas curvas, es la función del elipse $(\\frac{x}{7})^2 + (\\frac{y}{3})^2 = 1$, restringida a la región $\\sqrt{\\frac{||x|-3|}{(|x|-3)}}$ y $\\sqrt{\\frac{|y+3 \\cdot \\frac{\\sqrt{33}}{7}|}{y+3 \\cdot \\frac{\\sqrt{33}}{7}}}$ para cortar la parte central.\n", "\n", "Los cinco términos siguientes pueden ser entendidos como simples funciones de x, tres de los cuales son lineales.\n", "Por ejemplo, la siguiente función es la que grafica las curvas de la parte inferior de la bati-señal.\n", "\n", "$y = |\\frac{x}{2}|-(\\frac{3 \\cdot \\sqrt{33} -7}{112})\\cdot x^2 - 3 + \\sqrt{1-(||x|-2| -1)^2}$\n", "\n", "Las restantes ecuaciones de las curvas que completan el gráfico, son las siguientes:\n", "\n", "$y = \\frac{6\\cdot\\sqrt{10}}{7} + (-0.5|x| + 1.5) - \\frac{3\\cdot\\sqrt{10}}{7}\\cdot\\sqrt{4 - (|x|-1)^2}, |x| > 1$\n", "\n", "$y = 9 -8|x|, 0.75 < |x| < 1$\n", "\n", "$y = 3|x| + 0.75, 0.5 < |x| < 0.75$\n", "\n", "$y = 2.25, |x| < 0.5$\n", "\n", "La [ecuación de batman](http://www.wolframalpha.com/input/?i=batman+equation) puede ser fácilmente graficada utilizando [Matplotlib](http://matplotlib.org/) del siguiente modo:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# graficos embebidos\n", "%matplotlib inline " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Importando lo necesario para los cálculos\n", "import matplotlib.pyplot as plt\n", "from numpy import sqrt \n", "from numpy import meshgrid\n", "from numpy import arange" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Graficando la ecuación de Batman.\n", "xs = arange(-7.25, 7.25, 0.01)\n", "ys = arange(-5, 5, 0.01)\n", "x, y = meshgrid(xs, ys)\n", "\n", "eq1 = ((x/7)**2*sqrt(abs(abs(x)-3)/(abs(x)-3))+(y/3)**2*sqrt(abs(y+3/7*sqrt(33))/(y+3/7*sqrt(33)))-1)\n", "eq2 = (abs(x/2)-((3*sqrt(33)-7)/112)*x**2-3+sqrt(1-(abs(abs(x)-2)-1)**2)-y)\n", "eq3 = (9*sqrt(abs((abs(x)-1)*(abs(x)-.75))/((1-abs(x))*(abs(x)-.75)))-8*abs(x)-y)\n", "eq4 = (3*abs(x)+.75*sqrt(abs((abs(x)-.75)*(abs(x)-.5))/((.75-abs(x))*(abs(x)-.5)))-y)\n", "eq5 = (2.25*sqrt(abs((x-.5)*(x+.5))/((.5-x)*(.5+x)))-y)\n", "eq6 = (6*sqrt(10)/7+(1.5-.5*abs(x))*sqrt(abs(abs(x)-1)/(abs(x)-1))-(6*sqrt(10)/14)*sqrt(4-(abs(x)-1)**2)-y)\n", "\n", "for f, c in [(eq1, \"red\"), (eq2, \"purple\"), (eq3, \"green\"),\n", " (eq4, \"blue\"), (eq5, \"orange\"), (eq6, \"black\")]:\n", " plt.contour(x, y, f, [0], colors=c)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Ahora ya saben...si están en algún apuro y necesitan la ayuda del bati-héroe, solo necesitan graficar una ecuación para llamarlo con la bati-señal!\n", "\n", "Saludos!\n", "\n", "*Este post fue escrito utilizando IPython notebook. Pueden descargar este [notebook](https://github.com/relopezbriega/relopezbriega.github.io/blob/master/downloads/Batman.ipynb) o ver su version estática en [nbviewer](http://nbviewer.ipython.org/github/relopezbriega/relopezbriega.github.io/blob/master/downloads/Batman.ipynb).*" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.4.3+" } }, "nbformat": 4, "nbformat_minor": 0 }