Las matemáticas románticas (III)

Como todos evidentemente sabréis hoy es el Día de las floristerías, perfumerías y demás tiendas de regalos San Valentín. Digamos que en cierto modo se nos obliga desde todos los sectores a demostrar más amor hoy que cualquier otro día del año.

El caso es que podemos hacerlo (de hecho debemos) cualquier día, en cualquier momento…y de la forma que creamos más conveniente (no por mucho regalo demostramos que queremos más). ¿Y por qué no usar las matemáticas para ello?

En Gaussianos podemos encontrar varios artículos donde el amor y las matemáticas son los temas principales. Por ejemplo, tenemos a The Klein Four Group con su canción Finite Simple Group (of order two) y dos artículos sobre fórmulas matemáticas y corazones, éste, donde podemos ver únicamente un corazón en 2D, y éste otro, donde se mejoraba el corazón anterior y se añadían otros en 3D. En el artículo de hoy vamos a ver alguna forma más de generar corazones con fórmulas matemáticas.

Fórmulas matemáticas que generan corazones

Vamos a ver tres maneras más de generar corazones a partir de fórmulas matemáticas. En cada una de ellas os daré la fórmula a partir de la cual se genera el corazón y el código de Mathematica que debéis usar para ello, junto con imágenes de nuestra creación.

Pero antes de nada os recomiendo que ejecutéis en Mathematica la orden (sin espacios)

< < Miscellaneous`RealOnly`

para que los números complejos no hagan acto de presencia y nos provoquen problemas con las soluciones de las ecuaciones.

  • La primera opción es la que genera esta ecuación:

    x^2 + (y - x^{2/3})^2 = 1

    ¿Cómo la generamos con Mathematica? Pues primero cargamos el paquete ImplicitPlot con

    < < Graphics`ImplicitPlot`

    y después utilizamos el siguiente código:

    ImplicitPlot[x^2+(y-x^(2/3))^2==1,{x,-1,1},Axes->False]

    Evidentemente, si queremos que los ejes aparezcan quitamos la opción Axes->False.

    ¿Cómo quedaría la cosa? Pues tal que así:

    Corazón

    Ha quedado algo pequeño y, por qué no decirlo, soso, ¿verdad? Bien, vamos a darle un poco de forma a este corazón. Lo vamos a representar como gráfica de dos funciones. Despejamos la variable y de la ecuación y dibujamos la gráfica de las dos funciones resultantes. El código completo de una de las posibles formas de representar esta situación sería el siguiente:

    f[x_]:=(x^(1/3))^2+(1-x^2)^(1/2)
    g[x_]:=x^(2/3)-(1-x^2)^(1/2)
    a=Plot[f[x],{x,-1,1},AspectRatio->1]
    b=Plot[g[x],{x,-1,1},AspectRatio->1]
    Show[a,b]

    Obteniendo el siguiente corazón:

    Corazón

    Esto…quedaría más bonito en rojo, ¿no? Vuestros deseos son órdenes, démosle algo de color:

    Plot[{f[x],g[x]},{x,-1,1},AspectRatio->Automatic,PlotStyle->{{RGBColor[1,0,0]
    ,Thickness[0.05]},{RGBColor[1,0,0],Thickness[0.05]}},Axes->False]

    Obtenemos así este bonito corazón con el borde rojo:

    Corazón con borde rojo

    Pero, como ya vimos en uno de los posts anteriores sobre este tema, también podemos rellenar el corazón de color. Recuerdo qué había que hacer:

    Cargamos el paquete FilledPlot con < < Graphics`FilledPlot` y después usamos el siguiente código:

    FilledPlot[{f[x],g[x]},{x,-1,1},Fills->{{{1,2},RGBColor[1,0,0]}},
    Curves->None,AspectRatio->Automatic,Axes->False]

    con el que se nos muestra el corazón anterior relleno de rojo:

    Corazón relleno de rojo

  • La segunda opción que os traigo es la que genera esta ecuación:

    (x^2 + y^2 - 1)^3 - x^2 \cdot y^3 = 0

    Con el paquete ImplicitPlot cargado antes podemos generar nuestro corazón con el código:

    ImplicitPlot[(x^2+y^2-1)^3-x^2*y^3==0,{x,-2,2},{y,-2,2}]

    obteniendo esto:

    Corazón

    Al igual que en el caso anterior, podemos quitar los ejes y hacer que el contorno del corazón sea rojo. Ahí va el código:

    ImplicitPlot[(x^2+y^2-1)^3-x^2*y^3==0,{x,-2,2},{y,-2,2},
    PlotStyle->{{RGBColor[1,0,0],Thickness[0.02]},{RGBColor[1,0,0],Thickness[0.05]}},Axes->False]

    Con él se nos muestra este corazón:

    Corazón con borde rojo

    Pero ahora mismo no sé cómo hacer que este corazón se muestre relleno de color. ¿Alguna idea?

  • Y la tercera opción de hoy nos muestra nuestro corazón mediante una ecuación en coordenadas polares (os acordáis de lo que eran, ¿verdad?). Concretamente esta es la ecuación que nos va a dar nuestro corazón:

    r=\cfrac{\sin{(t)} \cdot \sqrt{|\cos{(t)}|}}{\sin{(t)} + \frac{7}{5}} - 2 \sin{(t)} + 2

    Para poder representarla cargamos primero el paquete Graphics con < < Graphics`Graphics` y después usamos la función PolarPlot, a la que le damos el valor de r de la ecuación y el rango de valores de t así:

    PolarPlot[{Sin[t]*Sqrt[Abs[Cos[t]]]/(Sin[t]+7/5)- 2*Sin[t]+2},{t,0,2*Pi},AspectRatio->1]

    El resultado es este bonito corazón

    Corazón

    que también podemos dibujar con el borde en color rojo con el siguiente código:

    PolarPlot[{Sin[t]*Sqrt[Abs[Cos[t]]]/(Sin[t]+7/5)-2*Sin[t]+2},{t,0,2*Pi},
    AspectRatio->1,PlotStyle->{{RGBColor[1,0,0],Thickness[0.05]},{RGBColor[1,0,0],
    Thickness[0.05]}},Axes->False]

    Este es el corazón que obtendríamos:

    Corazón con borde rojo

    Al igual que en el caso anterior, no se me ocurre una forma de rellenarlo de color. Se aceptan sugerencias.

Bonus fractal

Otra curiosa manera que he encontrado en esta entrada de Mathematics and Multimedia de relacionar amor con matemáticas es utilizar el triángulo de Sierpinski así:

Triángulo amoroso de Sierpinski

No me digáis que no es original…


¿Conocéis alguna otra función/ecuación matemática cuya representación gráfica sea un corazón? Los comentarios son vuestros.


Esta entrada sirve como aportación de Gaussianos a la edición 2.1 del Carnaval de Matemáticas, que en esta ocasión organiza el precursor de la iniciativa, el gran Tito Eliatron.

Share

5 comentarios

  1. Trackback | 14 feb, 2011

    Tweets that mention Las matemáticas románticas (III) | Gaussianos -- Topsy.com

  2. Trackback | 14 feb, 2011

    Bitacoras.com

  3. Javier | 14 de febrero de 2011 | 15:46

    Vótalo Thumb up 0

    Que alegría ver a xkcd por aquí. Por si alguien quiere deleitarse con otras tiras, el original viene de http://xkcd.com/543/

  4. josejuan | 14 de febrero de 2011 | 16:30

    Vótalo Thumb up 0

    Se me ocurre que debe haber una configuración inicial (no trivial) para el juego de la vida que transite por un corazón.

    (Con no trivial quiero decir no usando muchos bloques fijos [como 2×2] o bucles [como 1×3 o 3×1] para formar una figura más grande).

    Aunque encontrar configuraciones “espectaculares” me resulta difícil.

    Sin embargo, usando un mundo de 5×5 celdas cerrado (como un plano cuadrado con frontera o como un toroide sin frontera) es fácil encontrar todas las configuraciones que llevan al siguiente corazón

    _*_*_
    *_*_*
    *___*
    _*_*_
    __*__

    pero éste siempre termina en un mundo vacío. (Es fácil porque sólo hay 2^25 = 33.554.432 estados).

    Por ejemplo, dado un estado inicial en el mundo 5×5 con frontera, el máximo número de pasos posibles para llegar a un corazón son 5 pasos (hay en 0, 1, 2, 3 y 4, pero no en 6 ni 7 ni 8 ni …). Además sólo hay 4 de estos estados iniciales quedando 2 por reflexión:

    01101 11011
    11011 10001
    01000 00101
    10111 01001
    10010 11010

    Así pues, en este “pequeño mundo” no hay ciclos que contengan el corazón indicado, pero si relajamos las reglas del juego de la vida y no usamos las originales de Conway, podemos buscar fácilmente en qué condiciones un corazón producirá un ciclo (puesto que sólo hace falta esperar a que se detenga o vuelva a aparecer el corazón), así, obtenemos un montón de situaciones en las que un corazón está presente en un ciclo (sólo puede ser en uno), tendríamos por ejemplo:

    1. si está viva, muere si tiene un número impar de celdas alrededor.
    2. si está muerta, nace si tiene 3, 5 o 7 celdas alrededor.

    Donde tenemos un ciclo de 3 estados y uno de ellos es nuestro corazón con un mundo toroidal (ver gif aquí).

    Claro que el estado inicial no tiene porqué ser el corazón. Hay configuraciones que tienen ciclos de 175 estados que pasan por el corazón, pero claro, no parece que luzcan mejor…

    En un mundo más general del juego de la vida debe ser posible crear espectaculares juegos artificiales de amorosas figuras (ej. dos caras de enamorados disparando besos estilo space ships), pero no me parecen fáciles de crear.

    En cualquier caso, nunca arriesgaría mi pellejo a regalar ningún San Valentín matemático a mi pareja.

    ;)

  5. josejuan | 23 de febrero de 2011 | 09:59

    Vótalo Thumb up 0

    Vaya, no pensé que encontraría algo similar en tan poco tiempo.

    Existe un lenguaje de programación llamado piet que hace “algo parecido”… curioso.

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.