| SageMath | |
|---|---|
| Desenvolvedor | William Stein |
| Lançamento inicial | 24 de fevereiro de2005 (20 anos) |
| Lançamento estável | 10.7 / 9 de agosto de 2025; há 6 meses |
| Versão beta | 10.7beta0 / 2 de abril de 2025; há 10 meses |
| Repositório | |
| Escrito em | Python, Cython |
| Sistema operacional | Multiplataforma |
| Plataforma | Python |
| Tipo | Sistema algébrico computacional |
| Licença | GNU General Public License |
| Website | sagemath.org (eminglês,emchinês,emfrancês,emalemão,emportuguêseemrusso)., acessado pela última vez há 226semanas e 4dias |
OSageMath (anteriormenteSage eSAGE,acrónimo eminglês paraSistema Algébrico e Geométrico de Experimentações[1]) é um software dematemática que possui recursos que abrangem muitas áreas, incluindoálgebra,combinatória,análise numérica,teoria dos números ecálculo.
A primeira versão do SageMath foi lançada em24 de fevereiro de2005 como umsoftware livre e decódigo aberto, nos termos daGNU General Public License, com o objectivo de criar uma "alternativa decódigo aberto a outros programas, como o Magma (sistema algébrico computacional),Maple,Mathematica eMATLAB".[2]
O SageMath utiliza alinguagem de programaçãoPython, suportando programaçõesprocedural,funcional e deorientação a objetos.


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

William Stein percebeu, ao projectar o SageMath, que já havia muitossoftwares decódigo aberto escritos em diferenteslinguagens de programação, a saber,C,C++,Common Lisp,Fortran ePython.
Ao invés dereinventar a roda, o SageMath (que é escrito principalmente emPython e Cython) integra váriossoftwares dematemática em umainterface comum, para que umutilizador necessite saber apenasPython.[4]
Tantoestudantes quanto profissionais auxiliam no desenvolvimento do SageMath. O desenvolvimento do SageMath é mantido por trabalhos voluntários e doações.[5]
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 |
Em2007, o SageMath ganhou o primeiro prémio na divisão de software científico doLes Trophées du Libre, uma competição internacional parasoftware livre.[7]
O SageMath também já foicitado em várias publicações.[8][9]
O SageMath ésoftware livre, distribuído sob os termos daGNU General Public License, versão 3. O programa está disponível de várias maneiras:
Embora aMicrosoft estivesse patrocinando uma versão nativa do SageMath para osistema operacionalWindows,[10] até2012 não havia planos para o desenvolvimento de uma versão nativa, e os utilizadores doWindows têm actualmente que utilizarmáquinas virtuais, como oVirtualBox, para poderem executar o SageMath.[11]
As distribuiçõesLinux em que o SageMath está disponível como um pacote sãoUbuntu,Debian,Fedora,Arch Linux,NixOS eGNU Guix System. O SageMath pode ser instalado em qualquer distribuiçãoLinux.
A filosofia do SageMath é a utilização de bibliotecas desoftwares 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 |
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)^5expand((a+b)^5)# a^5 + 5*a^4*b + 10*a^3*b^2 + 10*a^2*b^3 + 5*a*b^4 + b^5limit((x^2+1)/(2+x+3*x^2),x=Infinity)# returns 1/3limit(sin(x)/x,x=0)# returns 1diff(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^3solve(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/xsolve(f.diff(x)==0,x)# returns [x == 3*I*sqrt(3) - 3, x == -3*I*sqrt(3) - 3, x == 6]
t=var('t')# define a variable tx=function('x',t)# define x to be a function of that variableDE=lambday:diff(y,t)+y-1desolve(DE(x(x=t)),[x,t])# returns (c + e^t)*e^(-t)
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.importnumpyC=Matrix([[1,1],[2,2]])matrix(numpy.linalg.pinv(C.numpy()))# returns'''[0.1 0.2] [0.1 0.2]'''
prime_pi(1000000)# returns 78498, the number of primes less than one millionE=EllipticCurve('389a')# construct an elliptic curve from its Cremona labelP,Q=E.gens()7*P+Q# returns (24187731458439253/244328192262001 : 3778434777075334029261244/3819094217575529893001 : 1)
|url= (ajuda). Consultado em 17 de abril de 2012 Link web