Sage

De Wiki Software Livre na Educação

O Sage (anteriormente SAGE, acrónimo em inglês para Sistema de Experimentações Geométricas e Algébricas<ref name="stein1">William Stein. SAGE: A Computer System for Algebra and Geometry Experimentation. Página visitada em 16 de abril de 2012.</ref>) é um software de matemática que possui recursos que abrangem muitas áreas da matemática, incluindo álgebra, combinatória, análise numérica, teoria dos números e cálculo. O Sage é por vezes chamado de sagemath, para o distinguir de outros usos da palavra.
A primeira versão do Sage 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 à outros programas, como o Magma, Maple, Mathematica e MATLAB".<ref name="stein2">William Stein. Sage Days 4 Arquivado a partir do ficheiro original em 30 de março de 2012. Página visitada em 16 de abril de 2012.</ref>
O Sage utiliza a linguagem de programação Python, suportando programações procedural, funcional e de orientação a objetos.

Características[editar]

Arquivo:Sage - plot.png
A interface gráfica do Sage funciona como a maioria dos navegadores web
Arquivo:SAGE equation solve.jpeg
Resolução de equações e de diagramação utilizando a interface web do Sage

Entre as características do Sage, estão:<ref name="sage_help">Sage - Documentação de Ajuda. Página visitada em 16 de abril de 2012.</ref>

Desenvolvimento[editar]

William Stein percebeu, ao projectar o Sage, 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 Sage (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.<ref name="wiki_sage">Sage Days 7: Combinatorics (14 de novembro de 2008). Página visitada em 17 de abril de 2012.</ref>
Tanto estudantes quanto profissionais auxiliam no desenvolvimento do Sage. O desenvolvimento do Sage é auxiliado por trabalhos voluntários e doações.<ref name="sage_development">http://www.sagemath.org/development-ack.html. Página visitada em 17 de abril de 2012.</ref>

Histórico de lançamentos[editar]

Apenas os maiores lançamentos estão listados abaixo. O Sage segue o conceito "liberação antecipada 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.<ref name="sage_download2">SageMath. Sage Download - src-old. Página visitada em 17 de abril de 2012.</ref>

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
7.0 Edição futura

Conquistas[editar]

Em 2007, o Sage 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.<ref name="science_daily">Science Daily. Free Software Brings Affordability, Transparency To Mathematics 6 de dezembro de 2007. Página visitada em 17 de abril de 2012.</ref>
O Sage também já foi citado em várias publicações.<ref name="sage_publications">SageMath. Publications Citing Sage. Página visitada em 17 de abril de 2012.</ref><ref name="sage_publications2">SageMath. Publications Citing Sage-Combinat. Página visitada em 17 de abril de 2012.</ref>

Licença e disponibilidade[editar]

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

  • O código-fonte pode ser descarregado da página de downloads. Embora não recomendável para usuários finais, os lançamentos de versões beta do Sage também estão disponíveis.
  • Pode-se descarregar binários para Linux, OS X e Solaris (x86 e SPARC).
  • Um live CD contendo o sistema operacional inicializável Linux também está disponível. Isto permite a utilização do Sage sem a instalação do Linux.
  • Os utilizadores podem utilizar uma versão online do Sage em sagenb.org ou http://t2nb.math.washington.edu:8080/, mas com um limite de quantidade de memória que um utilizador poderá usar.

Embora a Microsoft estava patrocinando uma versão nativa do Sage para o sistema operacional Windows<ref name="sage_development" />, mas 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 Sage.<ref name="ws">William Stein. Re: Question about Sage 16 de março de 2012. Página visitada em 17 de abril de 2012. Link web</ref>
As distribuições Linux em que o Sage está disponível como um pacote são Mandriva e Arch Linux. O Sage pode ser instalado em qualquer distribuição Linux.

Pacotes de software contidos no Sage[editar]

A filosofia do Sage é 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 Sage
Á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 Sage
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[editar]

<source lang="python"> 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] </source>

Equações diferenciais[editar]

<source lang="python"> 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) </source>

Álgebra linear[editar]

<source lang="python"> 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]
  1. 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]

</source>

Teoria dos números[editar]

<source lang="python"> 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) </source>

Ver também[editar]

Referências

<references group=""></references>

Ligações externas[editar]

O Commons possui uma categoria contendo imagens e outros ficheiros sobre Sage

Predefinição:Limpar Predefinição:Navbox/core