Sharednotebooks / 1.Introduzindo o Sage.ipynbOpen in CoCalc
%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>
%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>
(1+1)
( 1 + 2 * (3 + 5) ) * 4
# Potenciação
2^3;
# Potenciação com **
2**3;
# Potencias Grandes
2^100

20/6

%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>
# 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)
%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>
sin(pi)
tan(pi/3)
arctan(1)
exp(2*I*pi)
arccos(sin(pi/3))
# 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)
%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>
%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>
# 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
%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>
# Definição de Variável Simbólica (Primeira Maneira)
z=SR.var('z')
2*z+3
# Definição de Variável Simbólica (Segunda Maneira)
# Observe que o Sage retorna o símbolo a
var('a')
# Definição simultânea de muitas variáveis
var('a, b, c, x, y')
# 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
%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.
# Define variável x
var('x')
# Cria expressão simbólica
expressao=sin(x); expressao
# A mesma expressão mas atribuindo valor à variável
# Observe que a expressão continua sendo simbólica!
expressao(x=1)
%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>
# 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)
#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))


%html