Introducción
Hace ya bastante tiempo os hablaba de Romantic Mathematics en la entrada titulada Las matemáticas romanticas. En este sitio nos comentan que los sentimientos, y concretamente el amor, son de las pocas cosas de nuestra vida en las que la influencia de las matemáticas no es muy grande. No se puede explicar matemáticamente el amor, pero sí podemos demostrarlo utilizando las matemáticas. Según el autor de la página, demostrar el amor mediante, por ejemplo, un poema, está ya muy visto y generalmente no impresiona demasiado. Por eso sugiere hacerlo con matemáticas.
¿Qué mejor forma de demostrar nuestro amor entregando nuestro corazón? ¿Entregamos entonces un dibujo para ello? Demasiado imperfecto. Mejor que un programa de ordenador lo haga por nosotros, ya que así evitamos los errores (sabemos que no siempre es así, pero para el caso que nos ocupa nos sirve). Vamos a ver cómo el programa Mathematica nos puede ayudar a ello.
¡Demostremos nuestro amor!
Amor en 2-D
En el artículo de Gaussianos que enlazo en la introducción os enseñé a dibujar un corazón en dos dimensiones solapando dos curvas. Vamos a recordarlo y a ampliarlo un poquito.
Vamos a dibujar un corazón solapando las siguientes curvas, que son las que vamos a utilizar en todo este apartado:
(parte del dibujo contenida en el semiplano superior)
(parte del dibujo contenida en el semiplano inferior)
Para representarlas en Mathematica introducimos el siguiente código:
f[x_]:=Sqrt[1-(Abs[x]-1)^2];
g[x_]:=ArcCos[1-Abs[x]]-Pi;
Plot[{f[x],g[x]},{x,-2,2},AspectRatio->Automatic]
El resultado es el siguiente:
Queda bonito…pero se puede mejorar. ¿Qué mejor que un corazón rojo? Y mejor con un trazo más ancho…y si se pudieran quitar los ejes sería perfecto. Ahí va:
Plot[{f[x],g[x]},{x,-2,2},AspectRatio->Automatic,PlotStyle-> {{RGBColor[1,0,0],Thickness[0.05]},{RGBColor[1,0,0],Thickness[0.05]}},Axes->False]
Cuyo resultado es el siguiente:
Cambiando los valores de la opción Thickness podemos variar la anchura del trazo.
Pero podríamos pedir más cosas. Cualquiera puede dibujar un corazón más o menos bien hecho y colorearlo entero de rojo (o de cualquier otro color). ¿Podemos nosotros? Pues claro que sí:
< < Graphics`FilledPlot`
(para introducirlo en Mathematica quitad los espacios)
FilledPlot[{f[x],g[x]},{x,-2,2},Fills->{{{1, 2},RGBColor[1,0,0]}},Curves->None,AspectRatio->Automatic,Axes->False]
El resultado gráfico es el siguiente:
¿A que es bonito? Pues aún hay más.
Amor en 3-D
Hemos dicho que todo el mundo puede dibujar un corazón en dos dimensiones más o menos decente y colorearlo de rojo, aunque hemos visto que con Mathematica el dibujo puede quedarnos mucho mejor. ¿Y si queremos dibujarlo en tres dimensiones? Parece más complicado. De hecho posiblemente a mucha gente le costaría mucho que su dibujo quedara mínimamente decente. Con Mathematica también podemos demostrar nuestro amor en 3-D. Además os voy a dar dos formas:
- Vamos a representar la superficie cuya ecuación implícita es:
Cargamos el paquete ContourPlot3D:
< < Graphics`ContourPlot3D`
(quitadle los espacios)Y dibujamos el corazón:
ContourPlot3D[(x^2+9/4 y^2+z^2-1)^3-x^2 z^3-9/80 y^2 z^3,{x,-3,3},{y,-3,3}, {z,-3,3},MaxRecursion->3,ViewPoint->{2.032,2.290,1.294},Axes->True,AxesLabel->{«Eje X», «Eje Y»,»Eje Z»}]
Obtenemos lo siguiente:
Sí, ya lo sé, en rojo queda mucho mejor. Y sin ejes. Y si la caja. Vamos a ello:
ContourPlot3D[(x^2+9/4 y^2+z^2-1)^3-x^2 z^3-9/80 y^2 z^3,{x,-3,3},{y,-3,3},{z,-3,3},MaxRecursion->3,ViewPoint->{1,2.5,1}, Axes->False,LightSources->{{{0,0,1},RGBColor[1,0,0]}},Boxed->False]
Aquí lo tenemos:
- La segunda opción es representar la superficie cuya ecuación implícita es:
En este caso vamos a darlo directamente en rojo, sin ejes y sin caja. Para ello debemos tener ya cargado el paquete ContourPlot3D y ejecutar la siguiente orden en Mathematica:
ContourPlot3D[(2 x^2+y^2+z^2-1)^3-1/10 x^2 z^3-y^2 z^3,{x,-3,3},{y,-3,3},{z,-3,3},MaxRecursion->3,ViewPoint->{2.5,1,1}, Axes->False,LightSources->{{{0,0,1},RGBColor[1,0,0]}},Boxed->False]
Obteniendo así el corazón buscado:
Conclusión
Como podéis ver hemos conseguido nuestro objetivo: hemos conseguido que las matemáticas nos ayuden a demostrar nuestro amor a alguien. Por tanto podemos decir que hay funciones y ecuaciones que representar el amor, que lo llevan dentro, y que nos sirven para que mostremos el nuestro por alguien. No soy el único que lo piensa. En esta sección de Romantic Mathematics podéis ver las representaciones que aparecen en esta entrada y alguna más. Alvy, de Microsiervos, también piensa como yo. La gente de Neatorama tuvo mucho que ver en ello al hacer camisetas en las que el motivo principal es:
Ellos aman las matemáticas. Yo también, y además las utilizo para demostrar mi amor de una manera original, ¿verdad?
¿Te ha gustado la entrada? Puedes invitarme a un café, Gauss te lo agradecerá 😉
Información Bitacoras.com…
Si lo deseas, puedes hacer click para valorar este post en Bitacoras.com. Gracias….
Mi novia utiliza matematica, pero yo no se manejarlo, ¿alguien puede traducirlo para que se lo pase? Gracias
Quería decir matlab… alguien puede traducir el codigo a matlab?
Buena entrada. Siempre me pareció muy curiosa la curva cardioide. Ya sé qué darle a mi profesor de matemáticas por su santo ^^.
Por otra parte, ¿puedo pediros que me echéis una mano? Tengo el Mathematica 6.0.3 y la representación 3D me da problemas (salen tres figuras concéntricas, que se acaban cortando con los límites de la representación).
¿qué versión usáis vosotros?
¿sabéis qué podría hacer para solucionar el problema? (lo he usado poco, así que no sé mucho acerca de él)
Un saludo
«Yo también, y además las utilizo para «demostrar» mi amor de una manera original, ¿verdad?»
jejejeje, Muy Buena «demostracion»!!! (en ambos sentidos)
Hola, quiero plotear el corazón tridimensional con winplot (no tengo mathematica) alguién me podría ayudar. No tengo ni idea del programa, pero en el enlace a Romantic Mathematics dicen que lo plotearon ahí. Gracias.
Muy bonito! Esto me recuerda lo del Ying Yang matemático.
Por cierto, Zeros si te fijas, esta no es una cardioide (la cual es bastante fácil de definir de manera polar), sino que es una curva que se forma uniendo dos funciones cartesianas.
Es más, la cardioide se parece mucho menos a un «corazón» que esta curva. Ah! y es bien divertido ver cómo se construye
No sé mucho de Mathematica, pero quizás después intente hacerlo en Maple y les muestre mis resultados.
Saludos.
De Matlab no tengo mucha idea. Puede que mi amigo Juanjo, si lee esto, os pueda echar una mano.
Sobre Winplot tampoco sé nada. A ver si alguien nos puede iluminar.
Bueno, lo prometido es deuda, y aunque la verdad no prometí nada, aquí les pongo algunas capturas de lo que hice en maple basándome en lo de este artículo: Corazón 2D Corazón 3D 1 Corazón 3D 2 Corazón 3D 3 Las últimas 3 son el mismo ploteo sólo que le hice ajustes manualmente con las opciones de maple. Por ese motivo, aunque se ven bastante distintos, el comando es el mismo y con los mismos parámetros. Al parecer Maple no es tan bueno como Mathematica con los ploteos de superfices. Como ven, yo tengo que indicarle cuántos puntos tendrá el… Lee más »
[…] Las matemáticas románticasgaussianos.com/las-matematicas-romanticas-ii/ por Wolvington hace pocos segundos […]
Aqui os dejo como hacerlo con Maple (yo lo he probado con Maple 11)
with(plots):
implicitplot3d(funcion, x=-1.5..1.5, y=-1.5..1.5, z=-1.5..1.5,numpoints=50000,color=red);
Muy chulo¡
Ah, en Mathematica, al menos en la version 6 para plotear necesitas poner la ecuación en implicitas, poniendo en el primer argumento un ==0. Además el Light Sources no tira. Asi:
ContourPlot3D[(x^2+9/4 y^2+z^2-1)^3-x^2 z^3-9/80 y^2 z^3==0,{x,-3,3},{y,-3,3},{z,-3,3},MaxRecursion->10,ViewPoint->{1,2.5,1}, Color->RGBColor[1,0,0],Axes->False,Boxed->False]
Qué bonito… la lástima es que si se lo enseño al afortunado que vive conmigo, no lo va a entender porque él no es matemático…
Muchas gracias, Rous, ahora ya lo representa bien.
Samy, en cuanto a lo de cardioide, creí que era esta curva la que se llamaba cardioide (por parecerse a un corazón). Cosas de haber dejado el dibujo técnico… 😛
Ey, yo también quiero el código en Matlab, nadie me puede ayudar?
[…] 1 en Las matemáticas románticas (II) […]
@ Rous: Lo que señalas es bastante parecido a lo que mostré yo en mi comentario anterior, no obstante, te sugiero que veas cómo queda con la opción scaling=constrained, pues así como lo dices se ve algo desproporcionado (se ve gordito, para ser preciso). Para los que no sepan, esta opción hace que la proporción entre las unidades de los ejes X,Y e Z sea 1:1:1. @ NaaN: Estoy seguro de que no hay que ser matemático para entenderlo. Yo mismo no lo soy (de hecho estudio algo totalmente distinto) y como me gusta, averiguo más o menos de qué… Lee más »
[…] tipo se reproduce como las setas. Algunos, como Gaussianos, se han adelantado y ya lo publicaron hace algunos días, aunque ya le habían dedicado un post en ¡octubre de 2006! (Y a mi me parece que llevo mucho […]
[…] Francisco Sandoval in General. trackback Aprovechando que justo en este día rebice el post sobre matemáticas románticas, y luego de leer los comentarios adjuntos al mismo, trate de realizar las gráficas de los […]
Hola, el post es muy interesante. Como aporte, les dejo el código para graficar en matlab, por ahora solo hice la parte en 2D, espero luego poder agregar la parte 3D y de fractales del post en ingles. El link es:
http://fralbe.wordpress.com/2009/02/14/matematicas-romanticas-con-matlab/
Saludos cordiales!!!
Ñero estan cheveres todos los codigos voy a copiar y hacerlos correr, d seguro enamora a mi compañera de clase atractiva y bien pilas de mi clase.
Aquí les dejo el código en Matlab:
x=[-2:0.01:2];
f=sqrt(1-(abs(x)-1).^2);
g=acos(1-abs(x))-pi;
plot(x,f,’r’,x,g,’r’)
HOLA HOLA, NO SE Q VERSION DE MATHEMATICA MANEJES, PERO LA QUE YO MANEJO NO ACEPTA EL CODIGO QUE TU PROPONES, UTILIZO LA 6.0 Y AQUÍ RE UTILIZA REGIONPLOT3D, Y LIGHTSOURCES SE UTILIZA COMO LIGHTING, Y EL CODIGO MARCA OTRO ERROR Q NO RECUERDO, PERO INSISTO CREO Q ES POR LA VERSION QUE MANEJAMOS RegionPlot3D[(2 x^2 + y^2 + z^2 – 1)^3 – 1/10 x^2 z^3 – y^2 z^3, {x, -2, 2}, {y, -2, 2}, {z, -2, 2}, MaxRecursion -> 3, ViewPoint -> {1, 2.5, 1}, Axes -> True, Lighting -> Automatic, Mesh -> None, AxesLabel -> {x, y, z},… Lee más »
Citlalli, utilizo la versión 5 de Mathematica. Posiblemente en la 6 haya habido alguna que otra modificación, pero te aseguro que en la 5 funcionan los códigos que hay en el post :).
oie y no te ha surgido la curiosidad de calcular su volumen???
digo es q necesito sacarlo y no puedo :S con integrales multiples, sabes hacerlo?
[…] superficies en tres dimensiones Imprime los artículos de Gaussianos Las matemáticas románticas (II) Cuidado con algunos […]
[…] Vía| gaussianos […]
Buenas gente.
oigan como ven la ecuación del corazon en tres dimenciones es de forma implicita, pero noy hay alguna forma de ponela todo en fuencion de Z
pues esta graficadora no acepta ecuaciones de forma implicita
http://www.fooplot.com/index3d.php?
yo lo hice en matlab, es sumamente sencillo (2-D) se usa la funcion ezplot(fun,[xmin xmax]), ya que es en 2-D la fun solo se introduce en fun de x y no se debe iguar a nada es, despues de introduce hold on y se reutiliza el comando ezplot de nuevo para graficar la otra parte del corazon. Si se desea hacer con movimiento se usa un ciclo infinito while 1, no se si me entiendan pero si estan relacionados con matlab les servira. suerte!!!!
clc
clear all
close all
x=-2;
while 1
y=(1-(abs(x)-1)^2)^(1/2);
t=acos(1-abs(x))-pi;
figure(1)
plot(x,y,’r<') hold on figure(1) plot(x,t,'r<') hold on x=x+0.05; axis([-3 3 -4 2]) if x>2.1
break
end
end
[…] Las matemáticas románticas (II) […]
[…] POr si alguien quiere, puede consultar la lectura del artículo “las matemáticas románticas“ Esta entrada fue publicada en General. Guarda el enlace permanente. ← Te echo […]
hola, este … como encontraron esa funcion? D:
Pues si te digo la verdad no sé cómo la encontraron. Yo la tomé de una página donde aparecía 🙂
muchas gracias samy…me sivio al 100% en maple 12 y se ve muy bonito 😀
Intento hacerlo como una animación, donde se achique y se agrande, pero todo lo que se me ha ocurrido ha fallado, alguna idea?
Ahora mismo ni idea Alexander, pero es interesante lo que intentas hacer. Estaría bien que si consigues hacerlo nos lo dijeras :).
si lo logro, avisaré 😀
Bueno, logré hacer que aparezca y desaparezca pero me sale de muy mala calidad. Lo que hice fue lo siguiente, tomando la ecuación: ((x^2+9/4*y^2+z^2-1)^3-x^2*z^3-9/80*y^2*z^3)=0 , y cambie ese «1» por un abs(sin(w)), de modo que varíe entre 0 y 1, y w una cuarta variable que es la que hace la animación, por lo que queda así: (x^2+9/4*y^2+z^2-abs(sin(w)))^3-x^2*z^3+9/80*y^2*z^3 = 0 , de esta forma cuando w = 0 + k*pi el corazón no está y en (2*k-1)*pi/2 está el corazón completo. No tengo mathematica asique lo hice en maple, mi comando quedo así: plots[:-animate]( ‘plots[:-implicitplot3d]’, [(x^2+9/4*y^2+z^2-abs(sin(w)))^3-x^2*z^3+9/80*y^2*z^3 = 0, x =… Lee más »
Acabo de descubrir el comando Animate de Mathematica, que funciona de forma parecida a lo que comentas, Alexander.
[…] cómo no, algunas de las que podemos admirar en Las matemáticas románticas (II), donde vimos hasta corazones en […]
bueno que lindo corazon
OOOOOOOOOOO como se hace ese corazòn de bonito
[…] Con ello podemos dibujar una ciloide, como en la imagen anterior, o, por qué no, un corazón (como uno que vimos en este post): […]
Hasta cupido usa las matemáticas!
%set up mesh
n=100;
x=linspace(-2,2,n);
y=linspace(-2,2,n);
z=linspace(-2,2,n);
[X,Y,Z]=ndgrid(x,y,z);
%Compute function at every point in mesh
F = ( X.^2+10/4.*Y.^2+Z.^2-1).^3-X.^2.*(3/2).*Z.^3-10/(80).*Y.^2.*Z.^3;
%generate plot
f1 = figure;
isosurface(F,0)
view([-67.5 2]);
%diviertanse con los colores si lo quieren rojo solo cambien la palabra hsv que esta abajo por flag
colormap hsv %copper, cool, hot, pink, flag, bone, hsv
%set(findobj(‘Type’,’patch’),’FaceColor’,[.31 .4 .58])
light(‘Parent’,gca,…
‘Position’,[16.3 -103.1 -384.12]);
se me olvido este es el codigo en matlab
[…] Y si quieres lucirte y darle diferentes tipos de funciones de corazones, pues puedes investigar más y diseñar hasta un corazón hecho en 3D y en fractal. […]
https://www.youtube.com/watch?v=Oh2YGYxVcik
que buen post
Me encanta Miguel Ángel. Acabo de verlo en Neotrie también 🙂 http://www2.ual.es/neotrie/julias-parametric-heart-surface-equation