Introdução#
Este tutorial leva no máximo de 3 a 4 horas para ser percorrido. Você
pode lê-lo em versão HTML ou PDF, ou a partir do Notebook Sage (clique
em Help
, então clique em Tutorial
para percorrer o tutorial de
forma interativa).
Embora grande parte do Sage seja implementado em Python, nenhum conhecimento de Python é necessário para a leitura deste tutorial. Você vai querer aprender Python (uma linguagem muito divertida!) em algum momento, e existem diversas opções gratuitas disponíveis para isso, Guia do Iniciante em Python [PyB] (em inglês) lista muitas opções. Se você quiser experimentar o Sage rapidamente, este tutorial é o lugar certo para começar. Por exemplo:
sage: 2 + 2
4
sage: factor(-2007)
-1 * 3^2 * 223
sage: A = matrix(4,4, range(16)); A
[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
sage: factor(A.charpoly())
x^2 * (x^2 - 30*x - 80)
sage: m = matrix(ZZ,2, range(4))
sage: m[0,0] = m[0,0] - 3
sage: m
[-3 1]
[ 2 3]
sage: E = EllipticCurve([1,2,3,4,5]);
sage: E
Elliptic Curve defined by y^2 + x*y + 3*y = x^3 + 2*x^2 + 4*x + 5
over Rational Field
sage: E.anlist(10)
[0, 1, 1, 0, -1, -3, 0, -1, -3, -3, -3]
sage: E.rank()
1
sage: k = 1/(sqrt(3)*I + 3/4 + sqrt(73)*5/9); k
36/(20*sqrt(73) + 36*I*sqrt(3) + 27)
sage: N(k)
0.165495678130644 - 0.0521492082074256*I
sage: N(k,30) # 30 "bits"
0.16549568 - 0.052149208*I
sage: latex(k)
\frac{36}{20 \, \sqrt{73} + 36 i \, \sqrt{3} + 27}
>>> from sage.all import *
>>> Integer(2) + Integer(2)
4
>>> factor(-Integer(2007))
-1 * 3^2 * 223
>>> A = matrix(Integer(4),Integer(4), range(Integer(16))); A
[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
>>> factor(A.charpoly())
x^2 * (x^2 - 30*x - 80)
>>> m = matrix(ZZ,Integer(2), range(Integer(4)))
>>> m[Integer(0),Integer(0)] = m[Integer(0),Integer(0)] - Integer(3)
>>> m
[-3 1]
[ 2 3]
>>> E = EllipticCurve([Integer(1),Integer(2),Integer(3),Integer(4),Integer(5)]);
>>> E
Elliptic Curve defined by y^2 + x*y + 3*y = x^3 + 2*x^2 + 4*x + 5
over Rational Field
>>> E.anlist(Integer(10))
[0, 1, 1, 0, -1, -3, 0, -1, -3, -3, -3]
>>> E.rank()
1
>>> k = Integer(1)/(sqrt(Integer(3))*I + Integer(3)/Integer(4) + sqrt(Integer(73))*Integer(5)/Integer(9)); k
36/(20*sqrt(73) + 36*I*sqrt(3) + 27)
>>> N(k)
0.165495678130644 - 0.0521492082074256*I
>>> N(k,Integer(30)) # 30 "bits"
0.16549568 - 0.052149208*I
>>> latex(k)
\frac{36}{20 \, \sqrt{73} + 36 i \, \sqrt{3} + 27}
Instalação#
Se você não tem o Sage instalado em um computador e quer apenas experimentar alguns comandos, use o Sage através do site http://sagecell.sagemath.org.
Veja o guia de instalação do Sage na seção de documentação na página principal do Sage [SA] para instruções de como instalar o Sage no seu computador. Aqui faremos apenas alguns comentários.
O arquivo para instalação do Sage vem com “baterias incluídas”. Em outras palavras, embora o Sage use o Python, IPython, PARI, GAP, Singular, Maxima, NTL, GMP, e uma série de outros programas, você não precisa instalá-los separadamente pois eles estão incluídos no Sage. Todavia, para usar alguns recursos, por exemplo, o Macaulay ou o KASH, você precisa ter os programas necessários já instalados no seu computador.
A versão pré-compilada do Sage (disponível na página do Sage na internet) pode ser mais fácil e rápida para instalar do que a versão obtida compilando o código fonte.
Se você quiser usar o pacote SageTeX (que permite inserir cálculos do Sage em um arquivo LaTeX), você deve tornar o SageTex disponível para a sua distribuição TeX. Para fazer isso, consulte a seção “Make SageTex known to TeX” no Sage installation guide. O procedimento é bem simples; você precisa apenas definir algumas variáveis no seu sistema ou copiar um arquivo para um diretório onde o TeX poderá encontrá-lo.
A documentação para usar o SageTex está disponível em
$SAGE_ROOT/venv/share/texmf/tex/latex/sagetex/
, onde$SAGE_ROOT
refere-se ao diretório onde você instalou o Sage – por exemplo,/opt/sage-9.6
.
Formas de usar o Sage#
Você pode usar o Sage de diversas formas.
Interface gráfica Notebook: inicie
sage -n jupyter
; leia Jupyter documentation on-line,Linha de comando interativa: veja A Linha de Comando Interativa,
Programas: escrevendo programas interpretados e compilados em Sage (veja Carregando e Anexando Arquivos do Sage e Criando Código Compilado), e
Scripts: escrevendo scripts em Python que usam a biblioteca do Sage (veja Scripts Independentes em Python/Sage).
Objetivos do Sage a longo prazo#
Útil: O público alvo do Sage são estudantes de matemática (desde o ensino médio até a pós-graduação), professores, e pesquisadores em matemática. O objetivo é fornecer um software que possa ser usado para explorar e experimentar construções matemáticas em álgebra, geometria, teoria de números, cálculo, computação numérica, etc. O Sage torna mais fácil a experimentação com objetos matemáticos de forma interativa.
Eficiente: Ser rápido. O Sage usa software bastante otimizado como o GMP, PARI, GAP, e NTL, e portanto é muito rápido em certas operações.
Gratuito e de código aberto: O código fonte deve ser amplamente disponível e legível, de modo que os usuários possam entender o que o software realmente faz e possam facilmente estendê-lo. Da mesma forma que matemáticos ganham entendimento sobre um teorema lendo cuidadosamente a sua demonstração, as pessoas que fazem cálculos deveriam poder entender como os cálculos são feitos lendo o código fonte e seus comentários. Se você usar o Sage para fazer cálculos em um artigo que seja publicado, você pode ter certeza que os leitores sempre terão livre acesso ao Sage e seu código fonte, e você tem até mesmo permissão para arquivar e redistribuir a versão do Sage que você utilizou.
Fácil de compilar: O Sage deve ser fácil de compilar a partir do código fonte para usuários de Linux, OS X e Windows. Isso fornece mais flexibilidade para os usuários modificarem o sistema.
Cooperação: Fornecer uma interface robusta para outros sistemas computacionais, incluindo PARI, GAP, Singular, Maxima, KASH, Magma, Maple e Mathematica. O Sage foi concebido para unificar e estender outros softwares de matemática existentes.
Bem documentado: Tutorial, guia de programação, manual de referência, e how-to, com inúmeros exemplos e discussão sobre conceitos matemáticos relacionados.
Estensível: Ser capaz de definir novos tipos de dados ou derivá-los a partir dos tipos de dados existentes, e usar programas escritos em diversas outras linguagens.
Fácil de usar: Deve ser fácil entender quais recursos estão disponíveis para um determinado objeto e consultar a documentação e o código fonte.