Software Libre para Matemática

Autor: Pablo De Nápoli

Novedades

Introducción

En esta página encontrarán enlaces a diversos programas (y librerías) útiles para matemática, clasificados en distintas categorías.

TeX / LaTeX
Sistemas de álgebra computacional
Teoría de Números
Graficadores de Funciones y Datos
Cálculo Numérico
Algebra Lineal Numérica
Resolución Numérica de Ecuaciones Diferenciales
Elementos Finitos
Optimización
Estadística
Lenguajes de Programación
Otras librerías útiles para escribir programas matemáticos
Demostración Formal de Teoremas
Otros Enlaces

Casi todos estos programas funcionan bajo GNU/Linux y otros sistemas operativos tipo Unix, pero algunos de ellos también se pueden usar bajo MS-Windows.

Además todos ellos son Software Libre (no debe confundirse este concepto con el de software gratuito). Si bien esta página procura indicar qué tipo de licencia utiliza cada programa, por supuesto para información precisa sobre este punto, hay que referirse a la documentación de cada programa, porque lo indicado en esta página puede estar equivocado o ser incompleto.

La licencia más utilizada por el Software Libre es la GNU General Public License de la Free Software Foundation . Otra licencia de uso frecuente es la Licencia BSD Modificada.

Aquí pueden ver las diaspositivas de mi charla Software Libre para enseñar o aprender Matemática: Porqué y Cómo donde desarrollo la fundamentación de porqué creo que debería utilizarse exclusivamente software libre tanto para la docencia como la investigación en matemática, y menciono algunos de los programas libres más recomendables (incluidos en esta página).

TeX / LaTeX

TeX es un sistema de procesamiento de textos diseñado por Donald Knuth, que es especialmente apto para escribir textos de matemática. Se ha convertido en el standard utilizado por toda la comunidad matemática. Existen varios dialectos de TeX, siendo quizás LaTeX el más sencillo de usar.

Aprender a usar LaTeX lleva un cierto tiempo y esfuerzo, pero uno se ve ampliamente recompenzado por su facilidad de uso (una vez que uno se acostumbra a usarlo) y la calidad final de los documentos que se generan.

TeX es software libre.

TeX suele venir con todas las distribuciones de GNU/Linux (la distribución Texlive de TeX es la más usada en GNU/Linux)

Para MS-Windows, una distribución recomendable por su facilidad de instalación es MikTeX .

Los usuarios de Mac OS pueden consultar esta página

A quienes deseen aprender a usar LaTeX, les recomiendo The not so short introduction to LaTeX (or LaTex in 87 minutes). (Hay una versión versión en castellano)

Mis Materiales sobre LaTeX

Mini Tutorial de LaTex

Material de la charla LaTeX: Una Herramienta para procesar textos utilizando software libre

(Es una versión actualizada de la charla que dí con el título ¡Cuidá tu texto: usá LaTeX! , en el ciclo de charlas del GlugCEN.

Programas para usar con Tex/LaTeX (IDEs, procesadores de texto, etc.)

Texmaker. Editor multiplataforma para LaTeX (GPL)
TexStudio Fork de Texmaker.
Kile Editor y entorno integrado para escribir en LaTeX para KDE (GPL) (¡recomendado!)
Lyx Para poder escribir en LaTeX, ¡viendo como se verá lo que estamos escribiendo al mismo tiempo ! (GPL)
GNU TeXmacs Un procesador de textos científico que usa las fuentes de TeX pero que tiene una interface amigable. Inspirado en TeX y en Emacs (GPL)
TeXnicCenter Es un entorno integrado para escribir en LaTeX bajo MS-Windows. (GPL)
KBibTeX Un editor amigable para bibliografias de BibTeX para el entorno KDE. (GPL)
JabRef Un editor amigable para bibliografias de BibTeX basado en Java. (GPL)
Latex Draw Un editor visual de gráficos para LaTeX (que genera código para PSTricks o permite generar directamente gráficos en PS/PDF)

Otras referencias sobre TeX/LaTeX

Comprehensive Tex Archive de todo sobre el TeX (también hay un mirrror en la Universidad de Chile)
Donald E. Knuth La página personal del creador de TeX.
TUG Grupo de Usuarios de TeX.
CervanTeX Grupo de usuarios de TeX hispanohablantes.
Latex-Project.org Página del proyecto LaTeX.
Short Math Guide for LaTeX Una guía sobre como escribir fórmulas matemáticas en LaTeX (por Michael Downes, AMS)
Userguide to the amsmath package Manual del paquete amsmath
A Survey of Free Math Fonts for TeX and LaTeX Un artículo por Stephen G. Hartke.
The LaTeX font catalogue Un catálogo de tipografías para LaTeX.
LaTeX en WikiBooks Un libro colaborativo (en Wiki) sobre LaTeX

Sistemas de Álgebra Computacional

Un sistema de álgebra computacional es un sistema que puede efectuar operaciones simbólicas tales como multiplicar polinomios, o calcular derivadas e integrales.

Maxima Un sistema de álgebra computacional bastante completo escrito en Lisp.
Interfase gráfica recomendada: wxMaxima. ¡Muy fácil de usar!
GNU GPL
SAGE Un sistema de álgebra computacional, que integra muchos otros paquetes pre-existentes, utilizando una interface común de alto nivel en Python, lo que lo hace fácil de programar y extender. Está en activo desarollo.

Otra característica destacable es su interfase vía un navegador web (Sage Notebook).

Para una buena ilustración de las capacidades de Sage pueden ver estas capturas de pantalla, que muestran como usar Sage para graficar funciones y resolver problemas de cálculo elemental.

Un muy interesante libro sobre Sage (en francés) es Calcul mathématique avec Sage

GNU GPL
Axiom

Un excelente sistema para álgebra computacional, con una jerarquía de tipos matemáticamente correcta.

Axiom se destaca también por poseer una documentación sumamenta completa (utiliza la filosofía de Literate Programming).

Nota: Recientemente el proyecto Axiom tuvo dos forks OpenAxiom y Fricas

Modified BSD License
Yacas Un sistema de álgebra computacional pequeño y flexible. GNU GPL
GiNaC GiNaC is not a Computer Algebra System: una libreria en C++ para realizar cálculos simbólicos. GNU GPL
Sympy Un paquete para operaciones simbólicas en Python BSD (modificada)
Reduce Un sistema de álgebra computacional portable, de propósito general. BSD (modificada)
Singular Un sistema de Álgebra Computacional para cálculos con polinomios, especialmente pensado para geometría algebraica. GNU GPL
Macaulay2 Un sistema para geometría algebraica y álgebra conmutativa. GNU GPL
GAP Grupos, Algoritmos y Programación GAP Copyright
Giac/Xcas Una libreria en C++ con tipos para Algebra Computacional con una interface de usuario (Xcas). GNU GPL
Mathomatic Un pequeño programa de cálculo simbólico. GNU LGPL
Jacal Programa interactivo de matemática simbólica. GNU GPL
Mathics Un sistema de álgebra computacional en línea. Usa Sympy y opcionalmente Sage. GNU GPL

Teoría de Números

Los siguientes programas y librerías están especialmente pensados para cálculos relacionados con la teoría de números:

Pari/Gp Excelente sistema de álgebra computacional, muy usado para Teoría de números GNU GPL
NTL Una Libreria de clases en C++ para Teoría de Números GNU GPL
NZMATH Un sistema para cálculos de tía de números basado en Python BSD Licence
FLINT Fast Library for Number Theory ("Librería rápida para teoría de números") GNU GPL

Graficadores de Funciones y Datos

LabPlot Un progrma para graficación de datos y funciones en 2D y 3D, para KDE 3 GNU GPL
Gnuplot Un programa para realizar gráficos de funciones. Freeware
GNU Plotutils Diversas utilidades para realizar gráficos. Vale la pena destacar "ode" , un sencillo programa para graficar soluciones de ecuaciones diferenciales ordinarias. GNU GPL
K3DSurf Un programa para graficar funciones en 3D para KDE GNU GPL
QtiPlot Un programa para graficación y análisis de datos. GNU GPL
SciDavis Un programa para graficación y análisis de datos. ( fork de QtiPlot) GNU GPL
ParaView Excelente progrma de visualización de datos científicos en 2D y 3D usando VTK. Paraview Copyright
(BSD Licence)
Grace Programa para gráficos en 2D GNU GPL
Extrema Un programa para visualización y análisis de datos. GNU GPL
Kst Un programa para gráficar y análizar datos científicos en tiempo real. GNU GPL
Gemomview Un programa para visualizar objetos geométricos en 3D GNU LGPL

Las siguientes librerías son útiles para crear gráficos científicos:

VTK The Vizualization Toolkit VTK copyright
Gltools Una librería para realizar gráficos científicos usando OpenGL. MIT License
The Plotlib Toolkit Librería de clases para gráficos de funciones usando Java 2 GNU GPL
Matplotlib Librería para gr´ficos en 2D en Python. Matplotlib Licence
Assymptote Un lenguaje para gráficos vectoriales, orientado a aplicaciones científicas. GNU LGPL

Cálculo Numérico

Los siguientes son programas interactivos para cálculo numérico:

GNU Octave Excelente programa para realizar todo tipo de cálculos numéricos. Tiene una sintaxis compatible con Matlab y permite realizar gráficos utilizando Gnuplot. Alternativa libre a Matlab. Interfase gráfica recomendada: QtOctave. GNU GPL
SciLab Otro programa para cálculo numérico a' la Matlab, desarrollado por la gente del INRIA. Posee una interfase similar y una sintaxis basante compatible con Matlab.

Ideal para usarlo en los cursos de Elementos de Cálculo Numérico o Análisis Numérico.

CeCILL [1]
FreeMat Otra alternativa libre a Matlab.
GNU GPL (Anteriormente MIT License)
Euler Un programa para cálculo numérico. GNU GPL

[1]: A partir de la versión 5.0. Las versiones anteriores de Scilab utilizaban otra licencia diferente, considerada no libre por la FSF.

Las siguientes librerías proporcionan rutinas útiles para cálculo numérico:

GNU GSL The GNU Scientific Library: Una colección de rutinas para análisis numérico. GNU GPL
Blitz++ Una librería en C++ para computación científica. GPL / Blitz++ Artistic License

Algebra Lineal Numérica

BLAS: Basic Linear Algebra Rutinas básicas para Álgebra Lineal (en Fortran) Freely Available
LAPACK: Linear Alegrbra Package Paquete para Álgebra Lineal (en Fortran) Freely Available
Atlas Una libreria optimizada para Algebra Lineal. BSD-style
Slate++ Simple Linear Algebra TEmplates: Una librería en C++ para álgebra lineal. GNU GPL
Armadillo Otra librería para álgebra lineal numérica en C++. GNU LGPL
ALP Una librería de clases en C++ para algebra lineal y polinomios GNU LGPL
SuiteSparse Una colección de rutinas para trabajar con matrices ralas (sparse matrix) creada por Tim Davis GNU GPL/ GNU LGPL (dependiendo del paquete).
LinBox Una librería de templates en C++, para álgebra lineal exacta sobre los enteros, y cuerpos finitos. GNU LGPL

Resolución Numérica de Ecuaciones Diferenciales

Los programas y librerías de esta sección están específicamente pensados para la resolución numérica de ecuaciones diferenciales.

Iode Ejemplos de resolución de ecuaciones diferenciales usando GNU Octave. GNU GPL
Auto Para problemas de continuación y bifurcación en ecuaciones diferenciales ordinarias AS IS
Cactus Un programa para resolver (numéricamente) ecuaciones en derivadas parciales. GNU GPL

Elementos Finitos

Las siguientes librerías implementan métodos de elementos finitos para resolver ecuaciones en derivadas parciales:

Fenics Un proyecto colaborativo para computación científica. En particular métodos de elementos finitos para EDP. GNU GPL
FreeFem Una familia de programas para elementos finitos en 3D. GNU GPL
Alberta FEM Una librería para elementos adaptativos finitos en 2D y 3D GNU GPL [1]
GMSH Generador de mallas para elementos finitos en 3D. GNU GPL
DUNE: Distributed and Unified Numerics Environment Clases C++ para elementos finitos en 2D y 3D. GNU LGPL
DEAL.II Una librería de clases en C++ para Elementos Finitos (algoritmos adaptativos) DEAL.II Licence
Animath Una librería para elementos finitos en 3D, escrita en C++ para simulaciones de fluidos. BSD License
[1] De acuerdo al archivo COPYING en la distribución.

Los siguientes programas están pensados para aplicaciones a la ingeniería:

FElt Un programa para elementos finitos. GNU GPL
Impact Elementos finitos para simulaciones dinámicas (en Java ) GNU GPL

Optimización

GLPK GNU Linear Programming Kit: una libreria en C para programación lineal. GNU GPL
Cvxopt Módulos en Python para problemas de optimización convexa. GNU GPL
Tango Trustable Algorithms for Nonlinear General Optimization (Algoritmos confiables para optimización nolineal general). GNU GPL

Estadística

R Un lenguaje para cálculos y gráficos estadísticos. Interfase (IDE) recomendada: RStudio. GNU GPL
SalStat Un software para el análisis estadístico de datos. GNU GPL
Root Un software para análisis de datos desarrollado por el CERN. GNU LGPL
GNU Getrl Un programa para regresión, series de tiempo y econometría. GNU GPL.

Lecturas recomendadas:

Ver también: The R Graph Gallery (galería de gráficos generados usando R)

Lenguajes de Programación

GCC Colección de compiladores de GNU para diferentes lenguajes (C,C++,Java,Fortran) GNU GPL
Python y la computación científica Python es un lenguaje de scripting con una sintaxis clara y fácil de usar. Esta página reune algunas herramientas en Python para computación científica.
SciPy: Scientific Tools for Python Un conjunto de módulos para Python , útiles para computación científica. BSD
Scientific Python Otro paquete para computación científica en Python. CeCill
IPython Un intérprete mejorado para Python (especialmente pensado para computación científica). BSD
Spyder Una IDE para Python pensada un entorno cientí­fico.Integra NumPy, SciPy, Matplotlib e iPython. MIT License.
Yorick Un lenguaje interpretado para simulaciones científicas. Yorick copyright

Algunas referencias interesantes para aprender a programar

Otras librerías útiles para escribir programas matemáticos

GMP The GNU Multiple Precision aritmetic library: una librería para efectuar operaciones con números enteros, racionales y de punto flotante con precisión arbitraria. GNU LGPL
MPIR Un fork de GMP. GNU LGPL v2+
GNU Libmatheval Una librería para evaluar expresiones matemáticas. GNU GPL
CLN Una librería de clases C++ para manipular números de distintos tipos. GNU GPL
MPFR Una librería para cálculos en punto flotante con precisión múltiple y redondeo exacto, basada en GMP. LGPL
Givaro Una librería en C++ para cálculos aritméticos y algebraicos. GNU GPL
CCMATH Una librería en C que provee diversas funciones matemáticas GNU LGPL
FFTW Una librería en C para calcular la transformada discreta de Fourier. GNU GPL
QuantLib Una librería para matemática financiera. modified BSD License
FXT Una librería de algoritmos de transformadas ortogonales rápidas. Viene acompañada con un muy interesante libro Algorithms for Programmers. GNU GPL
Gambit Una libreria para teoría de los juegos en juegos finitos. GNU GPL
Libecc Una Librería en C++ para criptografía basada en curvas elípticas. GNU GPL
GluCat Una librería de clases en C++ para álgebras de Clifford. GNU LGPL
Mpmath Una librería para cálculos de precisión arbitraria en Python BSD
Lie Un paquete para cálculos sobre grupos de Lie y sus representaciones. GNU LGPL
Math.NET Una librería para métodos numéricos y simbólicos para .NET (puede utilizarse con Mono) BSD Licence

Demostración Formal de Teoremas

Hilbert II ¿La resurrección del programa de Hilbert? GNU FDL
Metamatemath Demostraciones de teoremas, verificables por computadora. Metamath copyright
HOL Un sistema de demostración automatica de teoremas, para lógicas de órden superior. BSD License
Coq Un sistema para manejar pruebas formales. GNU LGPL
MiniSat Un resolvedor minimalista para el problema de la satisfabilidad booleana.
(ver también Satlib: una colección de software y materiales relacionados con este problema).
MIT Licence

Otros Enlaces

Les recomiendo también estos sitios:

Otras páginas

Volver

Valid HTML 4.01!

Aclaración Importante: Las opiniones expresadas en estas páginas son estrictamente personales.
Estas páginas no son una publicación de la Universidad de Buenos Aires.