{ "cells": [ { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "%html\n", "

1. Usando o Sage

\n", "
\n", "Este Tutorial tem o\n", "objetivo de introduzir os elementos básicos do Sage permitindo que, em\n", "pouco tempo, o aluno adquira certa proficiência em seu uso.
\n", "
\n", "
Serão\n", "abordados apenas os tópicos diretamente relacionados aos temas da\n", "disciplina Matemática Aplicada I.\n", "Assim, após uma\n", "apresentação inicial, \"O Sage como uma Calculadora\", veremos como\n", "trabalhar, simbolicamente, com Derivadas e Integrais, o que é requisito\n", "para as Séries de Fourier.\n", "Em seguida, trataremos\n", "de Equações Diferenciais Ordinárias, intimamente relacionadas ao Método\n", "de Separação de Variáveis.\n", "
\n", "Mais tarde, em outro tutorial, introduziremos os recursos do Sage para\n", "a manipulação simbólica de Funções Especiais que surgem no estudo dos\n", "Problemas de Sturm-Liouville.
\n", "
\n", "
\n", "Deve-se ter em mente,\n", "sempre, que este Tutorial (e todos os outros que serão fornecidos ao\n", "longo do curso) se baseia na idéia de Aprender através de\n", "Exemplos.
\n", "Portanto, todos os\n", "exemplos devem ser estudados em detalhe. As Atividades Práticas da\n", "disciplina envolverão, sempre, a adaptação dos exemplos contidos nos\n", "Tutoriais a novos contextos e situações.
\n", "
\n", "Todos os tutoriais se\n", "baseiam no livro A.\n", "Casamayou et al, Calcul mathématique avec Sage (em\n", "francês) e que pode ser obtido em http://sagebook.gforge.inria.fr/.
\n", "
\n", "Outro livro de introdução ao Sage, cujo download é livre, é G. Bard, Sage for Undergraduates\n", "(acesse http://www.gregorybard.com/sage_for_undergraduates_color.pdf.zip).\n", "Consulte a página do autor para outras coisas interessantes, em\n", "particular, Sage Stuff\n", "(http://www.gregorybard.com/SAGE.html).
\n", "" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "%html\n", "

2.\n", "O Sage como Calculadora

\n", "
\n", "Assim como outros\n", "softwares matemáticos, o Sage pode ser usado como uma simples\n", "calculadora.
\n", "
\n", "
\n", "

Operações Aritméticas Básicas

\n", "As Quatro Operações:\n", "a+b, a-b, a*b, a/b
\n", "Potenciação:\n", "a^b ou a**b
\n", "
\n", "\n", "

Operações com Números Inteiros

\n", "Divisão Inteira:\n", "a//b
\n", "Resto:\n", "a%b
\n", "Vejamos alguns exemplos. Observe que a tecla ENTER apenas muda de linha dentro da célula permitindo acrescentar comandos, mas não executa os comandos já digitados. Para executá-los, digite SHIFT+ENTER.
\n", "
\n", "" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "(1+1)" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "( 1 + 2 * (3 + 5) ) * 4" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "# Potenciação\n", "2^3;\n", "# Potenciação com **\n", "2**3;\n", "# Potencias Grandes\n", "2^100" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "20/6" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "%html\n", "O último exemplo\n", "mostra que os números (inteiros) são tratados exatamente; após a\n", "simplificação continuam números racionais.\n", "Para obter uma\n", "aproximação numérica, basta acrescentar um ponto decimal a, pelo menos,\n", "um dos números.
\n", "Alternativamente,\n", "existe a função numerical_approx(x). Observe o uso da propriedade digits." ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "# Usa ponto decimal sem especificiar número de dígitos da aproximação numérica; veja primeiro retorno\n", "20./6\n", "# Usa função numerical_approx do Sage e especifica 50 dígitos; veja segundo retorno\n", "numerical_approx(20/6,digits=50)" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "%html\n", "

Funções Elementares e Algumas\n", "Constantes Usuais

\n", "Examine atentamente os\n", "exemplos a seguir e observe que os cálculos são exatos; os resultados\n", "são fórmulas e não valores numéricos.
\n", "Além disso, algumas simplificações são feitas automaticamente pelo Sage\n", "(mais tarde veremos que podemos fazer simplificações explicitamente,\n", "através do comando simplify(expr).Claro que aproximações numéricas podem ser obtidas através da função numerical_approx(), vista anteriormente.
\n", "
\n", "
" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "sin(pi)" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "tan(pi/3)" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "arctan(1)" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "exp(2*I*pi)" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "arccos(sin(pi/3))" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "# Calcula exp(i*pi/6); veja o primeiro retorno do Sage\n", "exp(I*pi/6)\n", "# Mesmo cálculo, mas atribuindo o resultado a uma variável e usando 'show'; veja o segundo retorno, como fórmula\n", "f=exp(I*pi/6)\n", "show(f)" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "%html\n", "Observe o último\n", "exemplo.  I\n", "e e são,\n", "respectivamente, o número imaginário e a base do logaritmo natural.\n", "Quando avaliamos a função exponencial exp(I*pi/6) o Sage\n", "retorna simplesmente, e^(1/6*I*pi), que é a maneira\n", "de escrever a resposta na forma de texto (como em qualquer linguagem de\n", "programação). Mas quando atribuímos o resultado a uma variável f e, a seguir,\n", "usamos o comando show(f),\n", "obtemos a fórmula matemática correspondente na forma gráfica. Este é um\n", "recurso extremamente útil.\n", "

" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "%html\n", "

Variáveis \"Python\"

\n", "Se desejamos armazenar o\n", "resultado de um cálculo para uso futuro, devemos atribuir o\n", "resultado a uma variável.
\n", "O Sage possui dois tipos de variáveis. O primeiro tipo é idêntico ao de\n", "qualquer linguagem de programação, ou seja, é usado para armazenar um\n", "resultado numérico (ou outros tipos de dados como uma string). A título\n", "de informação, o Sage emprega a linguagem Python, tanto para suas\n", "próprias funções quanto para coordenar o acesso a outros softwares como\n", "o Maxima.
\n", "O segundo tipo de variável é tratado como símbolo em todas as operações\n", "em que aparece permitindo, assim, a realização de computação simbólica\n", "(sem a atribuição de um valor numérico específico à variável. Variáveis\n", "simbólicas serão discutidas a seguir.
\n", "
\n", "
" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "# Variáveis Usuais (tipo Python)\n", "# Observe o \";\", ele permite colocar várias instruções na mesma linha\n", "# Quando se faz a atribuição, o valor da variável não é imediatamente apresentado\n", "# Para ver seu conteúdo, é preciso solicitar sua exibição\n", "# No exemplo, y recebe o valor 3, mas para mostrar esse valor escreve-se o nome da variável (depois do ;)\n", "y=1+2; y\n", "# Agora y pode ser usado em outros cálculos numéricos\n", "y1=(2+y)*y; y1" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "%html\n", "

Variáveis Simbólicas

\n", "As variáveis simbólicas podem\n", "ser entendidas como as \"variáveis do matemático\" ao invés de \"variáveis\n", "do programador\" como as que acabamos de ver.
\n", "No Sage, as variáveis simbólicas precisam ser previamente definidas\n", "(ao contrário do Maple e Maxima, por exemplo) e o Sage fornece\n", "diferentes maneiras para isso.
\n", "
\n", "
" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "# Definição de Variável Simbólica (Primeira Maneira)\n", "z=SR.var('z')\n", "2*z+3" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "# Definição de Variável Simbólica (Segunda Maneira)\n", "# Observe que o Sage retorna o símbolo a\n", "var('a')" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "# Definição simultânea de muitas variáveis\n", "var('a, b, c, x, y')" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "# Usando as variáveis que acabaram de ser definidas\n", "a*x+b*y+c #exibição tipo texto\n", "show(a*x+b*y+c) #exibição tipo gráfica" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "%html\n", "Para atribuir um valor a uma variável simbólica, empregamos a operação de substituição (mais tarde, veremos mais detalhes sobre este assunto). Vejamos um exemplo." ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "# Define variável x\n", "var('x')\n", "# Cria expressão simbólica\n", "expressao=sin(x); expressao" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "# A mesma expressão mas atribuindo valor à variável\n", "# Observe que a expressão continua sendo simbólica!\n", "expressao(x=1)" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "%html\n", "

Primeiros Gráficos

\n", "Mais tarde, aprenderemos mais\n", "sobre os recursos gráficos do Sage mas, para mostrar a facilidade com\n", "que se pode criar gráficos, vejamos dois exemplos.
\n", "
\n", "
" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "# Exemplo 1: gráfico da função seno(2x) com a função plot\n", "# Observe a sequência dos parâmetros: 1) função 2) variável 3) e 4) intervalo\n", "plot(sin(2*x),x,-2*pi,2*pi)" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "#Exemplo 2: Gráfico de função de 2 variáveis (x,y) com plot3d\n", "# Define a função (poderia ser definida diretamente na chamada a plot3d, como no Exemplo1)\n", "# Observe como os intervalos são, agora, definidos para cada variável separadamente\n", "var('y')\n", "f=sin(pi*sqrt(x^2 + y^2))/sqrt(x^2+y^2)\n", "plot3d(f,(x,-5,5),(y,-5,5))" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "%html" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] } ], "metadata": { "kernelspec": { "display_name": "SageMath (stable)", "name": "sagemath" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.15" } }, "nbformat": 4, "nbformat_minor": 0 }