1 pontos por GN⁺ 2024-03-01 | 1 comentários | Compartilhar no WhatsApp

Vantagens do SymPy

  • Gratuito: o SymPy, sob licença BSD, pode ser usado livremente e sem custo.
  • Baseado em Python: o SymPy é escrito inteiramente em Python e usa Python.
  • Leve: o SymPy depende apenas do mpmath, uma biblioteca pura em Python para aritmética de ponto flutuante de precisão arbitrária, o que facilita seu uso.
  • Biblioteca: além de ser usado como ferramenta interativa, pode ser embutido em outras aplicações ou expandido com funções personalizadas.

Projetos que usam SymPy

  • Cadabra: sistema de álgebra tensorial e teoria de campos (quântica) que usa SymPy para operações de álgebra escalar.
  • ChemPy: pacote útil para química escrito em Python.
  • devito: DSL simbólica e compilador just-in-time para computação de stencil de alto desempenho.
  • EinsteinPy: pacote em Python para relatividade geral simbólica e numérica.
  • galgebra: álgebra geométrica (anteriormente sympy.galgebra).
  • LaTeX Expression project: facilita a composição em LaTeX de expressões algébricas, com substituição automática e cálculo de resultados.
  • Lcapy: pacote experimental em Python para o ensino de análise de circuitos lineares.
  • OctSymPy: pacote simbólico para Octave que usa SymPy.
  • Optlang: pacote em Python para resolver problemas de otimização matemática.
  • PyDy: dinâmica de múltiplos corpos em Python.
  • pyneqsys: definido simbolicamente para resolver numericamente sistemas de equações não lineares.
  • pyodesys: integração numérica simples de sistemas de ODE em Python.
  • PyTorch TorchInductor: TorchInductor usa SymPy para dar suporte a formas e strides dinâmicos.
  • QMCPACK: Monte Carlo quântico em C++; usa SymPy para gerar valores de referência para testes unitários e alguma geração de código.
  • Quantum Programming in Python: oscilador harmônico simples quântico 1D e portas de mapeamento quântico.
  • SageMath: sistema matemático de código aberto que inclui o SymPy.
  • Scikit-fdiff: discretização por diferenças finitas.
  • SfePy: elementos finitos simples em Python.
  • Spyder: ambiente científico de desenvolvimento Python equivalente ao Rstudio ou MATLAB; oferece suporte completo ao SymPy no console IPython do Spyder.
  • Symbolic statistical modeling: adiciona operações estatísticas a modelos físicos complexos.
  • yt: pacote em Python para analisar e visualizar dados volumétricos (o sistema de unidades unyt, do yt, usa SymPy).

Opinião do GN⁺

  • O SymPy é oferecido gratuitamente sob licença BSD e, por ser baseado em Python, é uma biblioteca de operações matemáticas familiar para usuários de Python. Isso o torna especialmente ativo na comunidade open source e vantajoso para uso em diversas áreas científicas e de engenharia.
  • O SymPy é leve e pode ser integrado facilmente a outras aplicações, oferecendo flexibilidade para que usuários resolvam problemas matemáticos complexos ou o expandam adicionando suas próprias funções.
  • Ao adotar essa tecnologia, é necessário ter um entendimento básico de Python, e ela mostra seu valor especialmente em projetos nos quais modelagem matemática ou computação simbólica são importantes.
  • Os benefícios de usar o SymPy incluem operações matemáticas de alto desempenho, escalabilidade para várias áreas e melhoria contínua com o suporte da comunidade open source.
  • Outros projetos com funcionalidades semelhantes incluem Mathematica, Maple e o Symbolic Math Toolbox do MATLAB, mas como são softwares comerciais, o SymPy pode ser uma alternativa gratuita e poderosa.

1 comentários

 
GN⁺ 2024-03-01
Comentários do Hacker News
  • Trabalho com robótica e frequentemente preciso escrever vetores grandes calculados como resultado de transformações 3D e calcular seus jacobianos (derivadas) em relação a várias variáveis de estado. Isso leva a equações complexas. Com o sympy, é possível calcular esses vetores grandes de forma declarativa, calcular os jacobianos e exportar o resultado como código C para incorporar imediatamente ao código. Por exemplo, há um exemplo simples mostrando como expressar declarativamente uma forma de estimar a posição de um sensor em relação ao centro do robô, caso você tenha acesso a um conjunto de dados com a posição do robô e a posição do sensor. Para isso, basta definir as funções transform e invert.
  • O SymPy é uma ferramenta realmente excelente, e eu o uso há anos como ferramenta educacional. Em comparação com Mathematica/Maple e afins, acho que é a melhor opção porque suas funções de API correspondem exatamente aos verbos que os alunos usam ao aprender matemática (solve, expand, factor etc.). Há um pequeno tutorial para quem quer começar, e ele também está disponível no formato de notebook executável. Além disso, para quem quiser experimentar o SymPy sem instalar nada, existe o SymPy Live Shell, que permite rodar Python + SymPy no navegador.
  • Matemática simbólica não foi explorada a fundo na graduação, e o que encontrei estava em sua maior parte preso a softwares proprietários como Mathematica e MATLAB. Trabalho em uma área de matemática/engenharia que usa muito cálculo tensorial, e usei o Maxima como ferramenta principal, mas os pacotes para isso são limitados e pouco práticos de usar. Agora uso o SymPy para cálculos mais complexos, graças às abstrações que o Python já oferece. Um dia espero ler o 'Principles' do Norvig e talvez conseguir adaptar o Maxima às minhas necessidades (se alguém tiver referências melhores para ler o código-fonte/implementação do Maxima sobre cálculo tensorial/álgebra simbólica de tensores e geometria, eu gostaria de saber).
  • Há um benchmark entre SymPy e Mathematica, e os resultados mostram que o Mathematica não conseguiu resolver 1.523 problemas, enquanto o SymPy não conseguiu resolver 48.529. Então o SymPy ainda tem terreno a recuperar.
  • Uso o SymPy como calculadora, e foi fornecido um link do GitHub para isso.
  • Há 10 anos, quando eu tinha interesse em relatividade geral, quis escrever um programa simples para lidar com cálculos simbólicos das equações de campo de Einstein. O SymPy era uma opção, mas era difícil de usar e eu não consegui fazê-lo funcionar. Resolvi em poucas horas usando o Mathematica. Depois ampliei isso e fiz muitos cálculos em um artigo sobre buracos negros. Hoje, o SymPy passou por muito desenvolvimento e boas bibliotecas foram criadas, havendo até um exemplo de notebook Jupyter sobre a métrica de Schwarzschild.
  • O SymPy funciona muito bem no Jupyter. Foi fornecido um link para um notebook de demonstração do SymPy.
  • Foi fornecido um link da Wikipedia sobre o SymPy, junto com um link para uma discussão sobre como ensinar logaritmos usando Python e SymPy. Também há um link comparando SymPy e Matlab, e um link para um documento que apresenta o NumPy a usuários de Matlab.
  • O SymPy é suficiente para fazer o trabalho. Em geral, eu o uso com a biblioteca combinada do SageMath, mas fico na dúvida se o SymPy já evoluiu o bastante para ser usado de forma independente.
  • Para um "físico" numérico, o SymPy foi um presente dos deuses. É ótimo para prototipar modelos mais avançados antes de otimizá-los depois em C++. Não usei muito o Mathematica, mas ele parece simbolicamente mais poderoso ou menos exigente que o SymPy. Espero que alguém com mais experiência em Mathematica possa explicar isso melhor.