Matemáticas con Mathematica Práctica 4. Representaciones gráficas en el plano Jorge Otero González Instituto Tecnológico Superior de Huauchinango El comando Plot[ ] Uno de los aspectos más llamativos de Mathematica es su capacidad para crear fácilmente gráficos de extraordinaria complejidad. Manejando unos pocos comandos podrás hacer sorprendentes representaciones gráficas y animaciones en dos y en tres dimensiones. El comando que se utiliza para representar la gráfica de una función de una variable es Plot[funcion,{x,xmin,xmax},opciones]. Puedes representar varias funciones a la vez escribiéndolas todas en una lista Plot[{funcion1,funcion2,...},{x,xmin,xmax}]. Plot@x ^ 2, 8x, −1, 1<D H∗ usamos el comando sin ninguna opción ∗L Como puedes ver, el comando Plot[ ] representa la gráfica y proporciona la salida "- Graphics - ". Mathematica almacena en esa salida toda la información de la gráfica. Solamente para satisfacer tu curiosidad vamos a ver lo que Mathematica ha guardado de la gráfica anterior. InputForm@%D H∗ recuerda que "%" se refiere a la última salida ∗L Lo que Mathematica ha hecho es evaluar la función x2 en una serie de puntos y construir una poligonal "Line[{punto1,punto2,...}]" formada por los segmentos que unen los correspondientes puntos de la gráfica. Dichos segmentos son tan pequeños que lo que se aprecia a simple vista parece una curva suave. Al final aparecen una serie de opciones del comando Plot[ ] con sus valores por defecto. Es justamente su gran cantidad de opciones lo que proporciona versatilidad y potencia al comando Plot[ ]. Aquí las tienes todas. Options@PlotD Aunque son muchas, en la práctica es suficiente con conocer unas pocas. Fíjate en que las opciones son reglas de sustitución de la forma NombredeOpción Ø ValordeOpción y todas ellas tienen prefijado un valor por defecto. Si no especificas una determinada opción, Mathematica supone que quieres utilizar el valor por defecto de la misma. Por ejemplo, Mathematica presupone que no quieres enmarcar la gráfica "FrameØFalse" (puedes enmarcarla con "FrameØTrue") ni poner etiquetas a los ejes "AxesLabelØNone" (puedes ponerlas con "AxesLabelØ{"etiqueta eje X","etiqueta eje Y"}"). Los posibles valores de una opción debes buscarlos en la ayuda del programa. Cuando el valor de una opción es "Automatic" eso significa que se elige por un algoritmo interno. Vamos a ver las opciones del comando Plot[ ] que se usan con más frecuencia. F. Javier Pérez González Dpto. Análisis Matemático - Universidad de Granada 2 Representaciones gráficas en el plano. PlotRange Esta opción permite controlar el intervalo del eje de ordenadas donde se representará la función. Su valor por defecto es "PlotRangeØAutomatic" lo que indica que al hacer una representación gráfica, Mathematica representará las partes que considera "más interesantes'' de la misma. Si la función crece muy rápidamente Mathematica puede cortar la gráfica y no representar las partes donde la función toma valores muy grandes. Plot@Exp@x ^ 3D, 8x, −1.5, 1.5<D En esta gráfica Mathematica no ha representado todos los valores de la función. PlotRangeØAll es la forma de decirle a Mathematica que muestre el intervalo completo del eje de ordenadas donde toma valores la función. Plot@Exp@x ^ 3D, 8x, −1.5, 1.5<, PlotRange −> AllD; H∗ el ; suprime la salida − Graphics − ∗L Ahora están representados todos los valores que toma la función. Puedes apreciar que en la gráfica anterior Mathematica suprimió una parte "poco interesante" de la misma para poder mostrar mejor otras partes que consideró de "mayor interés". Observa también la notable diferencia de escalas en los ejes. Con PlotRangeØ{ymin,ymax} puedes controlar exactamente el rango de valores de la función que se representará en la gráfica. Plot@Exp@x ^ 3D, 8x, −1.5, 1.5<, PlotRange −> 80, 2.5<D; H∗ muestra los valores de la función mayores que 0 y menores que 2.5 ∗L Ahora vas a ver cómo con PlotRangeØ{{xmin,xmax},{ymin,ymax}} puedes mostrar detalles de una gráfica; algo parecido a "hacer zoom'' sobre ella. Plot@x ∗ Sin@1 ê xD, 8x, −1, 1<D; La parte más interesante de la gráfica está en los valores próximos a cero. Plot@x ∗ Sin@1 ê xD, 8x, −1, 1<, PlotRange −> 88−0.1, 0.1<, 8−0.1, 0.1<<D; PlotPoints Esta opción permite controlar el número de puntos que usa inicialmente el algoritmo interno de Mathematica para representar la gráfica. Su valor por defecto es "PlotPointsØ25". Cuando una función oscila mucho puede ser conveniente aumentar este número. Plot@x ∗ Sin@1 ê xD, 8x, −1, 1<, PlotRange −> 88−0.1, 0.1<, 8−0.1, 0.1<<, PlotPoints −> 150D; Puedes modificar el tamaño de una gráfica seleccionándola con el ratón y arrastrando uno cualquiera de los puntos de control. AspectRatio F. Javier Pérez González Dpto. Análisis Matemático - Universidad de Granada 3 Representaciones gráficas en el plano. Esta opción permite controlar la escala, es decir la razón "altura/anchura", con la que se representa la gráfica. Por defecto Mathematica elige, por razones de apariencia estéticas, la inversa de la razón aúrea "AspectRatioØ1/GoldenRatio" JGoldenRatio = 1+ 5 2 N. Esta opción es apropiada la mayoría de las veces, pero no lo es cuando queremos represen- tar ciertas curvas con ejes de simetría y queremos que se vean como realmente son. En la celda siguiente representamos juntas las gráficas de las funciones 1 - x2 y - 1 - x2 en el intervalo [-1,1] para obtener la circunferencia unidad en el plano. PlotB: 1 − x2 , − 1 − x2 >, 8x, −1, 1<F; Esto parece una elipse y no una circunferencia. Para que se vea una circunferencia basta escribir "AspectRatioØ Automatic" esto hace que Mathematica determine la razónn "altura/anchura'' teniendo en cuenta los valores de los puntos de la gráfica que se va a representar. Si dicha gráfica tiene igual anchura que altura esto hace que se ajuste la escala "altura/anchura'' igual a 1. Con "AspectRatioØ1" le pedimos a Mathematica que represente un gráfico con anchura y altura iguales sin tener en cuenta los valores de los puntos de la gráfica que se va a representar (prueba a representar una elipse con esa opción y parecerá una circunferencia). En algunos casos es indiferente usar "AspectRatioØAutomatic" o "AspectRatioØ1" pero en otros no. Como regla, es preferible usar "AspectRatioØAutomatic". PlotB:− 1 −x2 , 1 −x2 >, 8x, −1, 1<, AspectRatio −> AutomaticF; PlotStyle Esta opción permite, entre otras cosas, controlar el color y el grosor de las líneas de una gráfica. El color puedes especificarlo de la siguiente forma. PlotStyleØRGBColor[número1,número2,número3] Esto permite escoger un color en función de la cantidad de rojo (número1), verde (número2) y azul (número3), donde los números pueden tomar cualquier valor entre 0 y 1. También puedes especificar el color de la forma: PlotStyleØHue[arg] donde "arg'' puede tomar cualquier valor numérico. La función "Hue" es periódica con período 1, Hue[x]=Hue[x+1], y asigna a cada valor de su argumento un color desde "Hue[0]" que es rojo, siguiendo los colores del arco iris, anaranjado, amarillo, verde, azul, añil y violeta, y regresando al rojo "Hue[1]". El grosor se especifica con "Thickness[número]" donde el grosor viene expresado como una fracción de la anchura total de la gráfica. Por ejemplo, para que las líneas de la gráfica tengan un grosor del 2% de su anchura escribimos "PlotStyleØThickness[0.02]". Para especificar varios valores de la opción "PlotStyle" debemos escribirlas todas en una lista. Por ejemplo, para especificr el color y el grosor de las líneas escribimos "PlotStyleØ{Hue[0],Thickness[0.02]}". Plot@Cos@xD, 8x, 0, 2 Pi<, PlotStyle −> 8Thickness@0.01D, Hue@.64D<D; Si representas varias funciones a la vez puedes dar opciones para cada una de ellas escribiéndolas en una lista. Plot@8Cos@xD, Sin@xD<, 8x, 0, 2 Pi<, PlotStyle −> 8Thickness@0.01D, Thickness@0.02D<D; F. Javier Pérez González Dpto. Análisis Matemático - Universidad de Granada 4 Representaciones gráficas en el plano. Plot@8Cos@xD, Sin@xD<, 8x, 0, 2 Pi<, PlotStyle −> 88Thickness@0.01D, Hue@0D<, 8Thickness@0.02D, Hue@.14D<<D; El comando Show[ ] La ejecución de gráficas puede ser lenta y más si son tridimensionales. Para ahorrar tiempo es buena idea asignar nombre a las gráficas, lo que permite mostrarlos y modificarlos después con el comando Show[graphics,options] sin necesidad de generarlos de nuevo. Además con el comando Show[ ] puedes representar varias gráficas superpuestas. g1 = Plot@Sin@xD + Sin@2 xD, 8x, 0, 2 Pi<, PlotStyle −> 8Hue@0D, Thickness@.01D<D; g2 = Plot@Sin@xD, 8x, 0, 2 Pi<, PlotStyle −> 8Hue@0.25D, Thickness@.013D<D; g3 = Plot@Sin@xD + Sin@4 xD, 8x, 0, 2 Pi<, PlotStyle −> 8Hue@0.64D, Thickness@.017D<D; Show@g1, g2, g3D; Las opciones de Show[ ] son las mismas opciones de Graphics[ ]. Options@GraphicsD Las opciones que se especifican en el comando Show[ ] prevalecen sobre otras posibles opciones anteriores del mismo tipo. graf1 = Plot@Sin@xD, 8x, −Pi, Pi<, Ticks −> 88−2.5, −1.5, 1.5, 2.5<, Automatic<D; H∗ especificamos las marcas que queremos en el eje de abscisas y dejamos que Mathematica las represente a su manera en el eje de ordenadas ∗L Show@graf1, Ticks −> NoneD; H∗ quitamos las marcas en los dos ejes ∗L El comando Show[ ] no tiene opciones para controlar el color o el grosor de la línea de los gráficos que previamente has generado. Puedes conseguirlo de una forma indirecta como te indico a continuación. g4 = Show@g1, g2, g3D ê. 8Hue@x_D −> RGBColor@0, 0, 0D, Thickness@x_D −> Thickness@0.007D<; H∗ le decimos a Mathematica que sustituya los valores de Hue@D y de Thickness@D de cada gráfica por RGBColor@0,0,0D y Thickness@0.007D ∗L Show@g4D; En casos como el anterior lo que nos interesa es la última gráfica y no la primera. Podemos pedirle a Mathematica que no muestre una gráfica en pantalla. Para eso se usa la opción DisplayFunctionÆIdentity lo que nos obliga después a F. Javier Pérez González Dpto. Análisis Matemático - Universidad de Granada 5 Representaciones gráficas en el plano. poner DisplayFunctionÆ$DisplayFunction (que es la opción por defecto en los comandos gráficos) con lo que le decimos a Mathematica que muestre la gráfica en pantalla. Observa la diferencia. g4 = Show@g1, g2, g3, DisplayFunction −> IdentityD ê. 8Hue@x_D −> RGBColor@0, 0, 0D, Thickness@x_D −> Thickness@0.007D<; H∗ esta gráfica no se representa ∗L Show@g4, DisplayFunction −> $DisplayFunctionD; H∗ pero esta sí ∗L Animaciones gráficas Es muy fácil hacer animaciones gráficas con Mathematica para visualizar cómo evoluciona la gráfica de una función que depende de un parámetro. Por ejemplo, la función Sin[x + n] depende del parámetro n. Podemos representar su gráfica para distintos valores de n y con ello logramos una buena visualización de su evolución (que en este casó será una onda que se desplaza). Para que una animación tenga calidad es necesario que todos los gráficos individuales tengan el mismo tamaño, lo que se logra fijando el mismo intervalo en el eje de abscisas, {x,a,b}, y haciendo que se representen en el mismo intervalo del eje de ordenadas PlotRangeÆ{c,d}. Podemos también dar un color a cada gráfico en función del parámetro n lo que puede ser útil para identificar cada uno de ellos. Para ver la animación, cuando se hayan representado las gráficas selecciona una de ellas con el ratón y haz doble clic. En la esquina inferior izquierda de la pantalla aparecen unos botones que permiten controlar la velocidad de la animación. Para hacer una animación podemos usar el comando Table[ ]. Table@ Plot@Sin@x + nD, 8x, 0, 4 Pi<, PlotRange −> 8−1.1, 1.1<, PlotStyle −> Hue@nDD, 8n, 0, 2 Pi, Pi ê 10< D; H∗ observa la forma de escribir el código para que se lea mejor ∗L Ejercicio 1 Representa con el comando Plot[ ] juntas en una misma gráfica las funciones seno y coseno en el intervalo [-2p,2p]. Utiliza las opciones apropiadas para que una de las funciones se represente en azul y otra en rojo. Una tenga un grosor mayor que la otra. Una se represente a trazos y la otra de forma continua. Utiliza la opción "PlotLabel" para rotular la gráfica con "funciones seno y coseno". Utiliza "AxesLabel" para etiquetar los ejes con "X" e "Y". Pon color amarillo de fondo usando "Background". F. Javier Pérez González Dpto. Análisis Matemático - Universidad de Granada 6 Representaciones gráficas en el plano. Ejercicio 2 Representa en una animación gráfica las funciones x3 + a * x2 - 4 x + 1 en el intervalo {x,-2,2} dando valores al parámetro a desde -2 hasta 2 con incrementos de 0.2 unidades. Fija con PlotRange un intervalo de representación apropiado y establece con PlotStyle un color de línea para cada gráfica distinto según el valor del parámetro a. El comando ParametricPlot[ ] Una curva en el plano puede definirse por medio de una función gHtL = HxHtL, yHtLL donde xHtL, yHtL son funciones continuas definidas en un intervalo @a, bD. La curva así definida es el conjunto G = 8HxHtL, yHtL< : t œ @a, bD<. Se dice que dicha curva está dada en forma paramétrica. Esta es la forma más general de dar una curva en el plano. Observa que la gráfica de una función f : @a, bD Ø es la curva dada por las ecuaciones paramétricas gHtL = Ht, f HtLL para t œ @a, bD. Para representar gráficamente una curva dada en ecuaciones paramétricas se usa el comando ParametricPlot[{x[t],y[t]},{t,a,b}] Puedes ver las opciones que tiene este comando. Options@ParametricPlotD Aquí tienes algunos ejemplos. ParametricPlot@8Cos@tD, Sin@tD<, 8t, 0, 2 Pi<, AspectRatio −> AutomaticD; H∗ una circunferencia ∗L ParametricPlot @8Cos@3 tD, Sin@5 t + 3D<, 8t, 0, 2 Pi<, PlotStyle −> 8Hue@.25D, Thickness@.006D<D ; H∗ una curva de Lisajoux ∗L Para terminar, aquí tienes algunas curvas planas interesantes. Astroide. Es la curva trazada por un punto fijo de un círculo de radio r que rueda sin deslizar dentro de otro círculo fijo de radio 4r. Sus ecuaciones paramétricas son. ParametricPlot@8Cos@tD ^ 3, Sin@tD ^ 3<, 8t, 0, 2 Pi<, AspectRatio −> AutomaticD; Cardiode. Es la curva trazada por un punto fijo de un círculo de radio r que rueda sin deslizar alrededor de otro círculo fijo del mismo radio. Sus ecuaciones paramétricas son. ParametricPlot@H1 + Cos@tDL 8Cos@tD, Sin@tD<, 8t, 0, 2 Pi<, AspectRatio −> AutomaticD; F. Javier Pérez González Dpto. Análisis Matemático - Universidad de Granada Representaciones gráficas en el plano. 7 Lemniscata de Bernoulli. Es el lugar geométrico de los puntos del plano P, cuyo producto de distancias a dos puntos fijos F1 y F2 , llamados focos, verifica la igualdad » P - F1 » » P - F2 » = 1 4 À F1 - F2 »2 . En coordenadas cartesianas esta curva viene dada por la ecuación Ix2 + y2 M2 = x2 - y2 . Aquí tienes sus ecuaciones paramétricas. Cos@tD ParametricPlotB 1 + Sin@tD2 81, Sin@tD<, 8t, 0, 2 Pi<, AspectRatio −> AutomaticF; Espiral equiangular. También llamada espiral logarítmica. Es aquella espiral en la que el radio vector corta a la curva en un ángulo constante a. Sus ecuaciones paramétricas son. α = Pi ê 2 − 0.2; ParametricPlot@Exp@t ∗ Cot@αDD 8Cos@tD, Sin@tD<, 8t, 0, 4 Pi<, AspectRatio −> AutomaticD; Clear@αD Cicloide. También conocida como tautocrona o braquistocrona. Es la curva que describiría una chincheta clavada en una rueda que avanza girando sin deslizar. Sus ecuaciones paramétricas son. ParametricPlot@8t − Sin@tD, 1 − Cos@tD<, 8t, 0, 2 Pi<, AspectRatio −> AutomaticD; Ejercicio 3 Representa con "ParametricPlot[ ]" una elipse cuyo centro es el punto (1,2) y cuyos semiejes tienen longitudes 5 y 3. Usa las opciones que consideres más convenientes.