114
Euler v.9.6: Introduc ¸ ˜ ao - Matem ´ atica/UEL - set/2010 Euler vers˜ ao 9.6: Introduc ¸˜ ao Ren´ e Grothmann Traduc ¸˜ ao livre: Ulysses Sodr´ e Colaboradores: Andrielber da Silva Oliveira Evellyn Campos da Silva Karina Tiemi de Melo Rodrigo Vinicius da Costa Londrina-PR, 25 de Agosto de 2011. Tutorial do Euler vers˜ ao 9.6: Introduc ¸˜ ao - Traduc ¸˜ ao livre realizada por Ulysses Sodr´ e

Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Euler versao 9.6: Introducao

Rene Grothmann

Traducao livre: Ulysses Sodre

Colaboradores:

Andrielber da Silva OliveiraEvellyn Campos da Silva

Karina Tiemi de MeloRodrigo Vinicius da Costa

Londrina-PR, 25 de Agosto de 2011.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 2: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

CONTEUDO 2

Conteudo

1 Iniciando o Euler 5

1.1 Calculando com o Euler e com o Maxima . . . . . . . . . . . . . . . . . . . . 5

1.2 Variaveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.3 Analisando Funcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.4 Resolvendo Equacoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.5 Vetores e Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2 Introducao 19

2.1 Visao geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.2 Primeiros passos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.3 A Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.4 A linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.5 Sintaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.6 Notebooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.7 Ajuda e documentacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.8 Arquivos Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3 Expressoes e Graficos 29

3.1 Expressoes Elementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.2 Precisao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.3 Variaveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.4 Unidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.5 Graficos 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.6 Analise Numerica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.7 Definicao de Funcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4 Usando o Maxima dentro do Euler 41

4.1 Entrada Direta de Comandos do Maxima . . . . . . . . . . . . . . . . . . . . 41

4.2 Derivadas e Integrais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.3 Definindo funcoes para usar o Maxima no Euler . . . . . . . . . . . . . . . . 47

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 3: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

CONTEUDO 3

4.4 Exportando valores entre o Maxima e o Euler . . . . . . . . . . . . . . . . . 49

4.5 Matrizes no Maxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5 Tipos de Dados 54

5.1 Numeros Complexos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

5.2 Intervalos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5.3 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5.4 Polinomiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

6 A Linguagem Matricial do Euler 60

6.1 Matrizes e Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

6.2 A Linguagem Matricial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

6.3 Algebra Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

6.4 Analise Regressao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

6.5 Programacao Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

6.6 Autovalores e Valores Singulares . . . . . . . . . . . . . . . . . . . . . . . . 71

7 Funcoes de Varias Variaveis 73

7.1 Graficos 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

7.2 Superfıcies, Curvas e Pontos . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

7.3 Resolvendo Sistemas de Equacoes de Varias Variaveis . . . . . . . . . . . . . 75

7.4 Funcoes Implıcitas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

8 Programacao em Euler 77

8.1 Funcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

8.2 Funcoes que Retornam Varios Valores . . . . . . . . . . . . . . . . . . . . . . 79

8.3 Variaveis Globais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

8.4 Estruturas de Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

8.5 Funcoes e a Linguagem Matricial . . . . . . . . . . . . . . . . . . . . . . . . 85

8.6 Funcoes como Parametros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

8.7 Funcoes e o Maxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

9 Estatıstica 89

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 4: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

CONTEUDO 4

9.1 Numeros Aleatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

9.2 Distribuicoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

9.3 Entrada e Saıda de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

9.4 Testes Estatısticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

10 Aritmetica Exata 93

10.1 Produto Escalar Exato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

10.2 Inclusoes Garantidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

11 Algoritmos em Euler 96

11.1 Equacoes Diferenciais Ordinarias . . . . . . . . . . . . . . . . . . . . . . . . 96

11.2 Iteracao e Recursividade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

11.3 Transformada Rapida de Fourier (FFT) . . . . . . . . . . . . . . . . . . . . . 100

12 Sequencias recursivas 101

13 Sequencias recursivas no programa Euler 102

14 Uma caracterizacao das Sequencias Recursivas 106

15 Series Associadas as Sequencias Recursivas 107

16 Base associada a uma equacao de recorrencia 108

17 Formula de Binet 109

Indice 110

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 5: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 1 Iniciando o Euler 5

Prefacio

Esta e uma introducao ao Euler (Euler Math Toolbox). O objetivo deste texto e realizaruma abordagem inicial ao programa Euler. Apos ler este texto, voce devera estar habili-tado a encontrar o seu proprio caminho com o Euler com a ajuda da documentacao e dareferencia. Euler foi escrito para a matematica universitaria, projetado por um matematicocom a necessidade frequente de calculos numericos e simbolicos, para gerar a construcaografica dos resultados. Um objetivo adicional foi tornar Euler util tambem para os nıveisbasicos. A linguagem Euler, combinada com o sistema de algebra Maxima tornam estaferramenta ideal para este fim. Tarefas muito complexas podem ser realizadas com a in-terface de programacao de Euler, mas o Euler nao e um simples sistema de clicar e rodarapresentando todas as ferramentas na forma de ıcone. Esta introducao e de grande ajuda.

Eu desejo agradecer a muitos amigos, usuarios e desenvolvedores, primeiro pela minhauniversidade por me dar a oportunidade de realizar este projeto. Depois, eu agradeco a EricBouchare, que portou Euler para Linux. Atualmente, eu nao tenho tempo para atualizaresta versao para o nıvel da versao do Windows. Tambem agradeco a H. D. Gellissen pelo seuhandbook em alemao. Varios usuarios tem auxiliado o Euler com programas, notebooks esugestoes para os erros, especialmente Alain Busser, Radovan Omorjan e Horst Vogel.

Tambem agradeco aos desenvolvedores do Maxima por permitir que este sistema estejadisponıvel para o Euler. Gaste um bom e bem sucedido tempo com Euler.

Rene Grothmann, Eichstatt 2009, http://www.rene-grothmann.de

1 Iniciando o Euler

1.1 Calculando com o Euler e com o Maxima

Mostramos aqui alguns simples exemplos para introduzir os principais feitos do Euler e doMaxima. Eu assumo que voce esteja habilitado a utilizar a interface do programa.

Com o Euler e o Maxima, temos duas ferramentas, uma para realizar calculos numericosrapidos e uma outra para operacoes aritmeticas simbolicas exatas. Algumas vezes, e melhorusar uma ferramenta, outras vezes e melhor usar a outra, mas observamos que ambas asferramentas podem operar juntas para gerar as melhores respostas.

Agora realizaremos alguns calculos muito simples com fracoes, que irao gerar resultadosdiferentes no Euler e no Maxima. Apos digitar a linha de comando, pressionamos a teclaEnter para ver o resultado da operacao. Respostas com formas graficas mais complicadasficarao centralizadas na linha que vem depois da caixa contendo o codigo digitado.

Euler: Linhas de comando

>1+1/2+1/3+1/4 // calcula a fracao com o Euler2.083333333333

>:: 1+1/2+1/3+1/4 // calcula a fracao com o Maxima25/12

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 6: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

1.1 Calculando com o Euler e com o Maxima 6

1. Um comando do Euler inicia com um simples > no prompt.

2. O comando para usar o Maxima inicia com :: mas podemos usar : apenas.

3. O comando :: e um modo especial de compatibilidade com o Maxima, para que vocepossa usar uma sintaxe mais proxima da usada no Euler.

4. O resultado no Euler e uma fracao decimal com 16 dıgitos de precisao.

5. O Maxima da a resposta na forma de uma fracao.

Podemos mostrar numeros decimais como fracoes no Euler e depois converter tais fracoespara o formato float no Maxima.

Euler: Linhas de comando

>fracprint(1+1/2+1/3+1/4) // mostra uma fracao no Euler25/12

>:: float(1+1/2+1/3+1/4) // converte para float no Maxima2.083333333333334

Por que dois programas? Porque o Maxima e mais lento que o Euler em calculos numericoselaborados, pois o Euler possui alguns algoritmos numericos que o Maxima nao tem, maso Maxima pode realizar muitas operacoes que o Euler nao pode fazer.

Realizaremos agora alguns calculos mais complexos no Euler ou no Maxima, utilizandotres modos distintos para obter a mesma soma finita:

1000∑k=1

1

k

1. Usando o EulerEuler: Linhas de comando

>sum(1/(1:1000))7.48547086055

2. Usando ponto flutuante em Maxima (observe os quatro pontos apos o prompt). Nestecomando, o Maxima trata o numero 1.0 como ponto flutuante, informando que ocalculo para a resposta deve estar em ponto flutuante.

Euler: Linhas de comando

>:: sum(1.0/k,k,1,1000)7.485470860550343

3. Usando uma fracao no Maxima (observe os quatro pontos apos o prompt), que naotem muita utilidade e pode gerar problemas com a barra /.

Euler: Linhas de comando

>:: sum(1/k,k,1,1000)Veja a resposta na tela do computador, pois e muito longa.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 7: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

1.2 Variaveis 7

O Maxima pode calcular resultados exatos, enquanto o Euler calcula em ponto flutuante.

Euler: Linhas de comando

>sin(45[SHIFT+F7]) // (use SHIFT+F7 para obter ˆo no Euler)0.7071067811865

>:: sin(%pi/4) // (%pi = 3.1415926535... no Maxima)

1/√

2

As respostas sao equivalentes, mas o Euler nao gera este resultado exato, so o Maxima.

Outro exemplo e a soma da serie 2-harmonica infinita, onde Euler somente pode calcularuma aproximacao, mas o Maxima fornece o valor exato.

Euler: Linhas de comando

>:: sum(1/kˆ2,k,1,inf) | simpsum, float(%)

π2/6

cujo valor numerico pode ser obtido com um comando no Euler:

Euler: Linhas de comando

>sum(1/(1:1000)ˆ2)1.643934566682

1.2 Variaveis

Quando valores ou resultados sao utilizados mais tarde, podemos associar os mesmos acertas variaveis. Para haver compatibilidade entre o Euler e o Maxima, o sinal := e usado.Podemos configurar uma variavel para ser usada tanto no Euler como no Maxima.

Euler: Linhas de comando

>a:=2 // variavel valida no Euler2

>:: a:=2 // variavel valida no Maxima2

>a::=2 // variavel valida no Maxima e no Euler2

Para nao mostrar as associac~oes na saıda mas mostrar os resultados das expressoes comtais associacoes, usamos o sinal ; de ponto e vırgula.

Euler: Linhas de comando

>:: a:=2; aˆ3-a6

>a:=2; aˆ3-a6

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 8: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

1.2 Variaveis 8

Em geral, variaveis definidas sao locais (nao globais) no Maxima e no Euler, pois variaveisdefinidas em um local do programa nao ficam definidas em outros locais automaticamente.

Para usar uma expressao no Maxima com uma variavel definida no Euler, nos usamos afuncao mxmset e para usar no Euler uma variavel definida no Maxima, usamos a funcaomxmget, ou entao realizamos uma associac~ao com o prompt ::= que e muito mais simples.

Euler: Linhas de comando

>a:=4; mxmset(a);>a::=4; // Esta forma e mais facil.>:: a

4>mxmget("2*a"),

8

Tambem podemos obter uma resposta do Maxima como uma string no Euler, e calcular aresposta imediatamente para os valores dados das variaveis contidas na express~ao.

Euler: Linhas de comando

>mxm("diff(xˆx,x)")xˆx*(log(x)+1)

>mxmeval("diff(xˆx,x)",x=2)6.77258872224

Podemos usar uma sintaxe mais facil para isto. Se uma string inicia com :: entao elae avaliada pelo Maxima gerando uma string de saıda. Podemos avaliar uma string navariavel x do domınio da funcao, pondo a mesma dentro de parenteses apos a string.

Euler: Linhas de comando

>"::diff(xˆx,x)"xˆx*(log(x)+1)

>"::diff(xˆx,x)"(2)6.77258872224

Os dois mundos de Euler exportam os resultados de modo facil. No Maxima, a variavelsimbolica nao tem valor. Uma variavel com um := e trocada pelo valor e nao pode serusada em calculos simbolicos. Removemos o valor de uma variavel com remvalue.

Euler: Linhas de comando

>:: a:=44

>:: aˆ216

>:: remvalue(a)[a]

>:: aˆ22

a

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 9: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

1.3 Analisando Funcoes 9

Para realizar so um calculo, podemos associar um valor para avaliar express~oes, utili-zando o modo de compatibilidade, com a barra vertical | (pipe).

Euler: Linhas de comando

>:: aˆ2*b | a=4 | b=232

Tambem podemos usar a funcao at que associa uma express~ao a uma lista de valores.Usa-se a funcao at em resultados obtidos pelo comando solve em outras express~oes.

Euler: Linhas de comando

>:: at(aˆ2*b,[a=4,b=2])32

>:: solve(a*x+b=c,x), at(xˆ2+2,%)c-b

[x = ---]a

2(c-b)------ + 2

2a

Aqui, usamos % para usar o ultimo resultado do calculo anterior. Isto reduz os comandos auma unica linha. Se voce necessitar um resultado na linhas subsequentes, use variaveis.

A funcao subst pode realizar substituicoes completas em subexpress~oes.

Euler: Linhas de comando

>:: subst(aˆ2=16,aˆ2*b)16 b

1.3 Analisando Funcoes

Para analisar funcoes de uma variavel, o Euler funciona muito bem com o Maxima. Parafuncoes simples, que podem ser tratadas analiticamente, o Maxima e a ferramenta certa.

No Euler, o comando plot2d serve para plotar uma expressao na variavel x ou uma funcaof=f(x) definida no Euler. Euler tambem pode manipular graficos de dados, graficosde barras, graficos de pontos, curvas no plano e outras. Configuramos as opcoespara este comando do mesmo modo que plot limits usando parametros associados.

Plotaremos funcoes com o Euler, lembrando que o Maxima possui uma otima ferramentagratuita embutida (Gnuplot) para plotar graficos das mais variadas formas de funcoes.

Plotamos a funcao f(x) = x3 − x na variavel x, com:

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 10: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

1.3 Analisando Funcoes 10

Euler: Linhas de comando

>plot2d("xˆ3-x",title="Funcao cubica"); insimg;

O comando insimg; indica que o grafico e inserido em uma janela de texto, no notebook.

Funcao cubica f(x) = x3 − x f(x) = log(x)/x no intervalo [a, b]

Plotamos a expressao log(x)/x na variavel x, no intervalo [a, b] com a = 0 e b = 0.05

Euler: Linhas de comando

>plot2d("log(x)/x",a=0.01,b=0.05,title="Funcao no intervalo [a,b]");>insimg;

Plotamos log(x)/x sobre o domınio [a, b] = [0, 10] e a imagem em [c, d] = [−3, 1], com:

Euler: Linhas de comando

>expr:="log(x)/x";>plot2d(expr,a=0.1,b=7,c=-3,d=1);

[a, b]× [c, d] e a regiao onde fica o grafico da funcao.

Guardamos a funcao f(x) = log(x)/x como string expr no exemplo acima, para podermosusar esta funcao outras vezes, no Euler ou no Maxima.

Tomando expr como uma variavel no Euler, nos podemos usar o seu conteudo no Maximacom a sintaxe @expr.

Na sequencia, obteremos o ponto de maximo ou o ponto de inflexao da curva que repre-senta o grafico da funcao real f(x) = log(x)/x.

Euler: Linhas de comando

>:: solve(diff(@expr,x)=0,x)[x = %e]

>:: solve(diff(@expr,x,2)=0,x)3/2[x = %e]

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 11: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

1.3 Analisando Funcoes 11

Existem algumas funcoes uteis que usam o Maxima. A funcao mxmdiff deriva (ou diferen-cia) uma funcao e a funcao mxmintegrate integra uma funcao, quando e possıvel.

Euler: Linhas de comando

>u:= "log(x)/x"; du:= mxmdiff(u)1/xˆ2-log(x)/xˆ2

>mxmsolve(du) // Todas as solucoes numericas2.718281828459

>mxmsolve(du,n=1) // Primeira solucao como string%e

>mxmintegrate(du,1,2)0.34657359028

A funcao mxmsolve obtem todos os zeros exatos de polinomiais ate o quarto grau.

Euler: Linhas de comando

>x:=mxmsolve("xˆ2+x",y=1,n=1)-(sqrt(5)+1)/2

>x:=mxmsolve("xˆ4+x",y=1) // Todas as raızes complexasColumn 1 to 1: -1.220744084606+0iColumn 2 to 2: 0.7244919590005+0iColumn 3 to 3: 0.2481260628026-1.033982060976iColumn 4 to 4: 0.2481260628026+1.033982060976i

>real(x[nonzeros(im(x)˜=0)]) // Todas as raızes reais-1.220744084606 0.7244919590005

Varias integrais exatas podem ser calculadas com o Maxima. Tente a integral:∫ ∞1

log(x)

x2dx

Euler: Linhas de comando

>:: integrate(log(x)/xˆ2,x,1,inf)1

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 12: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

1.3 Analisando Funcoes 12

Com strings, guardamos express~oes mas podemos definir funcoes no Euler e no Maxima.

Euler: Linhas de comando

>function f(x) := xˆ3-x // funcao no Euler>:: function f(x) := xˆ3-x // funcao no Maxima

f(x) := x3 − x

As duas definicoes das funcoes estao separadas. Ambos os mundos, podem exportar, masnao compartilham dados. E possıvel ser mais flexıvel para definir a funcao em uma ex-pressao primeiro, e depois definir a mesma em ambas as ferramentas.

Podemos suprimir a saıda da definicao da funcao no Maxima com o sinal ; de ponto e

vırgula mas no Euler isto nao e necessario.

Euler: Linhas de comando

>expr := "xˆ3-x";> function f(x) := @expr; // funcao no Euler>:: function f(x) := @expr; // funcao no Maxima>:: define(f(x),@expr); // forma alternativa no Maxima

A versao alternativa no Maxima tem a vantagem que a expressao e avaliada. O simplessinal := pode causar problemas em determinadas situacoes e nao garante a avaliacao.

Estes exemplos podem ser calculados mais facilmente. Na sequencia, vamos tentar umproblema que envolve muitos calculos. Sugerimos que o usuario seja capaz de resolver oproblema, mas os calculos tediosos podem ser evitados se usarmos o Euler.

Exemplo: Vamos obter o paraboloide de volume maximo que pode ser inscrito em umcone. O paraboloide deve tangenciar o cone e ser simetrico ao eixo de simetria do cone.Primeiro, obtemos a parabola simetrica, que tangencia a funcao f(x) = 1− x.

Euler: Linhas de comando

>:: function p(x,a,b) := a*xˆ2+b;>:: sx := solve(diff(p(x,a,b),x)=-1,x)

[x = − 1

2a]

Este e o valor x onde a parabola p = p(x) possui derivada igual a−1. Agora, nos precisamoscalcular o valor de p(x) = 1− x neste ponto.

Euler: Linhas de comando

>:: at(p(x,a,b)=1-x,sx), sa:=solve(%,a)

b+1

4a=

1

2a+ 1

[a =1

4b− 4]

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 13: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

1.3 Analisando Funcoes 13

Com tais dados, definimos as parabolas tangentes pt = pt(x, b) e plotamos algumas poucasdelas no Euler. Para transferir a funcao do Maxima para o Euler, usamos o comando mxm:

Euler: Linhas de comando

>:: define(pt(x,b),at(p(x,a,b),sa))

pt(x, b) :=x2

4b− 4+ b

Euler: Linhas de comando

>b:=(0.1:0.1:0.9)’;>plot2d("1-abs(x)",r=1); plot2d("::pt(x,b)",add=1);

Agora, rodamos estas parabolas em torno do eixo y e calculamos o volume do paraboloide.Para fazer isto, necessitamos da funcao inversa, que fornece o raio da secao transversal doparaboloide na altura y.

Euler: Linhas de comando

>:: solve(y=pt(x,b),x); define(ptinv(y,b),rhs(%[2]))

ptinv(y, b) := 2√by − y − b2 + b

Com isto, nos podemos calcular o volume e finalmente maximizar o mesmo.

Euler: Linhas de comando

>:: integrate(%pi*ptinv(y,b)ˆ2,y,0,b); define(F(b),%)

F (b) := −2π(b3 − b2)

Euler: Linhas de comando

>:: solve(diff(F(b),b)=0,b)

[b =2

3, b = 0]

Euler: Linhas de comando

>:: float(F(2/3))0.93084226773031

Os detalhes deste calculo, principalmente a sintaxe do Maxima, nao sao obvias. Para umaexplicacao mais proxima, de uma olhada na introducao do capıtulo sobre o Maxima.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 14: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

1.4 Resolvendo Equacoes 14

1.4 Resolvendo Equacoes

O Maxima possui o comando solve para resolver equacoes ou sistemas de equacoes.

Euler: Linhas de comando

>:: sol := solve(xˆ2-x+1,x)

[x = −√

3i− 1

2, x = +

√3i+ 1

2]

Para inserir os resultados nas expressoes subsequentes, usamos a funcao at.

Euler: Linhas de comando

>:: expand(at(xˆ2-x+1,sol[2]))0

Neste caso, calculamos o valor numerico da segunda solucao na equacao dada e depoisusamos a funcao expand para simplificar o resultado para 0.

Mas, o comando solve nao resolve todas as equacoes e nem mesmo todas as equacoespolinomiais. Assim, nos temos que nos contentar com solucoes numericas.

Agora, usamos o metodo de bisseccao de Euler para calcular um zero da funcao realf(x) = x6 − 10 ∗ x+ 1, que podemos ver no grafico desta funcao.

Euler: Linhas de comando

>plot2d("xˆ6-10*x+1");>bisect("xˆ6-10*x+1",0,1)

0.1000001000006

Euler tambem usa a aritmetica de intervalos para obter uma inclus~ao proxima e ainclus~ao garantida do mesmo resultado.

No Euler, um intervalo real [a, b] e denotado por ~a,b~.

Para utilizar o metodo dos intervalos de Newton, existe a necessidade de calcularmos aderivada da funcao f = f(x), envolvida no processo. Usaremos o Maxima para isto.

Euler: Linhas de comando

>mxminewton("xˆ6-10*x+1",˜0,1˜) // i de intervalo˜0.10000010000059993,0.10000010000060007˜

O zero desta funcao esta no intervalo [0.10000010000059993, 0.10000010000060007].

A funcao solve do Maxima pode resolver sistemas de equacoes lineares ou nao lineares.

Resolvendo um sistema linear:

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 15: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

1.4 Resolvendo Equacoes 15

Figura 1: Grafico de f(x) = x6 − 10 ∗ x+ 1 e um zero desta funcao

Euler: Linhas de comando

>:: solve([a+b=4,a-2*b=3],[a,b])

[ [a =11

3, b =

1

3] ]

Resolvendo um sistema nao linear:

Euler: Linhas de comando

>:: solve([a*b*c=1,aˆ2+bˆ2+cˆ2=3,a+b+c=3],[a,b,c])[ [a=1, b=1, c=1] ]

Se a solucao depende de uma constante arbitraria, o Maxima envia uma forma parametrica.O exemplo seguinte possui 3 equacoes com 3 incognitas, mas uma equacao depende dasoutras duas, logo a resposta ficara dependente de uma constante %r1.

Euler: Linhas de comando

>:: solve([a+2*b+3*c=6,4*a+5*b+6*c=15,7*a+8*b+9*c=24],[a,b,c])Dependent equations eliminated: (3)[ [a = %r1, b = 3 - 2 %r1, c = %r1] ]

Euler possui metodos numericos para resolver equacoes. Sistemas lineares podem serescritos na forma matricial Ax=b e sao resolvidos com o operador \ barra invertida, que

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 16: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

1.4 Resolvendo Equacoes 16

funciona bem para grandes matrizes. Vamos resolver o sistema linear:

1a+ 1b = 4

1a− 2b = 3

Euler: Linhas de comando

>A=[1,1;1,-2]1 11 -2

>b=[4;3]43

>fracprint(A\b);11/31/3

Quando existe mais que uma solucao, nos podemos usar a funcao svdsolve, que gera asolucao mais proxima possıvel (minimizando r = ‖Ax−b‖), mesmo que nao exista solucao.

Euler: Linhas de comando

>A=redim(1:9,3,3)1 2 34 5 67 8 9

>x=svdsolve(A,[6;15;24])111

Esta e a mesma solucao do exemplo anterior, com o parametro igual a 1. Para obter todasas solucoes, precisamos entender e calcular o nucleo da matriz.

As vezes, sistemas nao lineares podem ser resolvidos com o algoritmo de Broyden.Vamos considerar este algoritmo para resolver o sistema nao linear de equacoes:

x.y − 1 = 0

x2 + y2 − 4 = 0

Primeiramente, definimos uma funcao f = f(v) = f(v1, v2) = (x.y − 1, x2 + y2 − 4) devalores vetoriais. O algoritmo pesquisa pelo zero de f.

Euler: Linhas de comando

>function f(v) := [v[1]*v[2]-1,v[1]ˆ2+v[2]ˆ2-4]>broyden("f",[1,2])

0.517638090205 1.931851652578

No exemplo nao linear acima, nos chegamos a uma solucao com o Maxima, mas o algoritmode Broyden falha, pois o Jacobiano e singular.

Assim, tentaremos usar o metodo de minimizacao (bastante estavel) de Nelder-Mead.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 17: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

1.5 Vetores e Matrizes 17

Euler: Linhas de comando

>function f(v) := [ v[1]*v[2]*v[3]-1,v[1]ˆ2+v[2]ˆ2+v[3]ˆ2-3,v[1]+v[2]+v[3]-3 ]

>function g(v) := norm(f(v))>neldermin("g",[0,0,0])

1.00000054821 0.9999996494718 0.9999998023188

Mas, este exemplo poderia ser resolvido facilmente sem uso de programas computacionais.

1.5 Vetores e Matrizes

Uma das melhores razoes para usar o Euler e a sua linguagem matricial. O Euler poderealizar calculos com expressoes de Algebra Linear, mas a principal vantagem do Euler eno uso de vetores para calcular valores e gerar tabelas de dados.

A regra basica e a seguinte: Se qualquer funcao escalar do Euler e aplicada a uma vetor deentrada, a funcao e avaliada elemento a elemento.

Euler: Linhas de comando

>shortformat;>v=1:5

1 2 3 4 5>vˆ2

1 4 9 16 25>sqrt(v)

1 1.414214 1.732051 2 2.236068

Na sequencia, apresentamos um modo de plotar funcoes. Ele e o unico modo, se o vetore gerado elemento a elemento, como em um processo aleatorio. Como exemplo, vamosgerar um movimento browniano pela soma de numeros aleatorios.

Para i=1,...,1000, onde t[i] sao valores normalmente distribuıdos, nos obtemoss[i] := t[1] +...+ t[i].

A funcao cumsum realiza a soma acumulada, que nos precisamos:

Euler: Linhas de comando

>t:=normal(1,1000); s:=cumsum(t); plot2d(s);

Agora, vamos calcular uma funcao de valores vetoriais da func~ao binomial e plotar amesma:

Euler: Linhas de comando

>n=0:20; b=bin(20,n); // Calcula bin(20,0) ... bin(20,20)>plot2d(n,b,points=1,title="bin(20,n)"); xlabel("n");

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 18: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

1.5 Vetores e Matrizes 18

Figura 2: Funcao binomial de 20 com a taxa n

Vamos tambem obter a soma, a media e o valor maximo do vetor.

Euler: Linhas de comando

>sum(b), 2ˆ20 // Soma = 2ˆ2010485761048576

>sum(n*b/2ˆ20) // valor esperado10

>max(b)184756

Todos os procedimentos embutidos no Euler se aplicam a entradas de matrizes elemento

a elemento. Se os parametros sao vetores e matrizes, os elementos sao tomados de modonatural, mas se v e um vetor coluna e w e um vetor linha, A=v*w e uma matriz de tal modoque A[i,j] = v[i].w[j], isto e, o produto e realizado elemento a elemento. Este nao eo produto usual de matrizes. O produto de matrizes e obtido com . ponto.

Euler: Linhas de comando

>format(5,0); A=[1,2;3,4]1 23 4

>A*A // produto ponto-a-ponto1 49 16

>A.A // produto usual de matrizes7 1015 22

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 19: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 2 Introducao 19

Agora, construiremos uma tabela de produto por 10, onde n’ e a transposta do vetor n.

Euler: Linhas de comando

>n=1:10; A=n’*n; // n’ = transposta de n>format(5,0); A,

1 2 3 4 5 6 7 8 9 102 4 6 8 10 12 14 16 18 203 6 9 12 15 18 21 24 27 304 8 12 16 20 24 28 32 36 405 10 15 20 25 30 35 40 45 506 12 18 24 30 36 42 48 54 607 14 21 28 35 42 49 56 63 708 16 24 32 40 48 56 64 72 809 18 27 36 45 54 63 72 81 9010 20 30 40 50 60 70 80 90 100

Varias funcoes geram sequencias recursivas e usaremos a linguagem de programacaodo Euler para isso. Aqui, restringimos a atencao aos comandos de sequencias. A expressaopara este comando pode envolver um vetor x contendo o elemento anterior da sequencia eo ındice n do novo elemento.

Euler: Linhas de comando

>shortformat;>sequence("x[n-2]+x[n-1]",[1,1],10) // Sequencia de Fibonacci

Column 1 to 5:1 1 2 3 5

Column 6 to 10:8 13 21 34 55

Uma outra forma e usar um laco. Podemos usar lacos fora de funcoes, se eles se ficarem emuma unica linha de comando. Ver sobre a sintaxe para lacos na secao sobre programacao.

Euler: Linhas de comando

>v=ones(1,10); for i=3 to 10; v[i]=v[i-1]+v[i-2]; end; v,Column 1 to 5:

1 1 2 3 5Column 6 to 10:

8 13 21 34 55

2 Introducao

2.1 Visao geral

Euler Math Toolbox (Euler) e um software de calculo numerico e algebrico, uma mis-tura entre um Computer Algebra System (CAS) e uma linguagem matricial numerica,

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 20: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

2.1 Visao geral 20

similar ao Matlab. A parte numerica foi programada por Rene Grothmann, professor deMatematica na Universidade de Eichstatt. A parte algebrica utiliza o Maxima como umsoftware aberto CAS.

Faremos uma soma, numericamente com o Euler para n=200 e depois algebricamente como Maxima.

n∑k=0

1

3k=

3

2(1− 1

3n+1)

O Maxima mostra a resposta um pouco diferente da formula acima, mas para n=200 o valore o mesmo. Este valor n=200 e suficientemente grande de modo que a soma numericacoincide com limite da resposta algebrica quando n→∞.

No codigo abaixo, na primeira linha um comando do Euler e na segunda linha um comandopara o Maxima, iniciando com :: e terminando com simpsum que simplifica a soma.

A soma numerica de 1/3^k, com k=0...200 e obtida com:

Euler: Linhas de comando

>sum(1/3ˆ(0:200))1.5

>:: soma := sum(1/3ˆk,k,0,n) | simpsum // n-esima soma parcial

3

2(1− 1

3n+1)

No Maxima, nos podemos calcular o limite da expressao acima quando n→∞.

Euler: Linhas de comando

>:: limit(soma,n,inf)3/2

O nucleo numerico do Euler utiliza uma linguagem matricial, que nao pode ser mani-pulada apenas por numeros simples, mas tambem por vetores e matrizes de numeros.

Alem disso, Euler pode operar com numeros complexos, intervalos e strings. Todos estescalculos podem ser programados em funcoes do Euler, que podem ser carregadas no Eulercom arquivos externos. Realmente, uma grande parte da sintaxe do Euler e baseada emfuncoes escritas na linguagem de programacao Euler.

Euler pode gerar e guardar graficos em um meta-formato interno, e as saıdas graficas paravarios meios, como a janela grafica. Graficos tambem podem ser importados para ajanela de texto, exportados para arquivos e carregados no clipboard.

O sistema embutido Maxima se comunica com o Euler atraves de pipes. O Maxima fica emum sistema separado, mas existem varias interacoes entre o Euler e o Maxima. Este e umpoderoso ambiente para pesquisas matematicas.

Euler iniciou por volta de 1988 para gerar a funcionalidade do Matlab no Atari ST. Oprograma nunca foi um clone do Matlab, e sempre teve vida propria desde o inıcio. Aversao atual funciona em Windows. Versoes mais antigas para OS/2 ou Linux nao estaosendo atualizadas. Mas, Euler roda em Linux sob Wine, incluindo suporte com Maxima.Espera-se por uma versao nativa para Linux, baseada na porta nativa de Eric Bouchare.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 21: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

2.2 Primeiros passos 21

2.2 Primeiros passos

O Euler mostra um prompt > em uma linha de comando na janela com texto (notebook),onde os comandos sao inseridos (em marron) e executados, e a saıda (em preto) aparecena mesma janela sob o comando. Os comandos na janela de texto podem ser editados eexecutados de cada vez. Tambem podemos anexar comentarios.

Figura 3: Janela de texto do Euler (notebook)

Existe uma outra janela, denominada janela grafica que serve para a saıda grafica

do Euler. Os graficos na janela grafica podem ser postos na janela de texto.

Apos instalar o Euler com Maxima, voce encontra um atalho no menu iniciar e no desktoppara iniciar o programa. Inicie Euler com os seguintes comandos para um teste.

Euler: Linhas de comando

>1+12

>exp(-0.5)*sin(3/2*pi)-0.6065306597126

Se voce errar, volte ao local do erro com o mouse ou com as teclas do cursor, corrija aentrada, e pressione ENTER em qualquer lugar da linha para reiniciar o calculo.

Para um passo seguinte, sugerimos que abra alguns notebooks introdutorios. Use o menuhelp para ver as introducoes. Eles devem estar na instalacao do Euler. Apos ler uns poucosdestes notebooks introdutorios, voce deve ter uma boa ideia do Euler.

Como o Euler usa comandos, voce deve gastar algum tempo para aprender a sintaxe doprograma. Este tutorial tenta dar um bom inıcio sobre todos os aspectos do Euler.

Informacao adicionalHelp Menu para help, introducao e demos.Open Introduction Abre um dos notebooks da introducao.Euler Help Documentacao sobre o Euler.Version Information and Update Pesquisa pela versao atual na Net.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 22: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

2.3 A Interface 22

2.3 A Interface

A interface do Euler e muito simples com a janela de texto e a janela grafica. Ajanela de texto possui o menu usual, a area do notebook e uma linha de status. As duasjanelas podem ser ampliadas. Euler ira lembrar o tamanho e a posicao de cada janela.

Para plotar o grafico da funcao f(x) = x2 no intervalo [−1, 1], usamos:

Euler: Linhas de comando

>plot2d("xˆ2",-1,1);

Esta interface e simples para aprender, mas ela nao tem outros ıcones graficos listandotodos os comandos disponıveis, mas existe uma referencia e uma ajuda extensa no menu

help.

Ao digitar comandos para o Euler ou Maxima, a linha de status mostra os comandos dis-ponıveis. Ao digitar um colchete de abertura para uma funcao no Euler, a linha de statusmostra uma ajuda com a lista de parametros e uma mini descricao sobre a funcao. Umapequena ajuda sobre comandos Maxima, mas ainda assim todos os comandos disponıveisno Maxima iniciando pela string digitada aparecera na linha de status.

Informacao adicionalTAB Troca entre a janela de teste e a janela grafica.

2.4 A linha de comando

Todos os comandos sao inseridos na janela de texto na atual linha de comando. Os co-mandos ficam em marron e iniciam com o prompt > para o Euler, e com :: ou : para oMaxima. O usuario nao pode deletar o prompt >. Alem disso, a janela de texto pode contercomentarios em cor verde, e a funcao definida em cor azul iniciando com $. Cores nao saorepresentadas nos exemplos desta introducao.

Entrar com comandos funciona do mesmo modo que em outros programas. A tecla Ctrl

junto com as setas do cursor move o cursor de palavra para palavra. De uma olhada no

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 23: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

2.4 A linha de comando 23

menu edit para mais feitos. Pressione a tecla ENTER em qualquer lugar em uma linha paraexecutar o comando da referida linha.

Linhas de comando podem ser apagadas e tais linhas sao acumuladas e podem ser inseridasem qualquer lugar. Os atalhos para isto estao listados no menu edit.

Pressionando a tecla Esc, podemos interromper um calculo longo.

Para acrescentar um comentario a uma linha de comando, inicie o editor de comentariocom F5 e um comentario pode ser anexado a linha de comando com //.

Euler: Linhas de comando

>sum(1:1000) // Comentario: calcula a soma de 1 ate 1000500500

Quando uma linha de comando e muito longa, ou nao cabe em apenas uma linha, podemosquebrar a linha com dois (ou mais) pontos seguidos .. e ENTER, com a linha seguinte:

Euler: Linhas de comando

>b:=(1+3+3ˆ2+3ˆ3)* .. [Enter] // dois pontos>(1+2*3+3*3ˆ2)

1360>plot2d("xˆy",a=0,b=3,c=0,d=3, ... [Enter] // tres pontos> niveau=-10:0.1:10, title="xˆy");

Se as linhas terminam por tres pontos ... Euler ira executar o comando completo de umavez (comandos multi-linhas). Isto funciona, mesmo que o cursor esteja na segunda linhado comando.

Voce pode marcar texto na janela de texto arrastando o mouse sobre ele. O cursor perma-necera na linha de comando na posicao atual.

O texto marcado pode ser copiado para o clipboard e depois inserido em uma linha decomando, antes da linha ou depois da linha de comando, mesmo que existam varias linhas.

Este e um modo facil de enviar comandos do Euler por e-mail. E logico que ele pode serenviado de uma forma melhor por um arquivo contendo notebook.

Existem menus especiais de entradas para copiar somente os comandos, ou para copiaruma versao formatada do notebook. Copiar somente comandos e projetado para gerar umarquivo Euler a partir dos comandos marcados.

A copia formatada e boa para gerar arquivos de documentacao do Euler. A saıda aindapode ser colada de volta no Euler.

Informacao adicional, Separa comandos ou separa os comandos em uma linha.; Suprime a saıda.Home Move o cursor para o inıcio da linha.End Move o cursor para fim da linha.Shift Marca texto com as teclas de cursor.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 24: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

2.5 Sintaxe 24

2.5 Sintaxe

Euler distingue comandos, expressoes e associacoes. O comando list string encontratodas as funcoes ou comandos contendo a string.

Euler: Linhas de comando

>list sin // comando

*** Functions:antialiasing arsinh asin isinterval sin sinh7 items found!

>a:=sin(pi/2) // associacao1

As expressoes matematicas sao as mais simples. Euler avalia as express~oes na ordemusual de calculo, sendo que os parenteses alteram a precedencia das operacoes.

Euler: Linhas de comando

>(1+2*4)*(3+4)/(4+2)10.5

Existem expressoes que funcionam como comandos, mas os resultados destas expressoesnao sao importantes.

No proximo exemplo, o sinal ; ponto e vırgula foi posto no final da linha para suprimira saıda do comando plot2d, que retorna as coordenadas da janela plot atual.

Euler: Linhas de comando

>plot2d("xˆ2",-1,1);

Uma associac~ao contem um nome de variavel do lado esquerdo, e uma expressao do ladodireito de := enquanto que o ponto e vırgula ; suprime a saıda do valor.

Euler: Linhas de comando

>a:=2;>a:=aˆ2;>a

4>a:=aˆ2;>a

16

Euler tambem pode usar a sintaxe a=2 para associacao, mas a situacao a=a^2 fica feia, logo,nao e recomendada. Neste tutorial, nos usamos a sintaxe := para uma associac~ao.

Existem outros modos para associar func~oes com saıda de varias variaveis. Leiamais sobre isto na secao sobre programacao.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 25: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

2.6 Notebooks 25

Informacao adicional> x^2 Envia o comando para o Euler.>:: x^2 Envia o comando para o Maxima.>> x^2 Envia o comando para o Yacas.2^{2^2} Avalia como 22

2.

Ctrl+CursorUp Chama um antigo comando da historia da sessao.

2.6 Notebooks

O conteudo da janela de texto e um notebook. Notebooks podem ser salvos com um textopuro, ou exportado para HTML para paginas da web ou enviado para impressao. Notebookspodem conter comandos, saıdas do Euler, comentarios e imagens. Se um notebook comimagens for salvo, as imagens serao salvas em arquivos separados no formato PNG.

Para navegar pelos comandos em um notebook, use o mouse ou as setas do cursor. Oscomentarios e a saıda de um comando ficam juntos. Para editar o comentario, use o editorde comentario com F5. A saıda nao pode ser editada. Linhas de comandos podem serinseridas e apagadas somente se estiverem com seus comentarios e saıdas.

A ordem de execuc~ao pode nao ser a mesma ordem dos comandos do notebook. Inseriros comandos no notebook seguinte gera a saıda mostrada aqui. Se voce voltar a segundalinha e executar a mesma uma vez mais, a=4 ira ser usada e a saıda mudara para 16.

Euler: Linhas de comando

>a:=2; // Texto puro>a*a // Texto puro

4 // Texto puro>a:=4; // Texto puro

Para rodar todos os comandos em um notebook use o menu entry. Todas as variaveisserao configuradas na ordem correta. Para um inıcio limpo, carregue o notebook pela listados notebooks mais recentes. Em geral, Euler ira reiniciar de modo automatico, quandoum novo notebook for carregado. Um notebook e um arquivos de texto puro que temextens~ao .en mas este tipo de arquivo nao deve ser editado com o Microsoft Word ouSwriter (Open Office), mas com um editor de texto puro.

As imagens sao salvas em arquivos separados no formato PNG (Portable Network Graphics)e referidas no arquivo notebook pelo nome do arquivo com a imagem. Em geral, o Eulerreinicia quando um notebook e carregado. Isto pode ser desabilitado com uma troca nomenu options. Um reinıcio tambem afeta o Maxima. O Maxima finaliza e inicia de novoquando um comando Maxima e usado.

Informacao adicionalOpen Notebook abrir um notebook na pasta atual.Open User Notebook abrir um notebook na pasta do usuario.Open Introduction abrir um notebook na pasta do programa.Print Graphics imprimir um grafico da janela grafica.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 26: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

2.7 Ajuda e documentacao 26

2.7 Ajuda e documentacao

Euler vem com uma referencia completa em ingles, uma pequena referencia e estetutorial introdutorio que voce esta lendo. Podemos usar o menu Help para acessar estaspaginas, ou demos e exemplos.

Ao digitarmos uma funcao, apos a abertura do parentese da funcao, aparece na linha de

status da janela de texto uma lista de parametros e alguma ajuda.

O comando list string lista as funcoes onde aparece a string

Euler: Linhas de comando

>list sin \\ Palavras onde aparece sin

*** Commands:

*** Euler functions:antialiasing arsinh asin isinterval sin sinh

O comando help string oferece ajuda sobre funcoes com a string no seu nome.

Euler: Linhas de comando

>help sinsin is a builtin function.

abs,sin,cos,tan,asin,acos,atan,exp,log,sign,sqrt

Mathematical functions. Work for real, complex andinterval scalars and matrices.The trigonomentric functions work for radians.To convert use xˆo or deg(x). (use shift-F7 for ˆo)Examples:sin(45ˆo) // -> 0.7071067811865 - sin in degrees!sin(pi/2) // -> 1sin(rad(90)) // -> 1...

As linhas de ajuda podem incluir exemplos e referencias a algum arquivo demo.

Para obter exemplos sobre a func~ao embutida cos na linha de comando, use example.

Euler: Linhas de comando

>example coscos(1)ˆ2+sin(1)ˆ2 // -> 1cos(acos(0.1)) // -> 0.1plot2d("cos(x)",0,2pi);...

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 27: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

2.8 Arquivos Euler 27

Funcoes na linguagem Euler parecem um pouco diferentes das formas usuais.

Euler: Linhas de comando

>help sinhfunction sinh ()

Function in file : functionssinh(x) = (exp(x)-exp(-x))/2

Informacao adicionallist abc Encontra todas as funcoes e comandos contendo abc.Open Documentation Abre a documentacao do Euler.Maxima Documentation Abre a documentacao do Maxima.Quick Examples Exemplos rapidos para varios topicos.Open Demos Pagina para a Web com demonstracoes de feitos.Open Examples Pagina para a Web com exemplos.

2.8 Arquivos Euler

Para gerar programas mais complicados, e bom colocar todas as definicoes de funcoese comandos em arquivos externos Euler, que devem ter a extens~ao .e e podem sercarregados no Euler com o comando load.

Arquivos na pasta atual serao encontrados apenas com o nome. A pasta atual e apasta onde o notebook atual carregado esta salvo ou carregado, ou entao, use o caminhocompleto do arquivo, ou inclua a pasta do arquivo no caminho do Euler.

Euler: Linhas de comando

>load soundSave and load WAV sound files. Analyze frequencies....

Alguns arquivos Euler iniciam com comentarios, que sao mostrados na janela de texto. Istopode ser desligado com comments off e ligado com comments on.

Euler: Linhas de comando

>comments off; load sound; comments on;

Um comentario no arquivo Euler e escrito entre comment e endcomment:

Euler: Linhas de comando

commentEste texto e um comentario inicial.endcomment

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 28: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

2.8 Arquivos Euler 28

Existem outros modos de criar comentarios nos arquivos Euler.

Euler: Linhas de comando

/*Outro tipo de comentario maior sobretodas as variaveis em duas linhas.

*/g:=9.81; // Aceleracao da gravidadet:=2.5; // Tempos gastos:=1/2*g*tˆ2; // Espaco percorrido// Saıda de s:s,

No Euler, arquivos sao editados com um editor interno ou editor externo. Para cha-mar um editor interno, use o menu item, ou a tecla F9. Ira aparecer uma janela de dialogo.

Se o editor e chamado em uma linha iniciando por load, ele usa este arquivo como:

Euler: Linhas de comando

>load "arquivo"

Se a linha inicia com um comando function, ele edita uma funcao. Depois de editar afuncao, a palavra endfunction sera anexada. A linha function sera fechada com ... demodo que a definicao da funcao possa ser interpretada com um pressionar da tecla ENTER.

Euler: Linhas de comando

>function f(x) ...$ // function body$endfunction>

O editor interno edita o arquivo EulerTemp.e na pasta do usuario, se ele e iniciado emuma linha vazia. Mas, outros arquivos podem ser carregados no editor, ou o editor dearquivos pode salvar como outro arquivo. Em qualquer outra linha, ele editara a linha.Mesmo comandos multi-linhas terminando com ... podem ser editados deste modo.

Euler: Linhas de comando

>load "C:\\Usuario\\FulanoTal\\EulerTemp.e"

Este texto foi carregado em30.65625 s

Todas as saıdas do comando load sao mostradas na atual linha de comando. Os comandosno arquivo Euler nao sao inseridos no atual notebook.

O editor externo funciona com o comando load tambem, mas ele nao pode editardefinicoes de funcoes ou linhas de comando. Euler nao espera que o editor externo fi-nalize. Voce pode deixar o editor aberto, voltar para o Euler e rodar o comando load

naquele local. Nao esqueca de salvar as suas mudancas.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 29: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

Secao 3 Expressoes e Graficos 29

3 Expressoes e Graficos

3.1 Expressoes Elementares

Euler conhece todas as operacoes elementares da Matematica e sabe avaliar as express~oes

com as convencoes usuais, mas algumas vezes devemos usar parenteses para evitar erros.

Euler: Linhas de comando

>[-2ˆ2; 2ˆ-2, 2ˆ3ˆ4, (2ˆ3)ˆ4]-4 0.25 2.417851639229e+024 4096

A lista de funcoes e operadores disponıveis e grande. A funcao logaritmo natural pode serdigitada com log ou ln. Tambem existe o logaritmo na base 10, denotado por log10. Afuncao raiz quadrada e denotada por sqrt.

Expressoes podem gerar mensagens de erro. A raiz quadrada de numeros negativos naoexiste em (−∞, 0), a menos que facamos a conversao deste numero para um numero com-plexo.

Euler: Linhas de comando

>1/0error in :1/0ˆ

>sqrt(-1)Error in sqrterror in :sqrt(-1)ˆ

>sqrt(complex(-1))0+1i

Potencias com expoentes inteiros sao bem definidas, mesmo para numeros negativos. Ou-tras potencias de numeros negativos nao sao definidas.

Euler: Linhas de comando

>[(-2)ˆ3, 0ˆ0]-8 1

>(-1)ˆ(1/2)Illegal argument for ˆError in ˆerror in :(-1)ˆ(1/2)ˆ

Para numeros muito grandes ou muito pequenos, use o formato exponencial.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 30: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

3.2 Precisao 30

Euler: Linhas de comando

>1.2e1012000000000

>1.2e-101.2e-010

Euler reconhece alguns outros tipos de dados e manipula inteiros como reais.

Informacao adicional2**3 Alternativa para 2^3.help sin Ajuda para sin etc.help round Arredondando etc.Open Demos Exemplos e demos.

3.2 Precisao

Euler usa numeros em ponto flutuante da IEEE com 16 digitos decimais. para ver isto,nos avaliamos a funcao sin no valor pi, apos aumentar o numero de dıgitos na saıda. Noformato padrao, pequenos numeros sao arredondados para 0.

Euler: Linhas de comando

>longestformat; sin(pi)1.2246467991473532e-016

A saıda pode ser alterada de varias maneiras. Os formatos mais importantes sao os formatosem ponto flutuante de varios comprimentos, e o formato fracionario. Alguns formatospodem ser usados apenas par uma saıda do comando print.

Euler: Linhas de comando

>longformat; 1/30.3333333333333

>longestformat; 1/30.33333333333333331

>shortformat; 1/30.333333

>fracformat; 1/31/3

>longformat; fracprint(1/3)1/3

Existem formatos especiais e formatos definidos pelo usuario.

Euler: Linhas de comando

>format(5,0); 1:10, longformat; // Use format(5,1) depois1 2 3 4 5 6 7 8 9 10

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 31: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

3.3 Variaveis 31

A representacao interna de um numero pode ser mostrada com printhex. O exemploseguinte mostra que 0:1 nao e exatamente representavel em um computador dual.

Euler: Linhas de comando

>printhex(0.1)1.1001100110011001100110011001100110011001100110011010*2ˆ-4

>longestformat; (0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1)-1-1.1102230246251565e-016

Para algo mais preciso que 16 dıgitos, Euler possui um acumulador longo e aritmeticaexata. Alem disso, o Maxima possui uma aritmetica longa. Para arredondar um numerouse round. Para obter a parte fracionaria use floor.

Euler: Linhas de comando

>[round(pi,2), floor(pi)]3.14 3

Comparacoes de numeros reais enviam uma resposta booleana, representada em Euler por1 ou 0. A comparacao ~= testa pela igualdade para a precisao interna epsilon. A formacompativa == testa a igualdade exata.

Euler: Linhas de comando

>1/3+2/3 == 11

>0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1 ˜= 11

Informacao adicionaldemos format Varios exemplos para formatos.degformat(flag) Saıda em graus.degprint(x) Imprime x em graus.: 21000 Infinito aritmetico no Maxima.epsilon Retorna o epsilon interno.a=b a e igual a b.

3.3 Variaveis

Resultados podem ser guardados em variaveis para uso posterior. Para associar um valor

a uma variavel, Euler tem := e =. Preferimos := pois algo como a=a^2 parece confuso.

Euler: Linhas de comando

>g:=9.81; t:=2.5; s:=1/2*g*tˆ2;>s

30.65625

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 32: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

3.3 Variaveis 32

Tanto o Euler como o Maxima, pode usar um resultado anterior com %, mas ele deve serusado dentro de uma mesma linha.

Euler: Linhas de comando

>solve("cos(x)-x",1), cos(%)-%0.73908513321520

Variaveis sao eliminadas quando o Euler e reiniciado ou com a funcao clear var ou comremvalue(var). Variaveis Euler nao tem um tipo. Eles podem tomar dados de qualquertipo. Mas, o tipo pode ser verificado com typeof ou com as funcoes isreal, iscomplex,etc. Para verificar por uma matriz, use size.

Euler: Linhas de comando

>[isreal(1:10), iscomplex(I)]1 1

>[length(2), length(1:10), length(random(3,2))]1 10 3

Listamos todas as variaveis com listvar, sendo que varias delas nao podem ser mudadas.Podemos listar so as variaveis com o nome cos pelo comando listvar cos.

Euler: Linhas de comando

>listvarEpsilon Type: RealResetEpsilon Type: RealResetView Type: Real Matrix (1x4)...

As constantes I, E e pi parecem variaveis, mas sao funcoes sem parametros. Existemvariantes destas constantes como %i, %e e %pi para o Maxima.

Nao precisa colocar o sinal * para multiplicar uma variavel por uma constante e o produtofica mais forte que a divisao, o que e util para unidades, que e diferente da convencao, queexige um espaco entre o numero e a unidade.

Euler: Linhas de comando

>a:=4;>[3a+4aˆ2, 3/4*a, 3/4a]

76 3 0.1875>36km$/2h$ // A velocidade media de 36 km em 2 h e 5 m/s

5

Informacao adicionalclear var Limpa uma variavel.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 33: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

3.4 Unidades 33

3.4 Unidades

Em Euler, as variaveis nao possuem unidades. Nos assumimos que os numeros fısicos estaoem metros, kg e segundos, que sao unidades do Sistema Internacional. Para converter paraoutras unidades, multiplicamos o numero pelo numero da unidade.

Euler: Linhas de comando

>90km$/h$ // Resposta: 25 metros por segundo.25

Nao devemos acrescentar um espaco antes da unidade. Para converter de volta, bastadividir pela unidade. Todas as unidades terminam por um sinal de $ para evitar confusaocom outros nomes de pequenas variaveis.

Euler: Linhas de comando

>25/(km$/h$) // Resposta: 90 quilometros por hora.90

Vamos calcular a energia potencial (Joule) de um corpo com 100 kg a 10 m de altura ea velocidade de queda no chao em km/h. A constante de gravidade ao nıvel do mar e aconstante g$. As unidades kg$ e m$ sao desnecessarias. Estas constantes sao iguais a 1.

Euler: Linhas de comando

>Epot:=g$*100kg$*10m$9806.65

>sqrt(2*Epot/100kg$)/(km$/h$)50.41709710009

Quantos minutos gasta em media a luz para vir do Sol ate a Terra?

Euler: Linhas de comando

>AU$/c$/min$ // Cuidado com os $8.316746396769

Para exibir um numero em formato com unidades usamos print. Para formatos especiais,existe printf, que usa as convencoes de formatacao da linguagem de programacao C.

Euler: Linhas de comando

>print(1/3,10,2,"km/h")0.33333km/h

>print(1/3,unit="J")0.33J

>printf("%10.2fkm/h",1/3)0.33km/h

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 34: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

3.5 Graficos 2D 34

Informacao adicionalhelp UnitsInEuler Lista todas as unidades no Euler.

3.5 Graficos 2D

Realizar analises de funcoes e uma tarefa comum em Matematica. Para iniciar, nos vamoscriar alguns graficos e tarefas simples como calcular zeros, extremos e integrais numericasde funcoes. Para soluc~oes exatas, voce deve se referir a secao sobre o Maxima.

O modo mais facil de plotar uma funcao em Euler e usar uma string envolvida por aspasduplas. A string deve conter uma expressao na variavel x. Outras variaveis devem serdefinidas globalmente.

Euler: Linhas de comando

>a:=2; b:=3; plot2d("a+b*x+xˆ2",-3,3);

Figura 4: Um grafico simples de uma funcao

A janela grafica mostra um grafico similar ao da figura acima. Tanto quanto possıvel,Euler gera texto, a janela de texto ficara no topo da janela. Para alternar entre a janelagrafica e a janela de texto, basta pressionar a tecla TAB.

Graficos com expressoes ou funcoes tambem podem ser graficos interativos, usando oparametro user=1.

Para ver uma parabola na janela grafica, execute o codigo:

Euler: Linhas de comando

>plot2d("a+b*x+xˆ2",a=-3,b=3,user=1);

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 35: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

3.5 Graficos 2D 35

Depois, pressione as teclas <- ou -> do cursor para mover a janela grafica para a es-querda ou para a direita, ou pressione as teclas + ou - para dar um zoom in (ampliar)ou zoom out (reduzir) a imagem grafica. A barra de espaco resseta para default view.Pressionando ENTER encerra o plot.

Um outro metodo e usar wait. Este comando espera por um certo tempo, ou ate que ousuario pressione qualquer tecla.

Euler: Linhas de comando

>plot2d("a+b*x+xˆ2",-3,3); wait(10); // Fica 10 s na tela.

Tambem podemos gerar a imagem exata do grafico, se configurarmos os parametros: a, b,c, d ou r. A funcao plot2d aceita muitos outros parametros. Na sequencia, mudamos aespessura e a cor da linha.

Euler: Linhas de comando

>plot2d("xˆ2",a=-2,b=2,c=0,d=4,thickness=2,color=2);

Podemos anexar outro plot a janela grafica, com o parametro add=1 com uma cor diferente..

Euler: Linhas de comando

>plot2d("1+2*(x-1)",add=1,thickness=2,color=4);

Figura 5: Uma parabola e uma reta tangente

Podemos gerar o grafico em uma regiao formada pelo domınio e imagem seja uma regiaoquadrada, utilizando o parametro square=1.

Euler: Linhas de comando

>plot2d("xˆ3-x",a=0,b=1,square=1);

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 36: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

3.5 Graficos 2D 36

Podemos gerar o grafico em uma regiao retangular 5x5 com o parametro r=5.

Euler: Linhas de comando

>plot2d("sin(x)/x",r=5);

Podemos inserir a imagem de grafico na janela de texto com o comando insimg.

Euler: Linhas de comando

>plot2d("sin(x)/x",r=5); insimg;

O parametro para insimg e a altura do grafico em linhas de texto, cujo padrao e 25.

Graficos inseridos sao salvos em notebooks como arquivos PNG contendo links para quesejam exportados em HTML. Eles podem ser salvos na mesma pasta que o notebook ou napagina da web, ou em uma pasta denominada imagens.

O codigo abaixo plota a funcao sinc e a sua tangente em x=1. Neste caso, nos usamos oMaxima para obter a derivada e gerar a tangente.

Euler: Linhas de comando

>plot2d("sin(x)/x",r=pi); // Veja :: na linha seguinte.>plot2d("::sin(1)+diffat(sin(x)/x,x=1)*(x-1)",add=1,color=4);

Figura 6: Grafico inserido no notebook

Informacao adicionalstyle="-" Estilos de linhas (".", "--")title="..." Tıtulo para a imagem.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 37: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

3.6 Analise Numerica 37

3.6 Analise Numerica

Varias funcoes no Euler aceitam expressoes. Os exemplos abaixo calculam os zeros dafuncao f(x) = xx − 2 pelo metodo estavel de bisseccao e pelo metodo mais rapido dasecante.

Euler: Linhas de comando

>[bisect("xˆx-2",1,2), secant("xˆx-2",1,2)]1.559610469462 1.559610469462

Usando a funcao solve com o metodo da secante que so precisa de um chute inicial.

Euler: Linhas de comando

>solve("cos(x)-x",1)0.7390851332152

O metodo (mais rapido) de Newton precisa da derivada e usamos o Maxima para obter aderivada. A funcao mxmnewton chama o Maxima automaticamente para calcular a derivada.

Euler: Linhas de comando

>newton("xˆ2-2","2x",1)1.414213562373

>expr="xˆ2-2"; newton(expr,"::diff(@expr,x)",1)1.414213562373

>mxmnewton("xˆ2-2",1)1.414213562373

Euler possui funcoes para integral numerica e diferenciac~ao numerica. Para integrar,voce pode usar o (robusto e rapido) metodo de Gauss, ou o (exato) metodo de Romberg.Tambem existe o (estavel) metodo de Simpson. O metodo de Gauss e exato ate que ograu do polinomio seja 19 e usa apenas 10 calculos da funcao. Alem disso, o intervalopode ser subdividido em um numero de subintervalos para aumentar a precisao.

Euler: Linhas de comando

>gauss("xˆ19",0,1)0.05

>gauss("exp(-xˆ2/2)/sqrt(2pi)",-20,20,20)1

>[gauss("xˆx",1,2), romberg("xˆx",1,2), simpson("xˆx",1,2)]2.050446234535 2.050446234535 2.050446235955

A funcao basica integrate usa uma integral adaptativa, e obtem varias integrais.

Euler: Linhas de comando

>integrate("1/sqrt(pi)*exp(-xˆ2)",-5,5)1

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 38: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

3.7 Definicao de Funcoes 38

As vezes, o Maxima pode calcular uma forma exata da integral.

Euler: Linhas de comando

>romberg("x*exp(x)",-1,1)0.7357588823429

>mxmeval("integrate(x*exp(x),x,-1,1)")0.7357588823429

Em princıpio, a diferenciacao numerica nao e muito precisa, assim o Maxima deve serusado para derivar as funcoes.

Euler: Linhas de comando

>diff("xˆ20/20",1)1

>"::diff(xˆ20,x)"20*xˆ19

>mxmeval("diff(xˆ20/20,x)",x=1)1

Para obter extremos de uma funcao use fmin ou fmax. Tambem existe uma funcao fextrema

que retorna dois valores, uma lista de mınimos e uma lista de maximos.

Euler: Linhas de comando

>[fmin("xˆ3-x",0,1), fmax("xˆ3-x",-1,0)]0.5773502652516 -0.5773502727191

>{xmin,xmax}:=fextrema("xˆ3-x",-1,1); [xmin, xmax]0.5773502652494 -0.5773502721866

Informacao adicionalmxm Calcula a expressao com o Maxima.mxmeval valia o valor de saıda do Maxima no Euler.

3.7 Definicao de Funcoes

A definicao de funcoes sera estudada no capıtulo sobre programacao em Euler, mas voceencontra aqui o basico.

Para programar funcoes muito simples, existem funcoes de uma linha em Euler.

Euler: Linhas de comando

>function f(x) := 1/(xˆ2+1)>f(2)

0.2>plot2d("f",-3,3,r=5);

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 39: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

3.7 Definicao de Funcoes 39

Muitas funcoes do Euler, aceitam expressoes e tambem aceitam funcoes. Simplesmentepasse a funcao com o seu nome em uma string.

Funcoes podem ter mais do que uma variavel, ou usar variaveis globais. Podemosconfigurar valores padroes para parametros, ou usar um numero variavel de argumentos.Alem disso, uma variavel em uma funcao pode ser definida na lista de argumentos quandoa funcao e chamada. Aquelas variaveis sao chamadas associadas a parametros.

Euler: Linhas de comando

>function f(x) := a*xˆ2+x+1>a:=4; f(1) // Define a variavel global a

6>f(1,a=2) // Define a variavel local a na funcao.

4>function g(x,a) := a*xˆ2+x+1>g(1,4) // Agora a e um parametro para g.

6>function h(x,a=4) := a*xˆ2+x+1>h(1) // Usa o padrao para a

6>h(1,0) // Usa outro valor para a

2

Aparece um problema quando plot2d e usado para plotar uma funcao com mais do que umparametro. plot2d pode manipular isto passando um parametro adicional para a funcaoa ser plotada. Aqueles parametros sao anexados apos um ponto e vırgula ; e eles saodenominados parametros com ponto e vırgula.

Euler: Linhas de comando

>function f(x,a) := exp(-xˆ2)*sin(a*x)>plot2d("f",0,10; 9); // Aqui a=9. Veja o ; antes do 9.

Existe uma regra dizendo que parametros adicionais associados como plot range devemser postos apos os parametros com ponto e vırgula.

Euler: Linhas de comando

>plot2d("f"; 6,r=3); // com a=6

Vamos calcular os zeros de f(x) = x2 − a para a variavel a com o metodo da bisseccao.

Euler: Linhas de comando

>function f(x,a) := xˆ2-a>bisect("f", 1,2; 3) // usando a=3 em f

1.73205080757

No Euler, funcoes mais complexas podem ser definidas com a sintaxe completa do comandofunction. Isto e necessario para funcoes que usam condicoes de controle.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 40: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

3.7 Definicao de Funcoes 40

Tais funcoes iniciam com function e encerram com endfunction. Basta inserir a funcaolinha a linha e pressionar a tecla ESC para terminar a definicao.

Euler: Linhas de comando

>function f(x)$ if x>0 then return x$ else return xˆ2$ endif$endfunction

>f(-2), f(2),42

O notebook fica em uma funcao especial no estado de entrada quando uma funcao e inse-rida. Isto e normal, pois as linhas de uma funcao devem ser inseridas uma a uma. Voce naoprecisa mais usar as teclas de cursor. Para sair deste estado, use endfunction ou a teclaESC.

E mais facil editar uma funcao no notebook. Pressione F9 na linha com a palavra function

para iniciar a edicao. Se estiver faltando, endfunction sera anexado. A linha com function

encerra com ... tal que a funcao pode ser interpretada pelo pressionar da tecla ENTER.

Observe, que o if deve ser encerrado com um endif. ENTER encerra a funcao e retornao valor. Se esta faltando, uma string vazia e retornada. Para outras estruturas de controle,ver o capıtulo sobre programacao.

Na sequencia, vamos calcular a distancia da linha do horizonte em funcao da altura doobservador e resolver um problema inverso com o metodo da secante.

Euler: Linhas de comando

>function horizon(h) := sqrt(2*rEarth$*h+hˆ2)>shortformat; horizon(30)/km$

19.5296>plot2d("horizon(x)/km$",0,1000,title="Distancia do horizonte");>xlabel("Altura (m)"); ylabel("Distancia (km)");>secant("horizon(x)-80km$",0,100)

503.381

Um truque especial para criar uma funcao de uma expressao na variavel x, e guardar navariavel expr, o conteudo da expressao.

Euler: Linhas de comando

>expr := "xˆ3-x";>function f(x) := @expr>type ffunction f(x)useglobal; return xˆ3-xendfunction

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 41: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 4 Usando o Maxima dentro do Euler 41

Depois da definicao acima, digite:

Euler: Linhas de comando

>f(2)6

Podemos usar type para ver a definicao da funcao. Ela contem a expressao correta.

Tambem podemos avaliar uma expressao diretamente, da mesma forma que uma funcao.

Euler: Linhas de comando

>expr := "xˆ3-x";>expr(2)

6

Neste caso, os parametros estao associados as variaveis x, y e z nesta ordem.

Parametros adicionais podem ser associados usando os parametros associados.

Euler: Linhas de comando

>expr := "a*x*y";>expr(2,3,a=-1)

-6

4 Usando o Maxima dentro do Euler

4.1 Entrada Direta de Comandos do Maxima

Maxima e um sistema de calculo algebrico e simbolico, que pode ser chamado dentro doEuler. Apos a primeira chamada, Euler inicia uma instancia de Maxima no background,e se comunica com o Euler atraves de pipes. Assim, deve ocorrer uma pequena demoraquando o Maxima for chamado pela primeira vez em um notebook.

Tambem podemos iniciar o Maxima com o comando mxmstart e parar o Maxima com ocomando mxmstop.

Existem dois modos de usar o Maxima: a entrada direta de comandos, ou entrada porstrings. Nos usamos o metodo direto. Para enviar um comando ao Maxima, use o prompt:: ou o prompt : na frente do comando, sendo preferıvel o modo de compatibilidade

com o prompt ::. Neste modo, Euler fara muito uso da formatacao do comando.

Ao inves de comandos Maxima separados, podemos usar , ou ; padroes do Euler.

A associacao de variaveis no Maxima e trocada pelo padrao do Euler :=. Funcoes noMaxima devem ser escritas com function ... (ou com define).

O modo normal com o prompt : pode ser usado algumas vezes. Podemos acrescentarcomentarios em uma linha com // da mesma forma que em comandos Euler.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 42: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

4.1 Entrada Direta de Comandos do Maxima 42

Voce nao precisa encerrar o comando com $ ou ; pois o Euler acrescenta o ponto e

vırgula ; se ele estiver faltando.

A saıda do Maxima fica no notebook do mesmo modo que a saıda do Euler. As etiquetas desaıda do Maxima sao removidas, pois nao fazem sentido em ambientes do tipo notebook.

Para usar o Maxima dentro do Eyler, devemos usar variaveis ao inves de etiquetas:

Euler: Linhas de comando

>:: (a+b)ˆ2/(a-b) // Resposta algebrica.

(a+ b)2

a− b

Podemos expandir um produto

Euler: Linhas de comando

>:: expand((a+b)ˆ5) // Expansao algebrica.

b5 + 5ab4 + 10a2b3 + 10a3b2 + 5a4b+ a5

Podemos fatorar uma expressao

Euler: Linhas de comando

>:: factor(aˆ2+2*a*b+bˆ2) // Fatoracao algebrica.

(b+ a)2

O Maxima usa variaveis especiais que podem ter valores fixados. O valor de uma variavelpode ser removido com o comando remvalue(var).

O Maxima tambem realiza aritmetica infinita para inteiros e fracoes, com todos os dıgitosde um calculo. Numeros de ponto flutuante so sao usados em chamadas especıficas.

Euler: Linhas de comando

>:: 1+1/3+1/731/21

O binomial de 100 com a taxa 50 e obtido no Maxima com:

Euler: Linhas de comando

>:: 100!/(50!*50!)100891344545564193334812497256

O mesmo valor no Euler, mas fatoriais de valores maiores causam overflow no Euler.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 43: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

4.1 Entrada Direta de Comandos do Maxima 43

Euler: Linhas de comando

>100!/(50!*50!) // 100! = fatorial de 1001.008913445456e+029

No Euler, o binomial e obtido pela funcao bin(), que usa um algoritmo diferente e funci-ona para numeros grandes. Esta funcao bin() e muito mais rapida que qualquer metodono Maxima. A funcao float() converte uma expressao Maxima para o mesmo tipo deponto flutuante como em Euler.

Euler: Linhas de comando

>:: float(1000!/(500!*500!)) // Conversao IEEE ponto flutuante2.7028824094543655E+299

>bin(1000,500) // Funcao Euler para binomiais2.702882409454e+299

Tambem existe um ponto flutuante aritmetico com um numero de dıgitos ajustavel noMaxima. Para usar o mesmo, nos devemos associar o numero com a variavel fpprec quesignifica precisao em ponto flutuante.

Euler: Linhas de comando

>:: fpprec:=40; bfloat(sqrt(2))1.41421356237309504880168872420969807857b0

No modo de compatibilidade, se o prompt tem a forma :: as variaveis no Maxima saoassociadas com :=.

Euler: Linhas de comando

>:: expr := expand((1+x)ˆ5);>:: factor(expr)

(x+ 1)5

Para separar comandos com saıdas no modo de compatibilidade, use uma vırgula , damesma forma que em Euler e utilize um ; ponto e vırgula para separar sem imprimir.

Euler: Linhas de comando

>:: expr := expr*expr, factor(expr)

x5 + 5x4 + 10x3 + 10x2 + 5x+ 1

(x+ 1)10

Se uma linha no Maxima contem uma expressao muito longa, ela pode ser posta em variaslinhas com o acrescimo de ... tres pontos no final de cada linha, exceto a ultima, damesma forma que em Euler.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 44: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

4.1 Entrada Direta de Comandos do Maxima 44

Euler: Linhas de comando

>:: expand((1+x+xˆ2+xˆ3) * ...>:: (1-x))

1− x4

Certas funcoes do Maxima podem ser anexadas a expressoes e sao usadas como sinaliza-dores para a funcao de avaliacao. Por exemplo, expand pode ser usada deste modo.

Existem tambem, varios modos de simplificacao que ser usadas, como por exemplo ratsimp,que simplifica expressoes racionais. Para a maioria destes sinalizadores, existe uma versaona forma de funcao, que deve ser preferida.

Euler: Linhas de comando

>:: (x+4)ˆ2/((x+4)*(x+3)) | expand, % | ratsimp

2x 8 x 16

-------- + -------- + --------2 2 2x +7x+12 x +7x+12 x +7x+12

x + 4-----x + 3

Calculando o logaritmo de 16 na base 2 com o Maxima:

Euler: Linhas de comando

>:: log(16)/log(2) | radcan4

A simplificacao trigonometrica com trigsimp nao funciona como sinalizador e deve serusada como funcao. Em geral, e mais seguro usar tais comandos do que as funcoes.

Euler: Linhas de comando

>:: sin(x)ˆ2+cos(x)ˆ2, trigsimp(%)2 2

sin (x) + cos(x)

1

Expandindo uma expressao trigonometrica e simplificando:

Euler: Linhas de comando

>:: trigreduce(sin(x)ˆ3)(3 sin(x) - sin(3x)) / 4

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 45: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

4.2 Derivadas e Integrais 45

Na sequencia, colecionamos diferencas entre o modo de compatibilidade e o modo direto.

Informacao adicional... Comando para o Euler.::... Comando Maxima (modo de compatibilidade).:... Comando Maxima (modo direto)., Separacao de comandos (modo de compatibilidade).; Separacao de comandos (modo de compatibilidade).; Separacao de comandos (modo direto).$ Separacao de comandos (modo direto).| Anexa opcoes (modo de compatibilidade)., Anexa opcoes (modo direto).:= Configura variaveis (modo de compatibilidade).: Configura variaveis (modo direto)

4.2 Derivadas e Integrais

O Calculo Diferencial e Integral e uma aplicacao para o calculo simbolico. O Maxima podederivar,com a funcao diff(), todas as suas funcoes e realizar muitas integrais.

Euler: Linhas de comando

>:: diff(xˆ5,x) // primeira derivada4

5 x

A derivada segunda da mesma funcao e obtida com:

Euler: Linhas de comando

>:: diff(xˆ5,x,2) // segunda derivada3

20 x

A integral desta mesma funcao e obtida com:

Euler: Linhas de comando

>:: integrate(xˆ5,x)6

(1/6) x

A integral de uma funcao racional:

Euler: Linhas de comando

>:: integrate(2/(x+1),x,1,2)2(log(3)-log(2))

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 46: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

4.2 Derivadas e Integrais 46

Podemos calcular antes a primitiva de uma funcao e depois inserir os limitantes de integracao.Use a funcao at para calcular uma expressao em alguns valores.

Euler: Linhas de comando

>:: prim := integrate(t/(1+tˆ2),t)

1

2log(t2 + 1)

Euler: Linhas de comando

>:: at(prim,t=b)-at(prim,t=a)

1

2log2(b+ 1)− 1

2log2(a+ 1)

Para realizar algumas integrais, o Maxima podera fazer perguntas ao usuario.

Euler: Linhas de comando

>:: integrate(xˆn,x)Is n + 1 zero or nonzero?

>:: nonzero

xn+1

n+ 1

Podemos evitar esta pergunta, podemos assumir hipoteses para as variaveis.

Euler: Linhas de comando

>:: assume(n>0); integrate(xˆn,x,0,1)

1

n+ 1

Para remover a hipotese assumida antes, podemos usar:

Euler: Linhas de comando

>:: forget(n>0);

Informacao adicionalx^2 | x:5 Avalia x2 em x=5 (nao funciona com diff).subst(x^2=a,x^2+y^2) Substituicao de sub-expressoes.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 47: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

4.3 Definindo funcoes para usar o Maxima no Euler 47

4.3 Definindo funcoes para usar o Maxima no Euler

No Maxima nos podemos definir funcoes de uma linha da mesma forma que no Euler.

Euler: Linhas de comando

>:: function f(x) := 1/(xˆ2+1)

f(x) :=1

x2 + 1

O par de dois pontos :: e necessario no modo de compatibilidade. Para avaliar a funcaof = f(x) no ponto x = 2, basta digitar

Euler: Linhas de comando

>:: f(2)1/5

Para definir uma funcao representando uma integral onde os limites de integracao nemsempre sao constantes, podemos escrever

Euler: Linhas de comando

>:: function f(x) := integrate(t/(1+tˆ2),t,0,x)

A resposta do programa e uma funcao que nao avalia o integrando como uma expressao:

f(x) := integrate(t

1 + t2, t, 0, x)

Para obter o valor desta funcao em x = 1, usamos:

Euler: Linhas de comando

>:: f(1)log(2)/2

E melhor usar a funcao define, assumindo que x > 0

Euler: Linhas de comando

>:: assume(x>0); define(g(x),integrate(t/(1+tˆ2),t,0,x))

Agora, a resposta do programa e uma funcao que avalia o integrando como expressao:

g(x) :=log(x2 + 1)

2

Para avaliar a funcao g = g(x) no ponto x = 1, faca o mesmo que antes

Euler: Linhas de comando

>:: g(1)log(2)/2

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 48: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

4.3 Definindo funcoes para usar o Maxima no Euler 48

Agora, vamos verificar este calculo numerico usando apenas o Euler.

Euler: Linhas de comando

>[log(2)/2], romberg("x/(1+xˆ2)",0,1)]0.34657359028 0.34657359028

Tambem podemos usar dois apostrofes ’’ para avaliar a expressao.

Euler: Linhas de comando

>:: diff(xˆx,x); function g(x) := ’’%

g(x) := xx(log(x) + 1)

Um apostrofe ’ interrompe a avaliacao da expressao, que e util quando definimos equac~oesdiferenciais.

Euler: Linhas de comando

>:: ’diff(xˆx,x)

d

dxxx

O comando solve do Maxima obtem soluc~oes exatas para expressoes em uma ou maisvariaveis. Para obter a area entre duas funcoes, definimos a funcao f=f(x):

Euler: Linhas de comando

>:: function f(x) := (2*xˆ3-9*xˆ2+2)/3

f(x) :=2x3 − 9x2 + 2

3depois definimos a funcao g=g(x)

Euler: Linhas de comando

>:: function g(x) := 5/3*x+2/3

g(x) :=5

3x+

2

3e entao, resolvemos a equacao f(x)=g(x):

Euler: Linhas de comando

>:: solve(f(x)=g(x),x)[x = -1/2 , x=5, x=0]

Agora, vamos obter a integral da diferenca g-f sobre o intervalo [0, 5]:

Euler: Linhas de comando

>:: integrate(g(x)-f(x),x,0,5)125/3

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 49: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

4.4 Exportando valores entre o Maxima e o Euler 49

4.4 Exportando valores entre o Maxima e o Euler

Enviar comandos diretos para o Maxima mantem as saıdas do Euler e do Maxima separadasuma das outras. A saıda do Maxima fica em um formato 3D, que nao pode ser cortado ecolado para o Euler. As variaveis no Maxima e no Euler sao separadas umas das outras.

Um modo simples de configurar variaveis para ambos os mundos (Euler e Maqxima)e usar um comando como ::=, que funciona para strings, numeros e pequenas matrizes.Para matrizes grandes, e bom usar o comando mxmset ja explicado antes.

Euler: Linhas de comando

>a ::= 3;>expr ::= "xˆx";>v ::= 1:10;

Euler possui metodos para exportar resultados entre o Euler e o Maxima. A forma maissimples e com a funcao mxm, que avalia uma string no Maxima e envia o resultado comouma string para o Euler. Um atalho para esta funcao e o par de dois pontos :: ou o sinal@:, que podem ser usados como qualquer expressao no Euler.

Euler: Linhas de comando

>derivada := "::diff(xˆx-2,x)" // Derivada de xˆx-2xˆx*(log(x)+1)

>plot2d(derivada, 0.1, 2);>newton("xˆx-2", derivada, 2) // Newton precisa da derivada

1.559610469462>expr(2) // Avalia uma expressao em x

4

Para avaliar uma string imediatamente com variaveis globais, use @:"string" ou usea sintaxe para avaliar uma expressao em x no Euler.

Euler: Linhas de comando

>x:=2; @:"diff(xˆx,x)"6.77258872224

>"::diff(xˆx,x)"(2)6.77258872224

Algumas funcoes do Euler usam o Maxima em uma forma escondida. Por exemplo, a funcaomxmnewton calcula a derivada da funcao antes de usar o metodo de Newton.

Euler: Linhas de comando

>mxmnewton("xˆx-2",2) // Resolve xˆx=21.559610469462

Para avaliar uma string no Euler nos podemos usar a funcao evaluate que usa apenasvariaveis globais ou variaveis definidas na funcao contendo evaluate.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 50: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

4.4 Exportando valores entre o Maxima e o Euler 50

Para simplificar a avaliacao em conexao com o Maxima, a funcao mxmeval passa uma stringpara o Maxima e avalia o resultado com as variaveis especificadas.

Euler: Linhas de comando

>mxmeval("diff(xˆx,x)",x=2) // avalia saıda com o Maxima6.77258872224

A mesma avaliacao, de outras formas:

Euler: Linhas de comando

>expr:="::diff(xˆx,x)";>x:=2; evaluate(expr) // em dois passos

6.77258872224>expr(2) // atalho

6.77258872224

Podemos usar expressoes do Euler no Maxima sem definir a mesma como variavel noMaxima, mas gerando automaticamente o resultado com a sintaxe @str. Aqui, o conteudoda variavel str e passado em uma string.

Esta sintaxe funciona nos comandos do Maxima e tambem na definicao de funcoes do Euler(mais tarde estudaremos sobre o assunto).

Euler: Linhas de comando

>expr := "xˆ2";>:: diff(@expr,x)

2 x>":: define(f(x),@expr)"; mxmeval("f(2)")

4

Outro metodo pratico e usar as funcoes do Maxima no Euler. Podemos obter uma expressaoem x para o Euler, mesmo se usarmos um nome diferente de variavel no Maxima. Nosusamos a funcao mxm para avaliar uma definicao completa da funcao no Maxima.

Euler: Linhas de comando

>"::assume(a>0)"; "::define(f(a),integrate(t/(1+tˆ2),t,0,a))";>"::f(x)"

log(xˆ2+1)/2>"::f(x)"(1)

0.34657359028>plot2d("::f(x)",0,1);

Chamar a funcao mxmeval nao e muito rapido, assim, para aplicacoes de tempo crıtico, emelhor definir a funcao no Euler, chamando o Maxima em tempo de compilac~ao.

Na definicao de uma funcao do Euler, use @:"..." para avaliar a string no Maxima, e colaro resultado na funcao Euler.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 51: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

4.4 Exportando valores entre o Maxima e o Euler 51

Euler: Linhas de comando

>function f(x) := @:"diff(xˆx,x)">type ffunction f(x)useglobal; return xˆx*(log(x)+1)endfunction

A definicao interna da funcao f = f(x) pode ser mostrada com type (Ver mais na secaosobre programacao). A funcao contem a expressao correta da derivada da funcao xx.

Quando a string de saıda do Maxima deve ser uma string, use a sintaxe:

Euler: Linhas de comando

>function test(a,b) := romberg("@:diff(xˆx,x),x",a,b)>type testfunction test (a,b)useglobal; return romberg("xˆx*(log(x)+1)",a,b)endfunction

>test(1,2)3

Para definir variaveis no Maxima diretamente no Euler, podemos usar a funcao mxmset.que ira definir uma variavel com o mesmo nome e valor no Maxima. A funcao recıproca emxmget, que e quase igual a mxmeval.

Euler: Linhas de comando

>A := [1,2;3,4];>mxmset(A); // Define uma variavel A no Maxima>B := mxmget("invert(A)") // calcula a inversa com o Maxima

-2 11.5 -0.5

>A.B1 00 1

>mxmset("x",2); mxmget("xˆ2")4

A notacao de compatibilidade ::= define uma variavel para o Maxima e para o Euler.

Euler: Linhas de comando

>A ::= [1,2;3,4];

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 52: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

4.5 Matrizes no Maxima 52

4.5 Matrizes no Maxima

No exemplo da secao anterior ja mostramos que o Maxima pode manipular matrizes. Asintaxe e diferente do Euler.

Euler: Linhas de comando

>:: A := matrix([1,2],[4,5])

[1 24 5

]Euler: Linhas de comando

>:: determinant(A)-3

>:: charpoly(A,t)(1-t)(5-t)-83

>:: invert(A) | detout

[5 −2−4 1

]3

Euler: Linhas de comando

>:: invert(A).A

[1 00 1

]Para transportar uma matriz do Maxima para o Euler, nos usamos a funcao mxmget.

Euler: Linhas de comando

>fracprint(mxmget("invert(A)"));

[−5/3 2/34/3 −1/3

]O Maxima usa vetores-linha ou listas, para reunir resultados, como solucoes de equacoes.Para usar as listas de solve em Euler, podemos precisar remover a parte x= nas solucoes.

Euler: Linhas de comando

>:: sol := solve(xˆ2-3*x+1=0,x)

[x = −√

5− 3

2, x =

√5− 3

2]

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 53: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

4.5 Matrizes no Maxima 53

Com a funcao map aplicada a rhs (right hand side) a lista, realizamos isto:

Euler: Linhas de comando

>:: map(rhs,sol)

[−√

5− 3

2,

√5− 3

2]

Agora vamos obter os zeros de um polinomial cubico e avaliar o resultado no Euler, usandoos procedimentos anteriores. Dois dos zeros sao valores complexos.

Euler: Linhas de comando

>:: sol := solve(xˆ3+xˆ2+5*x+4=0,x);

>mxmeval("map(rhs,sol)")Column 1 to 1:

-0.08804641337601-2.201627508452iColumn 2 to 2:

-0.08804641337601+2.201627508452iColumn 3 to 3:

-0.823907173248+0i

Como um exemplo, vamos obter uma solucao da terna Pitagorica a2 + b2 = c2. Para isto,nos vamos escolher numeros 2<q<p primos entre si e resolvemos a equacao:

x2 + y2 = 1, y = 1− p

qx

A ideia simples e tomar x = ac e y = bc, paqra gerar a2 + b2 = c2. Nos obtemos asintersecoes da reta com a circunferencia unitaria.

Como uma intersecao e racional, a outra tambem deve ser racional.

Euler: Linhas de comando

>:: solve([xˆ2+yˆ2=1,y=1-x*p/q],[x,y])

[ [x =2pq

q2 + p2, y =

q2 − p2

q2 + p2], [x = 0, y = 1] ]

A saıda do Maxima e uma lista com dois pares de solucoes para x e y. Usamos a funcao at

para definir x e y para estas solucoes.

Euler: Linhas de comando

>:: x := at(x,sol[1]), y := at(y,sol[1]),

2pq

q2 + p2

q2 − p2

q2 + p2

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 54: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 5 Tipos de Dados 54

Euler: Linhas de comando

>:: xˆ2+yˆ2 | ratsimp1

Para cada par (p, q), a solucao e:

a = 2pq, b = q2 − p2, c = q2 + p2

produz a famosa formula que gera uma terna Pitagorica.

5 Tipos de Dados

5.1 Numeros Complexos

Ja usamos muitos numeros reais em ponto flutuante. Euler possui dois outros tipos dedados numericos, que podem ser usados em matrizes: numeros complexos e intervalos.Nesta secao, vamos introduzir os numeros complexos. Numeros complexos sao inseridoscom o da letra i a parte imaginaria, ou com a constante I ou na forma %i ou por I$.

Os calculos em Euler sao reais, se nao existem outros tipos de dados envolvidos. Assim,sqrt(-1) nao funcionara. Para transformar um numero real x em um numero complexo,usamos complex(x). Para voltar, usamos real(z). Este comando ira gerar uma mensagemde erro se a parte imaginaria de z nao estiver proxima de zero. Os comandos re(z) e im(z)calculam a parte real e a parte imaginaria de um numero complexo z.

Euler: Linhas de comando

>[1+2i, (1+2*I)ˆ2, real(I*I)]1+2i -3+4i -1

>[sqrt(complex(-1)), re(2+3i), im(2+3i)]0+1i 2 3

sqrt(complex(-1)) nao e exatamente I, mas o formato usual arredonda o resultado parao valor esperado. Para interromper isto, use longformat, ou zerorounding(0).

Euler pode realizar calculos com muitas funcoes numericas no domınio complexo. Osresultados da funcao logaritmo e da funcao potencia usam o Valor Principal com o planocomplexo cortado ao longo do eixo negativo.

Euler: Linhas de comando

>real(exp(I*Pi)+1)0

>sqrt(-1+0.1i), sqrt(-1-0.1i)0.049937771837+1.001246114128i0.049937771837-1.001246114128i

>[real(sin(I)ˆ2+cos(I)ˆ2), log(complex(-1))]1 0+3.14159265359i

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 55: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

5.2 Intervalos 55

Na secao Linguagem Matricial do Euler, plotamos graficos de numeros complexos.

Informacao adicionalabs(z) Modulo ou valor absoluto.arg(z) Argumento em (−π, π].conj(z) Conjugado complexo de z.plot2d Como plotar grades e curvas complexas.

5.2 Intervalos

O terceiro tipo de dado em Euler sao os intervalos, inseridos com a notacao ~a,b~. Aaritmetica de intervalos serve para controlar erros de arredondamento. Euler pode gerarinclus~oes garantidas de solucoes para problemas com a aritmetica de intervalos.

Euler: Linhas de comando

>[˜1,2˜, interval(1,2)] // Formas equivalentes˜1,2˜ ˜1,2˜

>[left(˜-1,2˜), right(˜-1,2˜), middle(˜-1,2˜)]-1 2 0.5

A notacao ~x~ cria um pequeno intervalo em volta de x.

Euler: Linhas de comando

>˜1˜˜0.99999999999999978,1.000000000000000

Quando e possıvel, existe a alternativa de usar a notacao ± de engenharia. Este caracterespecial nao esta no teclado, e pode ser inserido usando a tecla de funcao F8.

Euler: Linhas de comando

>1 [F8] 0.1˜0.9,1.1˜

O resultado da regra da aritmetica de intervalo inclui os valores de todos os parametrosdos intervalos. A soma e a multiplicacao por escalar para intervalos, sao obtidos como:

Euler: Linhas de comando

>[˜0.9,1.1˜+˜0.9,1.1˜, 2*˜0.9,1.1˜]˜1.8,2.2˜ ˜1.8,2.2˜

x ∗x e x2 podem gerar resultados diferentes, pois x ∗x multiplica todos os valores de x portodos os valores de x, mas x2 toma o quadrado dos valores de x.

Euler: Linhas de comando

>[˜-1,1˜*˜-1,1˜, ˜-1,1˜ˆ2]˜-1,1˜ ˜0,1˜

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 56: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

5.2 Intervalos 56

O mesmo vale para funcoes. A funcao e avaliada em todos os elementos dos parametrosdo intervalo, e o resultado e um intervalo contendo todos os resultados. As vezes, esteintervalo nao e o menor intervalo contendo todos os resultados.

Euler: Linhas de comando

>sin(˜1,2˜)˜0.71,1˜

>[left(sin(˜1,2˜)), sin(1), sin(2)]0.7121263857702 0.8414709848079 0.9092974268257

A funcao sin() possui um maximo no intervalo. A inclus~ao mais proxima deve ser[sin(1),1].

As vezes, a funcao mxmieval gera resultados melhores, mas ela usa o Maxima para calculara derivada da funcao. Podemos decompor o intervalo para obter resultados melhores.

Euler: Linhas de comando

>z:=˜0.1,0.5˜; zˆ3+zˆ2-2*z˜-0.99,0.18˜

>mxmieval("xˆ3+xˆ2-2*x",˜0.1,0.5˜)˜-0.84,-0.12˜

>mxmieval("xˆ3+xˆ2-2*x",˜0.1,0.5˜,10)˜-0.63,-0.18˜

Problema: Qual e altura de uma torre, se o ponto mais alto ligado ao ponto onde voce estadetermina um segmento formando um angulo de 11.25 graus a distancia de 100 m de umatorre no nıvel do solo. As medidas devem ter a precisao dada. Assim, usamos intervalosproprios para estimar o resultado. Por comparacao, nos usamos um calculo pseudo-exato.

Euler: Linhas de comando

>sin(11.25ˆ0 [F8] 0.005ˆ0)*(100 \pm 1)˜19.3,19.8˜

>sin(11.25ˆ0)*10019.50903220161

O metodo dos intervalos e util para produzir uma analise da estimativa do erro na formula

de Simpson com passo h=(b-a)/n, escrita como:

Erro =h4

180supx∈[a,b]

|f (4)(x)|

Primeiramente, vamos entrar com a funcao e alguns dados:

Euler: Linhas de comando

>n:=100; a:=0; b:=1; h:=(b-a)/(2*n);>res:=simpson("exp(-xˆ2)",0,1,n)

0.7468241328175

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 57: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

5.3 Strings 57

Para estudar o metodo de Simpson, necessitamos da quarta derivada e utilizaremos oMaxima para obter esta derivada.

Euler: Linhas de comando

>res+˜-1,1˜*hˆ4/180*mxmeval("diff(exp(-xˆ2),x,4)",x=˜0,1˜)˜0.74682413266,0.74682413297˜

Para a integral em Euler, vamos usar uma inclus~ao garantida. O metodo de Rombergfunciona muito bem nestes limitantes.

Euler: Linhas de comando

>romberg("exp(-xˆ2)",0,1)0.746824132814

Finalmente, utilizaremos a funcao mxmiint para obter um inclusao muito pobre para aintegral usando o Maxima e mesmo derivadas superiores.

Euler: Linhas de comando

>mxmiint("exp(-xˆ2)",0,1)˜0.746824132812408,0.746824132812446˜

Informacao adicionala && b Intersecao de intervalos.a || b Intervalo contendo a uniao de intervalos.a << b Testa se a esta contido em b.a <<= b Testa se a esta em b, valendo a igualdade.expand(a,f) Expande a por pelo fator f.mxminewton Ver o capıtulo sobre aritmetica exata

5.3 Strings

Strings sao tipos de dados nao-numericos no Euler, que sao utilizados para entrada e saıdade arquivos e para validar expressoes.

Varias funcoes aceitam expressoes. Strings tambem sao usadas para realizar a interacaoentre o Euler e o Maxima.

Alguns exemplos simples de funcoes que convertem caracteres com strings.

Euler: Linhas de comando

>ascii(s) // codigo ascii associado a letra s84

>char(84)] // Letra associada ao codigo ascii 84T

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 58: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

5.3 Strings 58

Aqui um exemplo mais refinado:

Euler: Linhas de comando

>s:="This is a test",This is a test

>strlen(s) // numero de caracteres da string14

>substring(s,6,8), substring(s,-4,-1)istest

>substring(s,strfind(s,"a",0),-1)a test

>"abacate"<="banda"1

>s|" "|sThis is a test This is a test

Podemos construir vetores de strings. A funcao plot2d() aceita estes vetores para plotarmais que uma expressao. Alem disso, a funcao map funciona para strings.

Euler: Linhas de comando

>plot2d(["sin(x)","cos(x)"],0,2pi);

Alem disso, a funcao map funciona com strings.

Euler: Linhas de comando

>rombergmap(["sin(x)","cos(x)"],0,pi)2 0

Para programas interativos, a funcao input permite interpretar a entrada como umaexpressao numerica. Se existe erro, Euler leva o usuario de novo ao prompt, ate que aexpressao seja valida ou o usuario pressione a tecla ESC.

Pressione F9 para abrir o editor interno do Euler. Na primeira linha, copie e cole o texto:

Euler: Linhas de comando

"Fatores Primos:",n=input("Insira um numero: ");"Fatores:", factor(n),

Quando este arquivo e carregado, nos obtemos o seguinte dialogo entre o usuario e o Euler.

Euler: Linhas de comando

Fatores Primos:Insira um numero: ? >34243127Fatores:31 773 1429

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 59: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

5.4 Polinomiais 59

Informacao adicionalstrfind Encontra substrings.tolower Converte para minusculas.toupper Converte para maiusculas.

5.4 Polinomiais

No Euler, polinomiais nao sao tipos de dados primitivos e sao guardados como vetores decoeficientes iniciando com o coeficiente constante. Euler pode avaliar, somar, multiplicar,dividir e derivar polinomiais. Aqui estao alguns exemplos comparados com o Maxima.

Euler: Linhas de comando

>p := [1,2,3]; polyval(p,2)17

>pd := polydif(p); polyval(pd,2)14

>mxmeval("diff(1+2*x+3*xˆ2,x)",x=2)14

>p2 := polymult(p,p)1 4 10 12 9

>":: expand((1+2*x+3*xˆ2)ˆ2)"9*xˆ4+12*xˆ3+10*xˆ2+4*x+1

>":: expand((1+2*x+3*xˆ2)ˆ2)"(2)289

>polyval(p2,2)289

No Euler, podemos calcular os zeros de polinomiais usando metodos numericos. Eulercalcula todos os zeros complexos,

Euler: Linhas de comando

>polysolve(p) // No Euler-0.333333-0.471405i -0.333333+0.471405i

>mxmeval("map(rhs,sol)") // No Maxima-0.333333-0.471405i -0.333333+0.471405i

mas, o Maxima tambem pode obter os valores exatos com radicais:

Euler: Linhas de comando

>:: sol := solve(1+2*x+3*xˆ2=0,x)

[x = −√

2i+ 1

3, x = −

√2i− 1

3]

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 60: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 6 A Linguagem Matricial do Euler 60

Informacao adicionalpolydiv(p,q) Divisao polinomial com o resto (varias saıdas!).polytrunc Minimiza o grau do polinomial.polyadd Soma polinomiais.polycons Gera um polinomial a partir dos seus zeros.

6 A Linguagem Matricial do Euler

6.1 Matrizes e Vetores

No Euler, uma matriz e inserida em colchetes [ ]. Os valores de cada linha sao separa-dos por vırgulas e as linhas sao separadas por ponto e vırgula. Linhas incompletas saopreenchidas com zeros.

Euler: Linhas de comando

>[1,2; 3,4]1 23 4

>shortformat; a:=3;>[1,a; 0,1,a; 0,0,1,a]

1 3 0 00 1 3 00 0 1 3

Um vetor e uma matriz com 1 linha ou 1 coluna. A’ denota a transposta da matriz A.

Euler: Linhas de comando

>A:=[1,2;3,4; 5,6]1 23 45 6

>A’1 3 52 4 6

Um modo especial para gerar matrizes e usar o operador : dois pontos, que pode ter umpasso ou o passo sera tomado como 1.

Euler: Linhas de comando

>[0:0.1:0.4]Column 1 to 5:

0 0.1 0.2 0.3 0.4>1:3

1 2 3

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 61: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

6.1 Matrizes e Vetores 61

Por razoes numericas, a soma desses passos nem sempre fornece um valor exato no final.Euler usa o epsilon interno para verificar isto.

Euler: Linhas de comando

>sum(1:1000) // Soma dos k com k variando de 1 a 1000500500

Existem varias funcoes especiais para gerar matrizes completas. Aqui estao alguns:

Euler: Linhas de comando

>zeros(2,2) // Matriz de zeros0 00 0

>ones(1,5)1 1 1 1 1 // Matriz de 1’s

>id(2)1 00 1

A:=diag(3,3,0,[1,2,3]) // Matriz diagonal1 0 00 2 00 0 3

>setdiag(A,1,[-1,-1])1 -1 00 2 -10 0 3

Matrizes tambem podem anexadas a outras matrizes, horizontalmente ou verticalmente.

Euler: Linhas de comando

>v:=1:31 2 3

>v|vColumn 1 to 5:

1 2 3 1 2Column 6 to 6:

3>v_v

1 2 31 2 3

>v_11 2 31 1 1

Para acessar um simples elemento de uma matriz ou submatriz, o Euler usa os colchetescomo em A[i,j]. Parenteses sao aceitos, mas nao recomendados.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 62: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

6.1 Matrizes e Vetores 62

Quando omitimos o ındice da coluna, geramos uma linha de A, a menos que A seja umvetor-linha. No Euler, matrizes iniciam pelo ındice 1. A[0] gera uma matriz vazia!

Se os ındices sao vetores, obtemos uma submatriz. Os ındices podem estar desordenados.Neste caso, nos obtemos uma permutacao das linhas ou das colunas. Todas as linhas oucolunas sao enderecadas com : dois pontos. Indices negativos contam do final da matrizpara o inıcio. Os ındices fora do domınio nao irao gerar uma mensagem de erro. Taisındices simplesmente serao ignorados. Aqui estao alguns exemplos:

Euler: Linhas de comando

v := [1,2,3,4,5] // Um vetor-linha com 5 componentes1 2 3 4 5

>v[4] // Elemento da posicao 4 de v4

>v[-1] // Elemento da posicao 4 de v5

>v[3:5] // Elementos das posicoes 3,4 e 5 de v3 4 5

A:=[1,2,3; 4,5,6] // Uma matriz com 3 linhas e 3 colunas1 2 34 5 6

>A[1,3] // Elemento da posicao (1,3) de A3

>A[1] // Linha 1 da matriz A1 2 3

>A[1:2,1:2]1 2 // 1o. e 2o. elementos da linha 1 de A4 5 // 1o. e 2o. elementos da linha 2 de A

>A[:,2] // Coluna 2 da matriz A25

>A[[2,1],3]63

Podemos associar valores a uma submatriz. Cuidado para que os valores estejam dentroda submatriz. Tambem podemos associar um simples valor a uma submatriz, e neste caso,todos os elementos da submatriz serao definidos para este numero.

Euler: Linhas de comando

>format(10,5); v:=1:5, v[2:3]:=01 0 0 4 5

>A:=v_v1 0 0 4 51 0 0 4 5

>A[[1,2],[2,3]]:=[8,9;10,11]1 8 9 4 51 10 11 4 5

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 63: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

6.2 A Linguagem Matricial 63

A indexacao de submatriz tambem pode ser aplicada ao resultado de funcoes, se o resultadoe do tipo matriz.

A funcao shuffle embaralha vetores aleatoriamente e depois nos extraımos os 6 primeirosvalores com o ındice 1:6.

Euler: Linhas de comando

>sort(shuffle(1:49)[1:6])27 28 32 44 45 48

Informacao adicionallinspace(a,b,n) Cria n pontos equidistantes no intervalo [a,b].equispace(a,b,n) Cria pontos distribuıdos na distribuicao arcsino?size(A) Dimensao [colunas,linhas] da matriz A.cols(A) Numero de colunas da matriz A.rows(A) Numero de linhas da matriz A.diag(A,k) Diagonal da posicao k da matriz A.redim(A,n,m Redimensiona A como uma nova matriz.

6.2 A Linguagem Matricial

Regra basica de linguagem de matrizes: Todas as funcoes e operadores sao avaliadoselemento-a-elemento (ponto-a-ponto). O ponto . e usado para o produto usual de ma-trizes. O produto com * e o produto elemento a elemento.

Euler: Linhas de comando

>v:=[1,2,3]; v*v1 4 9

>sqrt([1,2; 3,4])1 1.414211.73205 2

Ao combinar uma matriz com um vetor em uma operacao, Euler tenta levar ao vetor amesma dimensao da matriz pela duplicacao de linhas ou colunas de modo natural, tal queo resultado pode ser calculado elemento-a-elemento.

Vetores linha e coluna usam a funcao combint para promover vetores a matrizes. Comescalares e matrizes em uma operacao, criamos uma combinacao linear para todos os ele-mentos das matrizes. Na sequencia, a matriz A possui a propriedade que ai,j = vj .wi.

Euler: Linhas de comando

>v := [1,2,3]; w := [1;-1;0]; 2*v+4*v6 12 18

>A := v*w1 2 3-1 -2 -30 0 0

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 64: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

6.2 A Linguagem Matricial 64

Euler usa os elementos das linhas de w e das colunas de v para construir a matriz. Imaginev duplicada tres vezes verticalmente, e w anexada tres vezes horizontalmente. De novo,isto nao e o produto usual de matrizes!

A mesma regra se aplica a todas as operacoes e tambem para comparacoes como >, queretorna 1 ou 0 elemento-a-elemento.

O triangulo de Pascal e usualmente escrito na forma:

11 1

1 2 11 3 3 1

Como no Euler nao temos matrizes na forma de triangulo, nos usamos uma matriz qua-drada, preenchida com zeros. Assim, usamos a funcao bin(n,m) com as regras de matrizes,e colocamos 0 se m<0 ou m>n.

Euler: Linhas de comando

format(7,0); n:=0:5; bin(n,n’)1 1 1 1 1 10 1 2 3 4 50 0 1 3 6 100 0 0 1 4 100 0 0 0 1 50 0 0 0 0 1

Podemos plotar funcoes com expressoes

Euler: Linhas de comando

>x:=0:0.01:1; y:=xˆ3; plot2d(x,y);

mas tambem podemos plotar uma tabela de valores.

Euler: Linhas de comando

>n:=(1:5)’; plot2d(x,xˆn);

Neste ultimo exemplo, n e um vetor coluna, logo xn e a matrizx1 ... xmx21 ... x2m... ... ...x51 −−− x5m

A funcao plot2d plota cada linha da matriz como uma funcao separada, usando os mesmosvalores x para todas as linhas.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 65: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

6.2 A Linguagem Matricial 65

Figura 7: Graficos das funcoes f(x) = xn

Agora, vamos desenvolver o algoritmo de Gauss, passo a passo, para obter a solucao dosistema, sem lancar mao do metodo de Gauss, que esta embutido no Euler.

1x + 1y + 1z = 12x + 1z = 21x − 1y = 1

Euler: Linhas de comando

>fracformat(10);>A:= [1,1,1;2,0,1;1,-1,0]; b:=[1;2;1]; M:=A|b

1 1 1 12 0 1 21 -1 0 1 // Operacoes elementares

>M[2]:= M[2]-2*M[1]; M[3]:= M[3]-M[1]1 1 1 10 -2 -1 00 -2 -1 0

>M[2]:= M[2]/(-2); M[3]:= 01 1 1 10 1 1/2 00 0 0 0

>M[1]:= M[1]-M[2]1 0 1/2 10 1 1/2 00 0 0 0

O resultado fornece x1 = 1− x3/2, x2 = −x3/2 onde x3 e arbitrario.

Agora, um exemplo no plano complexo. O codigo seguinte gera numeros complexos igual-mente distribuıdos na circunferencia unitaria (raızes da unidade). Nos aplicaremos tais

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 66: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

6.3 Algebra Linear 66

numeros com z 7→ z2 + z, e plotaremos os valores. A funcao plot2d sabe plotar um cami-nho de valores complexos.

Euler: Linhas de comando

>x:=linspace(0,2*pi,1000); z:=exp(I*x);>plot2d(z+zˆ2,r=2);

Nos tambem podemos plotar uma grade de numeros complexos.

Euler: Linhas de comando

>x:=-1:0.1:1; y:=x’; z:=x+1i*y;>plot2d(exp(z));

Pergunta sobre numeros primos: Quantos numeros primos sao menores do que n? E quaisdeles sao da forma m2 + 1?

Euler: Linhas de comando

>n:=1000; k:=3:2:n; sum(isprime(k))+1168

>nonzeros(isprime(k) && k==floor(sqrt(k))ˆ2+1)*2+1Column 1 to 5:

5 17 37 101 197Column 6 to 9:

257 401 577 677

Informacao adicionalmax(A) Maximo das linhas da matriz A.min(A) Mınimo das linhas da matriz A.totalmax(A) Maximo de todos os valores da matriz A.totalmin(A) Mınimo de todos os valores da matriz A.extrema(A) Maximos e mınimos mais os ındices.sort(v) Funcao que ordena o vetor v.

6.3 Algebra Linear

Multiplicamos matrizes com o produto A.x com ponto. Devemos tomar cuidado com asdimernsoes das matrizes envolvidas no produto. Assim, v’.w e o produto escalar entrevetores coluna v e w.

Euler: Linhas de comando

>v:=[1; 2; 3]123

>v’.v14

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 67: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

6.3 Algebra Linear 67

O produto vetorial (cross) e obtido com a funcao crossproduct.

Euler: Linhas de comando

>v:=[1; 2; 3];>w:=[1; 1; 2];>crossproduct(v,w)

11-1

A inversa da matriz A pode ser obtida com inv(A). Observe que A^(-1) deve retornar osinversos dos elementos de A. Pela mesma razao, a potencia de uma matriz e calculada coma funcao matrixpower(A,n).

Euler: Linhas de comando

>shortformat; A:=[1,2;2,1]1 22 1

>det(A)-3

>fracprint(inv(A));-1/3 2/32/3 -1/3

>matrixpower(A,-5).matrixpower(A,5)1 00 1

O ultimo exemplo nao gera exatamente a matriz identidade, mas a saıda padrao arredondao resultado.

Podemos resolver um sistema linear, usando o operador barra invertida \.

Euler: Linhas de comando

>A:=[2,2,2;1,2,2;1,1,2]2 2 21 2 21 1 2

>b:=A.[1;1;1]654

>A\b111

Este processo e mais eficiente que inv(A).b. Se A nao e uma matriz regular (valornumerico det(A)=0), voce obtem uma mensagem de erro.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 68: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

6.4 Analise Regressao 68

Informacao adicionalkernel(A) Nucleo de A.svdkernel(A) Base ortogonal para o nucleo de A.image(A) Imagem de A.svdimage(A) Base ortogonal para a imagem de A.rank(A) Posto de A.lu(A) Decomposicao LU de A (Ver help lu).

6.4 Analise Regressao

Se um sistema Ax=b nao possui solucao, nos podemos tentar minimizar a norma da diferencar = ‖Ax−b‖ usando a funcao fit. Isto e sempre necessario quando existem mais equacoesdo que incognitas.

Euler: Linhas de comando

>shortformat;>A:=[1,1; 2,1; 3,1];>b:=[2; 3; 2];>x:=fit(A,b)

02.333333

>norm(A.x-b)0.8164966

A funcao fit usa a equacao A′Ax = A′b, que falha quando A nao tem posto maximo.

A funcao svdsolve usa um metodo mais complicado envolvendo valores singulares eenvia o resultado com norma mınima, quando existe mais do que um resultado.

Euler: Linhas de comando

>shortformat;>A:=[1,2,3; 4,5,6; 7,8,9];>det(A)

0>b:=A.ones(3,1)

61524

>svdsolve(A,b)111

Na sequencia, vamos ajustar uma funcao polinomial de grau 2 a funcao exponencial sobreo intervalo [-1,1]. Vamos considerar o erro proximo de 0.07.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 69: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

6.5 Programacao Linear 69

Existe a funcao polyfit para ajustar polinomiais de um certo grau aos dados fornecidos.

Euler: Linhas de comando

>x:=-1:0.1:1; y:=exp(x); p:=polyfit(x,y,2)0.995583 1.11404 0.540186

>plot2d("exp(x)-polyval(p,x)",-1,1)-1 1 -0.053854 0.0684755

Agora, nos ajustaremos funcoes f=f(x) geradas pela base {e−x, e−2x, 1}, isto e, funcoes daforma f(x) = ae−x + be−2x + c aos dados (x1, y1), (x2, y2), ..., (xn, yn).

Nos vamos gerar as medidas artificialmente anexando erros aleatorios a uma dadafuncao. A matriz para o ajuste contem as funcoes da base avaliadas nos pontos medidos.

e−x1 e−2x1 1e−x2 e−2x2 1... ... ...e−xn e−2xn 1

Esta funcao pode ser gerada com a linguagem matricial do Euler.

Euler: Linhas de comando

>function f(x,a,b,c) := a*exp(-x)+b*exp(-2*x)+c>x:=0:0.1:1; y:=f(x,1,0.8,0.5)+normal(size(x))*0.01;>A:=f(x’,1,0,0)|f(x’,0,1,0)|f(x’,0,0,1);>s:=fit(A,y’)

0.9934160.804550.498895

Finalmente, nos plotamos os dados e tambem o ajuste.

Euler: Linhas de comando

>plot2d(x,y,points=1);>plot2d(x,(A.s)’,add=1);

6.5 Programacao Linear

Euler possui o algoritmo Simplex para otimizacao linear. A funcao simplex maximiza(max=1) ou minimiza uma saıda linear do tipo cT .x sob as condicoes A.x ≤ b, qx ≥ 0,onde A e uma matriz, com uma desigualdade em cada linha.

Vamos maximizar a funcao z = 5x+ 8y sob as condicoes

8x+ 10y ≤ 8011x+ 9y ≤ 997x+ 12y ≤ 84

e x ≤ 0, y ≤ 0.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 70: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

6.5 Programacao Linear 70

Euler: Linhas de comando

>A:=[8,10; 11,9; 7,12]; b:=[90; 99; 84];>x= simplex(A,b,[5,8],max=1); fracprint(x);

60/1356/13

No caso de duas variaveis, Euler pode calcular e plotar o conjunto onde e possıvel resolvero problema de otimizacao.

Euler: Linhas de comando

>xa:=feasibleArea(A,b);>plot2d(xa[1],xa[2],filled=1,style="/",a=0,b=10,c=0,d=10);>plot2d(x[1],x[2],add=1,points=1);

Uma solucao inteira pode ser obtida com intsimplex:

Euler: Linhas de comando

>intsimplex(A,b,[5,8],max=1)54

Uma forma alternativa, e a funcao ilpsolve do pacote LPSOLVE. Este pacote deve sercarregado separadamente. A implementacao em Euler e devida a Peter Notebaert. Adocumentacao completa esta disponıvel em http://lpsolve.sourceforge.net/5.5/Euler.htm

Euler: Linhas de comando

>load lpsolve>ilpsolve(A,b,[5,8],max=1)

54

Tambem podemos usar os sinais ≤ ou = em cada ou em todas as condicoes. Para isto, umvetor eq deve ser dado, com -1, 0, ou 1, respectivamente se, for ≤, = ou ≥. Se o vetorpossui apenas um numero, ele e valido para todas as condicoes, sendo que o padrao e -1.

Tambem, podemos ficar livres das condicoes xi ≥ 0 para cada ou para todas as variaveis.As funcoes simplex e intsimplex usam um vetor-linha restrito, com sinalizadores 0 ou1, para variaveis nao-restritas ou restritas. Como antes, um numero pode ser usado paratodas as variaveis, sendo que o padrao e 1.

Vamos minimizarz = 2x+ y

tal que |x|+ |y| ≤ 1. Estas desigualdades podem ser escritas como

−1 ≤x+ y ≤ 1

−1 ≤x− y ≤ 1

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 71: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

6.6 Autovalores e Valores Singulares 71

Vamos resolver o problema com restricoes e sem restricoes.

Euler: Linhas de comando

>A:=[1,1;1,1;1,-1;1,-1]; eq:=[-1;1;-1;1]; b=[1;-1;1;-1];>A|eq|b

1 1 -1 11 1 1 -11 -1 -1 11 -1 1 -1

>simplex(A,b,[2,1],restrict=0)-10

>simplex(A,b,[2,1],restrict=1)00

6.6 Autovalores e Valores Singulares

Os autovalores sao obtidos com eigenvalues e os autovetores com eigenspace e opolinomio caracterıstico e os seus zeros com polysolve.

Na sequencia, nos obtemos os autovetores com kernel(A). Os autovalores serao semprecomplexos, mas eles podem ser convertidos a numeros reais, desde que saibamos que anossa matriz tem autovalores reais.

Euler: Linhas de comando

>shortformat; A:=[1,2;2,1]1 22 1

>charpoly(A)-3 -2 1

>real(polysolve(charpoly(A)))-1 3

>u:=re(eigenvalues(A))-1 3

>eigenspace(A,-1)-0.7071070.707107

>v:=kernel(A-l[2]*id(2))11

>A.v33

A funcao eigen (proprio) retorna dois valores, um vetor com os autovalores e uma matrizcom os autovetores.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 72: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

6.6 Autovalores e Valores Singulares 72

Euler: Linhas de comando

>{u,M}:=eigen(A)................>re(u)

-1 3

ComoMAM−1 = D, SeA e uma matriz simetrica, Euler envia uma matrizM ortogonal,isto e, M−1 = M ′.

Euler: Linhas de comando

>re(M.A.inv(M))-1 00 3

Valores singulares determinam uma decomposicao de uma matriz A de ordem nxm naforma A = UDW ′, onde as colunas de U sao vetores ortonormais, D e uma matriz diagonalde ordem m e W e uma matriz ortogonal.

Euler: Linhas de comando

>shortformat;>A:=[1,2,3;4,5,6]

1 2 34 5 6

>{U,d,W}:=svd(A);>d

9.508032 0.7728696 0>U

-0.3863177 -0.9223658 0-0.9223658 0.3863177 0

>U.U’1 00 1

>W.W’1 0 00 1 00 0 1

>U.diag(3,3,0,d).W’1 2 34 5 6

Informacao adicionalxeigenvalue(A,u) Tenta melhorar numericamente o autovalor u.jacobi(A) metodo de Jacobi para a matriz simetrica A.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 73: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 7 Funcoes de Varias Variaveis 73

7 Funcoes de Varias Variaveis

7.1 Graficos 3D

Como a funcao plot2d funcoes de uma variavel, a funcao plot3d manipula funcoes de duasvariaveis. Euler pode desenhar os graficos destas funcoes ao anular a linha de projecao.Graficos de funcoes sao escalonados de modo padrao para ajustar o mesmo ao cubo unitariocom o padrao scale=1.

Os valores da funcao sao escalonados com o domınio xy. Para evitar isto, use fscale=0,ou defina a escala para algum outro valor maximo da funcao. Alguns exemplos:

Euler: Linhas de comando

>plot3d("x*y");>plot3d("x*y",user=1);>plot3d("xˆ2+yˆ2",xmin=0,xmax=4,ymin=0,ymax=4, ...> hue=1,light=[1,1,0],fscale=4);>plot3d("xˆ2+yˆ2",rmax=2,polar=1,scale=1.3);>plot3d("xˆ2+yˆ3",wire=1,anaglyph=1);>plot3d("sin(xˆ2+yˆ2)",rmax=4,polar=1,frame=0,n=100,scale=1.5);>function f(x,y) := 1/max(1,xˆ2+yˆ2))>plot3d("f",polar=1,rmax=3);

Existem varios tipos basicos de graficos 3D no Euler.

1. Graficos solidos. Este graficos mostram a superfıcie, e uma grade sobre a su-perfıcie. Existe um backside e um frontside com cores diferentes. O parametro hue=1

acrescenta sombras ao inves de uma simples cor, e remove a grade. A sombra e calcu-lada com respeito a direcao de uma fonte de luz cujo padrao e light=[0.5,0.5,1]

e a luz ambiente possui o padrao amb=0.1. Parametros podem ter funcoes em x e ypara as tres coordenadas da superfıcie, ou tres matrizes.

2. Graficos de func~oes 3D. Os tipos mais comuns de graficos solidos, mostram grafi-cos de funcoes. plot3d necessita somente uma funcao nas variaveis x e y.

3. Graficos 3D com grade. A superfıcie nao e mostrada, somente a grade. Isto podeser obtido pelo uso do parametro wire=1.

4. Graficos 3D com segmentos. Esta e uma sequencia de segmentos de reta em 3D.Use o parametro wire=1. A funcao necessita, ou de tres parametros funcionais em x,ou tres matrizes, sendo que pelo menos um deles deve ser um vetor-linha.

5. Graficos 3D com pontos. Este tipo de grafico gera um espalhamento de pontos noespaco como uma nuvem. A funcao necessita tres vetores para as coordenadas dospontos. Configure points=1.

Todos os graficos podem ser desenhados como graficos anaglyph, que podem ser vistospropriamente, com um oculos red/cyan. O efeito 3D e maravilhoso.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 74: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

7.2 Superfıcies, Curvas e Pontos 74

Graficos podem ser ligados e ter zoom pelo usuario, se o parametro user=1 esta configu-rado (plots interativos).

A barra de espaco faz o grafico voltar ao ponto inicial. Pressionando a mesma, geramos umgrafico anaglyph. Para mudar entre ligar a fonte de luz ou grafico, pressione a tecla L.

Existem varias configuracoes para visualizar o grafico, o angulo, o fator de zoom, a distanciade visao ou as cores. De uma olhada na documentacao de plot3d. As configuracoes maisimportantes estao indicadas na lista seguinte.

Informacao adicionalzoom(5) Fator de zoom.viewdistance() Distancia de visao.viewangle() Angulo de visao.viewheight() Angulo de visao acima do plano z=0.fillcolor(n,m) Configura as cores de preenchimento.reset() Resseta para os parametros default.f3daxis Um outro grafico com eixos.

7.2 Superfıcies, Curvas e Pontos

Nesta secao estao alguns exemplos de graficos 3D. Para uma superfıcie 3D, plot3d necessitatres parametros funcionais nas variaveis x e y, ou tres matrizes. Em qualquer caso, asuperfıcie e modelada por uma aplicacao f : Q→ R3, onde Q e um retangulo em R2.

Euler: Linhas de comando

>plot3d("cos(x)*cos(y)","sin(x)*cos(y)","sin(y)", ...> xmin=0,xmax=2*pi,ymin=-pi/2,ymax=pi/2, ...> hue=1,user=1,light=[1,0,1],frame=0);

Aqui temos o grafico de uma esfera. Os parametros funcionais sao simplesmente expressoesem x e y. Naturalmente, funcoes da forma f=f(x,y) podem ser usadas tambem.

No grafico seguinte mostramos a faixa de Mobius. Calculamos tres matrizes para os tresparametros. O parametro hue=2 liga a funcao hue(), e hue nao dependera do lado dasuperfıcie (esta superfıcie e nao-orientada).

Euler: Linhas de comando

>x:=linspace(0,2*pi,100); y:=(-1:0.1:1)’;>plot3d(cos(x)*(1+y/2*cos(x/2)),sin(x)*(1+y/2*cos(x/2)),...> y/2*sin(x/2),frame=0,hue=2,max=0.8,scale=2);

Curvas 3D sao plotadas com tres funcoes parametricas e o parametro opcional wire=1 (ouline=1). Alternativamente, tres vetores podem ser usados.

Euler: Linhas de comando

>plot3d("sin(x)","cos(x)","x/2Pi",xmin=0,xmax=10pi,n=100,user=1);

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 75: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

7.3 Resolvendo Sistemas de Equacoes de Varias Variaveis 75

Pontos em 3D sao desenhados com o parametro points=1. Nos precisamos tres vetorespara as coordenadas dos pontos.

Os comandos seguintes geram uma nuvem normalmente distribuıda de forma aleatoriacom valores no espaco. O segundo grafico mostra um movimento browniano obtido com asoma acumulada dos pontos.

Euler: Linhas de comando

>A:=normal(3,10000); plot3d(A[1],A[2],A[3],points=1,style=".");>B:=cumsum(A); plot3d(B[1],B[2],B[3],wire=1,anaglyph=1,user=1);

7.3 Resolvendo Sistemas de Equacoes de Varias Variaveis

Para resolver sistemas nao-lineares de equacoes de varias variaveis, Euler tem um algoritmo

rapido de Newton e o metodo de Broyden. Podemos usar o metodo estavel do algoritmo

de Nelder-Mead para a minimizacao. Alem disso, existe uma variante do algoritmo de

Newton para inclus~oes.

Vamos resolver o sistema com as duas equacoes x2 + y2 = 1 e y = e−xy, escrevendof : R2 → R2 que associa [x, y] 7→ [x2 + y2 − 1, y − exp(−xy)].

Nos pesquisaremos pelos zeros desta funcao. O metodo Broyden funciona muito bem aqui.Para o metodo de Newton, nos precisamos da matriz Jacobiana com as derivadas parciais.Neste caso, tambem podemos realizar o calculo manualmente.

Euler: Linhas de comando

>plot2d("xˆ2+yˆ2",r=1.5,niveau=1)>plot2d("y-exp(-x*y)",niveau=0,add=1);>function f(v) := [v[1]ˆ2+v[2]ˆ2-1,v[2]-exp(-v[1]*v[2])]

>broyden("f",[1,0])0.7880470947328 0.6156149579756

>function Df(v):=[2*v[1],2*v[2]; ...v[2]*exp(-v[1]*v[2]),1+v[1]*exp(-v[1]*v[2])]

>newton2("f","Df",[1,0])0.7880470947328 0.615614957975

O Maxima pode ser usado para calcular as derivadas. Primeiro, guardamos as duas equacoesem expressoes, e definimos a funcao f com a ajuda destas equacoes. A sintaxe e explicadano capıtulo sobre programacao.

Euler: Linhas de comando

>f1:="xˆ2+yˆ2-1"; f2:="y-exp(-x*y)";>function f(v) ...$ x:=v[1]; y:=v[2];$ return [@f1,@f2];$endfunction \\ Atencao com os $

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 76: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

7.4 Funcoes Implıcitas 76

O Maxima calcula o Jacobiano em tempo de compilac~ao de Df. A sintaxe pe explicada nocapıtulo sobre o Maxima.

Euler: Linhas de comando

>function Df(v) ...$ x:=v[1]; y:=v[2];$ return @:"jacobian([@f1,@f2],[x,y])")$endfunction \\ Cuidado com os $

>inewton2("f","Df",[1,0])Column 1 to 1:

˜0.788047094732753,0.7880470947327548˜Column 2 to 2:

˜0.61561495797557209,0.61561495797557297˜

As funcoes agora funcionam exatamente como antes, mas usamos o metodo do intervalode Newton para obter uma inclus~ao garantida proxima da solucao.

Outro metodo estavel, e o algoritmo de Nelder-Mead, que minimiza funcoes f : Rn → R.Vamos usar este metodo para a norma de v, definida pela funcao f(v) = ‖v‖.

Euler: Linhas de comando

>function g(v) := norm(f(v))>neldermin("g",[1,0])

0.7880470947328 0.615614957976

O algoritmo nao e muito rapido. Para dimensoes muito altas, ele nao e recomendado.

7.4 Funcoes Implıcitas

Euler pode desenhar as solucoes de f(x, y) = c para um ou mais valores de c (graficos decontorno). Use a funcao plot2d com o parametro niveau=... para isto. Os valores de csao, ou um numero, ou um vetor-linha de valores. niveau="auto" ou contour=1 usaraovalores igualmente espacados. O parametro adicional hue=1 indica os valores das funcoescom uma sombra. Black significa valores menores e white significa valores maiores.

Alternativamente, a funcao plot3d pode ser usada, para produzir um grafico 3D com linhase contornos sombreados.

Vamos analisar a funcao f(x, y) = xy−yx para x > 0, y > 0. Primeiro plotaremos a solucaoda equacao xy = yx na regiao quadrada do plano 0 ≤ x ≤ 5, 0 ≤ y ≤ 5.

Euler: Linhas de comando

>function f(x,y) := xˆy-yˆx>plot2d("f",a=0,b=5,a=0,b=5,niveau=0,hue=1);>plot3d("f",xmin=2,xmax=3,ymin=2,ymax=3,user=1);

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 77: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

Secao 8 Programacao em Euler 77

Analisaremos a intersecao das duas curvas desta solucao, anexando o fato que as derivadasparciais de fy sobre a reta y = x sao nulas e a intersecao estar em (e,e).

Euler: Linhas de comando

>:: diff(xˆy-yˆx,x), % | x:y, solve(%=0,y)

xy−1y − yx log(y)

yy − yy log(y)

[y = e, yy = 0]

8 Programacao em Euler

8.1 Funcoes

Neste tutorial, nos encontramos funcoes de uma linha. Este tipo de definicao de funcao eo mais simples e suficientemente bom.

Funcoes de uma linha podem usar variaveis globais automaticamente, mas, variaveispodem ser passadas como argumentos.

Euler: Linhas de comando

>function f1(x) := m*x+t>t:=1; m:=-0.25; f1(3)

0.25>function f2(x,m,t) := m*x+t>f2(0:4,-0.25,1)

1 0.75 0.5 0.25 0

Euler tambem pode associar valores padroe4s a parametros (parametros default). Taisparametros nao necessitam de valores, quando a funcao e chamada.

Euler: Linhas de comando

>function logb(x,base=10) := log(x)/log(base)>logb(100)

2>logb(1024,2)

10

Funcoes em varias linhas comecam com a palavra function e terminam com a palavraendfunction.

Funcoes devem conter uma condicao return em algum lugar, ou a funcao retornara umastring vazia.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 78: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

8.1 Funcoes 78

Euler: Linhas de comando

>function f3(x)$ if x<0 then return xˆ3$ else return xˆ2$ endif$endfunction>plot2d("f3",-1,1);

Podemos inserir funcoes em varias linhas na janela de texto, ou de modo direto com aajuda do editor interno. Para usar o editor interno, pressione F9 na linha function.

Quando recarregamos o notebook, o usuario deve ir ate a definicao da funcao linha porlinha. Para evitar isto, encerre a linha da funcao com tres pontos ... que le a funcao comum Enter. Os ... sao automaticamente anexados pelo editor interno.

Pode ser mais interessante editar as funcoes em um editor externo. Salve o arquivo comofuncf3.e e carregue o mesmo no Euler com load funcf3. O arquivo deve ficar na mesmapasta que o notebook, senao, o comando load deve usar o caminho completo do arquivo.

Podemos usar qualquer editor para editar arquivos do Euler. Tambem existe um editorinterno, que usa um arquivo temporario na pasta do usuario quando ele e iniciado comlinhas vazias, ou o arquivo do comando load se a linha inicia com um tal comando.

Para iniciar o editor interno, pressione F9. Vamos inserir o texto seguinte no editor in-terno (ou colar isto da documentacao), e pressionar Interpret. O texto entre comment eendcomment sera mostrado como um comentario enquanto carrega.

Euler: Linhas de comando

commentDefinition of f3(x).endcommentfunction f3(x)if x<0 then return xˆ3else return xˆ2endifendfunction

Este codigo parece um notebook.

Euler: Linhas de comando

>load "C:\SeuNome\funcf3.e"

Definition of f3(x).

>f3map(-2:2)Column 1 to 3:

-8 -1 0Column 4 to 5:

1 4

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 79: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

8.2 Funcoes que Retornam Varios Valores 79

Em uma funcao, comentarios podem ser inseridos em qualquer lugar com //, ou no inıcioda linha com ##. As linhas com comentarios diretos no inıcio da definicao da funcao saousados como linhas de ajuda. Estas linhas sao mostradas com help functionname.

Vamos inserir o codigo seguinte com o editor interno:

Euler: Linhas de comando

function sinc(x)## Nao tem sentido calcular sin(x)/x em x=0## Nao funciona com vetores!if x˜=0 then return 1else return sin(x)/xendifendfunction

sinc entao funciona exatamente como qualquer outra funcao e help sinc gera uma saıdade ajuda para esta funcao.

Euler: Linhas de comando

>load "C:\SeuNome\sinc.e">plot2d("sinc",0,2pi);

>help sincfunction sinc(x)Function in file: C:\SeuNome\sinc.eNao tem sentido calcular sin(x)/x em x=0Nao funciona com vetores!

As funcoes normais do Euler possuem linhas de ajuda. A primeira linha de ajuda deveconter um resumo da funcao, pois esta linha e mostrada na linha de status como ajudaimediata, apos o usuario entrar o parentese de abertura para os parametros da funcao.Para as funcoes normais do Euler existem exemplos em examples.txt.

Informacao adicionalcomments off Desliga comentarios enquanto carrega.arg1,arg2,... Modo alternativo para acessar parametros.argn Numero de parametros dados.

8.2 Funcoes que Retornam Varios Valores

As vezes, nos precisamos passar varios valores na saıda de uma funcao. Nos nao desejamosusar variaveis globais para isto. Ao inves disso, Euler pode retornar mais do que umvalor com a declaracao return. A sintaxe para isto usa parenteses em volta com vırgulasque separam. Tais valores retornados podem ser associados a varias variaveis. A lista devariaveis tambem e envolvida por parenteses.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 80: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

8.2 Funcoes que Retornam Varios Valores 80

Vamos ordenar dois valores e retornar os mesmos na ordem correta.

Euler: Linhas de comando

>function sort2(a,b)$ if a<b then return {a,b}$ else return {b,a}$ endif$endfunction

>{x,y}:=sort2(2,3); x, y,23

>{x,y}:=sort2(3,2); x, y,23

Para ordenar um vetor, o Euler ja possui a funcao sort. Esta funcao gera um vetor ordenadoe os novos ındices dos elementos, de modo que no exemplo seguinte i[ind] e o vetorordenado j. Isto e util para permutar qualquer vetor em uma mesma forma.

Euler: Linhas de comando

>shortformat;>i:=shuffle(6:10)

10 6 9 7 8>{j,ind}=sort(i); j

6 7 8 9 10>ind

2 4 5 3 1>i[ind]

6 7 8 9 10

Existe um truque para obter a permutacao inversa, que e feito pela ordenacao dos ındices.

Euler: Linhas de comando

>{k,invind}=sort(ind);>j[invind]

7 10 8 6 9

Informacao adicionalfind Encontra um numero em um vetor ordenado.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 81: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

8.3 Variaveis Globais 81

8.3 Variaveis Globais

Em uma funcao, so as variaveis locais e os parametros sao visıveis. Variaveis locais saoaquelas declaradas na funcao, ou parametros com valores. Excecoes sao as variaveis

globais terminando por $. Tais variaveis globais devem ser unidades, que sempre precisamestar visıveis.

Para acessar variaveis globais, use o comando useglobal na funcao, ou o comando globalvarname. Voce ainda nao pode mudar estas variaveis globais no tipo ou na dimensao damatriz, mas voce pode mudar o seu valor.

As funcoes de uma linha sempre contem a declaracao useglobal. Assim, eles podem veras variaveis globais.

Na sequencia, nos configuramos a diagonal de uma matriz global como um valor dado.

Euler: Linhas de comando

>function setA(s)$ global A;$ A=setdiag(A,0,s);$ return A;$endfunction

>A:=[1,2;3,4]1 23 4

>setA(4);>A

4 23 4

Euler passa variaveis por referencia, mas nao e possıvel mudar o valor da variavel, quee usada como um parametro. Isto e para proteger aquelas variaveis. Para circumvent isto,inicie o nome do parametro com um %.

Neste caso, mudando o parametro realmente ira mudar o valor de qualquer variavel pas-sada para ele, mas, o tipo e a dimensao da matriz de uma tal variavel nao pode ser mudada.

Euler: Linhas de comando

>function setA(%A,s)$ %A=setdiag(%A,0,s);$endfunction

>A:=[1,2;3,4]1 23 4

>setA(A,4);>A

4 23 4

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 82: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

8.4 Estruturas de Controle 82

Variaveis adicionais podem ser passadas a uma funcao com uma associacao de parametro.Aquelas variaveis funcionam como variaveis locais naquela funcao.

A funcao evaluate avalia uma string como em uma expressao no Euler. No exemplo, nosusamos a mesma dentro de uma funcao test de uma linha. Assim, ele pode ver as variaveislocais de test, e as variaveis globais. Para configurar os valores para x e y, nos usamos istocomo variaveis locais na funcao test.

Euler: Linhas de comando

>function test(expr) := evaluate(expr)>test("x*y",x=2,y=3)

6

As funcoes plot2d e plot3d, e outras funcoes no Euler, usam uma mistura de parametroscom valores default e associam parametros. Isto funciona bem, desde que os parametrosassociados sobreponham os valores default dos parametros com o mesmo nome.

Euler: Linhas de comando

>function test(x,a=2) := a*x>test(4)

8>test(4,a=3)

12

Nos observamos que expr() funciona como evaluate(expr) com a leve diferenca, que elasomente pode ver variaveis globais, ou variaveis passadas para ela como em expr(x=2,y=3)

(mais sobre isso esta escrito na sequencia).

8.4 Estruturas de Controle

Estruturas de controle mudam o fluxo de execucao em uma funcao. Existem dois tipos:ramos condicionais e lacos. Ramos condicionais sao possıveis com a declaracao if. Taldeclaracao sempre possui um finalizador endif. Apos a condicao, existe uma opcional, mase recomendada palavra then. Um ramo alternativo e possıvel com else. A palavra elseif

funciona com na declaracao if no ramo else, mas somente um endif e necessario.

Podemos implementar a funcao signum no Euler. Observe que no Euler, ja existe a funcaosign com as mesmas caracterısticas. Quando comparamos com 0, e inteligente usar ~=.Esta comparacao usa o epsilon interno do Euler.

Euler: Linhas de comando

>function signum(x)$ if x>0 then return 1$ elseif x˜=0 then return 0$ else return -1$ endif$endfunction \\ Cuidado com os $

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 83: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

8.4 Estruturas de Controle 83

Condicoes if sao conectadas com and ou or e elas sao avaliadas somente quando sao muitonecessarias. Esta e denominada condicao atalho.

Euler: Linhas de comando

>function test (a,b) ...$ if aˆ3+1>=0 and b<sqrt(aˆ3+1) then return 1$ else return 0$ endif;$endfunction

Observe que,√a3 + 1 nao e calculada se a3 + 1 < 0.

Euler: Linhas de comando

>function isbetween(x,a,b) := (x>=a)&&(x<=b)

Tambem existem varios lacos em Euler. O laco basico repeat que e um laco eterno. Parainterromper o mesmo, usamos a declaracao break, de preferencia dentro de uma estruturaif. O laco loop e um laco inteiro rodando entre dois valores inteiros. O laco for contauma variavel com um passo de valor opcional do valor inicial ao valor final.

Todos os lacos seguintes contam de 1 ate 10.

Euler: Linhas de comando

>function s1$ n:=1 \\ Cuidado com os $$ s:=0$ repeat$ s:=s+n$ n:=n+1$ if n>10 then break; endif;$ end;$ return s;$endfunction

Euler: Linhas de comando

>function s2$ s:=0$ loop 1 to 10;$ s:=s+#$ end;$ return s;$endfunction

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 84: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

8.4 Estruturas de Controle 84

Euler: Linhas de comando

>function s3$ s:=0$ for i=1 to 10 step 1$ s:=s+i$ end;$ return s$endfunction

Podemos colocar lacos em outros lacos. Isto e denominado um laco duplo. Se o laco

interno esta quebrado com uma declaracao break, o laco externo continuara a rodar.

Como um exemplo mais complicado, vamos escrever uma funcao que imprime todos osnumeros menores que 3000 como numeros romanos.

Euler: Linhas de comando

>function roman(x) ...$ x=floor(x);$ if x<1 then error("x<0");$ elseif x>3000 then error("x>3000");$ endif$ s:="";$ repeat$ if x>=1000 then s:=s|"M"; x:=x-1000;$ elseif x>=900 then s:=s|"CM"; x:=x-900;$ elseif x>=500 then s:=s|"D"; x:=x-500;$ elseif x>=400 then s:=s|"CD"; x:=x-400;$ elseif x>=100 then s:=s|"C"; x:=x-100;$ elseif x>=90 then s:=s|"XC"; x:=x-90;$ elseif x>=50 then s:=s|"L"; x:=x-50;$ elseif x>=40 then s:=s|"XL"; x:=x-40;$ elseif x>=10 then s:=s|"X"; x:=x-10;$ elseif x>=9 then s:=s|"IX"; x:=x-9;$ elseif x>=5 then s:=s|"V"; x:=x-5;$ elseif x>=4 then s:=s|"IV"; x:=x-4;$ elseif x>=1 then s:=s|"I"; x:=x-1;$ else break;$ endif;$ end;$ return s;$endfunction

>roman(1968)MCMLXVIII

Estruturas de controle tambem podem ser usadas fora das funcoes, mas elas devem seajustar a uma unica linha de comando.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 85: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

8.5 Funcoes e a Linguagem Matricial 85

Euler: Linhas de comando

>soma=0; for i=1 to 10; soma=soma+i; end; soma,55

Funcoes tambem podem a si proprias de modo recursivo (func~oes recursivas), ge-rando programas elegantes, embora a pilha de chamadas recursivas seja limitada.

Vamos quebrar uma string em varias substrings separadas por espacos vazios. A funcaostrfind pesquisa uma string em uma outra string. Se a string contem um espaco vazio,imprimimos a primeira parte e continuamos a perquisar a segunda parte recursivamente.

Euler: Linhas de comando

>function breakup (str) ...$ n=strfind(str," ",0); \\ Cuidado com os $$ if n>0 then substring(str,1,n-1), breakup(substring(str,n+1,-1));$ else str,$ endif;$endfunction

> breakup("Este e um teste");Esteeumteste

Informacao adicionaland, or Conecta condicoes em if (com atalho).&&, || e booleano e ou booleano, tambem para vetores.error(String) Mensagem de Erro, abortando a funcao.index Alternativa para o laco index #.

8.5 Funcoes e a Linguagem Matricial

Varias funcoes funcionam para matrizes out of the box, e isto acontece pois as expressoesem Euler funcionam para entradas de matrizes e de vetores, mas se as funcoes possuemestruturas de controle, elas usualmente nao funcionam com vetores de entrada.

Euler pode mapear uma funcao com argumentos matriciais. O modo mais facil e anexarmap ao nome da funcao. Tambem existe uma funcao map("f",...), que mapeia a funcaof aos outros argumentos.

O calculo rapido dos polinomios de Chebyshev usa algoritmos diferentes para x < 1, x >1 e x ∈ [−1, 1]. Assim, primeiro nos escrevemos uma funcao de uma variavel e depoismapeamos a mesma em uma outra funcao como um vetor de entrada. Por convencao, umafuncao iniciada por um % e uma funcao interna, nao apropriada para execucao direta.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 86: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

8.6 Funcoes como Parametros 86

Tais funcoes nao sao listadas com o comando list.

Euler: Linhas de comando

>function %cheb (x,n) ...$ if x>1 then \\ Cuidado com os $$ w:=(x+sqrt(xˆ2-1))ˆn$ return (w+1/w)/ 2;$ elseif x<-1 then$ signum:=-mod(n,2)*2+1$ w:=(-x+sqrt(xˆ2-1))ˆn$ return signum*(w+1/w)/ 2;$ else$ return cos(n*acos(x));$ endif;$endfunction

>function cheb (x,n) ...$ return %chebmap(x,n)$endfunction

Realmente, a funcao cheb e mapeada para o parametro n. Assim, nos podemos calcularvarios polinomios de Chebyshev de graus diferentes de uma unica vez.

Euler: Linhas de comando

>x:=-1:0.01:1; n:=(1:4)’; plot2d(x,cheb(x,n))

Algumas vezes, nao desejamos mapear alguns argumentos, por exemplo, argumentos quenao entendidos como vetores. Assim, a funcao map mapeia so os parametros na frente doponto e vırgula ; e nao para os pontos e vırgulas apos ele.

Na proxima secao, nos estudaremos parametros com ponto e vırgula, em conexao com ocomando args(). Aqui, eles sao usados para uma finalidade diferente.

8.6 Funcoes como Parametros

Varias funcoes no Euler esperam uma expressao ou nome de funcao, como plot2d eplot3d. Nesta secao, nos vamos explicar como escrever tais funcoes.

Para avaliar uma funcao dada pelo nome, simplesmente usamos uma variavel fvar com onome e chamamos a funcao contida como em fvar(...).

Para verificar se uma variavel string contem uma funcao, nos podemos usar a funcaoisfunction.

Para avaliar uma expressao contida em uma string, nos podemos usar a funcao evaluate.Como discutimos antes, a funcao evaluate na funcao olha as variaveis locais da funcao eas variaveis globais somente se useglobal esta configurada.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 87: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

8.6 Funcoes como Parametros 87

Euler: Linhas de comando

>function test(x,f)$ if isfunction(f) then return f(x)$ else return evaluate(f)$ endif$endfunction

>test(2,"sin")0.9092974268257

>test(2,"xˆ2")4

Existe um modo mais facil de fazer isto. O comando exprvar() avalia a string contidana variavel exprvar. Esta versao permite argumentos adicionais, que sao associados asvariaveis x, y e z. Mais argumentos podem ser dados com parametros associados, comoem exprvar(2,a=4). Na avaliacao, so os parametros e as variaveis globais sao visıveis.

Euler: Linhas de comando

>function test(x,f) := f(x)>test(2,"sin") // avalia uma funcao em 2

0.9092974268257>test(2,"xˆ2") // avalia uma expressao em x=2

4

Nao existem mais problemas. Se f e chamada dentro de g(f), onde f e dada em umparametro string para g, entao, devemos ter um modo de passar parametros adicionaispara f via g, o que e feito com a funcao args() e alguns sinais ; de ponto e vırgula(parametros ponto e vırgula).

args() simplesmente denota todos os argumentos apos os ponto e vırgulas. Existe umaregra que parametros ponto e vırgula devem vir antes dos parametros associados.

Na sequencia, nos passamos o parametro 5 da funcao test para f. A chamada real para f

e f(2,5).

Euler: Linhas de comando

>function test(x,f)$ return f(x,args())$endfunction>function f(x,a) := a*x>test(2,"f";5)10

Agora, vamos calcular os coeficientes de Fourier de modo numerico. Para as integrais,nos utilizaremos o metodo de Romberg. Tais coeficientes sao definidos por:

ak =1

π

∫ π

−πf(x) cos(kx)dx

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 88: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

8.7 Funcoes e o Maxima 88

Definimos uma funcao, avaliando f(x) cos(kx). O nome da funcao f e o grau k devem serinformados ao metodo de Romberg como parametros adicionais. A funcao romberg passatais parametros para a funcao e realiza a integral. Com a funcao map, nos calculamos oscoeficientes ak com k=1,...,5.

Euler: Linhas de comando

>function fcos (x,f,k) := f(x)*cos(k*x)>function a(f,k) := romberg("fcos",-pi,pi;f,k)/pi>function f(x) := xˆ2>fracprint(amap("f",1:5));Column 1 to 3:

-4 1 -4/9Column 4 to 5:

1/4 -4/25

O resultado pode ser verificado com o Maxima.

Euler: Linhas de comando

>:: integrate(xˆ2*cos(3*x),x,-%pi,%pi)/%pi-4/9

8.7 Funcoes e o Maxima

As vezes, nos desejamos usar o Maxima para calcular derivadas ou outras operacoes. Istopode ser feito pelo uso do comando mxm, como esta explicado no capıtulo sobre o Maxima.Mas, pode ser muito melhor, fazer isto durante a definicao de uma funcao.

Para chamar o Maxima em tempo de compilac~ao, use @:"...". A expressao na string seraavaliada pelo Maxima e a resposta sera inserida no corpo da funcao (avaliacao em tempo

de compilac~ao).

Vamos escrever uma funcao g(x) para a reta tangente ao grafico da funcao xx em um pontos. A derivada da funcao e calculada enquanto a funcao e definida. Para ver isto, de umaolhada com um print interno de g.

Euler: Linhas de comando

>function g(x,s) := sˆs+ @:"diff(sˆs,s)" *(x-s)>type gfunction g (x,s)useglobal; return sˆs+ sˆs*(log(s)+1) *(x-s)endfunction

>plot2d("xˆx",0,2); plot2d("g(x,1)",add=1);

Para criar uma tal funcao para expressoes variaveis, nos nao podemos avaliar em tempode compilacao. Nos necessitamos chamar o Maxima com uma dada expressao em cada

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 89: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 9 Estatıstica 89

chamada da funcao tangente. Observe que isto nao e muito efetivo, mas a expressao epassada ao comando Maxima com a sintaxe @str. Assim, @str e trocada pelo conteudo davariavel string str antes que o Maxima seja chamado.

Euler: Linhas de comando

>function g(t,x,f)$ return evaluate("::@f")+ ..$ evaluate("::diff(@f,x)")*(t-x)$endfunction \\ Cuidado com os $

>g(2,1,"xˆx")2

>plot2d(’’g(x,1,"xˆx")’’); plot2d("xˆx",add=1);

9 Estatıstica

9.1 Numeros Aleatorios

Euler pode gerar vetores e matrizes preenchidos com numeros aleatorios. A funcaorandom gera uma matriz de numeros igualmente e normalmente distribuıdos em [0,1]

e gera numeros normalmente distribuıdos entre 0 e 1. A funcao seed pode ser usada paraconfigurar um valor inicial.

Vamos gerar 1000 numeros normalmente distribuıdos com media 1000 e desvio padrao 5,e plotar um histograma dos valores.

Euler: Linhas de comando

>a:=normal(1,1000)*5+1000;>plot2d(a,distribution=20,style="/");

A funcao histo prepara dados para o histograma, calculando as frequencias em um dadonumero de intervalos. Assim, nos podemos fazer a mesma coisa em duas etapas.

Euler: Linhas de comando

>{x,y}:=histo(a,20);>plot2d(x,y,bar=1,style="/");

Para outro exemplo, lancamos um dado 600 vezes e contamos as frequencias dos valores.

Euler: Linhas de comando

>a:=floor(random(1,600)*6);>count(a,6)

91 100 112 100 95 102113

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 90: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

9.2 Distribuicoes 90

Euler tambem pode embaralhar vetores com a funcao shuffle. Agora vamos gerar numerosde uma loteria de 6 ate 49.

Euler: Linhas de comando

>z:=shuffle(1:49); sort(z[1:6])7 11 14 29 34 39

9.2 Distribuicoes

Euler pode calcular varias distribuic~oes e suas inversas. O caso mais importante e adistribuic~ao normal.

Em 1000 lancamentos de uma moeda os numeros esperados de caras e distribuıdo commedia 500 e σ =

√1000(0.5)(0.5). Podemos calcular a probabilidade de obter mais que 520

caras, e quando a probabilidade ocorre a menos do que 0.1%, e calculamos um intervalocom 99% de confiancia.

Euler: Linhas de comando

>m:=500; s:=sqrt(1000*0.5*0.5); 1-normaldis((520-m)/s)0.102951607314

>ceil(invnormaldis(1-0.1%)*s+m)549

>k:=invnormaldis(99.5%)-0.5; d:=m+ceil(k*s)533

>˜m-d,m+d˜˜467,533˜

No Euler, a funcao normaldis gera uma escala em um modo diferente da funcao erf, quetambem esta disponıvel. Todas as distribuicoes em Euler sao implementadas com func~oes

de distribuic~ao, cujas imagens estao no intervalo [0,1].

A aproximacao da distribuic~ao binomial no exemplo acima tambem pode ser calculadaexatamente. As funcoes binsum (e normalsum para n grande) fazem isto.

Euler: Linhas de comando

>1-binsum(520,1000,0.5)0.09738316423031

>invbinsum(99.9%,1000,0.5)550

Informacao adicionalchidis Distribuicao chi.tdis Distribuicao T de Student.invtdis Inversa da distribuicao T.fdis Distribuicao F.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 91: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eulerv.9.6:Introducao-Matematica/UEL-set/2010

9.3 Entrada e Saıda de Dados 91

9.3 Entrada e Saıda de Dados

As vezes precisamos ler e escrever dados em arquivos externos. Euler suporta isto comvarias funcoes em diferentes nıveis. Euler pode abrir apenas um arquivo para leitura e umpara escrita de cada vez. Para abrir um arquivo, use o comando open, e para fechar um

arquivo use o comando close. Algumas funcoes abrem e fecham arquivos automatica-mente.

Sem o caminho, arquivos ficam na pasta atual. Para abrir um notebook ou salvar

um notebook consideramos que a pasta atual e a pasta do notebook. Um bom local paranotebooks e uma pasta de arquivos do usuario na pasta de instalac~ao do Euler.

Vamos gerar 10000 numeros aleatorios e escrever tais numeros no arquivo test.dat.

Assim, podemos ler tais numeros do arquivo. As funcoes de alto nıvel writematrix ereadmatrix abrem e fecham arquivos automaticamente. A matriz e escrita linha por linha.Para evitar linhas muito longas, e melhor usar um vetor-coluna para a matriz aleatoria.O arquivo contem um numero em cada linha.

Euler: Linhas de comando

>n:=10000; a:=random(n,1);>writematrix(a,"test.dat");>b:=readmatrix("test.dat");>size(b)10000 1

Podemos anexar matrizes no mesmo arquivo, abrindo o arquivo no modo a de anexacao.O modo de escrita w deleta o conteudo do arquivo. Escrevemos a matriz com writematrix

e fechamos o arquivo. Lemos ambas as matrizes, abrindo o arquivo no modo de leitura r eusamos readmatrix duas vezes sem o parametro com o nome do arquivo.

Euler: Linhas de comando

>open("test.dat","a");>writematrix(random(2,2));>close();>open("test.dat","r");>b:=readmatrix();>readmatrix()0.143192 0.82420.0307746 0.654422>close();

Existem muitas funcoes elementares como getvector ou getvectorline para ler e es-crever dados. Esta funcao le uma quantidade desconhecida mas limitada de numeros(com ponto decimal, nao com vırgula). O texto intermediario e skipped. A funcaogetvectorline interrompe no final de cada linha. As funcoes retornam os dados e ocontador. getvectorline retorna a linha de onde veio a string. Estas funcoes sao maisefetivas e mais rapidas que readmatrix. Na sequencia, nos usamos o comando write paraa saıda de uma string e putchar(10) para um line feed (nova linha).

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 92: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

9.4 Testes Estatısticos 92

Euler: Linhas de comando

>open("test.dat","w");>write("Dois numeros: 1000 2000"); putchar(10);>close();>open("test.dat","r");>{v,n,s}:=getvectorline(1000);>close();>s

Dois numeros: 1000 2000>n

2>v

1000 2000

Informacao adicionalgetline Le uma linha como uma string.eof Testa se o arquivo foi lido totalmente.dir Lista a pasta atual.dir("*.e") Lista todos os arquivos Euler.remove Remove (deleta) um arquivo.cd(...) Muda a pasta de trabalho.

9.4 Testes Estatısticos

Euler conhece as funcoes basicas da Estatıstica mean (media) e dev (desvio padrao) parauma amostra. Alem disso, Euler pode calcular alguns testes estatısticos. Testaremos umaserie de numeros aleatorios normalmente distribuıdos no intervalo [0,1] com media 0.5atraves do teste T-Student. Rejeitaremos a hipotese que a amostra tenha distribuicaocom media 0.5 ou superior.

Euler: Linhas de comando

>a:=normal(1,20);>ttest(mean(a), dev(a), 20, 0.5)

0.00101056390067

Informacao adicionaltcomparedata Testa duas amostras com a mesma distribuicao.chitest Testa a mesma distribuicao usando o teste f2.tabletest Testa a independencia de linhas da tabela.varanalysis Testa o mesmo valor medio.mediantest Testa o mesmo valor medio.ranktest Testa o mesmo valor medio.wilcoxon Compara valores medios.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 93: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 10 Aritmetica Exata 93

10 Aritmetica Exata

10.1 Produto Escalar Exato

Resolver um sistema linear Ax=b as vezes produz grandes erros, mesmo que o sistema tenhasolucao exata. Este e o caso quando A e uma matriz mal condicionada, isto e, ela possuiautovalores muito grandes e tambem autovalores muito pequenos.

Consideremos em qualquer norma compatıvel, a expressao:

‖∆x‖‖x‖

≤ ‖A‖.‖A−1‖‖∆b|‖‖b‖

Como 1234522 − 2(13)(5861501) = 1, a matriz abaixo possui elementos grandes com umdeterminante muito pequeno. A matriz e quase singular, e e mal condicionada. Assim,obtemos arredondamento com grandes erros no algoritmo de Gauss.

Euler: Linhas de comando

>A := [12345,26; 5861501,12345];>b := A.[1; 1]; A\b

1.0000000215780.9999897544764

Ao calcular os primeiros passos do algoritmo de Gauss nos programas Euler e Maxima, nosobservamos o problema. A precisao do resultado e de somente 7 dıgitos.

Euler: Linhas de comando

>B := A; B[2] := B[2]-(B[2,1]/B[1,1])*B[1]12345 260 -8.10044548416e-005

>mxmeval("12345-5861501/12345*26")-8.100445524504e-005

Para melhorar o resultado, usamos um processo de iterac~ao residual. Para isto, nosobtemos o erro r=Ax-b e corrigimos a solucao errada x pela solucao d de Ad=r. Para estatecnica funcionar, nos devemos calcular o resıduo exato. Para isto, Euler possui um produto

escalar exato que usa um acumulador longo.

Euler: Linhas de comando

>x := A\b1.0000000215780.9999897544764

>r := residuum(A,x,b)-2.989164471501e-012-5.893452392769e-010

>x := x-A\r11

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 94: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

10.2 Inclusoes Garantidas 94

O procedimento e implementado com a funcao xlgs.

Euler: Linhas de comando

>xlgs(A,b)11

Nao e bom calcular o resıduo de forma simples, pois fica muito pior a ajuda.

Euler: Linhas de comando

>x := A\b1.0000000215780.9999897544764

>r := A.x-b-3.637978807092e-012-9.313225746155e-010

>x-A\r1.0000000008820.9999995813157

Vamos complicar aqui, pois o metodo somente e util para sistemas que sao dados de modoexato. Se o sistema contem erros nos parametros, os resultados parecem exatos e xlgs de-vem ser verificados cuidadosamente usando metodos de intervalos (ver a proxima secao).

O exemplo seguinte e devido a Rump et al. A iteracao residual pode ser usada para avaliarpolinomiais muito mal condicionados. Euler implementa isto no comando xpolyval.

Euler: Linhas de comando

>p := [-945804881,1753426039,-1083557822,223200658];>t := linspace(1.61801916,1.61801917,100);>plot2d(t-1.61801916,polyval(p,t));>plot2d(t-1.61801916,xpolyval(p,t,eps=1e-17));

Informacao adicionalhelp accu Lista as funcoes do acumulador longo.

10.2 Inclusoes Garantidas

A iterac~ao residual e usada para obter soluc~oes exatas de equacoes. Se os parametrosdas equacoes nao sao exatos, nos podemos apenas esperar que sejam geradas inclus~oes

proximas a possıvel solucao.

Euler usa a funcao ilgs para obter uma inclus~ao garantida e uma inclus~ao pobre da

soluc~ao do sistema linear. A ideia foi descrita por Rump et al. Esta e uma iteracao que usa

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 95: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

10.2 Inclusoes Garantidas 95

a aritmetica de intervalos. A inclus~ao garantida segue de um Teorema de pontofixo.

Agora, nos resolveremos a equacao da ultima secao com ilgs. Os experimentos abaixomostram que nos obtemos uma inclusao muito pobre se nos assumimos que a equacao eexata. Estender intervalos de parametros leva a inclus~oes pobres ou mesmo a inclus~oes

falhas. Neste caso, os intervalos dos parametros incluem casos, onde o sistema nao possuiuma solucao.

Euler: Linhas de comando

>ilgs(A,b)˜0.99999999999999978,1.0000000000000002˜˜0.99999999999999978,1.0000000000000002˜

>ilgs(˜A˜,˜b˜)˜0.99999986,1.0000002˜˜0.99993,1.0001˜

>ilgs(A --- 0.5,b --- 0.5)Error : Pseudo inverse not good enough.Error in :if (rho>=1); error("Pseudo inverse not good enough."); endif;ˆError in function ilgs

>B:=A ---0.5; B[1,1]*B[2,2]-B[1,2]*B[2,1]˜-2.9e+006,2.9e+006˜

O metodo de inclus~ao tambem pode ser usado para sistema nao lineares, se pudermoscalcular a derivada da funcao. Euler implementa o metodo de Newton com intervalo,sendo a derivada calculada pelo Maxima.

Vamos Calcular a solucao de e−x = x. O resultado e um intervalo muito ruim. A funcaomxminewton chama o Maxima para calcular a derivada automaticamente.

Euler: Linhas de comando

>inewton("exp(-x)-x","-exp(-x)-1",1,2)˜0.56714329040978362,0.56714329040978406˜

>mxminewton("exp(-x)-x",1,2)˜0.56714329040978362,0.56714329040978406˜

O metodo de Newton com intervalos tambem esta disponıvel para funcoes de varias variaveis.No exemplo seguinte, nos resolvemos o sistema xy = 1, x2 + y2 = 4.

Como necessitamos calcular a matriz Jacobiana, nos usamos o Maxima para esta tarefa emDf em tempo de compilacao. Ver a secao sobre programacao no Euler para o uso destatecnica.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 96: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 11 Algoritmos em Euler 96

Euler: Linhas de comando

>f1:="x*y-1"; f2:="xˆ2+yˆ2-4";

>function f(v)$ x:=v[1]; y:=v[2];$ return [@:"@f1",@:"@f2"]$endfunction

>function Df(v)$ x:=v[1]; y:=v[2];$ return @:"jacobian([@f1,@f2],[x,y])";$endfunction

>inewton2("f","Df",[1,2])Column 1 to 1:

˜0.51763809020504115,0.51763809020504203˜Column 2 to 2:

˜1.931851652578135,1.931851652578138˜

Informacao adicionalmxmibisectfxy Calcula os possıveis zeros de f=f(x,y) com intervalo.

11 Algoritmos em Euler

11.1 Equacoes Diferenciais Ordinarias

Resolver Equacoes Diferenciais Ordinarias (EDO) numericamente e uma das mais importan-tes aplicacoes de programas como o Euler. Nesta secao, nos estudamos o metodo de Runge.O metodo adaptativo de Runge e um metodo para obter inclus~oes garantidas.

Vamos resolver o Problema com Valor Inicial (PVI) y′ = −y/x, y(1) = 1, pelo Metodode Runge. A solucao e y=1=x. Runge aceita uma expressao em x e y, ou uma funcao. Nospodemos sempre obter todos os valores intermediarios ou somente os valores da solucaoem pontos escolhidos. Neste ultimo caso, nos devemos indicar o numero de pontos quedeve ser calculado entre os nossos pontos escolhidos.

Euler: Linhas de comando

>x:=1:0.01:10 y:=runge("-y/x",x,1);>plot2d(x,y);>y[-1]

0.1>runge("-y/x",[1,10],1,100)

1 0.1

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 97: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

11.1 Equacoes Diferenciais Ordinarias 97

Agora, vamos resolver o PVI y′′ = −a sin(y), y(0) = 0, y′(0) = b pelo metodo adaptativo deRunge. Esta equac~ao diferencial de segunda ordem deve ser reescrita em uma equacaodiferencial de primeira ordem no plano.

d

dx

(y(x)y′(x)

)=

(y′(x)

−a sin(y(x))

)O metodo de Runge e o metodo adaptativo de Runge esperam uma funcao f=f(x,y), paracalcular y’, sendo y e y’ vetores-linha.

Euler: Linhas de comando

>function f(x,y) := [y[2],-a*sin(y[1])]>a:=1; b:=1;>x:=0:0.1:10; y:=adaptiverunge("f",x,[0,b]);>plot2d(x,y[1]);

Obtemos o primeiro zero da solucao para gerar a frequencia do pendulo. Depois tomamosuma funcao y=y(x) para ser resolvida, e resolvemos y(x)=0 pelo metodo da secante.

Euler: Linhas de comando

>function h(x)$ global b;$ v=adaptiverunge("f",[0,x],[0,b]);$ return v[1,2];$endfunction>secant("h",3,4)

3.371500709626

A solucao aproximada da EDO y′′ = −ay para o pendulo possui o seu primeiro zero em π.Tomaremos uma amplitude b para que o erro seja muito menor.

Euler: Linhas de comando

>b=0.01;>secant("h",3,4)

3.14161228882

Para resolver um Problema de Valor de Contorno y′′ = −a sin(y), y(0) = 0, y(π) = 1 noEuler, nos usamos o metodo shooting. Tomamos y′(0) = x e resolvemos y(π) = 1 para x.

Euler: Linhas de comando

>a=1;>function g(x)$ v=adaptiverunge("f",[0,pi],[0,x]);$ return v[1,2]-1;$endfunction \\ Cuidado com os $

>secant("g",1)1.521612414054

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 98: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

11.1 Equacoes Diferenciais Ordinarias 98

Euler pode plotar o campo de vetores de uma equacao diferencial com as funcoes vectorfielde vectorfield2.

Euler: Linhas de comando

>vectorfield2("y","-sin(x)",-2,2,-2,2);>function f(x,y) := [y[2],-sin(y[1])]>x:=0:0.01:10; y:=runge("f",x,[0,1]);>plot2d(y[1],y[2],add=1);

Com o Maxima, nos podemos resolver exatamente varias equac~oes diferenciais. Para asolucao geral, podemos usar o pacoteode2. Com ic1 e ic2, podemos obter as constantespara cada Problemas de Valores de Contorno (PVC).

Vamos resolver o PVI y′′ + y′ + y = sin(x), y(0) = 0, y′(0) = 1 com o Maxima e plotar asolucao usando o Euler.

Euler: Linhas de comando

>:: eq := ’diff(y,x,2)+’\diff(y,x)+y=sin(x)

d2y

dx2+dy

dx+ y = sin(x)

Veja o apostrofe na definicao da equacao. Ele evita a execucao da funcao diff.

Euler: Linhas de comando

>:: gsol := ode2(eq,y,x)-x/2 sqrt(3) x sqrt(3) x

y = %e (%k1 sin(---------) + %k2 cos(---------)) - cos(x)2 2

>:: sol := rhs(ic2(gsol,x=0,y=0,’diff(y,x)=1))-x/2 sqrt(3) x sqrt(3) x

%e (sqrt(3) sin(---------) + cos(---------)) - cos(x)2 2

>plot2d("::sol",0,2*pi);

Para obter uma inclusao garantida para um PVI, nos usamos a funcao mxmidgl. Esta funcaocalcula derivadas de altas ordens de expressoes com o Maxima. O grau de aproximacaopode ser ajustado com o parametro deg. Nos comparamos este resultado com o Maxima.

Euler: Linhas de comando

>x:=linspace(0,pi,100); y:=mxmidgl("sin(x)*y",x,1); y[-1]˜7.3890560989303,7.389056098931˜

>plot2d(x,left(y));>:: ode2(’diff(y,x)=sin(x)*y,y,x); sol := ic1(%,x=0,y=1)

1-cos(x)y = %e

>mxmeval("rhs(sol)",x=pi)7.389056098931

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 99: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

11.2 Iteracao e Recursividade 99

Este processo pode ser usado para inclusoes exatas de integrais. Nos calculamos a distribuicaonormal de Gauss.

Euler: Linhas de comando

>0.5+mxmiint("1/sqrt(2*pi)*exp(-xˆ2/2)",0,2)˜0.977249868051802,0.97724986805184˜

>normaldis(2)0.9772498730435

>xnormaldis(2)0.9772498680518

Informacao adicionalheun Uma alternativa ao metodo de Runge.

11.2 Iteracao e Recursividade

Para sequencias recursivas, o Euler possui as funcoes iterate e sequence. A formamais elementar e iterate, que realiza iteracao de uma sequencia recursiva

xn+1 = f(xn)

iniciando em algum ponto x0 ate ocorrer a convergencia. A convergencia e verificada como epsilon interno. Se a iteracao nao pode obter um ponto fixo, voce deve interromper oprocesso com a tecla ESC.

Tambem podemos inserir o numero maximo de iteracoes. Assim, a funcao retorna todos osxi indicados. A funcao funciona para numeros complexos e para iteracao com intervalos,desde que a funcao f seja uma contracao e as iteracoes iniciem bem proximas.

Euler: Linhas de comando

>iterate("cos(x)",1)0.7390851332157

>iterate("cos(x)",1+I)0.7390851332157+0i

>iterate("cos(x)",˜0.7,0.8˜)˜0.7390851332146,0.739085133216˜

>iterate("(x+2/x)/2",1,5)1.51.4166666666671.4142156862751.4142135623751.414213562373

A funcao iterate tambem pode manipular sequencias de vetores e neste caso, uma funcaoe melhor do que uma expressao.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 100: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

11.3 Transformada Rapida de Fourier (FFT) 100

Exemplo: Vamos iterar a media aritmetica-geometrica:

an+1 =√an ∗ bn, bn+1 = (an + bn)/2

Euler: Linhas de comando

>function agm(v) := return [sqrt(v[1]*v[2]),(v[1]+v[2])/2]>iterate("agm",[1,2])

1.456791031047 1.456791031047

Uma func~ao recursiva mais flexıvel e sequence, que manipula recursividade da forma

xn = f(x1, ..., xn−1, n)

A funcao iterate retorna um vetor-linha com a sequencia dos elementos. Garanta que osvalores iniciam bem proximos do necessario.

Euler: Linhas de comando

>goodformat(6,2);>sequence("x[n-1]+x[n-2]",[1,1],10) // Sequencia de Fibonacci

1 1 2 3 5 8 13 21 34 55>sequence("n*x[n-1]",1,6) // fatoriais

1 2 6 24 120 720>sequence("sum(x[n-4:n-1])/4",[1,2,3,4],10) // media movel

1 2 3 4 2.5 2.88 3.09 3.12 2.9 3>longformat>v:=sequence("sum(x[n-4:n-1])/4",[1,2,3,4],1000); v[-1]

3

Para sequencias de vetores, nos precisamos de uma funcao que calcula o novo vetor-colunaa partir do vetor-coluna anterior guardado em x.

11.3 Transformada Rapida de Fourier (FFT)

A Transformada Rapida de Fourier (FFT) e uma tecnica que avalia somas trigonometricasde modo rapido em pontos equidistantes. A operacao inversa interpola com somas de Fou-rier. Isto e util para analise de frequencia. Para a velocidade otima da funcao, o numerode pontos deve ser uma potencia de 2, ou ao menos ter somente fatores primos pequenos.Existe um notebook explicando FFT em mais detalhes.

Vamos gerar valores da funcao f(x) = sin(100x) + cos(200x), acrescentando ruıdo, paraanalisar as frequencias do resultado. A analise vai usar FFT para interpolar os valores nasraızes da unidade.

Os valores absolutos dos coeficientes mostram a contribuicao das frequencias, mas as en-tradas relevantes estao somente entre as frequencias n=1 e n=2, onde n e o numero dedados.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 101: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 12 Sequencias recursivas 101

Euler: Linhas de comando

>t:=linspace(0,2pi,1023); s:=sin(100t)+cos(200t)+normal(size(t));>f:=abs(fft(s)); plot2d(f[1:512]);

Informacao adicionalifft Inversa de FFT.fft(A) FFT bidimensional.

12 Sequencias recursivas

Secao incluıda pelos alunos do Curso de Matematica da UEL: Karina Tiemi de Melo eRodrigo Vinicius da Costa.

Progressoes aritmetica e geometrica, podem ser estudados dentro de Sequencias Recursi-vas, que engloba, sequencias: dos quadrados ou dos cubos dos numeros naturais, periodicas(como a dos algarismos da representacao decimal de um numero racional), dos coeficientesdo quociente de polinomios escritos na ordem de potencias crescentes da variavel. Existeum uso amplo das sequencias recursivas em Calculo de Diferencas Finitas. Nossa introducaoteorica das sequencias recursivas bastara para os objetivos deste mini-curso sem precisarenvolver algo mais amplo sobre equacoes algebricas lineares.

Definicao de Sequencia: Uma sequencia real e uma funcao f : N→ R que associa a cadanumero natural n ∈ N um numero real f(n) ∈ R. Tal sequencia pode ser escrita na forma

f(1), f(2), f(3), ..., f(n), ... (1)

ouu1, u2, u3, ..., un, ... (2)

A sequencia f : N → R definida por f(n) = 2n e a sequencia dos numeros pares, e oconjunto imagem e dado por:

f(N) = {2, 4, 6, 8, 10, 12, 14, 16, 18, ..., 2n, ...}

Uma sequencia e dita recursiva de ordem k se existem k numeros (reais ou complexos)a1, a2, ..., ak com ak 6= 0 e um numero m ≥ 1 tal que, para qualquer n ≥ m, vale:

f(n+ k) = a1f(n+ k − 1) + a2f(n+ k − 2) + ...+ akf(n). (3)

A relacao (3) e denominada uma equacao de recorrencia de ordem k, assim, cada termode uma sequencia recursiva de ordem k e uma combinacao dos k termos anteriores.

Exemplo 1: Uma sequencia geometrica e uma funcao f : N→ R definida por f(n) = aqn−1

sendo a e q constantes nao nulas, cujos termos sao

f(1) = a, f(2) = aq, f(3) = aq2, f(4) = aq3, ..., f(n) = aqn−1, ... (4)

e uma sequencia recursiva de ordem 1, pois

f(n+ 1) = qf(n) (5)

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 102: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 13 Sequencias recursivas no programa Euler 102

13 Sequencias recursivas no programa Euler

Para resolver o Exemplo 1 e obter a solucao geral da equacao recursiva com o programaEuler, vamos usar alguns comandos do Maxima, o que pode ser feito digitando :: antesdos comandos usados no Maxima, seguindo os passos descritos abaixo.

Devemos carregar inicialmente o pacote solve_rec e tambem a equacao recursiva:

Euler: Linhas de comando

>:: load(solve_rec);>:: eq1: f[n+1]=q*f[n];

Resolvemos a equacao recursiva apresentando a condicao inicial:

Euler: Linhas de comando

>:: solve_rec(eq1, f[n], f[1]=a)

O resultado e a formula do termo geral de uma sequencia geometrica:

fn = aqn−1

Exemplo 2: Para a sequencia aritmetica, f : N → R definida por f(n) = a+ (n− 1)r coma e r constantes, os termos sao:

f(1) = a, f(2) = a+ r, f(3) = a+ 2r, ..., f(n) = a+ (n− 1)r, ...

Neste caso, vale a relacao f(n + 1) = f(n) + r que nao esta na forma da relacao (3).Escrevendo f(n+ 2) e f(n+ 1), obtemos:

f(n+ 2) = f(n+ 1) + rf(n+ 1) = f(n) + r

Subtraindo a segunda equacao da primeira, obtemos

f(n+ 2)− f(n+ 1) = f(n+ 1)− f(n)

ou sejaf(n+ 2) = 2f(n+ 1)− f(n) (6)

Assim, mostramos que a sequencia aritmetica e uma sequencia recursiva de ordem dois.

Resolvemos tal equacao recursiva no Euler, com primeiro termo e f(1) = a, digitando

Euler: Linhas de comando

>:: eq2: f[n+1]=f[n]+r;>:: solve_rec(eq2, f[n], f[1]=a)

O resultado e fn = (n− 1)r + a, a formula do termo geral de uma sequencia aritmetica.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 103: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 13 Sequencias recursivas no programa Euler 103

Exemplo 3: O problema de Fibonacci trata sobre o numero de coelhos descendentes (emum ano) de um par de coelhos adultos, admitindo que cada par adulto gera um par a cadames e que um coelho se torna adulto 1 mes apos ter nascido. Se f(n) e o numero de paresadultos de coelhos no n-esimo mes, podemos escrever que f(1) = 1. No final do mes 1nasce um par de coelhos, mas o numero de pares adultos continua sendo apenas 1, logof(2) = 1. No final do mes 2, nasce outro par e o primeiro par nascido se torna adulto, logof(3) = 2.

O numero de pares adultos no fim do mes (n + 1) e composto dos que eram adultos nofim do mes n e dos que nasceram no fim do mes anterior, que e o numero de pares adultosnaquele mes, ou seja f(n− 1). Temos entao uma sequencia recursiva de ordem dois:

f(n+ 2) = f(n+ 1) + f(n) (7)

denominada sequencia de Fibonacci, que tambem pode ser escrita na forma de conjuntos

{1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...}

Para resolver a equacao recursiva de Fibonacci no Euler, basta digitar:

Euler: Linhas de comando

>:: eq3: f[n+2]=f[n+1]+f[n];>:: solve_rec(eq3, f[n], f[1]=1, f[2]=1)

f(n) =(√

5 + 1)n√5.2n

− (√

5− 1)n(−1)n√5.2n

Exemplo 4: Seja a sequencia dos quadrados dos n primeiros numeros naturais

f(1) = 12, f(2) = 22, f(3) = 32, ..., f(n) = n2, ... (8)

segue que

f(n+ 1) = (n+ 1)2 = n2 + 2n+ 1f(n+ 2) = (n+ 2)2 = n2 + 4n+ 4 = (n2 + 2n+ 1) + 2n+ 3

Para estes dois termos consecutivos, temos:

f(n+ 1) = un + 2n+ 1 (9)

Tomando o proximo termo, obtemos:

f(n+ 2) = f(n+ 1) + 2n+ 3 (10)

Subtraindo membro a membro a relacao (9) da relacao (10) obtemos

f(n+ 2)− f(n+ 1) = f(n+ 1)− un + 2

isto ef(n+ 2) = 2f(n+ 1)− f(n) + 2 (11)

Como a relacao (11) vale para todo n ∈ N, obtemos:

f(n+ 3) = 2f(n+ 2)− f(n+ 1) + 2 (12)

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 104: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 13 Sequencias recursivas no programa Euler 104

Subtraindo agora a relacao (11) da relacao (12), obtemos

f(n+ 3)− f(n+ 2) = 2f(n+ 2)− 3f(n+ 1) + f(n)

ou sejaf(n+ 3) = 3f(n+ 2)− 3f(n+ 1) + f(n) (13)

que e a equacao recursiva de ordem 3 para a sequencia dos quadrados dos n primeirosnaturais. Podemos resolver esta equacao recursiva no programa Euler com o codigo:

Euler: Linhas de comando

:: eq4: f[n+3]=3*f[n+2]-3*f[n+1]+f[n];:: solve_rec(eq4, f[n], f[1]=1, f[2]=4, f[3]=9)

que gera a respostafn = n2

Exemplo 5: Seja a sequencia dos cubos dos n primeiros numeros naturais

f(1) = 13, f(2) = 23, f(3) = 33, f(n) = n3, ... (14)

assim f(n+ 1) = (n+ 1)3 = n3 + 3n2 + 3n+ 1 = f(n) + 3n2 + 3n+ 1, logo

f(n+ 1)− f(n) = 3n2 + 3n+ 1 (15)

Como esta relacao e valida para todo n ∈ N, entao

f(n+ 2)− f(n+ 1) = 3(n+ 1)2 + 3(n+ 1) + 1f(n+ 2)− f(n+ 1) = 3n2 + 9n+ 7

Subtraindo membro a membro a segunda relacao da primeira, obtemos:

f(n+ 2)− 2f(n+ 1) + f(n) = 6n+ 6 (16)

Repetindo o processo usado antes, obtemos uma equacao recursiva de ordem 4

f(n+ 4) = 4f(n+ 3)− 6f(n+ 2) + 4f(n+ 1)− f(n) (17)

para a sequencia do cubos dos n primeiros numeros naturais.

Tomando n = 4 em (17), segue que f(8 = 512, pois temos um caso particular:

f(8) = 4f(7)− 6f(6) + 4f(5)− f(4) = 1372− 1296 + 500− 64 = 512

Resolvemos esta equacao recursiva com o codigo abaixo no programa Euler:

Euler: Linhas de comando

:: eq5: f[n+4]=4*f[n+3]-6*f[n+2]+4*f[n+1]-f[n];:: solve_rec(eq6, f[n])

cuja resposta e fn = n3.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 105: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 13 Sequencias recursivas no programa Euler 105

Exemplo 6: Todas as sequencias periodicas sao recursivas. Seja a sequencia dos algarismosda representacao decimal da fracao 44/333 que ficam apos a vırgula, isto e,

44

333= 0, 132 132 132 132 132 ... (18)

Esta sequencia possui imagem Imf = {1, 3, 2, 1, 3, 2, 1, 3, 2, ...} e representa uma sequenciarecursiva de ordem tres, pois para todo n ≥ 3, vale a relacao:

f(n+ 3) = f(n)

que equivale af(n+ 3) = 0f(n+ 2) + 0f(n+ 1) + 1f(n)

Vamos usar o Euler para resolver esta equacao recursiva:

Euler: Linhas de comando

>:: eq6: f[n+3]=f[n];>:: solve_rec(eq6, f[n], f[1]=1, f[2]=3, f[3]=2)

n n%i (sqrt(3) %i - 1) %i (- sqrt(3) %i - 1)

f = -------------------- - ---------------------- + 2n n n

sqrt(3) 2 sqrt(3) 2

E facil verificar que f(1) = 1, f(2) = 3 e f(3) = 2.

Exemplo 7: Sejam P = P (x) e Q = Q(x) polinomiais escritos na ordem de potenciascrescentes da variavel x, a saber

P (x) = A0 +A1x+ ...+Alx`

Q(x) = B0 +B1x+ ...+Bkxk (B0 6= 0)

tal que Q = Q(x) nao divide P = P (x) exatamente.

A divisao de P = P (x) por Q = Q(x) continua indefinidamente gerando uma serie como:

D0 +D1x+D2x2 +D3x

3 + ...+Dnxn + ...

Mostraremos que a sequencia f : N→ R tal que

f(1) = D0, f(2) = D1, ..., f(n) = Dn−1, ... (19)

e recursiva de ordem k que e grau do divisor de P = P (x).

Suponhamos que a divisao de P = P (x) por Q = Q(x) seja interrompida no termo com apotencia xn+k sendo n ≥ `− k + 1. Entao

A0 + ...+Alxl = (B0 + ...+Bkx

k)(D0 + ...+Dn+kxn+k) +R(x) (20)

Assim, todas as potencias de x emR(x) possuem graus maiores que n+k. Como n ≥ `−k+1entao ` ≤ n+ k − 1 e no lado esquerdo da equacao todos os coeficientes dos termos cujos

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 106: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 14 Uma caracterizacao das Sequencias Recursivas 106

expoentes sejam maiores que n+k−1, sao nulos, o que implica que do lado direito, todos ostermos tambem serao nulos. Assim, os coeficientes dos termos de potencias de expoentesmaiores que n+ k serao nulos.

Os expoentes das potencias de R(x) sao todos maiores que n+ k, logo, todos os termos docoeficiente de xn+k provem de

(B0 + ...+Bkxk)(D0 + ...+Dn+kx

n+k)

e com o desenvolvendo pelo produto de Cauchy, obtemos o coeficiente de xn+k, que e

Dn+kB0 +Dn+k−1B1 + ...+DnBk

Tal coeficiente e nulo, resultando na relacao:

Dn+kB0 +Dn+k−1B1 + ...+DnBk = 0

que tambem pode ser escrita na forma

Dn+k = −B1

B0Dn+k−1 −

B2

B0Dn+k−2 − ...−

BkB0

Dn

Logo, a sequencia f e recursiva de ordem k pois

f(n+ k + 1) = Dn+k

= −B1

B0Dn+k−1 −

B2

B0Dn+k−2 − ...−

BkB0

Dn

= −B1

B0f(n+ k)− B2

B0f(n+ k − 1)− ...− Bk

B0f(n+ 1)

14 Uma caracterizacao das Sequencias Recursivas

Do Exemplo 6 da secao anterior, segue uma caracterıstica das sequencias recursivas: Qual-quer sequencia recursiva de ordem k,

u1, u2, . . . , un, . . .

satisfazendo a equacao de recorrencia

un+k = a1un+k−1 + . . .+ akun (n ≥ m ≥ 1)

coincide com a sequencia dos coeficientes do resultado da divisao de uma funcao polino-mial P = P (x) por

Q(x) = 1− a1x− . . .− akxk

De fato, seja n ∈ N, satisfazendo a condicao n > k + m − 2. Multiplicando Q = Q(x) poru1 + u2x+ u3x

2 + . . .+ un+1xn, obtemos

(1− a1x− . . .− akxk)(u1 + u2x+ . . .+ uk+m−1xk+m−2 + . . .+ un+1x

n)

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 107: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 15 Series Associadas as Sequencias Recursivas 107

que e igual a

u1 + (u2 − a1u1)x+ (u3 − a1u2 − a2)x2 + ...+

(uk+m−1 − a1uk+m−2 − ...− akum−1)xk+m−2+(uk+m − a1uk+m−1 − ...− akum)xk+m−1 + ...+

(un+1 − a1un − ...− akun−k+1)xn]

− [a1un+1 + ...+ akun−k+2xn+1...+ akun+1x

n+1]

Considere agora, a primeira das expressoes entre colchetes como um polinomio P = P (x)cujo grau nao excede ` = k +m− 2 e os coeficientes nao dependem de n:

u1 + (u2 − a1u1)x+ ...+ (uk+m−1 − a1uk+m−2 − ...− akum−1)xk+m−2

Da segunda expressao entre colchetes, tem-se que (uk+m−a1uk+m−1−...−akum) e (un+1−a1un − ...− akun−k+1) sao iguais a zero, pois

uk+m = a1uk+m−1 + ...+ akum

un+1 = a1un + ...+ akun−k+1

Dessa forma, a segunda expressao acima e nula.

A terceira das expressoes entre colchetes e formada por termos que dependem de n e e degrau superior a n+ 1, e a denotaremos por Rn(x). Assim,

P (x) = (1− a1x− . . .− akxk)(u1 + u2x+ . . .+ un+1xn) +Rn(x)

onde (u1 + u2x+ . . .+ un+1xn) e o quociente e Rn(x) e o resto da divisao de P (x) por

1− a1x− . . .− akxk = Q(x)

Logo, u1, u2, . . . , un, un+1, . . . sao os coeficientes que resultam da divisao de P (x) por Q(x).

15 Series Associadas as Sequencias Recursivas

Uma serie associada a uma sequencia f : N→ R cuja imagem e f(N) = {f(1), f(2), f(3), ...},e a soma infinita dos termos de f(N), isto e,

S =

∞∑i=1

f(i) = f(1) + f(2) + f(3) + ...

Mostraremos que se f e recursiva de ordem k entao S tambem e recursiva de ordem k+ 1.

Realmente, se f e recursiva de ordem k entao:

f(n+ k) = a1f(n+ k − 1) + a2f(n+ k − 2) + ...+ akf(n)

Assim, para qualquer n ∈ N, sendo n ≥ m:

f(n) =

n∑i=1

f(i)−n−1∑i=1

f(i) = S(n)− S(n− 1)

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 108: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 16 Base associada a uma equacao de recorrencia 108

Assim,

S(n+ k)− S(n+ k − 1) = f(n+ k)

= a1f(n+ k − 1) + a2f(n+ k − 2) + ...+ akf(n)

= a1[S(n+ k − 1)− S(n+ k − 2)]

+ a2[S(n+ k − 2)− S(n+ k − 3)] + ...

+ ak[S(n)− S(n− 1)]

Somando agora S(n+ k − 1) em ambos lados da igualdade, obtemos

S(n+ k) = (1 + a1)S(n+ k − 1) + ...+ (ak − ak−1)S(n)− akS(n− 1)

Substituindo n por n+ 1 na equacao acima, obtemos:

S(n+ k + 1) = (1 + a1)S(n+ k) + ...+ (ak − ak−1)S(n+ 1)− akS(n) (n ≥ m− 1)

que e uma equacao recursiva de ordem (k + 1).

Exemplo: Consideremos agora f : N→ R como a sequencia de Fibonacci, tal que

f(n+ 2) = f(n+ 1) + f(n)

entao a sequencia S : N→ R

S(n) = f(1) + f(2) + ...+ f(n) =

n∑i=1

f(i)

e recursiva e satisfaz a relacao com as somas:

S(n+ 3) = 2S(n+ 2)− S(n)

16 Base associada a uma equacao de recorrencia

Seja a equacao recursiva de ordem k:

un+k = a1un+k−1 + . . .+ akun

Uma base associada a essa equacao e formada por k funcoes da forma un = rn com r 6= 0,de modo que, substituindo tais funcoes na equacao recursiva, obtemos

rn+k = a1rn+k−1 + a2r

n+k−2 + . . .+ ak+1rn−1 + akr

n

Simplificando esta equacao, obtemos

rk − a1rk−1 − a2rk−2 − . . .− ak−1 − ak = 0

Esta ultima equacao de ordem k e conhecida como a equacao caracterıstica da equacao re-cursiva. Pelo Teorema fundamental da Algebra, a equacao caracterıstica possui no maximok raızes reais ou exatamente k raızes complexas.

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 109: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Secao 17 Formula de Binet 109

Temos tres casos a considerar:

1. Se a equacao caracterıstica tem duas raızes reais, r1 e r2, com r1 6= r2, entao {r1n, r2n}e uma base para o espaco das solucoes da equacao recursiva dada e a combinacaolinear dos elementos desta base e a solucao geral da equacao recursiva:

un = A1 r1n +A2 r2

n

2. Se a equacao caracterıstica tem uma raiz real r dupla, isto e, r1 = r2 = r, o con-junto {rn, n.rn} e uma base para o espaco das solucoes da equacao recursiva, e acombinacao linear dos elementos desta base e a solucao geral da equacao recursiva:

un = A1 rn +A2 n.r

n

3. Se c1 e c2 sao duas raızes complexas conjugadas da equacao caracterıstica, entao acombinacao linear das potencias c1n e c2n e a solucao geral para a equacao recursiva:

un = X1 c1n +X2 c2

n

Assim, podemos escrever c1 e o seu conjugado c2 na forma polar, para obter:

c1 = r(cos(θ) + i sin(θ)), c2 = r(cos(θ)− i sin(θ))

Substituindo estas expressoes na solucao geral, obtemos

un = X1[r(cos(θ) + i sin(θ))]n +X2[r(cos(θ)− i sin(θ))]n

e calculamos a potencia dos numeros c1 e c2 na forma polar, para obter:

un = X1[rn(cos(nθ) + i sin(nθ))] +X2[r

n(cos(nθ)− i sin(nθ))]

= rn [X1(cos(nθ) + i sin(nθ)) +X2(cos(nθ)− i sin(nθ))]

= rn [(X1 +X2) cos(nθ) + (X1 −X2)i sin(nθ)]

17 Formula de Binet

A equacao recursiva (Fibonacci) un+2 = un+1+un tem equacao caracterıstica r2−r−1 = 0cujas raızes sao r1 = 1

2(1 +√

5) e r2 = 12(1 −

√5). Como r1 6= r2, a solucao da equacao

recursiva e dada pela formula de Binet:

un = A1

(1 +√

5

2

)n+A2

(1−√

5

2

)nAplicando as condicoes iniciais a esta formula, obtemos o sistema linear:

A1 +A2 = 0

A1 −A2 =2√5

Resultando em A1 =1√5

e A2 = − 1√5

, e temos a formula de Binet:

un =1√5

(1 +√

5

2

)n− 1√

5

(1−√

5

2

)n

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 110: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

Indice

: 21000, 31**, 30*, 32+, 35,, 23, 45-, 35..., 23, 28, 43, 45, 78.., 23., 18:..., 45::..., 45::=, 8, 49, 51::, 6, 8, 20, 22, 41, 43, 49:=, 7, 12, 24, 31, 41, 43, 45:, 6, 22, 41, 45, 62;, 7, 12, 23, 24, 39, 42, 45, 86, 87==, 31=, 31Broyden, 16Ctrl+CursorUp, 25Ctrl, 22EDO, 96, 97ENTER, 23, 28, 35End, 23Esc, 23Euler Help, 21Euler Math Toolbox, 5Euler, 5E, 32F5, 23, 25F9, 28FFT, 100Graficos 3D com grade, 73Graficos 3D com pontos, 73Graficos 3D com segmentos, 73Graficos de func~oes 3D, 73Graficos solidos, 73Help, 21Home, 23I$, 54Interpret, 78I, 32, 54L, 74Maxima Documentation, 27Maxima, 5Nelder-Mead, 16, 76

Open Demos, 27, 30Open Documentation, 27Open Examples, 27Open Introduction, 21PNG, 25, 36PVC, 98PVI, 96–98Problema com Valor Inicial, 96Problemas de Valores de Contorno, 98Quick Examples, 27Shift, 23Sistemas lineares, 15TAB, 22Transformada Rapida de Fourier, 100Valores singulares, 72Version Information and Update, 21$, 22, 33, 42, 45, 81%e, 32%i, 32, 54%pi, 32%, 9, 32, 81abrir um arquivo, 91abrir um notebook, 25, 91abs(z), 55acrescentar um comentario, 23adaptativa, 37add=1, 35algoritmo Simplex, 69algoritmo de Broyden, 16algoritmo de Gauss, 65algoritmo de Nelder-Mead, 75algoritmo de Newton para inclus~oes, 75algoritmo rapido de Newton, 75amb=0.1, 73anaglyph, 73, 74and, 83, 85anexar matrizes, 91arg(z), 55arg1,arg2,..., 79argn, 79args(), 86, 87aritmetica de intervalos, 14, 55, 95arquivos externos, 20, 27arquivos, 20associac~ao, 8, 24associac~oes, 7

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 111: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

INDICE 111

associar func~oes, 24associar um valor, 31associar, 7, 9associa, 9at, 9, 14, 46, 53autovalores muito grandes, 93autovalores muito pequenos, 93autovalores, 71autovalor, 72autovetores, 71avalia as express~oes, 24avaliar as express~oes, 29avaliar express~oes, 9avaliar uma string, 8a, 91bin(), 43bin(n,m), 64binomial, 43binsum, 90break, 83, 84cd(...), 92chamadas recursivas, 85cheb, 86chidis, 90chitest, 92clear var, 32clipboard, 20, 23coeficientes de Fourier, 87cols(A), 63comando close, 91comando do Euler, 6comando open, 91comando para usar o Maxima, 6comandos multi-linhas, 23comentarios, 79comments off, 79comment, 27, 78configurar variaveis, 49conj(z), 55contornos sombreados, 76cos, 32crossproduct, 67cumsum, 17curvas no plano, 9default view, 35define, 41, 47degformat(flag), 31degprint(x), 31deg, 98

demos format, 31demos, 26demo, 26det(A)=0, 67dev, 92diag(A,k), 63diferenciac~ao numerica, 37dir, 92distribuic~ao binomial, 90distribuic~ao normal, 90distribuic~oes, 90e booleano, 85editor externo, 28editor interno, 28editor, 23, 28edit, 23eigenspace, 71eigenvalues, 71eigen, 71elemento a elemento, 17, 18else, 82embaralha, 63endcomment, 27, 78endfunction, 28, 40endif, 82entry, 25eof, 92epsilon interno, 82epsilon, 31equac~ao diferencial, 97equac~oes diferenciais, 48, 98equispace(a,b,n), 63erf, 90error(String), 85erros aleatorios, 69evaluate, 49, 86example, 26exemplos, 26expand(a,f), 57expand, 14, 44express~ao, 8, 9express~oes, 9, 12exprvar(), 87expr, 10, 40extens~ao .en, 25extens~ao .e, 27extrema(A), 66f3daxis, 74f=f(x), 9

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 112: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

INDICE 112

f=f(x,y), 74formula de Simpson, 56fdis, 90fechar um arquivo, 91fextrema, 38fft(A), 101fillcolor(n,m), 74find, 80fit, 68float(), 43float, 6floor, 31fmax, 38fmin, 38formato PNG, 25fpprec, 43fscale=0, 73func~ao binomial, 17func~ao embutida, 26func~ao recursiva, 100func~oes de distribuic~ao, 90func~oes recursivas, 85function ..., 41function, 28, 39, 40fvar(...), 86fvar, 86g$, 33gerar arquivos, 23getline, 92getvectorline, 91getvector, 91grafico na janela de texto, 36graficos 3D, 73graficos de barras, 9graficos de dados, 9graficos de pontos, 9graficos interativos, 34grade, 73help UnitsInEuler, 34help accu, 94help round, 30help sin, 30help string, 26heun, 99histograma, 89histo, 89hue=1, 73hue=2, 74ic1, 98

ic2, 98ifft, 101if, 82, 83ilgs, 94, 95ilpsolve, 70image(A), 68imagens, 25imprimir um grafico, 25inclus~ao garantida proxima, 76inclus~ao garantida, 14, 57, 94, 95inclus~ao mais proxima, 56inclus~ao pobre da soluc~ao, 94inclus~ao proxima, 14inclus~oes falhas, 95inclus~oes garantidas, 55, 96inclus~oes pobres, 95inclus~oes proximas, 94index, 85input, 58insimg, 36integral numerica, 37integrate, 37interromper um calculo longo, 23intsimplex, 70inv(A), 67invtdis, 90iscomplex, 32isfunction, 86isreal, 32item, 28iterac~ao residual, 93, 94iterate, 99, 100jacobi(A), 72janela de texto, 20, 22janela grafica, 20–22, 25, 34kernel(A), 68, 71kg$, 33laco duplo, 84laco externo, 84laco interno, 84lacos em outros lacos, 84lacos, 82, 83laco, 19ligados, 74ligar, 74linguagem matricial, 17, 19, 20, 69linha de comando, 19, 21, 22linha de status, 22, 26linhas de ajuda, 26

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 113: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

INDICE 113

linspace(a,b,n), 63list abc, 27list string, 26listvar cos, 32listvar, 32list, 24, 86ln, 29load, 27, 28, 78log10, 29log, 29longformat, 54lu(A), 68m$, 33metodo adaptativo de Runge, 96metodo da secante, 97metodo de Broyden, 75metodo de Gauss, 37, 65metodo de Jacobi, 72metodo de Newton com intervalo, 95metodo de Romberg, 37metodo de Runge, 96metodo de Simpson, 37, 57metodo de inclus~ao, 95mal condicionada, 93mapeada, 86mapear, 85, 86map, 53, 58, 85, 86matrixpower(A,n), 67matriz aleatoria, 91matriz mal condicionada, 93matriz simetrica, 72max(A), 66mean, 92mediantest, 92menu Help, 26menu help, 22menu options, 25min(A), 66modo de compatibilidade, 9, 41mover a janela grafica, 35movimento browniano, 17, 75multi-linhas, 28mxmdiff, 11mxmeval, 38, 50, 51mxmget, 8, 51, 52mxmibisectfxy, 96mxmidgl, 98mxmiint, 57mxminewton, 57, 95

mxmintegrate, 11mxmnewton, 37, 49mxmset, 8, 49, 51mxmsolve, 11mxm, 13, 38, 49, 50, 88numero de dıgitos, 43numeros aleatorios, 17, 89, 91, 92normaldis, 90normalsum, 90notebook, 22, 25nova linha, 91ode2, 98ordem de execuc~ao, 25or, 83, 85ou booleano, 85out of the box, 85pacote LPSOLVE, 70parametros associados, 9, 41parametros ponto e vırgula, 87pasta atual, 25, 27, 91pasta de arquivos, 91pasta de instalac~ao do Euler, 91pasta do programa, 25pasta do usuario, 25pi, 30, 32plot limits, 9plot range, 39plot2d, 9, 24, 35, 55, 86plot3d, 73, 76, 86plots interativos, 74points=1, 73, 75polinomio caracterıstico, 71polyadd, 60polycons, 60polydiv(p,q), 60polyfit, 69polysolve, 71polytrunc, 60ponto e vırgula, 7, 12, 24, 39, 42, 43, 60por referencia, 81printf, 33printhex, 31print, 30, 33produto elemento a elemento, 63produto escalar exato, 93produto escalar, 66produto vetorial, 67programas interativos, 58putchar(10), 91

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre

Page 114: Euler versao 9.6: Introduc¸˜ ao˜ · ˜Matem ´set/2010 1.1 Calculando com o Euler e com o Maxima 6 1.Um comando do Eulerinicia com um simples >no prompt. 2.O comando para usar

Eule

rv.

9.6:

Intr

oduc

ao-M

atem

atic

a/U

EL-s

et/2

010

INDICE 114

quase singular, 93quebrar a linha, 23random, 89rank(A), 68ranktest, 92ratsimp, 44readmatrix, 91recursivo, 85red/cyan, 73redim(A,n,m, 63referencia completa, 26referencia, 26remove, 92remvalue(var), 32, 42remvalue, 8repeat, 83reset(), 74rhs, 53round, 31rows(A), 63r, 35, 91saıda de varias variaveis, 24saıda grafica, 21salvar um notebook, 91scale=1, 73seed, 89sequencias recursivas, 19, 99sequence, 99, 100shooting, 97shuffle, 63, 90sign, 82simplex, 69, 70sinc, 36, 79singular, 16sin, 30size(A), 63size, 32skipped, 91soluc~oes exatas, 34, 48, 94solve, 9, 14, 37, 48, 52sort(v), 66sort, 80sqrt, 29strfind, 59, 85string, 34str, 50subexpress~oes, 9subst, 9superfıcie, 73

svdimage(A), 68svdkernel(A), 68svdsolve, 16, 68tabletest, 92tcomparedata, 92tdis, 90tempo de compilac~ao, 50, 76, 88teste T-Student, 92then, 82tipos de dados, 30tolower, 59totalmax(A), 66totalmin(A), 66toupper, 59trigsimp, 44typeof, 32type, 41, 51useglobal, 86user=1, 74valores singulares, 68varanalysis, 92variaveis definidas, 49variaveis globais, 39, 49, 77, 79, 81vectorfield2, 98vectorfield, 98viewangle(), 74viewdistance(), 74viewheight(), 74wilcoxon, 92wire=1, 73, 74writematrix, 91write, 91w, 91x=, 52xeigenvalue(A,u), 72xlgs, 94x, 8, 9, 40zero de f, 16zerorounding(0), 54zoom in, 35zoom out, 35zoom(5), 74zoom, 74

Tutorial do Euler versao 9.6: Introducao - Traducao livre realizada por Ulysses Sodre