SymPy – Wikipédia, a enciclopédia livre

SymPy
Sympy logo.

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.[1]

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. Symy é um software livre sob licença BSD. Os desenvolvedores líderes são Ondřej Čertík e Aaron Meurer.

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[2] e suas ferramentas incluem:[1]

Núcleo de ferramentas

[editar | editar código-fonte]
  • 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
  • Aritmética básica: divisão, gcd, etc.
  • Fatorização
  • Bases de Gröbner
  • Frações parciais
  • Resultantes
  • Limites
  • Diferenciação
  • Integração
  • Séries de Taylor (Laurent)

Solução de equações

[editar | editar código-fonte]
  • Polinomiais
  • Sistemas de equações
  • Equações algébricas
  • Equações diferenciais
  • Equações de diferenças

Matemática discreta

[editar | editar código-fonte]
  • 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
  • Aritmética básica
  • Autovalores e autovetores
  • Determinantes
  • Inversão
  • Solução de sistemas lineares
  • Pontos, linhas, raios, segmentos, elípces, círculos, polígonos, etc.
  • Interseções
  • Tangência
  • Similaridade

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
  • Unidades
  • Mecânica
  • Ótica gaussiana
  • Álgebra de Pauli
  • Distribuições normais
  • Distribuições uniformes
  • Probabilidade

Saída de dados

[editar | editar código-fonte]

Projetos relacionados

[editar | editar código-fonte]

Dependências opcionais

[editar | editar código-fonte]

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.

Pretty Printing

[editar | editar código-fonte]

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.

>>> from sympy import pprint, init_printing, Symbol, sin, cos, exp, sqrt, series, Integral, Function >>> >>> x = Symbol("x") >>> y = Symbol("y") >>> f = Function('f') >>> # pprint usará padrão unicode se disponível >>> pprint( x**exp(x) )   x    x >>> # Uma saída sem unicode >>> pprint(Integral(f(x), x), use_unicode=False)   /  |  | f(x) dx  | / >>> # Compare com a mesma expressão, mas agora com unicode >>> pprint(Integral(f(x), x), use_unicode=True)   f(x) dx  >>> # Alternativamente, pode-se chamar init_printing() que ativa pprint por padrão >>> init_printing() >>> sqrt(sqrt(exp(x)))    ____ 4   x ╲╱   >>> (1/cos(x)).series(x, 0, 10)      2      4       6        8     x    5x    61x    277x      10 1 + ── + ──── + ───── + ────── + Ox       2     24     720     8064 
>>> from sympy import init_printing, Symbol, expand >>> init_printing() >>> >>> a = Symbol('a') >>> b = Symbol('b') >>> e = (a + b)**5 >>> e        5 (a + b) >>> e.expand()  5      4         3  2       2  3        4    5 a  + 5a b + 10a b  + 10a b  + 5ab  + b 

Precisão arbitrária

[editar | editar código-fonte]
>>> from sympy import Rational, pprint >>> >>> e = Rational(2)**50 / Rational(10)**50 >>> pprint(e) 1/88817841970012523233890533447265625 

Diferenciação

[editar | editar código-fonte]
>>> from sympy import init_printing, symbols, ln, diff >>> init_printing() >>> x,y = symbols('x y') >>> f = x**2 / y + 2 * x - ln(y) >>> diff(f,x)  2x  ─── + 2   y >>> diff(f,y)     2    x    1  - ── -      2   y    y >>> diff(diff(f,x),y)  -2x  ────    2   y 
>>> from sympy import symbols, plot3d, cos >>> x,y = symbols('x y') >>> plot3d(cos(x*3)*cos(y*5)-y, (x, -1, 1), (y, -1, 1)) <sympy.plotting.plot.Plot object at 0x3b6d0d0> 
>>> from sympy import init_printing, Symbol, limit, sqrt, oo >>> init_printing() >>> >>> x = Symbol('x') >>> limit(sqrt(x**2 - 5*x + 6) - x, x, oo) -5/2 >>> limit(x*(sqrt(x**2 + 1) - x), x, oo) 1/2 >>> limit(1/x**2, x, 0)  >>> limit(((x - 1)/(x + 1))**x, x, oo)  -2  

Equações diferenciais

[editar | editar código-fonte]
>>> from sympy import init_printing, Symbol, Function, Eq, dsolve, sin, diff >>> init_printing() >>> >>> x = Symbol("x") >>> f = Function("f") >>> >>> eq = Eq(f(x).diff(x), f(x)) >>> eq d ──(f(x)) = f(x) dx >>> >>> dsolve(eq, f(x))            x f(x) = C₁⋅  >>> >>> eq = Eq(x**2*f(x).diff(x), -3*x*f(x) + sin(x)/x) >>> eq  2 d                      sin(x) x ⋅──(f(x)) = -3xf(x) + ──────    dx                       x >>> >>> dsolve(eq, f(x))        C - cos(x) f(x) = ───────────              3             x 
>>> from sympy import init_printing, integrate, Symbol, exp, cos, erf >>> init_printing() >>> x = Symbol('x') >>> # Função polinomial >>> f = x**2 + x + 1 >>> f  2 x  + x + 1 >>> integrate(f,x)  3    2 x    x ── + ── + x 3    2 >>> # Função racional >>> f = x/(x**2+2*x+1) >>> f      x ────────────  2 x  + 2x + 1  >>> integrate(f, x)                1 log(x + 1) + ─────              x + 1 >>> # Função polinomial-exponencial >>> f = x**2 * exp(x) * cos(x) >>> f  2  x x  cos(x) >>> integrate(f, x)  2  x           2  x                         x           x x  sin(x)   x  cos(x)      x           sin(x)    cos(x) ──────────── + ──────────── - x sin(x) + ───────── - ─────────      2              2                           2           2 >>> # Uma integral não elementar >>> f = exp(-x**2) * erf(x) >>> f    2  -x    erf(x) >>> integrate(f, x)    ___    2 ╲╱ π erf (x) ─────────────       4 
>>> from sympy import Symbol, cos, sin, pprint >>> x = Symbol('x') >>> e = 1/cos(x) >>> pprint(e)   1 ────── cos(x) >>> pprint(e.series(x, 0, 10))      2      4       6        8     x    5x    61x    277x      10 1 + ── + ──── + ───── + ────── + Ox       2     24     720     8064 >>> e = 1/sin(x) >>> pprint(e)   1 ────── sin(x) >>> pprint(e.series(x, 0, 4))            3 1   x   7x      4  +  + ──── + Ox  x   6   360 
  1. a b «SymPy homepage». Consultado em 13 de outubro de 2014 
  2. «Sympy project statistics on Open HUB». Consultado em 13 de outubro de 2014 

Ligações externas

[editar | editar código-fonte]