# Mathematica

Wolfram Mathematica (conhecido como Mathematica) é um programa de computador, originalmente concebido por Stephen Wolfram, e continuamente desenvolvido pela empresa Wolfram Research, localizada em Champaign (Illinois), que implementa um sistema de álgebra computacional. Além de uma linguagem de programação, contém diversas bibliotecas de programação prontas a serem usadas para diversos fins em várias áreas das ciências exatas.
O programa insere-se em diversas áreas da engenharia, biologia, química, processamento de imagens, finanças, estatística, matemática, além de outras, e também serve como um ambiente para desenvolvimento rápido de programas.
As versões mais recentes permitem a troca de informação com programas em Java, C++, entre outros, usando bibliotecas para comunicação entre aplicações - assim possibilitando que um programa do Mathematica, por exemplo, acesse a porta serial ou receba informações de um equipamento (hardware) externo. Pode também ser usado para a digitação de documentos com formatação matemática complexa
O Mathematica roda nas plataformas Windows, Linux, Solaris e Mac OS X. O nome do programa foi sugerido a Stephen Wolfram por Steve Jobs em meados da década de 1980, e apesar de Wolfram ter recusado o nome no começo, decidiu adota-lo.
Diversas empresas brasileiras utilizam o Mathematica em suas atividades, como Petrobrás, Banco Santander, Furnas, Transpetro, CENPES, Inpe e Embraer. Várias universidades do país também têm adquirido licenças do Mathematica para o uso de seus alunos, professores e demais funcionários.

## Formato de Arquivo

O Mathematica cria, edita e salva arquivos no formato chamado de notebook (ou caderno, em tradução livre para o Português). Este formato é expressado pela extensão .nb, formato reconhecido por todas as versões do Mathematica e pelos players lançados pela Wolfram research, o Mathematica Player e sua versão mais atual o CDF Player.

## Recursos

Recursos do Mathematica incluem:
* Biblioteca de funções matemáticas básicas
* Bibliotecas de funções matemáticas especiais
* Ferramentas de manipulação de matrizes e dados incluindo suporte a matrizes esparsas
* Suporte a números complexos, precisão arbitrária, aritmética de intervalos e computação simbólica
* Visualização de funções e dados em 2D e 3D, e ferramentas de animação
* Solucionadores de sistemas de equações, equações de diophantine, ODEs, PDEs, DAEs, DDEs e relações de retorno
* Ferramentas numéricas e simbólicas para cálculo contínuo e discreto
* Bibliotecas multivariadas de estatística incluindo ajuste, teste de hipóteses, e cálculos de probabilidade e expectativa em mais de 100 distribuições
* Otimização local e global, restrita e irrestrita
* Linguagem de programação que suporta construções procedural, funcional e orientada a objetos
* Kit de ferramentas para adicionar interfaces de usuário a cálculos e aplicações
* Ferramentas para processamento de imagens e processamento de imagens morfológico incluindo reconhecimento de imagens
* Ferramentas para visualizar e analisar grafos
* Ferramentas para problemas combinatórios
* Ferramentas para prospecção de textos incluindo análise de expressões regulares e análises semânticas
* Ferramentas de prospecção de dados como análise de cluster, alinhamento de sequências e correspondência de padrões
* Biblioteca de funções de teoria dos números
* Ferramentas para cálculos financeiros incluindo fundos, anuidades, derivativos, opções, etc.
* Funções da teoria dos grupos
* Bibliotecas para análise de sons, imagens e dados de wavelets
* Bibliotecas de sistemas de controle
* Transformadas integrais contínuas e discretas
* Filtros de importação e exportação de dados, imagens, vídeos, sons, CAD, GIS, documentos e formatos biomédicos
* Coleção de base de dados para acesso a dados e computações do WolframAlpha em áreas como matemática, científica, e informações socioeconômicas
* Processamento de palavras técnicas como edição de fórmulas e geração automática de relatórios
* Ferramentas para conectar DLLs. Sistemas com base em SQL, Java, .NET, C++, FORTRAN, CUDA, OpenCL e http
* Ferramentas para programação em paralelo
* Possibilidade de uso de entradas linguísticas de forma livre (uma interface de usuário em linguagem natural) e linguagem do Mathematica em um notebook quando existir conexão a internet

## Interface

O Mathematica é composto de duas partes, a interface gráfica (também conhecida como front end) e o kernel. O kernel é a parte que interpreta as expressões e código do Mathematica e retorna os resultados. Já a interface gráfica, é onde o usuário trabalha com opções gráficas mais estéticas e com possíveis edições. Alguns dos recursos mais conhecidos da front end do Mathematica são a possível alternância entre notação matemática e notação padrão do Mathematica, a criação de relatórios e artigos científicos, apresentações, etc.
O principal responsável pela front end do Mathematica é Theodore Gray, co-fundador da Wolfram Research e atual diretor do setor de interface de usuário da empresa. A partir do trabalho que Theodore desenvolveu para a interface do usuário do Mathematica surgiu uma empresa de nome TouchPress que utiliza tecnologias do Mathematica para a criação de ebooks dinâmicos. Outras aplicações derivadas da interface do usuário desenvolvida para o Mathematica são o Mathematica Player e o CDF Player. O Mathematica Player é uma versão anterior de plugin para navegadores de internet para execução de arquivos do Mathematica. A versão mais recente deste player é o CDF Player, introduzido em conjunto com o Formato de Documento Computável (do inglês Computable Document Format, CDF). O CDF Player é o atual programa utilizado para distribuição gratuita de arquivos criados pelo Mathematica.
Os documentos do Mathematica podem ser estruturados através da utilização de uma hierarquia de células, que permite destacar e dividir o trabalho em seções, que suporta criação automática de número de seções. Os documentos podem ser apresentados em um ambiente no formato de apresentação de slides, no caso de apresentações. Os notebooks e seus conteúdos podem ser expressados como expressões do Mathematica que podem ser criadas, modificadas e analisadas por programas do Mathematica. Isso permite a conversão entre o formato padrão do Mathematica e outros formatos como TeX ou XML.
O front-end inclui ferramentas de desenvolvimento como um depurador, conclusão de entrada e coloração automática de sintaxe.
Entre os front-ends alternativos está o Wolfram Workbench, um IDE baseado no Eclipse, lançado em 2006. Ele fornece ferramentas de desenvolvimento de código baseadas em projetos para o Mathematica, incluindo gestão de revisão, depuração, perfis e testes. O Mathematica Kernel também inclui um front-end de linha de comando. Entre outras interfaces está ainda o JMath, baseado no GNU readline, e o MASH, que executa programas do Mathematica independentes a partir da linha de comando UNIX.

## Dados Computáveis

O Mathematica inclui coleções de dados processados de maneira consistente para computação imediata. Os dados podem ser acessados de maneira programática para informar ou testar modelos e são atualizados automaticamente a partir de um servidor de dados da Wolfram Research. Alguns dados como preços de ações e dados meteorológicos são fornecidos em tempo real. Atualmente os conjuntos de dados incluem:
* Dados astronômicos: 99 propriedades de 155.000 corpos astronômicos
* Dados químicos: 111 propriedades de 34.000 compostos químicos, 86 propriedades de 118 elementos químicos e 35 propriedades de 1000 partículas subatômicas
* Dados geopolíticos: 225 propriedades de 237 países e 14 propriedades de 160.000 cidades ao redor do mundo
* Dados financeiros: 71 propriedades históricas e em tempo real de 186.000 ações e instrumentos financeiros
* Dados matemáticos: 89 propriedades de 187 poliedros, 258 propriedades de 3000 gráficos, 63 propriedades de 6 nós, 37 propriedades de 21 estruturas de rede, 32 propriedades de 52 esquemas geodésicos
* Dados linguísticos: 37 propriedades de 149.000 palavras em inglês. 26 dicionários de línguas adicionais
* Dados biomédicos: 41 propriedades de todos os 40.000 genes humanos, 30 propriedades de 27.000 proteínas
* Dados meteorológicos: medidas históricas e em tempo real de 43 propriedades de 17.000 estações meteorológicas ao redor do mundo
* Dados do Wolfram|Alpha: trilhões de pontos de dados do WolframAlpha

## Áreas de aplicação

O Mathematica é um dos programas de computação mais poderosos que existem, e para atingir tal patamar estendeu a aplicação do programa às mais diversas áreas do conhecimento. O que inicialmente era um programa mais focado para matemática, levou a uma restrição do conceito por causa do nome. Stephen Wolfram comenta que o Mathematica de hoje em dia é muito mais do que era há mais de duas décadas quando foi lançado, e sente que o nome limita o entendimento das pessoas com relação a capacidade do programa.
A versão 8 do Mathematica inclui diversas novas áreas do conhecimento, como análise de wavelets, computação em paralelo, programação em GPU, processamento e análise de imagens, sistemas de controle, engenharia financeira e biologia computacional. Como pode se ver pelos exemplos citados, o software é capaz de trabalhar com as mais diversas áreas sem a necessidade de compra de pacotes adicionais, todas as áreas podem ser operadas com a licença original. A tabela a seguir mostra algumas das áreas em que o Mathematica é capaz de operar.
| Engenharia | - Engenharia Química - Ciências dos Materiais - Engenharia Mecânica - Engenharia Elétrica - Engenharia do Petróleo | Ciências Biológicas | - Bioinformática - banco de dados - Genoma humano - Proteína: todas as proteínas humanas - Estruturas Químicas - Medicina - processamento de imagens |
| Ciências Exatas | - Astronomia - Meteorologia - Ótica - Física - Química - Estatística | Economia e Finanças | - Seguro: estimativas e banco de dados - Análise de crédito e risco - Econometria: banco de dados de índices - Engenharia financeira e Economia |
| Ensino de Matemática | - Nível superior: Cálculo - Ensino a distância: matemática interativa - Centros de Aprendizagem | Outras Áreas | - Música - Artes - Design de Jogos - Edição de Artigos Científicos |

## Conexão com outras aplicações

A comunicação com outras aplicações ocorre através de um protocolo chamado MathLink. Ele permite a comunicação entre o kernel do Mathematica e o front-end, e também fornece uma interface geral entre o kernel e outras aplicações. A Wolfram Research distribui gratuitamente um kit de desenvolvimento para a ligação de aplicativos escritos na linguagem de programação C com o kernel do Mathematica através do MathLink. Usando J/Link., um programa Java pode solicitar do Mathematica que execute cálculos; por sua vez, um programa Mathematica pode carregar classes Java, manipular objetos Java e realizar chamadas de método. Funcionalidade semelhante é conseguida com .NET /Link, mas com programas . NET em vez de programas Java. Entre outras linguagens que se conectam ao Mathematica estão Haskell, AppleScript, Racket, Visual Basic, Python e Clojure.
Há ainda a disponibilidade de links para muitos pacotes de software especializados em matemática, incluindo LibreOffice Calc, Microsoft Excel, MATLAB, R, Sage, SINGULAR, Wolfram SystemModeler e Origin. Equações matemáticas podem ser intercambiadas com outros softwares de cálculo ou de formatação de texto via MathML.
A comunicação com bancos de dados SQL é realizada através de um suporte embutido para JDBC. O programa também pode instalar serviços da web a partir de uma descrição WSDL.
Mathematica pode capturar dados em tempo real através de um link para o LabVIEW, a partir de feeds de dados financeiros e diretamente de dispositivos de hardware via GPIB (IEEE 488), USB e interfaces seriais. Ele ainda automaticamente reconhece e lê a partir de dispositivos HID.

## Licenciamento e Plataformas

Mathematica é um software proprietário licenciado a uma variedade de preços, a depender da finalidade do uso: comercial, educacional, para a administração pública, entre outros.
Mathematica 9 é compatível com várias versões do Microsoft Windows (XP SP3, Vista, 7 e 8), OS X, Linux e Raspbian. Todas as plataformas possuem suporte para versões de 64 bits. Versões anteriores do Mathematica, até a versão 6.0.3, suportavam outros siestemas operacionais, como Solaris, AIX, Convex, HP-UX, IRIX, MS-DOS, NeXTSTEP, OS/2, Ultrix e Windows Me.

## Histórico de versões

Wolfram Research lançou as seguintes versões do Mathematica:
* Mathematica 1.0 (junho de 1988)
* Mathematica 1.1 (outubro de 1988)
* Mathematica 1.2 (agosto de 1989)
* Mathematica 2.0 (janeiro de 1991)
* Mathematica 2.1 (junho de 1992)
* Mathematica 2.2 (junho de 1993)
* Mathematica 3.0 (setembro de 1996)
* Mathematica 4.0 (maio de 1999)
* Mathematica 4.1 (novembro de 2000)
* Mathematica 4.2 (novembro de 2002)
* Mathematica 5.0 (junho de 2003)
* Mathematica 5.1 (outubro de 2004)
* Mathematica 5.2 (junho de 2005)
* Mathematica 6.0 (maio de 2007)
* Mathematica 7.0 (novembro de 2008)
* Mathematica 8.0 (novembro de 2010)
* Mathematica 8.0.1 (março de 2011)
* Mathematica 8.0.4 (outubro de 2011)
* Mathematica 9.0 (novembro de 2012)
* Mathematica 9.0.1 (janeiro de 2013)
* Mathematica 10.0 (julho de 2014)
* Mathematica 10.0.1 (setembro de 2014)
* Mathematica 10.0.2 (dezembro de 2014)
* Mathematica 10.1 (março de 2015)
* Mathematica 10.2 (julho de 2015)
* Mathematica 10.3 (outubro de 2015)
* Mathematica 10.3.1 (dezembro de 2015)
* Mathematica 10.4 (março de 2016)
* Mathematica 11.0 (agosto de 2016)
* Mathematica 11.0.1 (setembro de 2016)
* Mathematica 11.1 (março de 2017)
* Mathematica 11.1.1 (abril de 2017)
* Mathematica 11.2 (setembro de 2017)
* Mathematica 11.3 (março de 2018)
* Mathematica 12.0 (abril de 2019)
* Mathematica 12.2 (dezembro de 2020)
* Mathematica 12.3 (maio de 2021)
* Mathematica 13.0 (dezembro de 2021)
* Mathematica 13.1 (junho de 2022)
* Mathematica 13.2 (dezembro de 2022)
* Mathematica 13.3 (junho de 2023)
* Mathematica 13.3.1 (agosto de 2023)
* Mathematica 14.0 (janeiro de 2024)
* Mathematica 14.1 (julho de 2024)
* Mathematica 14.2 (janeiro de 2025)