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:
¿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í:
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
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:
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:
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:
- La segunda opción que os traigo es la que genera esta ecuación:
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:
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:
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:
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
de la ecuación y el rango de valores de
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
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:
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í:
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.
¿Te ha gustado la entrada? Puedes invitarme a un café, Gauss te lo agradecerá 😉
[…] This post was mentioned on Twitter by gaussianos, jhonattangaona. jhonattangaona said: Las matemáticas románticas (III): Como todos evidentemente sabréis hoy es el Día de las floristerías, perfumería… http://bit.ly/fbHpHB […]
Información Bitacoras.com…
Valora en Bitacoras.com: No hay resumen disponible para esta anotación…
Que alegría ver a xkcd por aquí. Por si alguien quiere deleitarse con otras tiras, el original viene de http://xkcd.com/543/
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… Lee más »
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.
Hola como estais