Introdução - Tutorial Sage

Skip to content
Back to top
View this page
Edit this page

# 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

    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}

Python

    >>> 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.

1. 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.

2. 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.

3. 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.