# Utilización y Administración avanzadas de sistemas GNU/Linux y aplicaciones Software Libre para estudiantes universitarios

## Software Científico

### Josá Angel de Bustos Pérez

Copyright (c) 2.007 José Angel de Bustos Pérez `<jadebustos@augcyl.org>`.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

## Capítulo 1. Introducción

El software libre siempre ha estado muy ligado a la universidad y ámbitos académicos. Por este motivo es fácil encontrar mucho software libre dentro del ámbito científico.

Aunque aquí se hará incapie en el software disponible para GNU/Linux muchos de los programas aquí expuestos funcionarán también en otros sistemas operativos.

El proposito de este documento es enseñar las opciones de que disponemos en el mundo del software libre y no su uso. Motivo por el cual en el CD de documentación se incluye la documentación que se utilizó en el curso extraordinario de la Universidad de Salamanca Herramientas en GNU/Linux para estudiantes universitarios que organizaron el Departamento de Informática y Automática de la Universidad de Salamanca, GLiSa y AUGCyL.

La mayoría del software científico que podemos encontrar en GNU/Linux sigue las ideas del mundo UNIX de creaci´n de pequeñas herramientas en línea de comando, muy específicas y potentes. Esto permite la interaccción entre ellas y la posibilidad de creación de interfaces gráficas a gusto de todos.

## Capítulo 2. Creación de Gráficos

## Gnuplot

Gnuplot es una herramienta en línea de comando que funciona en varios sistemas operativos.

A pesar de su nombre Gnuplot no tiene nada que ver con el proyecto GNU. El nombre se eligió para no tener problemas con otro software de representaciones gráficas llamado newplot.

En la página del proyecto podemos encontrar toda la información necesaria.

### Características

Gnuplot permite realizar las siguientes tareas:

- Representación gráfica de funciones y datos.

- Representaciones en 2D y 3D.

- Representaciones en coordenadas cartesianas, paramétricas, esféricas y polares.

- Exportación de los gráficos a los formatos más populares como png , jpg, svg, ...

- Creación de scripts.

- Creación de animaciones.

- Inclusión de multiples gráficas en un sólo gráfico.

- Inclusión de multiples gráficas en una pantalla.

### Representaciones en coordenadas cartesianas, paramétricas esféricas y polares

    [jadebustos@dedalo ~]$ gnuplot

            G N U P L O T
            Version 4.0 patchlevel 0
            last modified Thu Apr 15 14:44:22 CEST 2004
            System: Linux 2.6.17.8

            Copyright (C) 1986 - 1993, 1998, 2004
            Thomas Williams, Colin Kelley and many others

            This is gnuplot version 4.0.  Please refer to the documentation
            for command syntax changes.  The old syntax will be accepted
            throughout the 4.0 series, but all save files use the new syntax.

            Type `help` to access the on-line reference manual.
            The gnuplot FAQ is available from
                    http://www.gnuplot.info/faq/

            Send comments and requests for help to
                    <gnuplot-info@lists.sourceforge.net>
            Send bugs, suggestions and mods to
                    <gnuplot-bugs@lists.sourceforge.net>

    Terminal type set to 'x11'
    gnuplot> set dummy u,v
    gnuplot> set angles degrees
    gnuplot> set parametric

            dummy variable is t for curves, u/v for surfaces
    gnuplot> set view 70, 40, 0.8, 1.2
    gnuplot> set samples 32, 32
    gnuplot> set isosamples 9, 9
    gnuplot> set mapping spherical
    gnuplot> set yzeroaxis linetype 0 linewidth 1.000
    gnuplot> set ticslevel 0
    gnuplot> set title "3D version using spherical coordinate system"
    gnuplot> set urange [ -90.0000 : 90.0000 ] noreverse nowriteback
    gnuplot> set vrange [ 0.00000 : 360.000 ] noreverse nowriteback
    gnuplot> splot cos(u)*cos(v),cos(u)*sin(v),sin(u) with lines lt 5 ,'world.dat' with lines lt 3
    gnuplot>

Representación del globo terraqueo con Gnuplot.

### Interfaces para Gnuplot

#### Xgfe

Xgfe es un interface gráfico para Gnuplot.

Su desarrollo está parado y en la página del proyecto podemos encontrar todo lo necesario sobre este programa.

Xgfe interface gráfico para Gnuplot.

#### UniGNUPlot

Interface en Tcl/Tk para Gnuplot.

UniGNUPlot interface gráfico para Gnuplot.

Gráfica generada con UniGNUPlot.

#### tkgnuplot

Interface en Tcl/Tk para Gnuplot.

#### Chart::Graph::Gnuplot

Interface en PERL para realizar gráficos con Gnuplot.

#### Gnuplot.py

Interface en Python para realizar gráficos con Gnuplot.

#### de.unidu.is.gnuplot

Interface en Java para realizar gáficos con Gnuplot.

#### GNUplotFortran

Interface en Fortran 95 para realizar gráficos con Gnuplot.

#### gnuplot-mode.el

Modo de emacs para facilitar la edición de scripts de gnuplot.

### Recursos para Gnuplot

- Gnuplot.

- UniGNUPlot.

- tkgnuplot.

- Chart::Graph:Gnuplot.

- gnuplot.py.

- Paquete Java de.unidu.is.gnuplot.

- GNUplotFortran.

- Tutorial de IBM de Gnuplot (Inglés).

## Superficie

Superficie es un programa para visualizar superficies en tres dimensiones.

Superficie generada con Superficie.

### Recursos para Superficie

- Superficie.

## Xfig

Xfig es un programa para la creación de gráficos técnicos como diagramas. Una de sus características más importantes es que permite meter texto en comandos LaTeX lo cual permite una perfecta integración con documentos creados con dicha herramienta.

Xfig

### Recursos para Xfig

- Xfig.

## Dia

Dia es una herramienta que permite la creación de diagramas. Trabaja con XML y permite exportar a los formatos más usados como JPG, PNG, EPS, SVG, WMF, XFIG, ...

Se pueden extender sus capacidades mediante scripting en python.

- Dia.

- Recursos para Dia.

## Capítulo 3. Sistemas de Algebra Computacional o CAS

## Axiom

Axiom es un sistema de algebra computacional que se distribuye bajo una licencia tipo BSD. Se lleva desarrollando desde principios de los setenta y antes de liberarse como software libre fue un software comercial.

Axiom.

### Recursos para Axiom

- Axiom.

## Giac/xcas

Sistema de algebra computacional compatible con MAPLE, mupad y TI89.

Se puede ejecutar en modo texto con giac o con interface gráfica xcas.

xcas es la interface gráfica de giac.

### Recursos para Giac/xcas

- Giac/xcas.

## Macaulay2

Macaulay2 es un sistema de algebra computacional orientado a la Geometría Algebraica y al Algrebra Commutativa.

Macaulay ejecutandose en Emacs.

### Recursos para Macaulay2

- Macaulay2.

- Macaulay2 en Sourceforge.

## Maxima

Maxima es un sistema de algebra computacional con aplicaciones al cálculo numérico y análisis.

Maxima puede ejecutarse en:

- Entorno gráfico.

  Maxima ejecutandose en X-window.

- Dentro de Emacs.

  Maxima ejecutandose en Emacs.

- En línea de comando.

  Maxima ejecutandose en línea de comando.

- En TeXmacs.

  Maxima ejecutandose en TeXmacs.

### Recursos para Maxima

- Maxima.

## Pari-GP

Pari-GP es un sistema de algebra computacional orientado a teoría de números, aunque tambié puede trabajar con matrices, polinomios, series de potencias, ...

Pari-GP consta de una shell en línea de comando y una librería en C que se puede enlazar en nuestros programas.

### Recursos para Pari-GP

- Pari-GP.

## Yacas

Yacas es un acrónimo para Yet Another Computer Algebra System.

Podemos usar Yacas de tres formas:

- Con interface gráfico.

  Proteus es el interface gráfico de Yacas.

- En consola.

  Yacas ejecutandose en consola.

- Se puede ejecutar dentro de TeXmacs.

Yacas posee un mecanismo de plugins que permite la carga dinámica de librerias externas a Yacas. Mediante este mecanismo podemos ampliar las funcionalidades de Yacas.

### Importante

Podemos utilizarlo en una arquitectura de cliente/servidor y utilizar un ordenador más potente para realizar los cálculos viendolos en el nuestro.

### Recursos para Yacas

- Yacas.

## Cadabra

Cadabra es un sistema de algebra computacional orientado a la resolución de probleas de física teórica.

Cadabra y las identidades de Bianchi.

Cadabra ejecutándose en TeXmacs.

### Recursos para Cadabra

- Cadabra.

## Capítulo 4. Software de Cálculo

Existe multitud de software de cáculo.

## Octave

Octave es un programa orientado al análisis numérico.

Octave se puede entender como una implementación libre de Mathlab, por describirlo de una forma sencilla.

Octave se puede ejecutar:

- En línea de comando.

      [jadebustos@dedalo ~]$ octave

      GNU Octave, version 2.1.73 (i486-pc-linux-gnu).
      Copyright (C) 2006 John W. Eaton.
      This is free software; see the source code for copying conditions.
      There is ABSOLUTELY NO WARRANTY; not even for MERCHANTIBILITY or
      FITNESS FOR A PARTICULAR PURPOSE.  For details, type `warranty'.

      Additional information about Octave is available at http://www.octave.org.

      Please contribute if you find this software useful.
      For more information, visit http://www.octave.org/help-wanted.html

      Report bugs to <bug@octave.org> (but first, please read
      http://www.octave.org/bugs.html to learn how to write a helpful report).

      octave:1>

      [jadebustos@dedalo ~]$

- Ejecución en modo batch.

Octave no realiza representaciones gráficas. Para ello utiliza programas externos.

Normalmente se utiliza Gnuplot pero se puede configurar el programa a utilizar mediante la variable gnuplot_binary.

### Recursos para Octave

- Octave.

- Proyectos relacionados

- Octave GTK.

## Scilab

Scilab fue diseñado para análisis numérico y cálculo matricial.

Scilab.

### Recursos para Scilab

- Scilab.

## Freemat

Otra versión libre de Mathlab, que además tiene como objetivo extender las características de este.

Freemat.

### Recursos para Freemat

- Freemat.

## SNNS

SNNS es un programa para trabajar con redes neuronales.

SNNS.

### Recursos para SNNS

- SNNS.

## Capítulo 5. Geometría

## Geogebra

Geogebra es un programa para trabajar con geometría plana.

Geogebra

- Geogebra.

## Geonext

Geonext es un programa para trabajar con geometría plana.

- Geonext.

## Capítulo 6. Software Estadístico

## R

R es un lenguaje para cáculo estadístico.

R se inspiró en el programa S de los laboratorios Bell.

R

### Recursos para R

- R.

## PSPP

PSPP trata de dar una solución basada en software libre del programa comercial SPSS. Es un proyecto al que todavía le queda mucho camino por andar.

### Recursos para PSPP

- PSPP.

## Macanova

Macanova es un software estadístico más completo que PSPP pero cuya interface de usuario dista de ser amigable.

### Recursos para Macanova

- Macanova.

## Capítulo 7. Edición de texto científico

Las mejores y más potentes herramientas para la edición de texto científico son:

- LaTeX.

- Docbook, que no ofrece la calidad de LaTex para el texto científico pero que se está imponiendo en publicaciones web debido a su potencia y versatilidad.

Las herramientas que vamos a ver giran en torno a LaTeX.

## TeXmacs

TeXmacs es un editor WYSIWYW (What You See Is What You What).

TeXmacs pretende ser una herramienta que combine la eficiencia de emacs y la potencia de LaTeX. Utiliza las fuentes de LaTeX pero no genera, directamente, código LaTeX. Aunque es posible exportarlo.

TeXmacs se integra con las siguientes herramientas:

- Gnuplot.

- Octave.

- Yacas.

- Xfig.

- R.

- Maxima.

- Pari.

- Dr. Geo.

- Cadabra.

- Qcl es un lenguaje de programación para ordenadores cuánticos.

- Macaulay2.

- GTybalt.

- Giac.

- Axiom.

Integración de Gnuplot con TeXmacs.

### Recursos para TeXmacs

- TeXMacs.

## Kile

Kile es un entorno de desarrolo en LaTeX para KDE

Algunas características de Kile:

- Podemos compilar el documento desde Kile.

- Autocompletación de los comandos LaTeX.

- Templates y patrones que hacen más fácil el empezar nuevos documentos.

- Busqueda integrada entre el editor y el visor DVI.

- Previews del documento.

Kile, LaTeX en KDE.

### Recursos para Kile

- Kile.

## Emacs

Emacs es el entorno de desarrollo por excelencia en el mundo del software libre.

Emacs como entorno de desarrollo para LaTeX.

### Recursos para Emacs

- Emacs.

## Capítulo 8. CAD

## QCad

QCad es un programa de CAD que maneja ficheros `DXF` y `CFX`.

Qcad CAD en GNU/Linux.

### Recursos para QCad

- QCad.

## PythonCAD

PythonCAD es un programa de CAD desarrollado en Python que utiliza XML para guardar sus datos.

PythonCAD, python, CAD y XML.

### Recursos para PythonCAD

- PythonCAD.

## FreeCAD

FreeCAD es un programa de CAD de proposito general.

FreeCAD.

### Recursos para FreeCAD

- FreeCAD.

- FreeCAD en Sourceforge.

## Capítulo 9. Circuitos

## Kicad

Kicad es un programa creado para diseño de circuitos impresos.

Kicad diseño de circuitos impresos.

### Monolito

Monolito es una librería de componentes libre de diseño electrónico para kicad.

### Recursos para Kicad

- Kicad.

- Monolito.

## Logisim

Logisim es una herramienta de diseño y simulación de circuitos lógicos digitales. Puede ser utilizado para el diseño de CPUs con propósitos educativos.

Para utilizarlo unicamente hay que descargarse el fichero `.jar` y ejecutar:

    [jadebustos@dedalo]$ java -jar logisim-2.1.5.jar

Logisim diseño y simulación de circuitos lógicos y digitales.

### Importante

Requiere tener instalada una máquina virtual Java.

### Recursos para Logisim

- Logisim.

- Logisim en Sourceforge.

## Capítulo 10. Química

## Gperiodic

Gperiodic nos permite consultar la tabla periódica de los elementos.

Gperiodic

### Recursos para Gperiodic

- Gperiodic.

## Garlic

Garlic programa para la visualizació 3D de moleculas.

Garlic

### Recursos para Garlic

- Garlic.

## Gchempaint

Gchempaint es un editor de estructuras químicas en 2D.

Gchempaint

### Recursos para Gchempaint

- Gchempaint.

## Gdis

Gdis programa para tratamiento de moléculas en 3D. Soporta renderizado OpenGL.

Gdis

### Recursos para Gdis

- Gdis.

## Chemtool

Chemtool nos permite dibujar moléculas químicas.

chemtool

### Recursos para Chemtool

- Chemtool.

## Easychem

Easychem nos permite dibujar moléculas químicas.

Easychem

### Recursos para Easychem

- Easychem.

## Raster3d

Raster3d son un conjunto de herramientas que nos permiten la creación de imágenes de molélas y proteínas.

Imágen generada con Raster3d.

### Recursos para Raster3d

- Raster3d.

## Capítulo 11. Sistemas de Información Geográfica

- Grass.

- TNTlite.

- Ww2d.

- Gvsig.

## Capítulo 12. Fractales

## Xaos

Xaos es una potente herramienta para visualizar y experimentar con varios fractales. Permite grabar las imágenes generadas.

Xaos.

### Recursos para xaos

- Xaos.

## Fyre

Fyre es un programa para crear fractales basados en funciones iteradas.

Fractales con Fyre.

### Recursos para Fyre

- Fyre.