SageMath
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.
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 | )
Versão em teste | 9.7beta0 (22 de maio de 2022 | )
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á 166 semanas e 4 dias |
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
editarEntre as características do SageMath, estão:[3]
- Uma interface gráfica para revisão e reutilização de entradas e saídas anteriores, incluindo gráficos e anotações de texto. Compatível com os navegadores Firefox, Opera, Konqueror e Safari. Os cadernos podem ser acessados localmente ou remotamente, e a conexão pode ser assegurada com HTTPS.
- Um interpretador de comandos baseado em texto usando IPython.
- Computação paralela, usando processadores multinúcleo, multiprocessamento simétrico e computação distribuída.
- Cálculo, usando Maxima e SymPy.
- Álgebra linear numérica, usando GNU Scientific Library, SciPy e NumPy.
- Bibliotecas de funções elementares e especiais.
- Gráficos 2D e 3D de funções simbólicas e dados numéricos.
- Manipulação de matrizes, incluindo matrizes esparsas.
- Bibliotecas de estatísticas multivariáveis, usando R e SciPy.
- Uma caixa de ferramentas para acrescentar interfaces do utilizador a cálculos e aplicações.
- Ferramentas para o processamento de imagens, usando pylab e Python.
- Ferramentas para visualizar e analisar gráficos.
- Bibliotecas para funções de teoria dos números.
- Filtros para importação e exportação de dados, imagens, vídeo, áudio, CAD e GIS.
- Suporte para números complexos, aritmética de precisão arbitrária e matemática simbólica, sempre que isto for apropriado.
- MoinMoin como um sistema Wiki, para gestão do conhecimento.
- Documentação, usando Sphinx.
- Interface para alguns softwares proprietários, como o Mathematica, Magma (sistema algébrico computacional) e Maple.
Desenvolvimento
editarWilliam 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
editarApenas 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
editarEm 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
editarO 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:
- Pode-se descarregar binários para Linux, OS X e Solaris (sistema operacional) (x86 e SPARC).
- Um live CD contendo o sistema operacional inicializável Linux também está disponível. Isto permite a utilização do SageMath sem a instalação do Linux.
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
editarA 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.
Á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 |
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Álgebra e cálculo
editarx, 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
editart = 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
editarA = 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
editarprime_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
editarReferências
- ↑ William Stein. «SAGE: A Computer System for Algebra and Geometry Experimentation». Consultado em 16 de abril de 2012
- ↑ 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
- ↑ «SageMath - Documentação de Ajuda». Consultado em 16 de abril de 2012
- ↑ «Sage Days 7: Combinatorics». 14 de novembro de 2008. Consultado em 17 de abril de 2012
- ↑ «www.sagemath.org/development-ack.html». Consultado em 17 de abril de 2012
- ↑ SageMath. «Sage Download - src-old». Consultado em 17 de abril de 2012
- ↑ Science Daily (6 de dezembro de 2007). «Free Software Brings Affordability, Transparency To Mathematics». Consultado em 17 de abril de 2012
- ↑ SageMath. «Publications Citing Sage». Consultado em 17 de abril de 2012
- ↑ SageMath. «Publications Citing Sage-Combinat». Consultado em 17 de abril de 2012
- ↑ name="sage_development"
- ↑ 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- Sítio oficial (em inglês)
- Documentação oficial, referências e tutoriais (em inglês)
- Vídeos do Sage (em inglês)
- Sage online, no navegador (em inglês)
- AMS Notices Opinion – Open Source Mathematical Software (em inglês)
- História do Sage, conforme seu criador W. Stein (em inglês)