Sunday, December 27, 2009

Streamlines con MatPlotLib

Durante las vacaciones de navidad tuve que hacer un programa para resolver la ecuación de Laplace en 2D en un rectangulo con unas determinadas condiciones de contorno.
Hice el programa en C, pero los gráficos de las streamlines los hice con MatPlotLib.
Este es el script de Python que genera las streamlines:
# -*- coding: iso-8859-15
# grafico.py
import sys
from numpy import * 
from pylab import load  
import matplotlib.pyplot as plt
if len(sys.argv) >= 1:
psi = load(sys.argv[1])
cs = plt.contour(psi,20)
plt.clabel(cs)
plt.xlabel("y/h")
plt.ylabel("x/h")
plt.show()
else:
print "Este programa necesita la ruta del fichero que contiene la matriz psi"

Para ejecutarlo basta con llamar al programa pasándole como parámetro la ruta del fichero donde está la matriz. En este caso las entradas de la matriz están separadas por un espacio. Leyendo la ayuda de load se puede ver cómo usar otros delimitadores.

Lo ejecuté desde iPython:
$ ipython
Python 2.5.2 (r252:60911, Dic 20 2009, 23:16:55) 
Type "copyright", "credits" or "license" for more information.

IPython 0.8.4 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object'. ?object also works, ?? prints more.

In [1]: run ~/grafico.py 'rutaFicheroMatriz'
y este es el resultado:

Para poder usarlo, aparte de Python, hay que instalarse los modulos: numpy, pylab y matplotlib (todo está en los repositorios)

No comments:

Post a Comment