Sharednotebooks / 1.Introduzindo o Sage.ipynbOpen in CoCalc
Author: Sergio Luis Lopes Verardi
In [ ]:
%html <h2 style="color: rgb(51, 102, 255);">1. Usando o Sage</h2> <br style="font-family: Verdana;"> <span style="font-family: Verdana;">Este Tutorial tem o objetivo de introduzir os elementos básicos do Sage permitindo que, em pouco tempo, o aluno adquira certa proficiência em seu uso.<br> <br style="font-family: Verdana;"> </span><span style="font-family: Verdana;">Serão abordados apenas os tópicos diretamente relacionados aos temas da disciplina Matemática Aplicada I.</span><br style="font-family: Verdana;"> <span style="font-family: Verdana;">Assim, após uma apresentação inicial, "O Sage como uma Calculadora", veremos como trabalhar, simbolicamente, com Derivadas e Integrais, o que é requisito para as Séries de Fourier.</span><br style="font-family: Verdana;"> <span style="font-family: Verdana;">Em seguida, trataremos de Equações Diferenciais Ordinárias, intimamente relacionadas ao Método de Separação de Variáveis.</span><br style="font-family: Verdana;"> <span style="font-family: Verdana;"><br> Mais tarde, em outro tutorial, introduziremos os recursos do Sage para a manipulação simbólica de Funções Especiais que surgem no estudo dos Problemas de Sturm-Liouville.</span><br style="font-family: Verdana;"> <br style="font-family: Verdana;"> <br style="font-family: Verdana;"> <span style="font-family: Verdana;">Deve-se ter em mente, sempre, que este Tutorial (e todos os outros que serão fornecidos ao longo do curso) se baseia na idéia de <span style="color: rgb(51, 102, 255);">Aprender através de Exemplos</span>.</span><br style="font-family: Verdana;"> <span style="font-family: Verdana;">Portanto, todos os exemplos devem ser estudados em detalhe.</span> <span style="font-family: Verdana;">As Atividades Práticas da disciplina envolverão, sempre, a adaptação dos exemplos contidos nos Tutoriais a novos contextos e situações.</span><br> <br> <span style="font-family: Verdana;">Todos os tutoriais se baseiam no livro <span style="font-style: italic;">A. Casamayou et al, Calcul mathématique avec Sage</span> (em francês) e que pode ser obt</span><span style="font-family: Verdana;">ido em <a href="http://sagebook.gforge.inria.fr/" target="_blank">http://sagebook.gforge.inria.fr/</a>.<br> <br> Outro livro de introdução ao Sage, cujo download é livre, é <span style="font-style: italic;">G. Bard, Sage for Undergraduates</span> (acesse <a href="http://www.gregorybard.com/sage_for_undergraduates_color.pdf.zip" target="_blank">http://www.gregorybard.com/sage_for_undergraduates_color.pdf.zip</a>). Consulte a página do autor para outras coisas interessantes, em particular, <span style="font-style: italic;">Sage Stuff</span> (<a href="http://www.gregorybard.com/SAGE.html" target="_blank">http://www.gregorybard.com/SAGE.html</a>).<br> </span>
In [ ]:
%html <h2 style="color: rgb(51, 102, 255); font-family: Verdana;">2. O Sage como Calculadora</h2> <br style="font-family: Verdana;"> <span style="font-family: Verdana;">Assim como outros softwares matemáticos, o Sage pode ser usado como uma simples calculadora. <br> <br> </span> <h4 style="color: rgb(51, 51, 255);"><span style="font-family: Verdana;">Operações Aritméticas Básicas</span></h4> <span style="font-family: Verdana;"><span style="color: rgb(51, 102, 255);">As Quatro Operações</span>: a+b, a-b, a*b, a/b<br> <span style="color: rgb(51, 102, 255);">Potenciação</span>: a^b ou a**b<br> <br> </span> <h4 style="color: rgb(51, 51, 255);"><span style="font-family: Verdana;">Operações com Números Inteiros</span></h4> <span style="font-family: Verdana;"><span style="color: rgb(51, 102, 255);">Divisão Inteira</span>: a//b<br> <span style="color: rgb(51, 102, 255);">Resto</span>: a%b<br> </span><span style="font-family: Verdana;"></span><span style="font-family: Verdana;">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. </span><span style="font-family: Verdana;"><br> <br> </span><span style="font-family: Verdana;"></span>
In [ ]:
(1+1)
In [ ]:
( 1 + 2 * (3 + 5) ) * 4
In [ ]:
# Potenciação 2^3; # Potenciação com ** 2**3; # Potencias Grandes 2^100
In [ ]:
In [ ]:
20/6
In [ ]:
In [ ]:
%html <span style="font-family: Verdana;">O último exemplo mostra que os números (inteiros) são tratados exatamente; após a simplificação continuam números racionais.</span><br style="font-family: Verdana;"> <span style="font-family: Verdana;">Para obter uma aproximação numérica, basta acrescentar um ponto decimal a, pelo menos, um dos números. </span><br style="font-family: Verdana;"> <span style="font-family: Verdana;">Alternativamente, existe a função <span style="font-style: italic;">numerical_approx</span>(x). Observe o uso da propriedade <span style="font-style: italic;">digits</span>.</span><span style="font-size: 9pt; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-family: Verdana;"></span>
In [ ]:
# Usa ponto decimal sem especificiar número de dígitos da aproximação numérica; veja primeiro retorno 20./6 # Usa função numerical_approx do Sage e especifica 50 dígitos; veja segundo retorno numerical_approx(20/6,digits=50)
In [ ]:
%html <h4 style="color: rgb(51, 51, 255);"><span style="font-family: Verdana;">Funções Elementares e Algumas Constantes Usuais</span></h4> <span style="font-family: Verdana;"><span style="color: rgb(51, 102, 255);"></span></span><span style="font-family: Verdana;"></span><span style="font-family: Verdana;">Examine atentamente os exemplos a seguir e observe que os cálculos são exatos; os resultados são fórmulas e não valores numéricos.<br> Além disso, algumas simplificações são feitas automaticamente pelo Sage (mais tarde veremos que podemos fazer simplificações explicitamente, através do comando <span style="font-style: italic;">simplify(expr)</span>.Claro que aproximações numéricas podem ser obtidas através da função numerical_approx(), vista anteriormente.<br> </span><span style="font-family: Verdana;"><br> </span>
In [ ]:
sin(pi)
In [ ]:
tan(pi/3)
In [ ]:
arctan(1)
In [ ]:
exp(2*I*pi)
In [ ]:
arccos(sin(pi/3))
In [ ]:
# Calcula exp(i*pi/6); veja o primeiro retorno do Sage exp(I*pi/6) # Mesmo cálculo, mas atribuindo o resultado a uma variável e usando 'show'; veja o segundo retorno, como fórmula f=exp(I*pi/6) show(f)
In [ ]:
%html <span style="font-family: Verdana;">Observe o último exemplo.&nbsp; <span style="font-style: italic;">I</span> e <span style="font-style: italic;">e</span> são, respectivamente, o número imaginário e a base do logaritmo natural. Quando avaliamos a função exponencial&nbsp;exp(I*pi/6) o Sage retorna simplesmente,&nbsp;</span><span style="font-family: Verdana;">e^(1/6*I*pi), que é a maneira de escrever a resposta na forma de texto (como em qualquer linguagem de programação). Mas quando atribuímos o resultado a uma variável <span style="font-style: italic;">f</span> e, a seguir, usamos o comando <span style="font-style: italic;">show(f)</span>, obtemos a fórmula matemática correspondente na forma gráfica. Este é um recurso extremamente útil.</span><span style="font-family: Verdana;"></span><span style="font-size: 9pt; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-family: Verdana;"></span> <h3>
In [ ]:
%html <h4 style="color: rgb(51, 51, 255);"><span style="font-family: Verdana;">Variáveis "Python"</span></h4> <span style="font-family: Verdana;"><span style="color: rgb(51, 102, 255);"></span></span><span style="font-family: Verdana;"></span><span style="font-family: Verdana;">Se desejamos armazenar o resultado de um cálculo para uso futuro, devemos <span style="color: rgb(51, 102, 255);">atribuir</span> o resultado a uma <span style="color: rgb(51, 102, 255);">variável</span>.<br> O Sage possui dois tipos de variáveis. O primeiro tipo é idêntico ao de qualquer linguagem de programação, ou seja, é usado para armazenar um resultado numérico (ou outros tipos de dados como uma string). A título de informação, o Sage emprega a linguagem Python, tanto para suas próprias funções quanto para coordenar o acesso a outros softwares como o Maxima.<br> O segundo tipo de variável é tratado como símbolo em todas as operações em que aparece permitindo, assim, a realização de computação simbólica (sem a atribuição de um valor numérico específico à variável. Variáveis simbólicas serão discutidas a seguir.<br> </span><span style="font-family: Verdana;"><br> </span>
In [ ]:
# Variáveis Usuais (tipo Python) # Observe o ";", ele permite colocar várias instruções na mesma linha # Quando se faz a atribuição, o valor da variável não é imediatamente apresentado # Para ver seu conteúdo, é preciso solicitar sua exibição # No exemplo, y recebe o valor 3, mas para mostrar esse valor escreve-se o nome da variável (depois do ;) y=1+2; y # Agora y pode ser usado em outros cálculos numéricos y1=(2+y)*y; y1
In [ ]:
%html <h4 style="color: rgb(51, 51, 255);"><span style="font-family: Verdana;">Variáveis Simbólicas</span></h4> <span style="font-family: Verdana;"><span style="color: rgb(51, 102, 255);"></span></span><span style="font-family: Verdana;"></span><span style="font-family: Verdana;">As variáveis simbólicas podem ser entendidas como as "variáveis do matemático" ao invés de "variáveis do programador" como as que acabamos de ver.<br> No Sage, as variáveis simbólicas precisam ser <span style="color: rgb(51, 102, 255);">previamente definidas</span> (ao contrário do Maple e Maxima, por exemplo) e o Sage fornece diferentes maneiras para isso.<br> </span><span style="font-family: Verdana;"><br> </span>
In [ ]:
# Definição de Variável Simbólica (Primeira Maneira) z=SR.var('z') 2*z+3
In [ ]:
# Definição de Variável Simbólica (Segunda Maneira) # Observe que o Sage retorna o símbolo a var('a')
In [ ]:
# Definição simultânea de muitas variáveis var('a, b, c, x, y')
In [ ]:
# Usando as variáveis que acabaram de ser definidas a*x+b*y+c #exibição tipo texto show(a*x+b*y+c) #exibição tipo gráfica
In [ ]:
%html Para atribuir um valor a uma variável simbólica, empregamos a operação de <em>substituição</em> (mais tarde, veremos mais detalhes sobre este assunto). Vejamos um exemplo.
In [ ]:
# Define variável x var('x') # Cria expressão simbólica expressao=sin(x); expressao
In [ ]:
# A mesma expressão mas atribuindo valor à variável # Observe que a expressão continua sendo simbólica! expressao(x=1)
In [ ]:
%html <h4 style="color: rgb(51, 51, 255);"><span style="font-family: Verdana;">Primeiros Gráficos</span></h4> <span style="font-weight: bold;"></span><span style="font-family: Verdana;">Mais tarde, aprenderemos mais sobre os recursos gráficos do Sage mas, para mostrar a facilidade com que se pode criar gráficos, vejamos dois exemplos.<br> </span><span style="font-family: Verdana;"><br> </span>
In [ ]:
# Exemplo 1: gráfico da função seno(2x) com a função plot # Observe a sequência dos parâmetros: 1) função 2) variável 3) e 4) intervalo plot(sin(2*x),x,-2*pi,2*pi)
In [ ]:
#Exemplo 2: Gráfico de função de 2 variáveis (x,y) com plot3d # Define a função (poderia ser definida diretamente na chamada a plot3d, como no Exemplo1) # Observe como os intervalos são, agora, definidos para cada variável separadamente var('y') f=sin(pi*sqrt(x^2 + y^2))/sqrt(x^2+y^2) plot3d(f,(x,-5,5),(y,-5,5))
In [ ]:
In [ ]:
In [ ]:
%html
In [ ]: