Tutorial de graficación con iPython, Máxima y Matlab

En este corto tutorial se mostrarán las comandos más comunes recomendados para realizar la gráficas  de funciones con iPython.  Sin embargo se ilustran algunos comandos de programas como Máxima y Matlab.

Para más detalles sobre opciones adicionales de los comandos deberá consultar la ayuda de cada programa. Sin embargo les recomiendo los siguientes documentos que contienen información útil sobre el uso de dichos programas en la solución de ecuaciones diferenciales:

Maxima by example. Ch.3 Ordinary Differential Equation Tools by Edwin L. Woollett 

Ecuaciones diferenciales ordinarias con Maxima, por Gerardo Mario Ortigoza Capetillo.

Tutorial para resolver ecuaciones diferenciales usando Matlab.

Tutorial de graficación en python.

 

Si no desea instalar iPython en su computador, se sugiere usarlo en línea (en su navegador) desde la web: https://cloud.sagemath.com/

(Requiere subscripción al servicio, pero es gratis)

Graficación de funciones explícitas:

Graficar la función: y=\dfrac{x e^{-x}}{1-x^2}.

iPython:

La librería mas completa para graficar funciones es matplotlib.  Esta contiene  la función “plot()” y todo lo necesario para graficar funciones.

Partiremos del siguiente código:

python# Librerias necesarias
import matplotlib.pyplot as plt
import numpy as np
from __future__ import division
%matplotlib inline
# vector de variable independiene
x = np.linspace(-4,4,500)

# vector a graficar
y=x*np.exp(-x)/(1-x**2)

# comando para graficar
plt.plot(x,y)

Cuyo resultado es:

ejm1

NOTA: si la gráfica no se despliega en el navegador, anexe el comando “%matplotlib inline” (sin comillas) después de la definición de las librerías. Ver arriba.

Observe que para la función e^{-x} se usa la función de librería numpy, por esta razón se escribe como “np.exp(-x)” y que la operación de exponenciación “^” se escribe como “**”.

Si queremos poner título a la gráfica y cambiar los rangos de x y y, para una mejor visualización usamos los comandos:

plt.ylim(-10,10) plt.xlim(-2,2) # Poniendo titulo a graficapython
plt.title(r'Ejemplo grafica de $\frac{xe^{-x}}{1-x^2}$')

Resultado:

ejm2

Observe que el título de la gráfica admite sentencia latex (entre los signos “$”) para un mejor despliege de las fórmulas matemáticas.

Las  librerías necesarias también se pueden cargar de la siguiente manera:

# Librerias necesariaspython
from matplotlib.pyplot import * from numpy import *

De esta manera no será necesario anteceder los comandos de las librerías (como se hizo anteriormente) con “np” o “plt“.  El paquete “division” de la librería “__future__ ” citada arriba, se usa para extender las capacidades de la operación de división “/” en numpy, ya que ésta solo divide números enteros, entonces la operación 1/2 daría 0.  Al agregar el paquete “division” nos aseguramos que las operaciones de división den el resultado correcto 0.5.

 

Maxima

Lo primero que podemos aclarar es que Máxima denota las entradas de comando como (%in) y sus salidas como (%on), donde n será un número entero que corresponde al número de entrada/salida.  Esta notación también implica que dicha salida es guarda en una variable con su mismo nombre, es decir, la variable %o1 contiene la salida o resultado del comando que se ejecutó en la entrada %i1.  Si queremos hacer alguna operación con el resultado de un comando inmediatemente anterior, se usa simplemente la variable “%”.

Varios comandos en secuencia se separan mediante punto coma “;”, en cuyo caso Máxima desplegará el resultado de todos ellos. Si se separan por el símbolo “$” entonces no se desplegarán los resultados del comando que lo precede.

La secuencia de comandos para graficar la función anterior es:

y(x):=x*exp(-x)/(1-x^2); plot2d(y(x),[x,-2,2]);Maxima

Observe que el comando usado en este caso es plot2d().   Usted puede definir  previamente la función (como se hizo arriba) o puede escribirla en el argumento del comando plot2d o definir la expresión en una variable y, como y:x*exp(-x)/(1-x^2). (Observe la diferencia entre la asignación “:=” (para función) y “:” (para variable)).  El resultado del comando plot2d() es la gráfica de la función en una ventana nueva del programa.  Adicionamente, si usted quiere ver la gráfica en la misma ventana de comandos de Máxima, deberá usar el comando wxplot2d().

Si usted desea graficar varias funciones en una misma gráfica puede listar las funciones o expresiones entre corchetes “[]”, por ejemplo:

plot2d([sin(x),cos(x),exp(-x)],[x,-1,1],[y,-1,1])Maxima

Observe que adicionalmente usted también puede incluir el rango de la función para graficación como [y,-1,1].

Máxima cuenta con una interfaz intuitiva en la que usted podrá aplicar muchos tipos de comandos y no tendrá que memorizarlos.  Para más información, consulte el manual y las ayudas en la Web oficial de Máxima.

 

Matlab: La secuencia de comandos es:

x=-2:0.01:2; y=x.*exp(-x)./(1-x.^2); plot(x,y)Matlab

Observe que en Matlab, los operadores de multiplicación “*”, división “/” y exponenciación “^” deben ir precedidos de un punto “.”, lo que indica que dicha operación se realiza sobre cada uno de los elementos del vector.

 

Si queremos graficar familias de curvas en Python, usamos el código:

# Para graficar familias de curvaspython
x=linspace(-5,5,500) 
fig, ax = subplots() 
for C in range(-4,4,1): 
    y=C*exp(-x**2) 
    ax.plot(x,y,label="Para $C=%s$" %C) 
    xlim(-5,7) 
    legend(loc="best")

ejm3

Observe que se puede adicionar una etiqueta( “Para $C=%s$”) a cada gráfica y desplegar el valor (tipo string %s) de la variable C.

El despliegue de la etiqueta de cada gráfica lo realiza el comando legend() en la mejor (“best”) posición posible dentro de la figura.

 

Graficación de funciones implícitas:

iPython:

Una forma rápida para graficar funciones implícitas, en los que la variable “y” no está despejada, es usando el comando “contour()“.

# Graficacion de funciones implicitaspython
# definicion de la funcion a graficar
def f(x,y): return x**2/2-y**2-exp(-x*y) 
# vectores para x y y 
x=linspace(-10,10,500) 
y=linspace(-10,10,500) 
X, Y = meshgrid(x, y)                 # construccion de malla 
contour(X, Y, f(X, Y),[0],colors='b') # grafica

ejm4

Observe que la función a graficar debe escribirse como: f(x,y)=0.

 

Máxima:  La secuencia de comandos es:

load(implicit_plot)$Maxima
F(x,y):=x^2/2-y^2-exp(-x*y)$ 
implicit_plot(F(x,y),[x,-10,10],[y,-10,10]);

Observe que para usar el comando implicit_plot() de Máxima es necesario primero cargar la librería que lo contiene con el comando load().

 

Finalmente, les dejo el link de la secuencia de comandos que se usaron en iPython:

Sagemath: Tutorial de graficación en ipython

 

Adicionalmente pueden consultar esta presentación en la carpeta de recursos, con más información al respecto:

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s