Archivos de Categoría: Linux - Paginas 3

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 :-)

Nautilus Terminal En Mandriva

Hola, seguro que muchos/as de vosotros/as habréis leído algo sobre nautilus-terminal, una sencilla aplicación para Nautilus bajo Gnome con la cual podemos acceder a la terminal de forma rápida y sencilla desde cualquier ventana abierta de nuestro escritorio, al igual que se puede hacer con Dolphin, el navegador de escritorio por defecto de KDE.

Los usuarios de Ubuntu lo tienen muy fácil de instalar porque hay un repositorio para la aplicación. En Mandriva ahora también lo tenéis chupao :-D sólo hay que añadir los repositorios de MIB e instalar el paquete nautilus-terminal, así de sencillo ;-)

Cuando se haya instalado cerrad todas las ventanas del escritorio y desde la terminal escribid:

killall nautilus

nautilus -q


De esa forma lo tendréis funcionando sin necesidad de reiniciar la sesión.

Saludos :-)

Gpdftk Para Manipular Fácilmente tus PDF

Hola, he encontrado una aplicación verdaderamente sencilla y útil para manejar nuestros documentos en PDF, se llama Gpdftk y está desarrollada con el apoyo de Linex, la distribución linuxera extremeña. Me he enterado de ello en Blogdrake. Con Gpdftk podemos hacer las siguientes cosas con nuestros pdf:

  1. Comprimir / Descomprimir
  2. Ajustar permisos.
  3. Reparar archivos
  4. Dividir / Unir
  5. Extraer página.
  6. Borrar páginas
  7. Encriptar / Desencriptar
  8. Añadir Marca de agua
  9. Modificar orientación

Y todo ello con una interfaz gráfica sencilla y útil, basada en el lenguaje Gambas. Instrucciones de instalación:

En Mandriva:

Añade los repositorios de Blogdrake y ya lo tienes ;-) Para añadirlo visita la siguiente web:

En Ubuntu:

Tienes un instalador deb en el siguiente enlace.

Un pantallazo del programa en mi Mandriva:

Visto en:

Blogdrake

Saludos :-)

Page 3 of 3412345...102030...Last »