Archivos de Categoría: Matemáticas

Dibujar Gráficas Con Lyx (LateX)

Hola :-) Desde hace un tiempo he estado mirando unos paquetes adicionales de LateX con los cuales podemos dibujar funciones matemáticas, figuras geométricas, circuitos electrónicos, esquemas, diagramas de flujo y muchas otras cosas con LateX.

El paquete principal se llama TikZ-PGF, con éste podemos dibujar infinidad de cosas. Luego hay un subpaquete del anterior llamado PgfPlots, que va más enfocado a facilitarnos aún más el código para dibujar funciones matemáticas en 2 y 3 dimensiones. Y además, también existe 0tro subpaquete de PGF llamado TikZ-3dplot que está dedicado exclusivamente a dibujos en 3 dimensiones.

Con los tres paquetes instalados podemos dibujar funciones matemáticas explícitas, en paramétricas, en coordenadas rectangulares, polares, esféricas, cilíndricas. También podemos dibujar funciones a partir de un fichero formado por una tabla de datos, la cual podemos haber obtenido a partir del software libre Gnuplot. También podemos dibujar funciones invocándolas con Gnuplot. Bueno y muchas cosas más, muchas.

La cuestión es que iba buscando algo así porque cuando pongo exámenes de matemáticas a veces debo poner gráficas de funciones y veo que es mucho mejor ponerla yo que sacarlas de por ahí, sobretodo para el temario de funciones entre 2º y 4º de la E.S.O, más 1º de Bachiller.

En fin, he de decir que PGF se encuentra en Ubuntu y Mandriva, aunque algo antiguas, mientras que las otras dos no se encuentran en los repositorios oficiales. Por ahora en Mandriva los he empaquetado y se pueden encontrar añadiendo los repositorios del MIB. En cuanto a Ubuntu, espero poder tenerlas pronto añadidas a mi repositorio de Launchpad, si eso ya lo notificaré por el blog.

Para los que estén interesados a instalarlos en Mandriva hay que instalar los siguientes paquetes:

tetex-pgfplots tetex-tikz-3dplot

Con es0 ya lo tenéis todo instalado. Bien, resulta que para utilizarlos en LyX hemos de escribir en código LateX lo que vayamos a dibujar, y para ello hay que cargar primero los paquetes. Para cargar paquetes en LyX es muy sencillo, debemos tener un fichero nuestro abierto previamente, luego en el menú de LyX nos dirigimos a Documento->Configuración->Preámbulo LateX y ahí pondremos los siguientes comandos:

Para PGF -> \usepackage{tikz}

Para PgfPlots -> \usepackage{pgfplots}

Para tikz-Plot3d-> \usepackage{tikz-3dplot}

Para cuando queramos escribir código en LateX con LyX es suficiente presionar el botón TEX y escribir dentro del recuadro rojo el código que queramos.

Ya he dicho que con estos paquetes podemos invocar directamente a Gnuplot para dibujar funciones, esto es muy útil, por ejemplo, para dibujar funciones discontinuas, como la función tangente. Cuando invoquemos a Gnuplot si queremos luego poder visionar o convertir a formato PDF nuestro documento deberemos modificar una opción de Lyx, os digo cóm0 hacerlo.

Hay que ir en el menú de LyX a Herramientas->Preferencias-> Gestión de archivos->Convertidores. De la lista que nos sale marcamos LaTeX (pdflatex) -> PDF (pdflatex) Donde pone Convertidor lo modificamos a lo siguiente:

pdflatex --shell-escape --file-line-error-style $$i

Seguidamente presionamos al botón "Modificar", después en "Aplicar", "Guardar", ya está. Todo esto he mirado en muchos sitios y no conseguía el comando, hasta que se me ocurrió probar con Geany y sonó la flauta :-D
Os dejo una imagen para vuestra ayuda ;-)

Estos pasos sirven también para Windows, aunque tanto en Windows con en Linux hay que tener instalado el programa Gnuplot.

Veamos un  ejemplo, para dibujar una parábola:

Pero si queréis más ejemplos tenéis mogollón de ellos en las siguientes webs:

Web Ejemplos TikZ-PGF

Web PGFPLOTS , los ejemplos están al final de la página.

En esas webs podréis apreciar el potencial de estos paquetes con LateX. Os dejo un enlace para descargaros toda la documentación oficial en formato PDF.

Bueno espero que haya gente que esto le sirva de ayuda para ampliar conocimientos en LateX.

Saludos :-)

Documental De Fractales

Hola :-) os dejo un documental para que aprendáis más sobre fractales. Me ha gustado mucho porque enseña didácticamente sobre la geometría fractal, bien documentado y explicado, con apariciones de Benoît Mandelbrot. Es muy útil para comprender la geometría fractal en la naturaleza. Muchas aplicaciones a la vida cotidiana: naturaleza, arquitectura, medicina, bluetooth, móviles, costura, cine, etc, etc.
Sin más os dejo con el documental, espero os guste, y os ayude a comprender la importancia de las matemáticas en el ser humano y lo que le rodea.




También os he dejado lo mismo en forma de podcast en la barra lateral del blog. He llegado a ello gracias a:

Saludos :-)

Usando Theano (Python Con Matemáticas)

Hola, hace un par de semanas me encontré con unas librerías matemáticas basadas en Python llamadasTheano, en honor a la mujer de Pitágoras. Me parecieron interesantes y las empaqueté para Mandriva; están disponibles en MIB, por si a alguien le interesa. Con ellas podemos definir, evaluar y optimizar expresiones matemáticas que involucren arrays multidimensionales de forma eficiente.

Lo cierto es que viene muy bien para definir funciones matemáticas de cualquier dimensión, pudiendo especificar los parámetros de las funciones. Otra característica que he encontrado muy interesante es que calcula las derivadas de las funciones con un código sencillo y claro.
Destacar que estas librerías son totalmente compatibles con Numpy, Scipy y las he usado sin problemas con Mathplotlib para dibujar las gráficas de funciones.
Tienen una característica, la cual no he utilizado aún, y es que si tienes una tarjeta Nvidia con soporte Cuda puedes obtener una mayor eficiencia en cálculos grandes, pero esto poco a poco ;-)
Bien, para que veáis cómo se usan con un ejemplo un poco más elaborado que los que vienen en su documentación he realizado un pequeño programa que dibuja la función logística y su recta tangente en un punto dado, para ello he usado Mathplotlib, de esa forma podéis aprender a dibujar funciones de forma sencilla, con soporte LateX en las figuras, creación de leyendas y guardado de las imágenes en formato .png. El código es el siguiente:

#!/usr/bin/python

from matplotlib import rc
from pylab import *
from theano import *
import theano.tensor as T
import numpy

rc('text', usetex=True)
rc('font', family='serif')

x = T.fvector('x')
x1 = T.fscalar('x1')
y = 1/(1 + T.exp(-x))
y1 = 1/(1 + T.exp(-x1))
logistic = function([x], y)
logistic1 = function([x1], y1)
grady = T.grad(y1, x1)
derivada = function([x1], grady)

a = float(input('Introduce el extremo izqdo. \n'))
b = float(input('Introduce el extremo drcho. \n'))
particion = float(input('Introduce la longitud de particion del intervalo. \n'))
pderiv = float(input('Introduce el punto donde hallar su recta tangente. \n'))

xval = arange(a,b,particion, dtype='float32')
z,w,w1=T.fscalars('z', 'w', 'w1')
rectatg2 = (x-z)*w+w1
rectatg3 = function([x, Param(z, default=pderiv), Param(w, default=derivada(pderiv)), Param(w1, default=logistic1(pderiv))], rectatg2)

figure(1)

plot(xval, logistic(xval), linewidth=1.5, color='r')
plot(xval, rectatg3(xval), linewidth=1.0, color='g')
ylim([0,1])

xlabel(r'\textbf{Abcisa}', fontsize=12)
ylabel(r'\textit{Ordenada}',fontsize=12)
title(r"Funcion logistica f(x) = $\displaystyle\frac{1}{1+e^{-x}}$", fontsize=12, color='r')
legend(('Funcion Logistica', 'Recta Tangente'),'upper left', shadow=True, fancybox=True)

leg = gca().get_legend()
ltext  = leg.get_texts()
llines = leg.get_lines()
frame  = leg.get_frame()

frame.set_facecolor('0.80')
setp(ltext, fontsize='small')
setp(llines, linewidth=1.5)

grid(True)
axhline(linewidth=1.5, color='b')
axvline(linewidth=1.5, color='b')

figure(2)

plot(xval, logistic(xval), 'k.')
plot(xval, rectatg3(xval), linewidth=1.0, color='g')
ylim([0,1])
legend(('Funcion Logistica', 'Recta Tangente'),'upper left', shadow=True, fancybox=True)
leg = gca().get_legend()
ltext  = leg.get_texts()
llines = leg.get_lines()
frame  = leg.get_frame()

frame.set_facecolor('0.80')
setp(ltext, fontsize='small')
setp(llines, linewidth=1.5)

xlabel(r'\textbf{Abcisa}', fontsize=12)
ylabel(r'\textit{Ordenada}',fontsize=12)
title(r"Funcion logistica f(x) = $\displaystyle\frac{1}{1+e^{-x}}$", fontsize=12, color='r')
grid(True)
axhline(linewidth=1.5, color='r')
axvline(linewidth=1.5, color='r')

figure(1)
savefig('fig1')
figure(2)
savefig('fig2')

show()

Y el resultado del código es éste:


Nota: En esa web encontraréis un enlace de descarga de la documentación en PDF.

Saludos :-)

GSL Shell


Hola, recientemente he descubierto una aplicación matemática muy interesante, se llama GSL Shell. La aplicación tiene como objetivo poder trabajar con gran parte de las librerías matemáticas bajo el lenguaje Lua.  La aplicación actúa bajo terminal por comandos, para ejecutarla basta abrir terminal y escribir:

gsl-shell

Entraremos directamente a una shell en la cual podremos ejecutar instrucciones o funciones definidas por nosotros. Aunque no sepáis Lua da igual, ya que la nomenclatura de ejecución de instrucciones y funciones es casi idéntica a Python, e incluso la shell del programa es parecida a la shell de Python, e incluso se comporta mucho mejor.

Otra forma más cómoda de trabajar con la aplicación es crear nuestros programas mediante ficheros de texto que lleven en su nombre la extensión .lua. Después es suficiente con ejecutar el gsl-shell desde la terminal y ejecutar nuestros programas con el comando dofile. Pongamos como ejemplo que hemos creado un fichero con el nombre splines.lua y vamos a ejecutarlo, pues haremos lo siguiente:

gsl-shell

dofile('splines.lua')

Yo he optado por escribir mis programas con Geany, y luego ejecutarlos desde Geany dentro de la terminal empotrada que nos facilita Geany, de esa forma lo tenemos todo integrado en una misma ventana, ganando eficiencia. En la imagen que adjunto lo podéis apreciar con mayor claridad.

Una característica interesante de GSL-Shell es que nos permite representar fácilmente funciones en 3 dimensiones. Aunque lo más interesante es que podemos usar GSL sin tener que programar con C/C++, evitando así los incómodos errores de compilación o el trabajar con punteros, y ello se debe a que nuestros programas en GSL-Shell se ejecutan y compilan a la vez, igual que hacemos en Python; desde luego es un punto muy a favor del programa.

Desde luego el creador Francesco Abatte ha hecho un trabajo excelente. Recordemos que las librerías GSL son unas librerías matemáticas muy completas y poderosas escritas en C y compatibles  con C++, las cuales nos permiten hacer estudios matemáticos rigurosos. Son una portación de las librerías Lapack escritas en Fortran, y que sólo tienen algunas carencias para cálculos muy grandes, como el cálculo de sistemas lineales con una cantidad grande de ecuaciones y variables. Aun así nos permiten hacer estudios científicos de nivel universitario y post-universitarios.

Con GSL-Shell tenemos gran parte de las GSL y trabajando de forma que sólo nos centramos en lo que queremos hacer sin tener grandes contratiempos de programación que tenemos en C/C++. En definitva, una alternativa más libre para el trabajo científico.

Os dejo todos los enlaces de interés al final del artículo.

Deciros que está disponible para Mandriva 2010.1/2010.2 en los repositorios de MIB, ya que lo hemos empaquetado entre yo y la inestimable ayuda de Dago, colaborador y fundador de MIB, sin el cual no se si habría salido. ¡Gracias Dago!

Saludos :-)

QtOctave 0.10.1 En Mandriva

Hola, hace unos días salió este magnífico programa basado en las librerías QT. Para el que todavía no lo sepa QtOctave es un programa que nos permite trabajar con Octave mediante una interfaz gráfica, al estilo de Matlab; de esa forma nos es más sencillo realizar nuestras tareas.

El programa cuenta con la típica ventana de entrada de datos, también tenemos una ventana para editar, compilar y ejecutar nuestros programas. Además cuenta con un acceso directo a la ayuda de Octave, y una ventana desde la cual podemos instalar y actualizar los códigos de terceros realizados en sourceforge, y así tener una mayor cantidad de herramientasdisponibles.

En la barra de herramientas contamos con accesos directos a cuadros de diálogos mediante los cuales podemos realizar cómodamente las tareas más usadas en Octave: integrales, derivadas, matrices, dibujar gráficas de funciones, etc.

Ciertamente es un programa muy completo y eficiente creado por el español Pedro L. Lucas. Desgraciadamente la comunidad linuxera no valora en su cierta medida programas como éste, pocas veces aparecen éstos programas mentados en webs/blogs/foros de corte Linux; algo muy errado desde mi forma de pensar.

Actualmente, y gracias a la ayuda de su desarrollador Pedro he podido empaquetarlo para Mandriva 2010.1/2010.2, para que todo el mundo tenga acceso al programa. Para instalarlo tan sólo es necesario añadir los repositorios de MIB e instalarlo, o actualizarlo si ya lo tenías instalado.

Para los usuarios de Ubuntu espero tenerlo añadido a mi repositorio de Launchpad en éste próximo fin de semana, ya que por motivos laborales me es imposible tenerlo antes.

Saludos :-)

Page 1 of 1712345...10...Last »