Atención, este blog está alojado en Blogspot. Es recomendable tomar las debidas precauciones (como usar un bloqueador de Javascript).

domingo, 7 de noviembre de 2010

Manipuladores algebraicos

Todavía hoy en día, cuando se necesita resolver un problema matemático se suele utilizar papel, lápiz y una goma de borrar, pero los ordenadores facilitan la realización de ciertas operaciones matemáticas mecánicas y repetitivas, para las que no hace falta pensar estrategias, sin dificultad y con precisión, de un modo que nuestro cerebro, tan hábil para otras tareas, no puede realizar tan fácilmente.

Los manipuladores algebraicos o simbólicos son programas de ordenador que permiten tratar con objetos matemáticos más generales que los números. Mathomatic y wxMaxima son dos programas libres que permiten manipular objetos matemáticos de forma simbólica.

Por ejemplo, supongamos que de vez en cuando tenemos que resolver x en función de a, b y c en la siguiente expresión, que es una ecuación cuadrática:

a*x^2 + b*x + c = 0

Pero somos un poco desmemoriados, y no siempre recordamos la fórmula. Pues introduciendo la expresión en wxMaxima y seleccionando Ecuaciones > Resolver, en el menú, la obtendremos.

Si queremos asignar valores a los parámetros a, b y c, lo podemos hacer del siguiente modo:
a:-1;
b:2;
c:1;

Para evaluar las expresiones hay que pulsar Shift + Enter y éstas deben terminar en punto y coma.

Una vez hecho esto, habrá que pulsar en las expresiones de la ecuación y la expresión de la solución (solve) para evaluarlas de nuevo (Shift + Enter). Para desasignar los valores a los parámetros y trabajar con éstos de modo simbólico de nuevo haremos:
kill(a);
kill(b);
kill(c);

Y evaluaremos con Shift + Enter, claro.

Mathomatic, a pesar de tener una interfaz de texto, es muy sencillo de usar y también nos permite resolver el caso anterior:

1-> a*x^2 + b*x + c = 0;

#1: (a*(x^2)) + (b*x) + c = 0

1-> solve for x
Equation is a degree 2 polynomial in (x).
Equation was solved with the quadratic formula.

1
(((((b^2) - (4*a*c))^-)*sign) - b)
2
#1: x = ----------------------------------
(2*a)


En este caso, la variable sign nos indica que hay dos soluciones, una para el caso sign = 1 y otra para el caso sign = -1.

Una función interesante de Mathomatic para programadores es que permite obtener código C, Java o Python de las expresiones, por ejemplo, en el caso anterior:
1-> code
x = (((pow(((b*b) - (4.0*a*c)), (1.0/2.0))*sign) - b)/(2.0*a));
1-> code java
x = (((Math.pow(((b*b) - (4.0*a*c)), (1.0/2.0))*sign) - b)/(2.0*a));
1-> code python
x = ((((((b*b) - (4.0*a*c))**(1.0/2.0))*sign) - b)/(2.0*a))

Así se evitan errores de transcripción a código de las fórmulas obtenidas.

Para calcular la solución para un valor concreto de los parámetros a, b y c, utilizamos la orden calculate, que nos pedirá introducir los valores.
1-> calculate
Enter a: -1
Enter b: 2
Enter c: 1
There are 2 solutions.

Solution number 1 with sign = 1:
x = -0.4142135623731

Solution number 2 with sign = -1:
x = 2.4142135623731

Para profundizar más en el uso de estos programas, en el caso de Mathomatic, la documentación que acompaña al software es una buena introducción y referencia. En el caso de wxMaxima hay diversos tutoriales. Uno muy interesante es el realizado por Paul Lutus.

Con wxMaxima también podemos realizar gráficos de superfícies definidas de forma explícita e implícita, como la silla de montar (z=y^2-x^2):

plot3d(y^2-x^2, [x,-3,3], [y,-3,3])$

O una esfera:

load(draw); (Recuerda, Ctrl + Intro para ejecutar el comando)
draw3d(enhanced3d = true, implicit(0=(x^2+y^2+z^2-10), x,-5,5,y,-5,5,z,-5,5), proportional_axes=xyz);

El formato gnuplot abre una ventana nueva que permite rotar la superfície.

Otra superfícies curiosas son:

El Zitrus:
draw3d(enhanced3d = true, implicit(x^2+z^2=(y^3)*(1-y)^3,x,-0.2,0.2,y,0,1,z,-0.2,0.2));

El Spitz:
draw3d(enhanced3d = true, implicit((y^3-x^2-z^2)^3=27*x^2*y^3*z^2,x,-1,1,y,0,1,z,-1,1));

El Kreisel:
draw3d(enhanced3d = true, implicit(60*(x^2+y^2)*z^4=(60-x^2-y^2-z^2)^3,x,-8,8,y,-8,8,z,-8,8));

Y Dullo:
draw3d(enhanced3d = true, implicit(x^2+y^2=(x^2+y^2+z^2)^2,x,-1,1,y,-1,1,z,-0.5,0.5));

Claro que para ver estas superfícies y jugar con ellas también podemos usar el programa Surfer, basado en surf, con licencia GPL, o la versión Java: jSurfer.

Por último, comentar que otra opción excelente es el programa libre SAGE, con el que podemos entender mejor, por ejemplo, operaciones con vectores de forma gráfica y mediante un interfaz web que se puede compartir.

sábado, 1 de mayo de 2010

Vodafone Mobile Connect 3G

Vodafone fue pionera en España en introducir tarjetas PCMCIA para acceder a Internet en movilidad desde ordenadores portátiles mediante la red de telefonía de tercera generación (3G). Muchas empresas y profesionales adquirieron dichas tarjetas para poder acceder Internet desde cualquier lugar. A continuación se explica cómo hacer que funcionen en sistemas GNU/Linux.
Lo primero es insertar la tarjeta en la ranura correspondiente del portátil. Con el comando dmesg se observará que se ha detectado y que se ha creado el puerto serie correspondiente (e.g. ttyUSB0).
Asegúrate que tu usuario pertenece al grupo dip, es decir, que tiene permiso para iniciar conexiones PPP. En Ubuntu, puedes ir a Sistema > Administración > Usuarios y Grupos para comprobarlo. Para ver los grupos a los que pertenece tu usuario ejecuta el comando groups. Para añadir tu usuario al grupo dip, puedes editar el archivo /etc/group (si tienes permiso para hacerlo) y añadir tu usuario a dicho grupo, o puedes usar el comando useradd
Descarga el driver de la tarjeta Vodafone Mobile Connect para tu sistema GNU/Linux y lee el fichero INSTALL.txt. Debes instalar también el paquete ozerocdoff, que es una dependencia del paquete vodafone-mobile-connect.
En el Vodafone Mobile Connect 3G Howto tienes más detalles e instrucciones.
Si usas GNOME, ya puedes ir a Aplicaciones > Internet > Vodafone Mobile Connect y navegar desde cualquier lugar.
Otra opción es utilizar la aplicación Network Manager de GNOME. Insertar la tarjeta, seleccionar Crear una nueva conexión GSM (3G), introducir el país y el proveedor y finalmente el APN (proporcionado por el proveedor de la conexión 3G).
En caso de utilizar un módem USB como el Huawei K3765, que lleva incorporados sus controladores propietarios para Windows, cuando se conecte a un ordenador con núcleo Linux se reconocerá como un dispositivo de almacenamiento masivo. En una máquina Windows se ejecutaría la instalación del controlador (si no está ya instalado) y luego el dispositivo de almacenamiento desaparecería y un nuevo dispositivo módem USB aparecería. A esto se le llama instalación "ZeroCD". El nombre es autoexplicativo.
El controlador propietario de Windows para los módem USB no es necesario en máquinas con núcleo Linux, que ya incluye el módulo "usbserial" para controlar estos módem. Pero al conectarlo, el dispositivo se identifica como de almacenamiento "usb-storage" por defecto y se monta como si fuera un CD. Es necesario instalar el paquete software "usb-modeswitch" para resolver esto y enviar al dispositivo el comando que cambie el modo de "usb-storage" a "usbserial".

jueves, 1 de abril de 2010

Pulgares abajo para las patentes de software en Nueva Zelanda

Según se informa en la web End Software Patents y en la del Partido Pirata de Chile, la propuesta del gobierno de Nueva Zelanda es que "un programa de ordenador no es una invención patentable".
Esto es una buena noticia, puesto que las restricciones que permiten las patentes de software suponen una amenaza para el desarrollo de software nuevo y conducen a la situación absurda a la que se ha llegado en EEUU.
Grupos de abogados de Nueva Zelanda presentaron numerosos documentos en favor de la patentabilidad del software, puesto que son una gran fuente de litigios, pero para los ingenieros y programadores, las patentes, un documento legal, no son adecuadas como fuente de información técnica y casi nunca las consultan.
El autor de un software ya puede utilizar las licencias de uso para decidir qué se puede o no hacer con un software. Las patentes sólo protegen a las grandes empresas consolidadas que ya tienen muchas patentes con las que pueden amenazar a la competencia o hacer intercambios.
La decisión de los legisladores de Nueva Zelanda en este asunto es innovadora y visionaria y cabe felicitarlos, pero la batalla no está ganada todavía. El proyecto de ley va ahora de nuevo al pleno del Parlamento para su segunda lectura.

sábado, 20 de marzo de 2010

Internet en la TV

Los "Media Center" pretenden fundir el mundo de la radio y la televisión con el de Internet en un único dispositivo, conectado al televisor del salón y que sea el centro de acceso a todo tipo de obras multimedia.
Existen muchas formas, más o menos económicas, de tener un Centro Multimedia basado en software libre. Por ejemplo, podemos adquirir un disco duro multimedia con firmware GPL como el WD TV Live Media Player o el MD-270 TV Media Player de Sitecom. Estos equipos incluyen un mando a distancia y a pesar de tener un firmware con licencia GPL, lo que implica que pueden ser reprogramados, no son como un ordenador completo.
En un punto medio, entre un ordenador completo de sobremesa o uno silencioso, conectado a la TV y un disco duro multimedia, encontramos dispositivos como el Artigo A1000, basado en una placa pico-ITX de VIA. Este tipo de placas tienen un consumo reducido, para que no sea tanto despilfarro tenerlos siempre encendidos y pueden realizar todas las funciones de un PC de sobremesa, por ejemplo, utilizando un teclado inalámbrico con trackball en lugar de un mando a distancia.
La evolución de este equipo ya está lista en la placa Via Epia P-820, preparada para reproducir vídeo en alta definición (HD) y con interfaz HDMI. Con la aparición de Android equipos del tamaño de una memoria USB que se conectan a la TV por HDMI, son una opción interesante como este o este.

domingo, 21 de febrero de 2010

Alternativa libre al iPad

El iPad de Apple, del que ARM espera que se vendan 5 millones de unidades, se ha lanzado como la gran novedad de principios de 2010. Un tablet PC, con pantalla táctil y sin teclado, con acelerómetro 3D, GPS y brújula, necesarios para aplicaciones de realidad aumentada, pero con un sistema operativo totalmente cerrado y con DRM. El precio, unos 600$.
Por supuesto, existen alternativas al iPad como tablet PC, aunque sin GPS y brújula, que usan software libre y además son mucho más económicas. Actualmente disponible y con un precio a partir de 300$ encontramos el Touch Book, un equipo también con procesador ARM y con opción de teclado americano acoplable por 100$ más.
Además, a partir del mes de mayo, estará disponible el iFreeTablet, con el sistema operativo libre Siesta de la Universidad de Córdoba, y desarrollado y comercializado en España por la empresa Grafe. Tendrá un precio estimado entre 300 y 400 euros.
ARM espera la aparición este año de al menos 50 modelos de Tablet PCs como el iPad con sus procesadores, de mucho menor consumo que los Atom de Intel, ligados a operadores de Internet móvil 3G y algunos incluso con interfaz HDMI, para su conexión a televisores de alta definición. Algunos con Windows CE de Microsoft y otros con el sistema operativo libre Android de Google.

martes, 5 de enero de 2010

25 años de GNU

El humorista inglés Stephen Fry hizo este vídeo con motivo del veinticinco aniversario del proyecto GNU en el año 2008. Aquí lo tienen subtitulado en español de Argentina.