# SymPy

SymPy é uma biblioteca Python para computação simbólica. Ela fornece ferramentas de álgebra computacional tanto como uma aplicação independente como, também, uma biblioteca para outras aplicações. Ainda, a biblioteca está disponível de forma on-line nos sítios de internet:SymPy Live e SymPy Gamma. Sympy é fácil de ser instalada e analisada, pois é escrita em Python e não depende de bibliotecas adicionais.
SymPy inclui ferramentas que variam do cálculo de aritmética simbólica básica, algebra, matemática discreta e física quântica. É capaz de formatar o resultado das computações em código LaTeX. SymPy é um software livre sob licença BSD. Os desenvolvedores líderes são Ondřej Čertík e Aaron Meurer.

## Visão Geral

A biblioteca Sympy está dividida em um núcleo com vários módulos opcionais. Atualmente, o núcleo do Sympy tem aproximadamente 260,000 linhas de código e suas ferramentas incluem:

### Núcleo de ferramentas

* Aritmética básica: *, /, +, -, **
* Simplificação
* Expansão
* Funções: trigonométricas, hiperbólicas, exponenciais, radicais, logarítmicas, valor absoluto, harmônicas esféricas, fatoriais e função gama, função zeta, polinomiais, hipergeométricas, funções especiais, entre outras.
* Substituição
* Números inteiros, racionais e de ponto flutuante de precisão arbitrária
* Símbolos não-comutativos
* Reconhecimento de padrões

### Polinômios

* Aritmética básica: divisão, gcd, etc.
* Fatorização
* Bases de Gröbner
* Frações parciais
* Resultantes

### Cálculo

* Limites
* Diferenciação
* Integração
* Séries de Taylor (Laurent)

### Solução de equações

* Polinomiais
* Sistemas de equações
* Equações algébricas
* Equações diferenciais
* Equações de diferenças

### Matemática discreta

* Coeficientes binomiais
* Somas
* Produtos
* Teoria dos números: gerador de números primos, teste de números primos, fatorização inteira, etc.
* Expressões lógicas

### Matrizes

* Aritmética básica
* Autovalores e autovetores
* Determinantes
* Inversão
* Solução de sistemas lineares

### Geometria

* Pontos, linhas, raios, segmentos, elípces, círculos, polígonos, etc.
* Interseções
* Tangência
* Similaridade

### Gráficos

Nota: a geração de gráficos requer o módulo externo Pyglet.
* Modelos de coordenadas
* Entidades geométricas de gráficos
* 2D e 3D
* Interface iterativa
* Cores

### Física

* Unidades
* Mecânica
* Ótica gaussiana
* Álgebra de Pauli

### Estatística

* Distribuições normais
* Distribuições uniformes
* Probabilidade

### Saída de dados

* Pretty printing: ASCII/Unicode pretty printing, LaTeX
* Geração de código: C, FORTRAN, Python

## Projetos relacionados

* SageMath: uma alternativa de código aberto ao Mathematica, Maple, Matlab, e Magma (SymPy está incluído no SageMath)
* mpmath: uma biblioteca Python de aritmética de ponto flutuante com precisão arbitrária (incluído no SymPy)
* sympycore: sistema algébrico computacional escrito em Python
* symbide: GUI para SymPy no PyGTK

## Dependências opcionais

SymPy não requer dependências além do Python, mas existência várias dependências opcionais que podem melhorar suas ferramentas:
* gmpy: Se o gmpy está instalado, o módulo polinomial do Sympy irá usá-lo para melhorar sua performance.

## Exemplos
### Pretty Printing

Sympy permite a saída de dados formatada em um formato bastante compreensível. Para tanto, usa-se a função pprint. Alternativamente, o método init_printing ativa o pretty printing, de forma que pprint não precisa ser chamado. Pretty printing usa de símbolos unicode quando estes estão disponíveis no ambient, caso contrário ele utilizará o padrão de caracteres ASCII.

### Séries
## Veja também

* Maxima