Mathematica es un programa utilizado en áreas científicas, de ingeniería, matemática y áreas computacionales. Originalmente fue concebido por Stephen Wolfram, quien continúa siendo el líder del grupo de matemáticos y programadores que desarrollan el producto en Wolfram Research, compañía ubicada en Champaign, Illinois. Comúnmente considerado como un sistema deálgebra computacional, Mathematica es también un poderoso lenguaje de programación de propósito general.
La primera versión de Mathematica se puso a la venta en 1988. La versión 10.3, fue lanzada el 15 de octubre de 2015, se encuentra disponible para una gran variedad de sistemas operativos.
Mathematica se divide en 2 partes, el «kernel» o núcleo (en informática) que desempeña los cálculos. Y el «front end» o interfaz, que despliega los resultados y permite al usuario interactuar con el núcleo como si fuera un documento. En la comunicación entre el kernel y la interfaz (o cualquier otro cliente) Mathematica usa el protocolo MathLink, a menudo sobre una red. Es posible que diferentes interfaces se conecten al mismo núcleo, y también que una interfaz se conecte a varios núcleos.
A diferencia de otros sistemas de álgebra computacional, por ejemplo Maxima o Maple, Mathematica intenta usar las reglas de transformación que conoce en cada momento tanto como sea posible, tratando de alcanzar un punto estable.
Los atributos de Mathematica incluyen:
- Bibliotecas de funciones matemáticas elementales y especiales.
- Matrices y manipulación de datos, así como soporte de matrices tipo sparse.
- Soporte para números complejos, precisión arbitraria, computación de intervalos aritméticos y simbólicos.
- Datos en 2D y 3D, función y visualización geográfica y herramientas de animación.
- Solucionadores para sistemas de ecuaciones, ecuaciones diofánticas, ecuaciones diferenciales ordinarias, parciales,diferenciales algebraicas, de retraso, diferenciales estocásticas y relaciones de recurrencia.
- Herramientas numéricas y simbólicas para cálculo de variable continua o discreta.
- Bibliotecas de Estadística multivariable, incluyendo ajuste, pruebas de hipótesis, y cálculos de probabilidad y expectativa en más de 140 distribuciones.
- Soporte para datos censurados, datos temporales, series temporales y datos basados en unidades.
- Cálculos y simulaciones en procesos aleatorios y queues.
- Herramientas de aprendizaje de máquina supervisadas y no supervisadas para datos, imágenes y sonidos.
- Geometría computacional en 2D, 3D y dimensiones mayores.
- Análisis de elementos finitos incluyendo generación de malla adaptiva en 2D y 3D.
- Optimización restringida y no restringida, local y global.
- Lenguaje de programación que da soporte a construcciones de procedimiento, functionales y orientados a objetos.
- Juego de herramientas para agregar interfaces de usuario a cálculos y aplicaciones.
- Herramientas para procesamiento de imágenes2 en 2D y 3D, y procesamiento morfológico de imágenes incluyendoreconocimiento de imágenes.
- Herramientas para visualización y análisis de grafos dirigidos y no dirigidos.
- Herramientas para problemas combinatorios.
- Herramientas para minería de textos incluyendo expresiones regurales y análisis semántico.
- Herramientas de minería de datos tales como análisis de grupos, alineación de secuencias y búsqueda de patrones.
- Biblioteca de funciones de teoría de números.
- Herramientas para cálculos financieros, incluyendo bonos, anualidades, derivados, opciones, etc.
- Teoría de grupo y funciones de tensor simbólicas.
- Bibliotecas para procesamiento de señales, incluyendo análisis de ondas en sonidos, imágenes y datos.
- Bibliotecas de sistemas de control lineares y no lineares.
- Transformaciones integrales continuas y discretas.
- Importación y exportación de filtros para datos, imágenes, video, sonido, CAD, GIS,3 formato de documento y biomédicos.
- Colección de base de datos para información matemática, científica y socio-económica y acceso a datos de WolframAlpha y cálculos.
- Procesamiento de palabras técnicos incluyendo edición de fórmulas y reportes automatizados.
- Herramientas para conectarse a sistemas basados en DLL, SQL, Java, .NET, C++, Fortran, CUDA, OpenCL y http.
- Herramientas para programación paralela.
- Usando ambos «entradas lingüística de forma libre» (una interfaz de usuario de lenguaje natural)4 5 y Wolfram Language en el cuaderno cuando está conectado a internet.