SageMath

Origem: Wikipédia, a enciclopédia livre.
SageMath
Logótipo
SageMath
Desenvolvedor William Stein
Plataforma Python
Lançamento 24 de fevereiro de 2005 (19 anos)
Versão estável 9.6 (15 de maio de 2022; há 21 meses)
Versão em teste 9.7beta0 (22 de maio de 2022; há 21 meses)
Escrito em Python, Cython
Sistema operativo Multiplataforma
Gênero(s) Sistema algébrico computacional
Licença GNU General Public License
Estado do desenvolvimento Corrente
Página oficial sagemath.org (em inglês, em chinês, em francês, em alemão, em português e em russo)., acessado pela última vez há 126 semanas e 2 dias

O SageMath (anteriormente Sage e SAGE, acrónimo em inglês para Sistema Algébrico e Geométrico de Experimentações[1]) é um software de matemática que possui recursos que abrangem muitas áreas, incluindo álgebra, combinatória, análise numérica, teoria dos números e cálculo.

A primeira versão do SageMath foi lançada em 24 de fevereiro de 2005 como um software livre e de código aberto, nos termos da GNU General Public License, com o objectivo de criar uma "alternativa de código aberto a outros programas, como o Magma (sistema algébrico computacional), Maple, Mathematica e MATLAB".[2]

O SageMath utiliza a linguagem de programação Python, suportando programações procedural, funcional e de orientação a objetos.

Características[editar | editar código-fonte]

A interface gráfica do SageMath funciona como a maioria dos navegadores web
Resolução de equações e de diagramação utilizando a interface web do SageMath

Entre as características do SageMath, estão:[3]

Desenvolvimento[editar | editar código-fonte]

William Stein, desenvolvedor do Sage

William Stein percebeu, ao projectar o SageMath, que já havia muitos softwares de código aberto escritos em diferentes linguagens de programação, a saber, C, C++, Common Lisp, Fortran e Python.

Ao invés de reinventar a roda, o SageMath (que é escrito principalmente em Python e Cython) integra vários softwares de matemática em uma interface comum, para que um utilizador necessite saber apenas Python.[4]
Tanto estudantes quanto profissionais auxiliam no desenvolvimento do SageMath. O desenvolvimento do SageMath é mantido por trabalhos voluntários e doações.[5]

Histórico de lançamentos[editar | editar código-fonte]

Apenas os maiores lançamentos estão listados abaixo. O Sage segue o conceito "liberação rápida e frequente", lançando novas versões com diferença de poucas semanas ou meses. No total, houve mais de 300 novas versões lançadas, embora a frequência de atualizações tenha diminuído.[6]

Versão Data de lançamento Descrição
0.1 Janeiro de 2005 Inclui PARI, mas não GAP ou Singular
0.2 - 0.4 Março a Julho de 2005 Banco de dados do Cremona, polinômios multivariados, campos finitos grandes e mais documentação
0.5 - 0.7 Agosto e Setembro de 2005 Espaços vectoriais, anéis, símbolos modulares e janelas de utilização
0.8 Outubro de 2005 Distribuição completa do GAP, Singular
0.9 Novembro de 2005 Maxima e clisp adicionados
1.0 Fevereiro de 2006
2.0 Janeiro de 2007
3.0 Abril de 2008
4.0 Maio de 2009
5.0 Maio de 2012
6.0 Dezembro de 2013 Desenvolvimento movido para o Git
7.0 Janeiro de 2016 Melhorias na interface gráfica
8.0 Julho de 2017
9.0 Janeiro de 2020 Conversão para Python 3

Conquistas[editar | editar código-fonte]

Em 2007, o SageMath ganhou o primeiro prémio na divisão de software científico do Les Trophées du Libre, uma competição internacional para software livre.[7]

O SageMath também já foi citado em várias publicações.[8][9]

Licença e disponibilidade[editar | editar código-fonte]

O SageMath é software livre, distribuído sob os termos da GNU General Public License, versão 3. O programa está disponível de várias maneiras:

Embora a Microsoft estivesse patrocinando uma versão nativa do SageMath para o sistema operacional Windows,[10] até 2012 não havia planos para o desenvolvimento de uma versão nativa, e os utilizadores do Windows têm actualmente que utilizar máquinas virtuais, como o VirtualBox, para poderem executar o SageMath.[11]
As distribuições Linux em que o SageMath está disponível como um pacote são Ubuntu, Debian, Fedora, Arch Linux e NixOS. O SageMath pode ser instalado em qualquer distribuição Linux.

Pacotes de software contidos no SageMath[editar | editar código-fonte]

A filosofia do SageMath é a utilização de bibliotecas de softwares de código aberto, onde quer que existam. Por isso, utiliza muitas bibliotecas de outros projectos.

Pacotes de matemática contidos no SageMath
Álgebra GAP, Maxima, Singular, Macaulay 2
Geometria algébrica Singular, Macaulay 2
Aritmética de precisão arbitrária MPIR, MPFR, MPFI, NTL, mpmath
Geometria aritmética PARI/GP, NTL, mwrank, ecm
Cálculo Maxima, SymPy, GiNaC
Combinatória Symmetrica, Sage-Combinat
Álgebra linear ATLAS, BLAS, LAPACK, NumPy, LinBox, IML, GSL
Teoria dos gráficos NetworkX
Teoria dos grupos GAP
Computação numérica GSL, SciPy, NumPy, ATLAS, Scilab, GNU Octave
Teoria dos números PARI/GP, FLINT, NTL, Kash/Kant
Computação estatística R, SciPy
Outros pacotes contidos no SageMath
Shell da linha de comando IPython
Banco de dados ZODB, Python pickles, SQLite
Configuração do tipo de matemática LaTeX
Interface gráfica Sage Notebook, jsmath
Gráficos Matplotlib, Tachyon3d, GD, Jmol
Linguagem de programação interativa Python
Rede Twisted

Exemplos de utilização[editar | editar código-fonte]

Álgebra e cálculo[editar | editar código-fonte]

x, a, b, c = var('x, a, b, c')

log(sqrt(a)).simplify_log() # returns 1/2*log(a)
log(a / b).expand_log() # returns log(a) - log(b)
sin(a + b).simplify_trig() # returns sin(a)*cos(b) + sin(b)*cos(a)
cos(a + b).simplify_trig() # returns -sin(a)*sin(b) + cos(a)*cos(b)
(a + b)^5 # returns (a + b)^5
expand((a + b) ^ 5) # a^5 + 5*a^4*b + 10*a^3*b^2 + 10*a^2*b^3 + 5*a*b^4 + b^5

limit((x ^ 2 + 1) / (2 + x + 3 * x ^ 2), x=Infinity) # returns 1/3
limit(sin(x) / x, x=0) # returns 1

diff(acos(x), x) # returns -1/sqrt(-x^2 + 1)
f = exp(x) * log(x)
f.diff(x, 3) # returns e^x*log(x) + 3*e^x/x - 3*e^x/x^2 + 2*e^x/x^3

solve(a * x ^ 2 + b * x + c, x) # returns [x == -1/2*(b + sqrt(-4*a*c + b^2))/a, x == -1/2*(b - sqrt(-4*a*c + b^2))/a]

f = x ^ 2 + 432 / x
solve(f.diff(x) == 0, x) # returns [x == 3*I*sqrt(3) - 3, x == -3*I*sqrt(3) - 3, x == 6]

Equações diferenciais[editar | editar código-fonte]

t = var('t') # define a variable t
x = function('x', t) # define x to be a function of that variable
DE = lambda y: diff(y, t) + y - 1
desolve(DE(x(x=t)), [x, t]) # returns (c + e^t)*e^(-t)

Álgebra linear[editar | editar código-fonte]

A = Matrix([[1, 2, 3], [3, 2, 1], [1, 1, 1]])
y = vector([0, -4, -1])
A.solve_right(y) # returns (-2, 1, 0)
A.eigenvalues() # returns [5, 0, -1]

B = Matrix([[1, 2, 3], [3, 2, 1], [1, 2, 1]])
B.inverse() # returns
'''[   0  1/2 -1/2]
   [-1/4 -1/4    1]
   [ 1/2    0 -1/2]'''

# Call NumPy for the Moore-Penrose pseudo-inverse, since Sage does not support that yet.

import numpy
C = Matrix([[1 , 1], [2 , 2]])
matrix(numpy.linalg.pinv(C.numpy())) # returns
'''[0.1 0.2]
   [0.1 0.2]'''

Teoria dos números[editar | editar código-fonte]

prime_pi(1000000) # returns 78498, the number of primes less than one million

E = EllipticCurve('389a') # construct an elliptic curve from its Cremona label
P, Q = E.gens()
7 * P + Q # returns (24187731458439253/244328192262001 : 3778434777075334029261244/3819094217575529893001 : 1)

Ver também[editar | editar código-fonte]

Referências

  1. William Stein. «SAGE: A Computer System for Algebra and Geometry Experimentation». Consultado em 16 de abril de 2012 
  2. William Stein. «Sage Days 4» (PDF). Arquivado a partir do ficheiro originalem 30 de março de 2012. Consultado em 16 de abril de 2012 
  3. «SageMath - Documentação de Ajuda». Consultado em 16 de abril de 2012 
  4. «Sage Days 7: Combinatorics». 14 de novembro de 2008. Consultado em 17 de abril de 2012 
  5. «www.sagemath.org/development-ack.html». Consultado em 17 de abril de 2012 
  6. SageMath. «Sage Download - src-old». Consultado em 17 de abril de 2012 
  7. Science Daily (6 de dezembro de 2007). «Free Software Brings Affordability, Transparency To Mathematics». Consultado em 17 de abril de 2012 
  8. SageMath. «Publications Citing Sage». Consultado em 17 de abril de 2012 
  9. SageMath. «Publications Citing Sage-Combinat». Consultado em 17 de abril de 2012 
  10. name="sage_development"
  11. William Stein (16 de março de 2012). «Re: Question about Sage» Verifique valor |url= (ajuda). Consultado em 17 de abril de 2012  Link web

Ligações externas[editar | editar código-fonte]

O Commons possui uma categoria com imagens e outros ficheiros sobre SageMath