#Importamos librerias de matplotlib
from pylab import *
#Se define la granuladidad de las celdas (que tan pequenias son las celdas)
#Maximo y minimo del eje x
xmax = 5.0
xmin = -xmax
#Cuantos puntos se buscan, por eje x o y
NX = 15
NY = 15
#Maximo y minimo del eje y
ymax = 15
ymin = -ymax
#Se crea la red y se calculan los componentes del vector
x = linspace(xmin, xmax, NX)
y = linspace(ymin, ymax, NY)
#Con meshgrid creamos 2 redes donde \'x\' y \'y\' contiennen las coordenadas de \'x\' y \'y\' por cada punto.
X, Y = meshgrid(x, y)
#Estas son las ecuaciones diferenciales, que son sustituidos por sus respectivos valores donde
# es para x y By es para y
Bx = -X-Y
By = 2*X+Y
figure()
#Llamamos quiver de pylab, para hacer pintar nuestro campo vectorial en 2-D el cual lo llamamos QP
QP = quiver(X,Y,Bx,By)
#quiverkey agrega una llave el cual mostrarala escala en la que sera mostrado el vector a pintar
#Donde toma como primer argumento QP, que es lo que se va a pintar, el segundo y tercer argumentos
#dan la posicion de la llave en la direccion horizontal y vertical desde la parte de abajo hasta la esquina
#derecha como fracciones del tamanio a pintar. El cuarto y quinto argumento son el tamanio del vector
#y de las etiquetas. Como argumento final es la posicion de la etiqueta donde
# \'N\' es arriba
# \'S\' es abajo
# \'W\' es izquierda
# \'E\' es derecha
quiverkey(QP, 0.85, 1.05, 1.0, \'1 mT\', labelpos=\'N\')
dx = (xmax - xmin)/(NX - 1)
dy = (ymax - ymin)/(NY -1)
#axis es usado para colocar a la izquierda, derecha, abajo y arriba los limites de las
#cruces el cual ira en el orden antes mencionado
axis([xmin-dx, xmax+dx, ymin-dy, ymax+dy])
title(\'Campos Vectoriales\')
xlabel(\'x\')
ylabel(\'y\')
show()