︠73853e04-bdef-4cd7-a47a-6196100a517ai︠
%html
1. Usando o Sage
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.
Serão
abordados apenas os tópicos diretamente relacionados aos temas da
disciplina Matemática Aplicada I.
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.
Em seguida, trataremos
de Equações Diferenciais Ordinárias, intimamente relacionadas ao Método
de Separação de Variáveis.
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.
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 Aprender através de
Exemplos.
Portanto, todos os
exemplos devem ser estudados em detalhe. As Atividades Práticas da
disciplina envolverão, sempre, a adaptação dos exemplos contidos nos
Tutoriais a novos contextos e situações.
Todos os tutoriais se
baseiam no livro A.
Casamayou et al, Calcul mathématique avec Sage (em
francês) e que pode ser obtido em http://sagebook.gforge.inria.fr/.
Outro livro de introdução ao Sage, cujo download é livre, é G. Bard, Sage for Undergraduates
(acesse http://www.gregorybard.com/sage_for_undergraduates_color.pdf.zip).
Consulte a página do autor para outras coisas interessantes, em
particular, Sage Stuff
(http://www.gregorybard.com/SAGE.html).
︡6e507157-e421-4e11-881d-2c5d6632600f︡︡{"done":true,"html":"1. Usando o Sage
\n
\nEste Tutorial tem o\nobjetivo de introduzir os elementos básicos do Sage permitindo que, em\npouco tempo, o aluno adquira certa proficiência em seu uso.
\n
\nSerão\nabordados apenas os tópicos diretamente relacionados aos temas da\ndisciplina Matemática Aplicada I.
\nAssim, após uma\napresentação inicial, \"O Sage como uma Calculadora\", veremos como\ntrabalhar, simbolicamente, com Derivadas e Integrais, o que é requisito\npara as Séries de Fourier.
\nEm seguida, trataremos\nde Equações Diferenciais Ordinárias, intimamente relacionadas ao Método\nde Separação de Variáveis.
\n
\nMais tarde, em outro tutorial, introduziremos os recursos do Sage para\na manipulação simbólica de Funções Especiais que surgem no estudo dos\nProblemas de Sturm-Liouville.
\n
\n
\nDeve-se ter em mente,\nsempre, que este Tutorial (e todos os outros que serão fornecidos ao\nlongo do curso) se baseia na idéia de Aprender através de\nExemplos.
\nPortanto, todos os\nexemplos devem ser estudados em detalhe. As Atividades Práticas da\ndisciplina envolverão, sempre, a adaptação dos exemplos contidos nos\nTutoriais a novos contextos e situações.
\n
\nTodos os tutoriais se\nbaseiam no livro A.\nCasamayou et al, Calcul mathématique avec Sage (em\nfrancês) e que pode ser obtido em http://sagebook.gforge.inria.fr/.
\n
\nOutro 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).\nConsulte a página do autor para outras coisas interessantes, em\nparticular, Sage Stuff\n(http://www.gregorybard.com/SAGE.html).
\n"}
︠4afd63ae-75b5-4451-829d-6c4a6907bea8i︠
%html
2.
O Sage como Calculadora
Assim como outros
softwares matemáticos, o Sage pode ser usado como uma simples
calculadora.
Operações Aritméticas Básicas
As Quatro Operações:
a+b, a-b, a*b, a/b
Potenciação:
a^b ou a**b
Operações com Números Inteiros
Divisão Inteira:
a//b
Resto:
a%b
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.
︡1fdcee06-3466-4c2a-a7a0-619e07e8bebb︡︡{"done":true,"html":"2.\nO Sage como Calculadora
\n
\nAssim como outros\nsoftwares matemáticos, o Sage pode ser usado como uma simples\ncalculadora.
\n
\n\nOperações Aritméticas Básicas
\nAs Quatro Operações:\na+b, a-b, a*b, a/b
\nPotenciação:\na^b ou a**b
\n
\n\nOperações com Números Inteiros
\nDivisão Inteira:\na//b
\nResto:\na%b
\nVejamos 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"}
︠341617f0-a7b0-4255-b7cf-84ebac96fd1bs︠
(1+1)
︡8522e500-0ffb-42a1-be4d-81c20357b433︡︡{"stdout":"2\n"}︡{"done":true}
︠53c4ab23-c47e-4de8-9c7f-63ee4573ae61s︠
( 1 + 2 * (3 + 5) ) * 4
︡2fbd89ce-5bec-48ef-8c6d-77ada4bff3cc︡{"stdout":"68\n"}︡{"done":true}︡
︠1d83f532-4897-446e-b754-7eadff0677bd︠
# Potenciação
2^3;
# Potenciação com **
2**3;
# Potencias Grandes
2^100
︡d534a2e3-75bb-4fac-8183-2eb051331507︡︡{"stdout":"8\n","done":false}︡{"stdout":"8\n","done":false}︡{"stdout":"1267650600228229401496703205376\n","done":false}︡{"done":true}
︠a601a66e-3fc7-4e8e-8920-11d3cfbe86dd︠
︡73cf78c8-d3d4-42f7-9eee-97ebd6de639f︡
︠057c434a-84da-42ab-9a8c-47903ded9d1c︠
20/6
︡9d4884fb-b073-44b4-b639-8a2c9c957b0f︡︡{"stdout":"10/3\n","done":false}︡{"done":true}
︠11d8c5ee-45f7-4eee-b8a2-bd11ca1c0ccc︠
︡027ca3c4-20a9-4066-840a-2a621d0ee7d2︡
︠235c186f-9ad0-4153-b279-deaf97688835i︠
%html
O último exemplo
mostra que os números (inteiros) são tratados exatamente; após a
simplificação continuam números racionais.
Para obter uma
aproximação numérica, basta acrescentar um ponto decimal a, pelo menos,
um dos números.
Alternativamente,
existe a função numerical_approx(x). Observe o uso da propriedade digits.
︡f7d9a156-1034-446a-a8fa-09ca480073ef︡︡{"done":true,"html":"O último exemplo\nmostra que os números (inteiros) são tratados exatamente; após a\nsimplificação continuam números racionais.
\nPara obter uma\naproximação numérica, basta acrescentar um ponto decimal a, pelo menos,\num dos números.
\nAlternativamente,\nexiste a função numerical_approx(x). Observe o uso da propriedade digits."}
︠2805b05d-f7ab-4d28-ac2a-2c49723396b9︠
# 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)
︡ea5ea2be-e59d-4b6c-9730-74d02c798035︡︡{"stdout":"3.33333333333333\n","done":false}︡{"stdout":"3.3333333333333333333333333333333333333333333333333\n","done":false}︡{"done":true}
︠d2361d30-cda4-4d2d-af8c-a371fdac1638i︠
%html
Funções Elementares e Algumas
Constantes Usuais
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.
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 simplify(expr).Claro que aproximações numéricas podem ser obtidas através da função numerical_approx(), vista anteriormente.
︡50c469c0-9a40-4741-ae8d-275793a63d60︡︡{"done":true,"html":"Funções Elementares e Algumas\nConstantes Usuais
\nExamine atentamente os\nexemplos a seguir e observe que os cálculos são exatos; os resultados\nsão fórmulas e não valores numéricos.
\nAlém disso, algumas simplificações são feitas automaticamente pelo Sage\n(mais tarde veremos que podemos fazer simplificações explicitamente,\natravé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"}
︠eccd3ef9-cb8b-4515-9c4e-fc931a1812e9︠
sin(pi)
︡06d3e661-37fc-474b-b0f3-81be850316b7︡︡{"stdout":"0\n","done":false}︡{"done":true}
︠2545e855-feb6-42bf-a7c3-008a2dc9196f︠
tan(pi/3)
︡45160587-2868-43c0-8083-ef95691c527b︡︡{"stdout":"sqrt(3)\n","done":false}︡{"done":true}
︠16f1e7ca-e814-4f01-8092-d2e7f12c7fca︠
arctan(1)
︡a36b4790-1595-4708-b2fb-0fe9749da0c3︡︡{"stdout":"1/4*pi\n","done":false}︡{"done":true}
︠0e617d74-42b9-4fca-8e3f-f30003483caf︠
exp(2*I*pi)
︡9f0bdbdf-1d3f-4d09-bcf5-07b77ba7a128︡︡{"stdout":"1\n","done":false}︡{"done":true}
︠28e9329c-b4f9-4c1d-9034-98dccaa9e777︠
arccos(sin(pi/3))
︡2477a573-0f69-4567-9d73-c147c00b0ef4︡︡{"stdout":"arccos(1/2*sqrt(3))\n","done":false}︡{"done":true}
︠60070b72-7fa0-4067-ab77-edfcb9bfcc4e︠
# 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)
︡e53cb777-a765-4903-9862-9ba8191521c2︡︡{"stdout":"e^(1/6*I*pi)\n","done":false}︡{"html":"$\\displaystyle e^{\\left(\\frac{1}{6} i \\, \\pi\\right)}$
","done":false}︡{"done":true}
︠c9694f03-dfb9-4bfc-a785-9f39209a1362i︠
%html
Observe o último
exemplo. I
e e são,
respectivamente, o número imaginário e a base do logaritmo natural.
Quando avaliamos a função exponencial exp(I*pi/6) o Sage
retorna simplesmente, 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 f e, a seguir,
usamos o comando show(f),
obtemos a fórmula matemática correspondente na forma gráfica. Este é um
recurso extremamente útil.
︡daab7c69-a76d-46a4-9e32-54ce207eaa71︡︡{"done":true,"html":"Observe o último\nexemplo. I\ne e são,\nrespectivamente, o número imaginário e a base do logaritmo natural.\nQuando avaliamos a função exponencial exp(I*pi/6) o Sage\nretorna simplesmente, e^(1/6*I*pi), que é a maneira\nde escrever a resposta na forma de texto (como em qualquer linguagem de\nprogramação). Mas quando atribuímos o resultado a uma variável f e, a seguir,\nusamos o comando show(f),\nobtemos a fórmula matemática correspondente na forma gráfica. Este é um\nrecurso extremamente útil.\n"}
︠9e1761ee-eb24-4d04-9400-0c2a3a9e83f5i︠
%html
Variáveis "Python"
Se desejamos armazenar o
resultado de um cálculo para uso futuro, devemos atribuir o
resultado a uma variável.
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.
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.
︡8dc73132-0f92-4f66-beb9-546e3419df6d︡︡{"done":true,"html":"Variáveis \"Python\"
\nSe desejamos armazenar o\nresultado de um cálculo para uso futuro, devemos atribuir o\nresultado a uma variável.
\nO Sage possui dois tipos de variáveis. O primeiro tipo é idêntico ao de\nqualquer linguagem de programação, ou seja, é usado para armazenar um\nresultado numérico (ou outros tipos de dados como uma string). A título\nde informação, o Sage emprega a linguagem Python, tanto para suas\npróprias funções quanto para coordenar o acesso a outros softwares como\no Maxima.
\nO segundo tipo de variável é tratado como símbolo em todas as operações\nem 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\nsimbólicas serão discutidas a seguir.
\n
\n"}
︠e9c96724-d826-4c93-85bf-251277195620︠
# 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
︡b379cef4-8bea-435d-ac60-c07e2eddf9a4︡︡{"stdout":"3\n","done":false}︡{"stdout":"15\n","done":false}︡{"done":true}
︠4c97ed17-7e77-4b33-a429-816a35681dbci︠
%html
Variáveis Simbólicas
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.
No Sage, as variáveis simbólicas precisam ser previamente definidas
(ao contrário do Maple e Maxima, por exemplo) e o Sage fornece
diferentes maneiras para isso.
︡bfdcb228-c666-417d-a389-29d3bd89f86a︡︡{"done":true,"html":"Variáveis Simbólicas
\nAs variáveis simbólicas podem\nser entendidas como as \"variáveis do matemático\" ao invés de \"variáveis\ndo programador\" como as que acabamos de ver.
\nNo Sage, as variáveis simbólicas precisam ser previamente definidas\n(ao contrário do Maple e Maxima, por exemplo) e o Sage fornece\ndiferentes maneiras para isso.
\n
\n"}
︠7bd6f320-44d6-4967-9c27-9829e9b97aa7︠
# Definição de Variável Simbólica (Primeira Maneira)
z=SR.var('z')
2*z+3
︡9e2608dc-2b08-4451-b74e-27a015a4440c︡︡{"stdout":"2*z + 3\n","done":false}︡{"done":true}
︠5b19c535-04ad-4648-ba3d-96d568b83f70︠
# Definição de Variável Simbólica (Segunda Maneira)
# Observe que o Sage retorna o símbolo a
var('a')
︡06624afc-e31a-46f0-8000-7f87a8aceeb8︡︡{"stdout":"a\n","done":false}︡{"done":true}
︠97c2bb3e-1bff-42ac-9eb4-e21d77765cd3︠
# Definição simultânea de muitas variáveis
var('a, b, c, x, y')
︡425a3fa8-e7ef-46c0-9da8-07b2b74999f6︡︡{"stdout":"(a, b, c, x, y)\n","done":false}︡{"done":true}
︠48b3dcad-6b0b-46c4-8259-0afd86baac84︠
# 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
︡233b33b1-dd6a-4400-be26-72b75d8aa24e︡︡{"stdout":"a*x + b*y + c\n","done":false}︡{"html":"
$\\displaystyle a x + b y + c$
","done":false}︡{"done":true}
︠aa6172af-ab4a-406e-ac8b-f415ef99f283i︠
%html
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.
︡b14f2d78-ff46-452d-ba66-27c3e163730e︡︡{"done":true,"html":"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."}
︠dacd3acd-b1ea-41bc-b8e9-74b7cb29a6c1︠
# Define variável x
var('x')
# Cria expressão simbólica
expressao=sin(x); expressao
︡db41ff92-e92d-4072-9063-bf52275436c2︡︡{"stdout":"x\n","done":false}︡{"stdout":"sin(x)\n","done":false}︡{"done":true}
︠d6d6d024-4d23-4511-86ed-d3aa402d1121︠
# A mesma expressão mas atribuindo valor à variável
# Observe que a expressão continua sendo simbólica!
expressao(x=1)
︡74cb58ff-bfd3-4d18-809c-38db3f20e294︡︡{"stdout":"sin(1)\n","done":false}︡{"done":true}
︠a4481b40-cff3-4be9-a783-f9e7dcc52466i︠
%html
Primeiros Gráficos
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.
︡b116a19b-754b-4c54-adac-c286f61dbb77︡︡{"done":true,"html":"Primeiros Gráficos
\nMais tarde, aprenderemos mais\nsobre os recursos gráficos do Sage mas, para mostrar a facilidade com\nque se pode criar gráficos, vejamos dois exemplos.
\n
\n"}
︠a682b3e7-98b5-4355-b503-80473affb6a5s︠
# 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)
︡8508bfd2-9124-40bf-b0a1-06340aa2d83a︡︡{"file":{"filename":"/projects/f4457592-eb40-435e-9ca6-be9749bd8c91/.sage/temp/compute3-us/365/tmp_uIoF7Y.svg","show":true,"uuid":"1e20d403-d483-4519-ba14-dd3fab342742"},"once":false}︡{"html":""}︡{"done":true}
︠077869bf-c9cb-4930-9fbc-5c0c1b7ba532s︠
#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))
︡a49e411c-3555-4361-961e-2ccdcdb610de︡{"stdout":"y\n"}︡{"file":{"filename":"e0600775-752f-457b-b36a-76ab4df84282.sage3d","uuid":"e0600775-752f-457b-b36a-76ab4df84282"}}︡{"done":true}︡
︠3dd10d84-5305-4748-a8e0-6d92567ae017︠
︠96aa4d31-0ba3-499e-9820-ed64b75d6d29︠
︠e8443d90-2868-4a47-b5fe-3f3263a42b8d︠
%html
︠312c9002-8219-48ec-b827-107b5d38f476︠