︠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
\n
Serã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
\n

Operaçõ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\n

Operaçõ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︠