367

Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Embed Size (px)

DESCRIPTION

Gentil Lopes - PROGRAMANDO A HP 50 G - Com Programação Simbólica (2ª Edição Revisada e Ampliada 2015); Gentil, o iconoclasta 2ª edição Boa Vista-RR - Edição do autor 2015Copyrightc 2014 Gentil Lopes da Silva: Todos os direitos reservados ao autor. Para adquirir este livro impresso: Site do autor→ www.profgentil.com email → [email protected]. Editoração eletrônica e Diagramação: Gentil Lopes da Silva. Capa: Gentil Lopes da Silva

Citation preview

Page 1: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)
Page 2: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)
Page 3: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

PROGRAMANDO a HP 50g

(Com Programacao Simbolica)

Gentil, o iconoclasta

2a edicao

Boa Vista-RREdicao do autor

2015

Page 4: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)
Page 5: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Prefacio a 1.a Edic~ao

A motivacao para escrever o presente livro foi tripla. Em 1996 eu meencontrava na UFSC quando fui solicitado, pelos alunos da fısica e engen-haria, a ministrar um curso de programacao da HP ; quando, na ocasiao,tive a oportunidade de escrever uma apostila “Programando a HP 48 ” paraconduzir o curso. Em 2009 encontro-me na UFRR ministrando a disciplinaCalculo Numerico, na qual decidi adotar a HP 50g . Reescrevi a apostilaadaptando-a para a HP 50g e postei uma versao em minha homepage. Numperıodo de dois anos aproximadamente recebi email’s de varias partes doBrasil de usuarios do meu trabalho − devo admitir que a apostila fez bas-tante sucesso. Isto me motivou a transformar o referido trabalho no presentelivro. Este trabalho foi escrito tomando por base “a velha apostila”, suaadaptacao e o Guia do Usuario-HP.

No que diz respeito a eficiencia da maioria dos alunos em utilizar osrecursos disponıveis na calculadora − pelo que tenho observado − e a mesmade um proprietario de uma possante ferrari que, no entanto, se deslocaem um monociclo.

Creio que o conteudo deste livro e o essencial para quem se inicia em pro-gramacao (alias este curso se dirige a principiantes). E importante salientarque iremos aprender a programar nao somente a HP 50g , como tambem,em decorrencia, outras linguagens de computacao, como por exemplo, PAS-CAL, MATLAB, C++, etc†. Estou salientando este fato devido ao pre-conceito generalizado existente a respeito da programacao de calculadorascomparado a de microcomputadores − preconceito este que so se explicaem funcao da ignorancia de quem desconhece que essencialmente nao hadiferenca entre programar uma calculadora e um microcomputador (nas lin-guagens supramencionadas, por exemplo). Inclusive devido a portabilidade(pode-se carrega-la no bolso, ou na bolsa, como queiram) e que eu pensoque os pais deveriam dar a seus filhos, juntamente com o vıdeo-game, umacalculadora programavel, pois desta forma estao lhes abrindo as portas deuma alternativa profissional (e ainda porque a programacao desenvolve ainteligencia, logicamente falando).

No prefacio do meu primeiro livro ([4]), em 1999, escrevi:

“Ha algum tempo tenho o sonho de ver estudantes, de todos os nıveis,com calculadoras programaveis em sala de aula e programando os problemasem tempo real.”

Este livro se constitui num auxılio para que este sonho se torne realidade.

Por mais este trabalho concluido louvo a Fonte infinita e inexaurıvel.Gentil, o iconoclasta

(Boa Vista-RR/Julho-2011)

†Ja que a logica (estrutura) de programacao e a mesma.

3

Page 6: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Prefacio a 2.a Edic~ao

O diferencial desta segunda edicao em relacao a anterior consta dosseguintes ıtens: Programacao simbolica (ou algebrica), Aplicacoes a matema-tica financeira (estamos criando uma nova calculadora financeira, a HP 12G ),APlicacoes a Estatıstica, Aplicacoes ao Calculo Numerico, Limites, Derivadase Integral. Por oportuno, o presente livro pode ser adotado nestas disci-plinas, juntamente com um livro-texto.

Tenho ao longo do tempo recebido varios email’s relativos tanto a apos-tila (.pdf), embriao deste livro, quanto ao livro propriamente − primeiraedicao. Vou me permitir aqui reproduzi apenas um deles que, juntamentecom outras variaveis, motivou-me a debrucar-me (com denodo/“fez a obrigacao

com forca”) durante varios meses na elaboracao desta segunda edicao:

Gentil Lopes <[email protected]>

Livro HP50g1 mensagem

Cleber Pertel <[email protected]> 9 de maio de 2013 22:11

Para: [email protected]

Professor Gentil,Chamo-me Cleber e sou academico do curso de Engenharia Quımica

da Universidade Federal do Parana. Estou escrevendo para o senhor paraparabeniza-lo pela sua obra “Programando a HP - 50g”. Esse livro e fantas-tico! Tem me ajudado muito. Confesso que quando necessitei comprara referida calculadora, senti-me extremamente ignorante. Tinha a ferrari,mas me sentia andando num monociclo. O seu livro fez toda a diferenca nocaminho que percorri para adentrar no fantastico mundo da programacao.Embora meus passos ainda sejam modestos, tornaram-se firmes gracas asua preciosa ajuda. Embora nao seja seu aluno fisicamente, sinto-me tal equal, pois o senhor, atraves do seu livro, tornou-se indispensavel em minhavida academica, da mesma forma que os mestres que possuo na universi-dade. Infelizmente nao estamos proximos, pois eu gostaria muito de umautografo seu, mas, de qualquer forma, receba com estas palavras meu ca-rinho e gratidao por uma obra tao rica que, humildemente, fala aos iniciantes(categoria na qual estou incluıdo) e, mais do que isso, nos abre as portas dointeresse e da curiosidade para adentrar nesse mundo ımpar que o seu livroconduz-nos os primeiros passos, quando estes ainda sao vacilantes.

Que Deus o abencoe!Um forte abraco, com votos de paz,Cleber Pertel

4

Page 7: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Sumario

1 Introducao a Programacao 9

1.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.2 Sinalizadores . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.3 Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.3.1 Funcoes para numeros reais . . . . . . . . . . . . . . . 13

1.3.2 Menu de comandos da pilha . . . . . . . . . . . . . . . 14

1.4 Programacao de formulas . . . . . . . . . . . . . . . . . . . . 15

1.5 Para armazenar ou nomear um programa . . . . . . . . . . . 17

1.6 Para executar um programa . . . . . . . . . . . . . . . . . . . 18

1.7 Para visualizar ou editar um programa . . . . . . . . . . . . . 20

1.8 Executando um programa passo-a-passo (DBUG) . . . . . . . . 21

1.9 Exibindo variaveis de entrada e saıda . . . . . . . . . . . . . . 22

1.10 Excluindo uma variavel . . . . . . . . . . . . . . . . . . . . . 23

� Apendice: Criando Pastas, Movendo e Renomeando Arquivos . . 23

� Apendice: Transmitindo Dados Entre Duas HP 50g . . . . . . . 31

2 Listas e Matrizes 35

2.1 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.1.1 Criando listas . . . . . . . . . . . . . . . . . . . . . . . 35

2.1.2 Manipulacao de listas . . . . . . . . . . . . . . . . . . 36

2.1.3 Operacoes com listas de numeros . . . . . . . . . . . . 37

2.1.4 O menu MTH/LIST . . . . . . . . . . . . . . . . . . . 38

2.2 Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

2.2.1 Criando e montando matrizes . . . . . . . . . . . . . . 38

2.2.2 Desmontando matrizes . . . . . . . . . . . . . . . . . . 40

2.2.3 Inserindo linhas e colunas . . . . . . . . . . . . . . . . 41

2.2.4 Extraindo linhas e colunas . . . . . . . . . . . . . . . . 41

2.2.5 Extraindo e substituindo elementos em matrizes . . . 42

2.2.6 Calculo de Matrizes com Elementos Algebricos . . . . 45

• Catalogo de comandos . . . . . . . . . . . . . . . . . . . . . 46

5

Page 8: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

3 Estruturas de Programacao 53

3.1 Estruturas cıclicas . . . . . . . . . . . . . . . . . . . . . . . . 54

3.1.1 FOR - NEXT . . . . . . . . . . . . . . . . . . . . . . . 54

� Subrotinas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

3.1.2 FOR - STEP . . . . . . . . . . . . . . . . . . . . . . . 58

3.1.3 FOR - NEXT’s concatenados . . . . . . . . . . . . . . 63

3.1.4 WHILE - REPEAT - END . . . . . . . . . . . . . . . 67

3.2 Estruturas Condicionais . . . . . . . . . . . . . . . . . . . . . 71

3.2.1 IF - THEN - END . . . . . . . . . . . . . . . . . . . . 71

3.2.2 IF - THEN - ELSE - END . . . . . . . . . . . . . . . . 72

3.3 Operadores logicos relacionais . . . . . . . . . . . . . . . . . . 78

4 PROGRAMACAO SIMBOLICA 83

4.1 Introducao: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

4.2 Configuracoes CAS . . . . . . . . . . . . . . . . . . . . . . . . 84

� O Desafio do Seculo . . . . . . . . . . . . . . . . . . . . . . . 87

4.3 Progressoes Aritmeticas de Ordem m . . . . . . . . . . . . . . 89

4.4 Progressoes Geometricas de Ordem m . . . . . . . . . . . . . 103

4.4.1 Encontrando combinacoes . . . . . . . . . . . . . . . . 106

� O Desafio da Decada . . . . . . . . . . . . . . . . . . . . . . 106

4.5 Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

5 APLICACOES A MATEMATICA FINANCEIRA 119

5.1 Breve comparacao entre a HP 50g e a HP 12C . . . . . . . . 119

5.2 Aplicacoes a Matematica Financeira . . . . . . . . . . . . . . 123

5.2.1 A HP 50g como Calculadora financeira . . . . . . . . 126

5.3 Valor Atual de um Conjunto de Capitais . . . . . . . . . . . . 132

5.4 Sequencia Uniforme de Pagamentos . . . . . . . . . . . . . . . 135

5.4.1 Calculo de prestacoes . . . . . . . . . . . . . . . . . . 135

5.4.2 Calculo da taxa de juros . . . . . . . . . . . . . . . . . 139

5.4.3 Capitalizacao composta em perıodos fracionarios . . . 145

5.5 Series Nao Uniformes . . . . . . . . . . . . . . . . . . . . . . . 151

5.5.1 Series com prestacoes diferentes . . . . . . . . . . . . . 151

5.5.2 Sistemas de amortizacao (PRICE) . . . . . . . . . . . 166

6 APLICACOES A ESTATISTICA 173

6.1 Series Estatısticas . . . . . . . . . . . . . . . . . . . . . . . . 174

6.1.1 Distribuicao de frequencia-variavel discreta . . . . . . 174

6.1.2 Distribuicao de frequencia-variavel contınua . . . . . . 178

6.1.3 Frequencia relativa de um elemento da serie − fr . . . 181

6.1.4 Frequencia acumulada de um elemento da serie − Fi. 182

6.1.5 Frequencia acumulada relativa de um elemento da serie− F

Ri. . . . . . . . . . . . . . . . . . . . . . . . . . . 183

6.1.6 Frequencia relativa de um elemento da serie − fr . . . 184

6

Page 9: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

6.1.7 Frequencia acumulada de uma classe − Fi. . . . . . . 184

6.1.8 Frequencia acumulada relativa de uma classe − fRi

. . 1846.2 Medidas de Tendencia Central . . . . . . . . . . . . . . . . . 186

6.2.1 Somatorio − notacao sigma (∑

) . . . . . . . . . . . . 186

6.3 Medias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

6.3.1 Media aritmetica simples . . . . . . . . . . . . . . . . 190

6.3.2 Media aritmetica ponderada . . . . . . . . . . . . . . . 190

6.3.3 Mediana . . . . . . . . . . . . . . . . . . . . . . . . . . 191

6.3.4 Moda . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

6.4 Medidas de Dispersao . . . . . . . . . . . . . . . . . . . . . . 200

6.4.1 Desvio medio simples . . . . . . . . . . . . . . . . . . 200

6.4.2 Variancia e Desvio Padrao . . . . . . . . . . . . . . . . 205

6.5 Ajustamento de Reta e Correlacao . . . . . . . . . . . . . . . 208

6.5.1 A reta de mınimos quadrados . . . . . . . . . . . . . . 208

6.5.2 Correlacao linear . . . . . . . . . . . . . . . . . . . . . 211

7 APLICACOES AO CALCULO NUMERICO 215

7.1 Interpolacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

7.1.1 Interpolacao de Lagrange . . . . . . . . . . . . . . . . 220

7.1.2 Interpolacao de Newton . . . . . . . . . . . . . . . . . 227

� Conceito de Diferenca Dividida . . . . . . . . . . . . . . . . 227

� Formula de Newton . . . . . . . . . . . . . . . . . . . . . . . 231

7.1.3 Interpolacao de Gregory-Newton . . . . . . . . . . . . 233

� Conceito de Diferenca Finita . . . . . . . . . . . . . . . . . . 233

� Formula de Gregory-Newton . . . . . . . . . . . . . . . . . . 237

7.2 Integracao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

7.2.1 Regra dos trapezios . . . . . . . . . . . . . . . . . . . 241

7.2.2 Primeira regra de Simpson . . . . . . . . . . . . . . . 245

7.2.3 Segunda regra de Simpson . . . . . . . . . . . . . . . . 246

7.2.4 Quadratura gaussiana . . . . . . . . . . . . . . . . . . 248

7.2.5 Integracao dupla . . . . . . . . . . . . . . . . . . . . . 254

7.3 Equacoes Diferenciais Ordinarias . . . . . . . . . . . . . . . . 260

7.3.1 Problema de valor inicial (PVI) . . . . . . . . . . . . . 262

7.3.2 Metodos baseados em serie de Taylor . . . . . . . . . . 264

7.3.3 Metodo de Euler . . . . . . . . . . . . . . . . . . . . . 2657.3.4 Metodo de Taylor de ordem p = 2 . . . . . . . . . . . 270

7.3.5 Metodos de Runge-Kutta . . . . . . . . . . . . . . . . 274

8 TRACANDO GRAFICOS 283

8.1 Grafico de funcoes . . . . . . . . . . . . . . . . . . . . . . . . 283

8.1.1 Gerando uma tabela de valores para uma funcao . . . 286

8.2 Gerando plotagens com programas . . . . . . . . . . . . . . . 288

8.2.1 Exemplos de plotagens geradas por programas . . . . 295

8.3 Desenhos via programacao . . . . . . . . . . . . . . . . . . . . 305

7

Page 10: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

8.3.1 Exemplos de programas usando as funcoes de desenho 3068.4 Animacao de Graficos e Figuras . . . . . . . . . . . . . . . . . 3098.5 Plotagem de Superfıcies . . . . . . . . . . . . . . . . . . . . . 314

� A funcao MAP . . . . . . . . . . . . . . . . . . . . . . . . . 315� Apendice: Personalizando o teclado . . . . . . . . . . . . . . 316

9 CALCULO, ALGEBRA E ARITMETICA 3199.1 O menu ALG (Algebrico) . . . . . . . . . . . . . . . . . . . . 3199.2 O menu ARITHMETIC . . . . . . . . . . . . . . . . . . . . . 3239.3 O menu CALC (Calculo) . . . . . . . . . . . . . . . . . . . . 3309.4 Configuracoes CAS . . . . . . . . . . . . . . . . . . . . . . . . 3429.5 Resolucao de Equacoes . . . . . . . . . . . . . . . . . . . . . . 348

∗ ∗ ∗Apenas um pedido

Este espaco ficaria em branco, decidi aproveita-lo para fazer um pedidoao eventual leitor.

Dediquei muitos anos de trabalho ate chegar no presente livro, nao tivenenhum apoio ou incentivo institucional∗; inclusive em varias oportunidadesdeixei de ganhar dinheiro em minha Universidade − nao participando de“projetos mil” − para dispor de mais tempo para me dedicar a escrita demeus livros. Para publicar todos eles†, a excecao do primeiro (ver email p.

117), tomei dinheiro emprestado no Banco a juros, o que sigifica que devovende-los para saldar minhas dıvidas.

Como disse, postei gratuitamente uma versao deste livro (da primeiraedicao) na internet, esta apostila circula o Paıs e serve a milhares de estu-dantes; isto creio pelos email’s que tenho recebido.

Muitos destes email’s sao de agradecimento; diante do exposto o pedidoe que o estudante que porventura adquirir este livro nao permita ou incentivea copia xerox do mesmo (esta e tambem uma forma de me agradecer portodos estes anos de empenho e dedicacao) uma vez que e tao facil adquirı-lono formato impresso:

www.profgentil.comAntecipadamente agradeco a compreensao.

O Autor

∗Por exemplo, entreguei uma versao da primeira edicao deste livro a editora de minhaUniversidade (UFRR) e apos dois anos nao me deram nem satisfacao. Tambem submetium outro meu, de matematica (Espacos Metricos), novamente “nao fui contemplado”.

†Na pagina 352 exponho a capa deles. Na p. 356 exponho o “baner” de um “queimao”que realizei como um protesto ao descaso em relacao as minhas obras − queimei, literal-mente falando, dezenas de livros em uma fogueira. Na biblioteca da Universidade constaum unico exemplar do livro Programando a HP 50g , doado por mim. Do livro Espacos

Metricos − elogiado ate pelo professor Ubiratan D’Ambrosio (frase que encima o baner)− como eu nao doei nenhum exemplar, nao consta nenhum exemplar na biblioteca.

8

Page 11: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Capıtulo 1Introducao a Programacao

1.1 Introducao

Programar a calculadora significa introduzir em sua memoria (RAM−Random Access Memory − memoria de acesso aleatorio) uma serie de ins-trucoes e comandos para que ela os execute sequencialmente, cumprindoalguma tarefa especıfica. Por exemplo, resolver uma equacao quadratica,multiplicar ou dividir polinomios, imprimir textos, elaborar um grafico, to-car musica, etc.

Para tanto e necessario que as instrucoes e os comandos sejam digitadosno padrao sintatico da linguagem da calculadora e dispostos sequencialmentena ordem em que devem ser executados. A fim de que a execucao seja per-feita e apresente os resultados objetivados com precisao, nao basta atenderestes requisitos. E preciso que o programa nao contenha erros de logica,cuja deteccao nao e feita pela calculadora, que esta preparada para apontarsomente erros de sintaxe.

Os recursos de programacao postos a nossa disposicao pela calculadoraHP 50g sao excepcionalmente valiosos e variados e a melhor forma de con-hece-los, entender sua finalidade e alcance e fixa-los em nossa memoria eatraves da pratica.

Embora mencionada como uma calculadora por causa de seu formatocompacto similar aos dispositivos de calculo manuais tıpicos, a HP 50g deveser vista como um computador programavel/grafico.

Programacao estruturada

A HP 50g encoraja o uso de programacao estruturada. Cada programapossui apenas um ponto de entrada: seu inıcio. Tambem possui apenas umponto de saıda: seu final. Nao existem rotulos dentro de um programa paradesvios e, portanto, nao existem comandos GOTO (ir para).

9

Page 12: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

1.2 Sinalizadores

Um importante conceito − imprescindıvel − para o usuario da HP e o desinalizadores (ou flags).

Um sinalizador e um valor Booleano que pode ser ativado ou desativado(verdadeiro ou falso), que especifica uma dada configuracao da calcu-ladora ou uma opcao em um programa. Os sinalizadores na calculadorasao identificados por numeros. Existem 256 sinalizadores, numerados de -128 a 128. Sinalizadores positivos sao chamados de sinalizadores de usuariose estao disponıveis para programacao pelo usuario. Os sinalizadores repre-sentados pelos numeros negativos sao chamados de sinalizadores de sistemae afetam a forma que a calculadora opera. Para ver a configuracao atual dosinalizador de sistema pressione a tecla MODE

H:

CALCULATOR MODES�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Operating Mode.. RPNNumber Format...Std FM,Angle Measure...RadiansCoord System....RectangularXBeep Key Click XLast Stack

Choose calculator operating Mode

FLAGS CHOOS CAS DISP CANCL OK

e depois a tecla virtual FLAGS . Voce obtera um visor denominado

SYSTEM FLAGS listando os numeros dos sinalizadores e as configuracoes.

Um sinalizador pode ser considerado ativado se voce ver a marca deselecao (X) na frente do numero do sinalizador. Caso contrario, o sinali-zador nao esta ativado. Para alterar o status de um sinalizador de sistemapressione a tecla virtual XCHK enquanto o sinalizador que voce desejaalterar e ressaltado. Voce pode usar as teclas de setas para cima e parabaixo ( △ △

) para se deslocar ao redor da lista de sinalizadores do sistema.

Exemplo de configuracao de sinalizador: Por exemplo, o sinalizador02 quando ativo (X) disponibiliza uma constante na sua forma numerica enao como sımbolo. Por exemplo, ative este sinalizador e, apos, coloque π napilha. Depois desative-o e coloque, novamente, π na pilha.

Como mais um exemplo: Ative a trava automatica do Modo Alfa parasomente uma digitacao de ALPHA (ao inves de duas). Para fazer isto,ative o sinalizador 60.

Ainda: Com o sinalizador 105 desativado teremos√2 na pilha, caso

contrario, teremos 1.4142135 . . . .

Importante: A calculadora opera (trabalha) em dois modos: pilha (RPN)e algebrico (ALG). Neste livro optaremos, do inıcio ao fim (sempre), pelomodo pilha.

10

Page 13: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

A logica operacional RPN (Reverse Polish Notation, ou Notacao PolonesaReversa) e baseada numa logica matematica nao ambıgua que nao utilizaparentesis, conhecida como “Notacao Polonesa”, desenvolvida pelo logicopolones Jan Lukasiewicz (1878-1956). Enquanto a notacao algebrica con-vencional posiciona os operadores entre os numeros ou variaveis (exemplo):

2 + 3 ou a+ b

a notacao de Lukasiewicz posiciona os operadores antes dos numeros ouvariaveis: + 2 3 ou + a b.

Para modificar a eficiencia da pilha a HP modificou essa notacao de formaque os operadores sejam posicionados depois dos numeros (ou variaveis):

2 3 + ou a b +

Essa e a razao do nome Notacao Polonesa Reversa.A bem da verdade, optando pelo modo RPN tambem estaremos usufruindo

do modo algebrico; digo, dentro do modo RPN esta embutido o modoalgebrico − e possıvel tambem trabalharmos no modo algebrico.

Caso sua calculadora esteja no modo algebrico − isto estara indicadona primeira linha do visor a direita, com o distintivo ALG − para coloca-lano modo pilha pressione a tecla MODE

H:

CALCULATOR MODES�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Operating Mode.. AlgebraicNumber Format...Std FM,Angle Measure...RadiansCoord System....RectangularXBeep Key Click XLast Stack

Choose calculator operating Mode

FLAGS CHOOS CAS DISP CANCL OK

Agora pressione a tecla virtual (menu) CHOOS (escolher) para obter:

CALCULATOR MODES�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Operating Mode.. AlgebraicNumber Format...Std FM,Angle Measure...RadiansCoord System....RectangularXBeep Key Click XLast Stack

Choose calculator operating Mode

FLAGS CHOOS CAS DISP CANCL OK

Algebraic

RPN

Agora basta selecionar o modo RPN: △e pressionar OK OK (2×).

11

Page 14: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

1.3 Menus

O que chamamos de Menus sao os seis pequenos retangulos na parteinferior do visor, por exemplo,

CALCULATOR MODES�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Operating Mode.. RPNNumber Format...Std FM,Angle Measure...RadiansCoord System....RectangularXBeep Key Click XLast Stack

Choose calculator operating Mode

FLAGS CHOOS CAS DISP CANCL OK

Os seis menus (retangulos)

associados com as seis teclas do menu, F1 ate F6:

F1 A F2 B F3 C F4 D F5 E F6 E

Os seis retangulos exibidos na parte inferior do visor serao alterados de-pendendo de qual menu esta sendo exibido. Mas F1 A sera sempre associadacom o primeiro retangulo exibido, F2 B com o segundo e assim por diante.

Uma vez que a calculadora tem apenas seis teclas associadas com osmenus, serao apenas exibidos 6 sımbolos de cada vez. Entretanto, um menupode ter mais do que seis entradas. Cada grupo de 6 entradas e chamado dePagina de menu. Por exemplo, aperte a tecla TOOL

I, este menu, conhecido

como menu TOOL,

tem oito entradas arranjadas em duas paginas. A pagina seguinte contendoas duas entradas seguintes do menu fica disponıvel ao pressionar a tecla NXT

L

Nas duas paginas seguintes exibiremos duas tabelas que sao da maximaimportancia para a programacao da HP.

Portanto, Deus nao e transcendente

ao universo, nem pode ter personalidade,

providencia, livre vontade e propositos.

Entao, mesmo o homem bom, apesar de

que ame a Deus, nao pode esperar que

Deus o ame em retorno. (Espinoza)

12

Page 15: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

1.3.1 Funcoes para numeros reais ( MTH REAL )

A tabela a seguir mostra os comandos, sua descricao e exemplos. Antes,veja a Nota apos a tabela.

Comando/DescricaoExemplos

Antes DepoisABS.Valor absoluto

CEIL.Menor inteiro maior ou igualao argumento.

FLOOR.Maior inteiro menor ouigual ao argumento.

FP.Parte fracionaria do argumento.

IP.Parte inteira do argumento.

MANT.Mantissa do argumento.

MAX.O maior valor entre doisnumeros

MIN.O menor valor entre doisnumeros.

MOD.Resto da divisao entre doisnumeros

RND.Arredonda o numero de acordocom o valor do argumento:

n = 0 ate 11.

SIGN.Retorna +1 para argumentospositivos, −1 para argumentos nega-

tivos e 0 para argumentos nulos.

TRNC.Trunca o numero de acordocom o valor do argumento:

n = 0 ate 11.

1 : −12 1 : 12

1 : −3.5 1 : −3

1 : 3.5 1 : 4

1 : 6.9 1 : 6

1 : −6.9 1 : −71 : 5.234 1 : .234

1 : −5.234 1 : −.2341 : 5.234 1 : 5

1 : −5.234 1 : −5

1 : 1.23E12 1 : 1.23

2 : 5

1 : −6 1 : 5

2 : 5

1 : −6 1 : −62 : 6

1 : 4 1 : 2

2 : 1.2345678

1 : 5 1 : 1.23457

1 : −2.7 1 : −1

2 : 1.2345678

1 : 5 1 : 1.23456

• Nota: Caso voce nao consiga acessar os comandos acima atraves dasteclas MTH REAL , entao o sinalizador 117 da sua calculadora deve serativado. Esse sinalizador faz com que as funcoes sejam acessadas nos menus.

• Nota: Apos digitar MTH REAL pressione, se necessario, a tecla NXTL

para mover para a proxima pagina (do menu); a combinacaoPREV move para a pagina anterior (do menu).

13

Page 16: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

1.3.2 Menu de comandos da pilha ( PRG STACK )

Comando/DescricaoExemplos

Antes DepoisDUP.duplica o objeto do nıvel 1.

SWAP. permuta os objetos dos nıveis1 e 2.

DROP.deleta o objeto do nıveil 1.

OVER. retorna uma copia do objetodo nıve 2 para o nıvel 1.

ROT. rotaciona os tres primeirosobjetos da pilha.

ROLL.move o objeto do nıvel n+1para o nıvel 1.

(n esta no nıvel 1)

PICK. retorna uma copia do objetodo nıvel n+1 para o nıvel 1

(n esta no nıvel 1)

DEPTH. retorna o numero de obje-tos na pilha.

DROP2. remove os objetos dos nıveis1 e 2.

DROPN. remove os primeiros n+1objetos da pilha.

(n esta no nıvel 1)

DUPN.duplica n objetos da pilha,comecando no nıvel 2.

(n esta no nıvel 1)

1 : 52 : 2 : 5

1 : 5

2 : 9

1 : 10

2 : 10

1 : 9

2 : 7

1 : 8

2 :

1 : 7

4 :

3 :

2 : pAB p

1 : 234

4 :

3 : pAB p

2 : 234

1 : pAB p

3 : 12

2 : 34

1 : 56

3 : 34

2 : 56

1 : 12

4 : 444

3 : 333

2 : 222

1 : 3

3 : 333

2 : 222

1 : 444

4 : 123

3 : 456

2 : 789

1 : 3

4 : 123

3 : 456

2 : 789

1 : 123

3 :

2 : 16

1 : −5

3 : 16

2 : −51 : 2

3 : 12

2 : 10

1 : 8

3 :

2 :

1 : 12

4 : 123

3 : 456

2 : 789

1 : 2

4 :

3 :

2 :

1 : 123

5 :

4 : 333

3 : 222

2 : 111

1 : 2

5 : 333

4 : 222

3 : 111

2 : 222

1 : 111

14

Page 17: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

1.4 Programacao de formulas

Para a HP 50g um programa e um objeto delimitado pelos sımbolos≪ ≫, isto e, todos os programas devem ser digitados entre estes sımbolos∗.

Variaveis

Variaveis sao como arquivos em um disco rıgido de computador. Umavariavel pode armazenar um objeto (valores numericos, expressoes algebricas,listas, vetores, matrizes, programas, etc).

As variaveis sao reconhecidas pelos seus nomes, que podem ser qualquercombinacao de caracteres alfabeticos ou numericos, iniciando com uma letra.

Aguns caracteres nao alfabeticos, tais como a seta (→) podem ser usadosem um nome de variavel, se combinados com um caractere alfabetico. Assim,p→ Ap e um nome valido de variavel, mas p→ p nao e. Exemplos validos denomes de variaveis sao: pAp, pB p, pa p, pb p, pα p, pβ p, pA1 p, pAB12 p, p→ A12 p

, pVel p, pZ0 p, pZ1 p, pAgnus p , pAline p , pAnanda p , pAarao p , etc.

Uma variavel nao pode ter o mesmo nome de uma funcao da calculadora.

Voce nao pode ter uma variavel SIN por exemplo, ja que existe um co-mando SIN na calculadora. Numa eventual duvida, consulte o catalogo decomandos da calculadora. (p. 46)

Nota: Letras maiusculas e minusculas nao sao equivalentes.

Estrutura de variavel local

O comando† → define nomes de variaveis locais (isto e, variaveis quesomente sao validas dentro do programa em que foram definidas) − aocontrario das variaveis globais, que sao definidas pela tecla STO

K (do inglesSTORE, armazenar).

Antes de se iniciar a programacao de determinado problema e importanteque se tenha bem claro em mente quais sao os dados de entrada e quais saoos dados de saıda; por exemplo:

1o ) Resolver a equacao quadratica ax2 + bx+ c = 0. Temos:

R.E.Q.

a

br1

cr2

Onde:

− Dados de entrada: a, b e c.

− Dados de saıda: r1 e r2 (sao as raızes).

∗O qual encontra-se acima da tecla + , em vermelho.†Este comando (de atribuicao) encontra-se acima da tecla 0 , em vermelho.

15

Page 18: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

− R.E.Q.: Variavel que ira armazenar o programa (e que sera referenciadasempre que o programa for executado).

Observacao: o nome R.E.Q. e apenas um exemplo, o nome poderia serum outro, a seu criterio (atendendo o ıtem anterior variaveis).

2o ) Calcular o n−esimo termo de uma progressao aritmetica:

an = a1 + (n− 1)r

Temos:

P.A.

a1

r an

n

Onde:

− Dados de entrada: O primeiro termo a1 ; a razao da P.A. r e a posicao ndo termo que queremos encontrar.

− Dados de saıda: O n−esimo termo an .

− P.A.: Variavel que ira armazenar o programa (e que sera referenciadasempre que o programa for executado).

3o ) Calculo da hipotenusa de um triangulo retangulo: a =√b2 + c2.

Temos:

HIP.

b

a

c⊡

a

b

c

Onde:

− Dados de entrada: Os catetos b e c.

− Dado de saıda: A hipotenusa a.

− HIP.: Variavel que ira armazenar o programa.

Nos tres programas anteriores devemos fornecer os dados de entrada e oprograma calcula e fornece os dados de saıda.

Uma estrutura de variavel local possui uma das seguintes organizacoesdentro de um programa:

≪→ nome1 nome2 . . . nomen pobjeto algebrico p ≫ (1.1)

Ou,

≪→ nome1 nome2 . . . nomen ≪ programa≫ ≫ (1.2)

16

Page 19: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O comando (de atribuicao) → remove n objetos da pilha e os armazenanas variaveis locais, cujos nomes sao listados em seguida.

Somente agora faremos nosso primeiro programa. Uma observacao opor-tuna e a de que assim como nao existe uma unica maneira de se resolverdeterminado problema na fısica ou na matematica, por exemplo, tambemnao existe um unico modo de se fazer determinado programa no computa-dor (ou na calculadora); provavelmente cada programador o faca de mododistinto. Um criterio bastante geral para se avaliar um bom programa ea simplicidade do mesmo, embora nesta altura dos acontecimentos (isto e,para o iniciando na programacao) o importante e que o programa seja feitoe funcione de acordo com o esperado.Exemplo 1:

O seguinte programa toma dois numeros da pilha e retorna um resultadonumerico (o valor absoluto da diferenca entre ambos, isto e: |a− b|).

≪→ a b pABS(a − b)p ≫ (1.3)

Este programa e da forma (1.1) (ver p. 16). Antes de programarmos oexemplo acima, observamos que voce pode acessar os comandos, como ABSpor exemplo, pelas teclas do menu (p. 13) ou digita-los, ou ainda pelo Catalogode comandos (p. 46).

Pois bem, vamos retomar o programa anterior. observe que em,

pABS(a − b)p

temos aspas simples (chamadas doravante de plics). Estas aspas simples(plics) encontram-se na tecla p O .

Digite o programa dado em (1.3). Observe que entre a seta e a primeiravariavel (no caso a) existe um espaco (mas nao se preocupe pois a calculadorao coloca automaticamente; isto e, apos digitar a seta − (veja nota † na p. 15).

1.5 Para armazenar ou nomear um programa

1o ) Entre com o programa, ja digitado, na pilha. Isto e, apos digita-lopressione ENTER . O programa ira para o nıvel 1 da pilha, assim:

RAD XYZ BIN R∼ pX p HLT{HOME GENTIL} 12:24 19 : MAY

≪ → a b pABS(a− b)p

≫1��2��3��4��5��6��

17

Page 20: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

2o ) Agora precisamos armazenar este programa em uma variavel (nomea-lo), para isto pressione plics, em p O , e escolha um nome para o programa.

Por exemplo, pDISTp . Pressione ENTER e, em seguida, pressione a teclaSTOK

. Voce acabou de armazenar (STO) o programa na variavel que voce

escolheu (isto e, no nome dado ao programa). Observe que o programa (eo seu nome) desaparecem da pilha mas o nome (do programa) aparece nomenu de variaveis, assim:

RAD XYZ BIN R∼ pX p HLT{HOME GENTIL} 12:52 19 : MAY

Aqui esta o programa.

1��2��3��4��5��6��7��

DIST

Se na sua calculadora o programa nao aparece no primeiro menu, comoacima, basta voce pressionar a tecla VAR

J(onde acessamos os programas).

Nota: O procedimento para armazenar qualquer programa e sempre o mesmo,isto e, siga os passos 1o ) e 2o ) acima.

1.6 Para executar um programa

Coloque os dados na pilha (no caso do programa DIST, os numeros queserao armazenados nas variaveis a e b, por exemplo 3 e 5), pressione VAR

J

(caso necessario) e depois a tecla do menu que contem o nome dado aoprograma.

Como funciona o programa anterior: Se o leitor colocar na pilha, porexemplo, os seguintes dados de entrada: 3 e 5; ao executar o programa ocomando de atribuicao (→) armazenara estes valores nas variaveis a e b, res-pectivamente (isto e, fara a=3 e b=5). Em seguida a expressao algebrica(que consta entre plics) sera avaliada (calculada) para estes dados. O resul-tado: 2, sera deixado na Pilha.

Modos de programacao

Em nosso curso utilizaremos dois modos de programacao, os dados nasreferencias (1.1) e (1.2) (p. 16). O primeiro e mais pratico para a pro-gramacao de formulas matematicas, enquanto o segundo para programasmais elaborados, como teremos oportunidade de exemplificar.

18

Page 21: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Exemplo 2: Por exemplo, o programa a seguir,

≪→ b c p ( b∧ 2 + c∧ 2 ) p ≫

calcula a hipotenusa de um triangulo retangulo. (ver p. 16)

Exemplo 3: Este mesmo programa no modo (1.2) fica assim:

≪ → b c

≪ p ( b∧ 2 + c∧ 2 ) p EVAL

≫≫

O comando EVAL (acessado na tecla EVAL N ) avalia uma expressaoalgebrica (isto e, uma expressao entre plics) que o precede. Sugerimos aoleitor digitar este programa e, em seguida, seguir os passos descritos nassubsecoes 1.5 e 1.6.Exemplo 4: O maior de dois numeros. A seguinte formula matematica

max{ a, b } = a+ b+ |a− b|2

nos fornece o maior de dois numeros. Por exemplo

max{ 2, 5 } = 2 + 5 + |2− 5|2

= 5

O programa seguinte

≪→ a b p (a+ b+ABS(a − b))/2 p ≫nos devolve o maior de dois numeros fornecidos. Observe que esse programaexecuta o mesmo que a funcao MAX, para numeros reais, que consta natabela dos reais a p. 13.

A formula para o menor de dois numeros e como a seguir

min{ a, b } = a+ b− |a− b|2

Por exemplo

min{−1, 0 } = −1 + 0− | − 1− 0|2

= −1

∗ ∗ ∗Para muitos pensar e uma tarefa fastidiosa. Para mim, nos meus

dias felizes, uma festa e uma orgia. (Nietzsche, F. Vontade de poder, XIV, 24)

19

Page 22: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

1.7 Para visualizar ou editar um programa

Para visualizar − ou editar um programa − coloque seu nome entre plicse em seguida na pilha. Pressionando (se necessario) as teclas:

VARJ p O (nome do programa)

no menuENTER

Nota: Caso o programa que voce deseja editar nao se encontre em umdos menus exibidos na tela pressione a tecla NXT

Late encontra-lo.

Com o nome do programa na pilha pressione, em seguida, as duas teclas:

Pronto! Agora e so editar (ou visualizar) o programa.

Nota: Utilizando os quatro botoes prateados, abaixo,

△△

voce posiciona o cursor em qualquer posicao do programa.

Exemplo 5: Como mais um exemplo de programacao de formulas vamosresolver uma equacao quadratica ax2 + bx + c = 0, segundo a conhecidaformula de Bhaskara,

x =−b±

√b2 − 4ac

2 · a

O programa fica assim: (ver p. 15)

≪ → a b c

≪ p(−b + (b∧ 2− 4 ∗ a ∗ c))/(2 ∗ a)p EVAL

p(−b− (b∧ 2− 4 ∗ a ∗ c))/(2 ∗ a)p EVAL

≫≫

Notas: − O aspirante a programador deve ficar atento para a insercaocorreta dos parentesis, sob pena de redundar em erro de logica, o qual acalculadora nao detecta (ela nao adivinha o que voce gostaria de calcular).

− O “chapeuzinho” em b∧2 (isto e, b2) e acessado na tecla Y XQ .

− Se, ao digitar um programa, “a tela (visor) se tornar pequena(o)” use asteclas q para iniciar em uma nova linha.

Sugerimos ao leitor carregar e executar este programa.

20

Page 23: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

1.8 Executando um programa passo-a-passo (DBUG)

A calculadora nos oferece um recurso muito importante, principal-mente para quem se inicia em programacao, que e a possibilidade de seexecutar um programa passo-a-passo. Este recurso e poderoso e deve,amiudo, ser utilizado, por duas razoes:

1a ) Permite que se compreenda o funcionamento (e a logica) de um pro-grama;

2a ) Facilita a correcao de eventuais erros.

Este recurso nos o chamamos de DBUG. E facil entender como um pro-grama trabalha (funciona) se voce executa-lo passo-a-passo, observando oefeito de cada etapa (comando). Isto facilita “depurar” seus proprios pro-gramas ou entender programas escritos por outros.

Utilizando o DBUG

1. Coloque todos os dados requeridos pelo programa na pilha, e nosnıveis apropriados∗;

2. Coloque o nome do programa no nıvel 1 da pilha. Isto e, abra plicse pressione o nome do programa o qual e acessado − como ja dissemos −pressionando-se a tecla VAR

Je depois a tecla do menu que contem o nome

dado ao programa.

Pressione a tecla ENTER;

3. Pressione a seguinte sequencia de teclas:

PRG NXTL

NXTL

RUN DBUG

Neste momento o nome do programa desaparece da pilha. Agora bastair pressionando, sucessivamente, o menu SST .

• Caso o leitor deseje continuar com a execucao normal pressione o comandoCONT. Este comando e acessado pressionando-se as teclas: ON .

Sugerimos ao leitor executar passo-a-passo o programa para o calculo dasraızes de uma equacao quadratica.

Para avancar passo-a-passo no meio do programa

1. Insira (editando o programa) o comando HALT na linha de programaa partir da qual voce deseja iniciar o avanco manual (DBUG);

2. Execute o programa normalmente. Ele para quando o comando HALT

e executado, o anuncio HALT e exibido (na tela).

3. Tome qualquer acao:

∗No caso do programa da hipotenusa, a ordem em que os catetos sao fornecidos naoaltera o resultado final. Ja no caso do programa para o calculo da raızes de uma equacao

quadratica, a ordem − na qual os dados entram na pilha − e decisivo.

21

Page 24: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

• Para ver o proximo passo do programa exibido na area de mensagense entao executa-lo, pressione o menu SST .

• Para ver, mas nao executar o proximo (ou os proximos dois passos),pressione NXT

L.

• Para continuar com a execucao normal, pressione CONT ( ON).

Quando voce desejar que o programa seja executado normalmente (no-vamente) remova o comando HALT do programa.

1.9 Exibindo variaveis de entrada e saıda

A instrucao PROMPT faz com que a calculadora nos mostre (exiba) a(s)variavel(eis) de entrada num programa. Esta instrucao e acessada com aseguinte sequencia de teclas:

PRG NXTL

IN NXTL

PROMP

A instrucao →TAG rotula um objeto com um nome ou texto descritivo.

Esta instrucao e acessada com a seguinte sequencia de teclas:

PRG TYPE →TAG

Nota importante: Lembramos que todos os comandos (instrucoes) podemser digitados “na mao”. Se o leitor decidir digitar a instrucao →TAG alerta-mos que nao deve haver espaco entre a seta e TAG. Esta setinha encontra-seacima da tecla 0 , em vermelho.

Exemplo 6: Para exemplificar o uso destas instrucoes vamos acrescenta-lasao programa das raızes de uma equacao quadratica, assim:

≪ p pEntre com a, b e c p p PROMPT → a b c

≪ p (−b + (b∧ 2− 4 ∗ a ∗ c))/(2 ∗ a)p EVAL

p pR1 p p →TAG

p(−b− (b∧ 2− 4 ∗ a ∗ c))/(2 ∗ a)p EVALp pR2 p p →TAG

≫≫

Nota: Acesse as aspas duplas assim: pp pp .

Ao encontrar PROMPT o processamento do programa e interrompido e acalculadora fica esperando os dados de entrada; coloque-os na pilha e, apos,pressione CONT (continue): ON .

22

Page 25: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

1.10 Excluindo uma variavel

Para excluir (deletar) uma variavel (pode ser um programa) procedaassim: coloque, entre plics, o nome da variavel, pressione ENTER para colo-

ca-lo na pilha, apos pressione: TOOLI PURGE . Para excluir varias variaveis

ao mesmo tempo coloque-as (isto e, seus nomes) entre chaves ({ . . . . . . })e proceda como antes.

Nota: Oportunamente estaremos mostrando uma outra alternativa paradeletarmos uma variavel.

Apendice: Criando Pastas, Movendo e Renome-ando Arquivos

Organizando dados na calculadora

Voce pode organizar dados na sua calculadora armazenando as variaveisem uma arvore de diretorios − ou pastas, consideraremos como sinonimos.

Diretorios sao areas de memoria usadas para guardar suas variaveis − emparticular programas − de forma similar ao de pastas em um computadorpessoal.

Na pagina 29 estaremos complementado as informacoes sobre o funciona-mento da memoria da calculadora bem como listando a funcao de varios dosmenus considerados a seguir.

Pois bem, para observar a “arvore” de arquivos em sua calculadora pres-sione a combinacao de teclas∗ FILES para obter o visor do gerenciadorde arquivo da calculadora:

File Manager�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

0 : IRAM 237 KB

1 : ERAM 127 KB

2 : FLASH 699 KB

Home 237 KBGENTILPROG.INTN

CASDIR

CHDIR CANCL OK

Atencao: Este e o visor da configuracao atual da minha calculadora, nasua certamente sera diferente . . . porem similar.

∗A funcao FILE ativa o navegador de arquivo na memoria da calculadora.

23

Page 26: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Criando diretorios

Pois bem, vamos criar uma pasta chamada PRGHP, na qual guardaremosalguns programas-exemplos.

Como nao tenho a menor ideia da configuracao da arvore de diretoriosda sua calculadora, inicialmente retorne a pilha − pressione ON .

1o ) Se voce esta na pilha observe na parte superior do visor (segunda linha)que existe um par de chaves: {HOME . . . } isto indica qual o (sub)diretorioatual da sua calculadora. Vamos unificar a minha e a sua calculadora nodiretorio raiz (HOME) para isto pressione† UPDIR , possivelmentemais de uma vez ate que tenhamos entre chaves apenas o diretorio HOME:{HOME }.2o ) Vamos entrar na arvore de diretorios: pressione: FILES ;

3o ) na sua calculadora devera aparecer um visor similar ao seguinte:

File Manager�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

0 : IRAM 237 KB

1 : ERAM 127 KB

2 : FLASH 699 KB

Home 237 KBGENTILPROG.INTN

CASDIR

CHDIR CANCL OK

Agora pressione a tecla virtual OK para adentrarmos no diretorio raiz.Digite NXT

LNEW . Isto produzira a seguinte forma de entrada:

NEW VARIABLE�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Object:

Name:

Directory

Enter New Object

EDIT CHOOS CANCL OK

O campo de entrada Object , o primeiro campo de entrada no formulario,e ressaltado por padrao. Este campo de entrada pode manter o conteudode uma nova variavel que esta sendo criada. Dado que nao temos nesteponto nenhum conteudo para o novo subdiretorio, simplesmente pulamos

†A funcao UPDIR move o local da memoria um nıvel acima na arvore do arquivo dacalculadora.

24

Page 27: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

este campo de entrada pressionando a tecla com a seta para baixo,

, umavez. O campo de entrada Name e agora ressaltado.

NEW VARIABLE�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Object:

Name:

Directory

Enter variable name

EDIT CANCL OK

Neste local inserimos o nome do novo subdiretorio, conforme a seguir:ALPHA ALPHA PRGHP ENTER .

Apos a ultima operacao acima o cursor se move para o campo de selecao

−Directory.

NEW VARIABLE�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Object:

Name: PRGHP

Directory

Create a new directory?

EDIT X CHK CANCL OK

Pressione a tecla virtual XCHK para especificar que voce esta criandoum diretorio e pressione OK para sair do formulario de entrada. Asvariaveis constantes no diretorio HOME serao mostradas no visor conformea seguir:

Memory: 242367 Select: 0|PRGHP DIR 6GENTIL DIR 1233CASDIR DIR 531

PURGE RENAM NEW ORDER SEND RECV

Isto na minha calculadora, na sua certamente e diferente. Mas o queimporta e que o subdiretorio que acabamos de criar comparece em destaqueno visor acima.

25

Page 28: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Agora pressione UPDIR para retornar a tela da arvore de diretorios

File Manager�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

0 : IRAM 237 KB

1 : ERAM 127 KB

2 : FLASH 699 KB

Home 237 KBPRGHPGENTILPROG.INTN

CASDIR

CHDIR CANCL OK

Agora descemos a arvore uma posicao pressionando a tecla com a setapara baixo,

, para assinalar a pasta recem criada, assim:

File Manager�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

0 : IRAM 237 KB

1 : ERAM 127 KB

2 : FLASH 699 KB

Home 237 KBPRGHPGENTILPROG.INTN

CASDIR

CHDIR CANCL OK

Em seguida pressione a tecla virtual (menu) CHDIR para selecionar odiretorio (CHange DIRectory) assinalado. Nesse momento a calculadoraretornara a tela principal:

RAD XYZ HEX R∼ pX p HLT

{HOME PRGHP} 08:30 , 07 : JUN

1��2��3��4��5��6��7��

Obseve que em cima comparece {HOME PRGHP} indicando que estamosna pasta PRGHP. Se o leitor pressionar a tecla VAR

J(se necessario) observara

que os menus estao todos vazios, digo, nossa pasta PRGHP, recem criada, estavazia − como seria de se esperar.

26

Page 29: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Digite o seguinte programa (maior de dois numeros): (p. 19 )

≪→ a b p (a+ b+ABS(a − b))/2 p ≫

Armazene este programana variavel MDN, por exemplo.

Movendo, copiando e renomeando Arquivos

Agora desejamos digitar o seguinte programa (o menor de dois numeros):

≪→ a b p (a+ b−ABS(a − b))/2 p ≫

Esse programa tem uma unica alteracao em relacao ao anterior (MDN),razao porque vamos obter uma copia de MDN e realizar a alteracao necessaria.

Com esse objetivo em vista, nossa estrategia sera a seguinte: criaremos,dentro da pasta PRGHP uma nova pasta a qual daremos o nome de RASC. (ras-cunho) em seguida transferiremos uma copia do arquivo (programa) MDNpara dentro da pasta Rascunho, renomearemos esse arquivo (com o nomeMIDN) e em seguida o moveremos de volta para a pasta PRGHP e, entao, oeditaremos.

Pois bem, entramos na arvore de diretorios ( FILES ), onde deveraestar assinalada a pasta PRGHP, pressione o menu OK , para adentrarmosna pasta. Mude a pagina do menu ( NXT

L), pressione o menu NEW , desca

uma posicao (△

).

Neste momento inserimos o nome do novo subdiretorio, conforme a seguir:ALPHA ALPHA RASC. ENTER . Pressione a tecla tecla virtual XCHK ,em seguida OK . Deveremos estar na seguinte tela:

Memory: 242367 Select: 0|RASC. DIR 6MDN PROG 59

PURGE RENAM NEW ORDER SEND RECV

Este e o conteudo atual da pasta PRGHP. A proposito observe que o objetoque acabamos de criar e um (sub)diretorio (uma subpasta) ocupando 6 bytesde memoria. O outro objeto e o programa MDN, que ocupa um espaco de59 bytes.

Dando continuidade ao nosso desiderato, assinale o programa (

).Mude a pagina do menu tres vezes ( NXT

L , 3×), para alcancarmos o menuCOPY . Pressione COPY , quando entao sera mostrada a seguinte tela

27

Page 30: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

File Manager�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

0 : IRAM 237 KB

1 : ERAM 127 KB

2 : FLASH 699 KB

Home 236 KBPRGHPRASC.

CHDIR CANCL OK

Assinale a (sub)pasta criada (

) e, em seguida pressione OK .

A tela nos mostra agora a pasta PRGHP e o seu novo conteudo, veja:

Memory: 242367 Select: 0|RASC. DIR 73MDN PROG 59

EDIT COPY MOVE RCL EVAL TREE

Agora vamos voltar a arvore para adentrarmos a (sub)pasta rascunho,entao: pressione TREE , em seguida

e OK . Estamos dentro da pastarascunho. Pressione NXT

Lpara ir a proxima pagina do menu. Pressione

o menu RENAM , para renomear o arquivo, como MIDN, apos pressioneENTER.

Agora vamos mover esse arquivo para a pasta PRGHP. Para isso pressioneNXTL (3×) para chegar no menu MOVE . Pressione este menu. A tela volta

para a arvore de diretorios. Com o botao ( △ ) suba ate a pasta PRGHP.Com a pasta PRGHP assinalada pressione OK . A nova tela fica assim:

Memory: 242367 Select: 0|no Entries

EDIT COPY MOVE RCL EVAL TREE

mostrando que nao ha mais nenhuma entrada (conteudo) na subpasta ras-cunho.

28

Page 31: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Vejamos agora o novo conteudo da pasta PRGHP: volte a arvore pressio-nando o menu TREE , apos suba um ramo na arvore, (△ ), e, em seguida,OK . Lhe sera mostrada a seguinte tela.

Memory: 242367 Select: 0|PROG 59MIDN

RASC. DIR 6PROG 59MDN

EDIT COPY MOVE RCL EVAL TREE

Finalmente, para fazer as alteracoes necessarias pressione EDIT , a cal-culadora entao colocara uma copia do programa na pilha:

≪→ a b p (a+ b+ABS(a − b))/2 p ≫Faca a alteracao, apos pressione ENTER e ON.

Estrutura da memoria

A calculadora contem um total de 2.5 MB de memoria do qual 1 MB eusada para armazenar o sistema operacional (memoria do sistema) e 1.5 MBe usado para a operacao da calculadora e armazenagem de dados (memoriado usuario). Os usuarios nao tem acesso ao componente da memoria dosistema.

File Manager�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

0 : IRAM 237 KB

1 : ERAM 127 KB

2 : FLASH 699 KB

Home 237 KBPRGHPGENTILPROG.INTN

CASDIR

CHDIR CANCL OK

O visor acima indica a existencia de tres portas de memoria (ou particoesda memoria). As portas da memoria disponıveis sao:

• Porta 0, chamada IRAM

• Porta 1, chamada ERAM

• Porta 2, chamada FLASH

29

Page 32: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

A secao HOME da memoria funciona como um disco num computadorpessoal. Cada objeto com nome em HOME e semelhante a um arquivo numdisco de computador. O diretorio principal (ou raiz) para a HP 50g echamado HOME.

A porta 0 e o diretorio HOME compartilham a mesma area da memoria,entao quanto mais dados armazenados no diretorio HOME, por exemplo,menos memoria estara disponıvel para a armazenagem na Porta 0. Otamanho total da memoria para a area da memoria do diretorio Porta0/HOME e 241 KB.

Porta 1 (ERAM) pode conter ate 128 KB de dados. Porta 1, juntamentecom a Porta 0 e o diretorio HOME, constitui o segmento RAM da calcu-ladora (memoria de acesso aleatorio) da memoria da calculadora.

A Porta 2 pertence ao segmento Flash ROM da calculadora (memoriaapenas de leitura). A Porta 2 pode armazenar ate 1085 KB de dados.

A quarta linha e as linhas subsequentes no visor acima mostram a arvoredo diretorio da calculadora. O diretorio superior, como ja ressaltamos, e odiretorio Home e tem pre-definido em seu interior um sub-diretorio chamadoCASDIR. O visor File Manager possui tres funcoes associadas as teclas domenu virtual:

CHDIR : Seleciona o diretorio (CHange DIRectory).

CANCL : Cancela a acao.OK : Aprova a selecao.

O subdiretorio CASDIR contem um numero de variaveis necessarias paraa operacao adequada do CAS (sistema algebrico do computador).

Por exemplo, para obsevar os arquivos (variaveis) dentro do (sub)diretorioCASDIR, desca com a seta para baixo, △, ate destaca-lo; agora pressionea tecla virtual OK .

Funcoes para manipular variaveis (arquivos)

Este visor inclui 20 comandos associados as teclas do menu soft que podemser usados para criar, editar e manipular variaveis. As primeiras seis funcoessao as seguintes:

EDIT : Para editar uma variavel ressaltada.

COPY : Para copiar uma variavel ressaltada.MOVE : Para mover uma variavel ressaltada.RCL : Para retornar o conteudo de uma variavel ressaltada (coloca no

nıvel 1 da pilha).

EVAL : Para avaliar (executar) uma variavel ressaltada.

TREE : Para ver a arvore do diretorio onde a variavel esta contida.

Se voce pressionar a tecla NXTL, o proximo conjunto de funces fica disponıvel:

PURGE : Para excluir ou apagar uma variavel.

RENAM : Para renomear uma variavel (Arquivo, “pasta”, etc.).

NEW : Para criar uma nova variavel (ou “Pasta”).

30

Page 33: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

ORDER : Para ordenar um conjunto de variaveis no diretorio.SEND : Para enviar uma variavel para outra calculadora ou computador.RECV : Para receber uma variavel de uma outra calculadora ou com-

putador.Se voce pressionar a tecla NXT

L, o terceiro conjunto de funces fica

disponıvel:HALT : Para retornar para a pilha temporariamente.VIEW : Para ver o conteudo de uma variavel.EDITB : Para editar o conteudo de uma variavel binaria)HEADE : Para mostrar o diretorio contendo a variavel no cabecalho.LIST : Fornece uma lista de nomes e descricao de variaveis.SORT : Seleciona as variaveis de acordo com um criterio de selecao.Se voce pressionar a tecla NXT

L, o ultimo conjunto de funces fica disponıvel:

XSEND : Para enviar a variavel com o protocolo XModem.CHDIR : Para alterar o diretorio.

Apendice: Transmitindo Dados Entre Duas HP 50g

Para transferir objetos de uma HP 50g para outra:

Se o objeto (um programa, por exemplo) que voce deseja transferir naoencontra-se no diretorio corrente∗ entao voce deve selecionar o diretorio ondeeste objeto encontra-se; ou seja, pressione FILES para chegar na arvorede diretorios; isto e, a um visor similar ao seguinte:

File Manager�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

0 : IRAM 237 KB

1 : ERAM 127 KB

2 : FLASH 699 KB

Home 237 KBGENTILPROG.INTN

CASDIR

CHDIR CANCL OK

Em seguida com a tecla △ ou

selecione o diretorio no qual o objeto, a sertransferido, encontra-se. Apos selecionar o diretorio pressione CHDIR paraque este seja o diretorio corrente. Talvez voce queira tambem selecionar, nacalculadora que ira receber os dados, o diretorio que ira recebe-los. Entao,

1. Alinhe as portas infravermelhas atraves das marcas △. As calculadorasnao devem se distanciar mais de 5 cm.

∗Para se certificar disto pressione a tecla VARJ

e pesquise nos menus “embaixo”.

31

Page 34: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

NHP50g

GraphingCalcu

lator

hp

SEND

TO

CALCULATOR

� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �

� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �

Name:

Enter

names

ofvars

to

send

EDIT

CHOOS

SEND

CHOOS

→ NHP50g

GraphingCalculator

hp

1� �

2� �

3� �

4� �

5� �

6� �

7� �Connecting

IOPAR

CHOOSCASDI

GENTI

Na figura acima a calculadora da esquerda ira transmitir e a da direitaira receber os dados.

2. A maquina que enviara a informacao.

2.1. Pressione a sequencia de teclas: APPSG

OK para chegar naseguinte tela:

RAD XYZ DEC R∼ pX p HLT{HOME} 10:01 18 : MAY

1. Send to Calculator ..2.Get from Calculator3.Print display4.Print ..5.Transfer ..6. Start Server

1��2��3��4��5��6��7��

CANCL OK

Vamos explicar a funcao desta seis aplicacoes:

32

Page 35: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

1. Send to Calculator.. . . . Envia os dados para outra calculadora(ou a um computador com porta infravermelha).

2. Get from Calculator . . . Recebe dados de outra calculadora(ou de um computador com porta infravermelha).

3. Print display . . . Envia o visor para impressao.

4. Print.. . . . Imprime o objeto selecionado da calculadora.

5. Transfer.. . . . Transfere os dados para outro dispositivo.

6. Start Server . . . Calculadora definida como um servidor paraa comunicacao com os computadores.

2.2. Pois bem, pressionando OK na tela acima o visor da calculadoraque ira transmitir estara no seguinte modo:

SEND TO CALCULATOR�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Name:

Enter names of vars to end

EDIT CHOOS SENDCHOOS

Pressionando CHOOS a calculadora entrara no diretorio corrente paraque voce possa selecionar o objeto a ser transmitido.

Faca isto e pressione OK , a calculadora retornara com o visor acima jacom o objeto pronto para ser enviado, o que pode ser feito pressionando-seSEND , mas antes voce deve prepara a calculadora receptora.

3. A maquina que recebera a informacao.

3.1. Pressione a sequencia de teclas: APPSG

OK para chegar naseguinte tela:

RAD XYZ DEC R∼ pX p HLT{HOME} 10:01 18 : MAY

1.Send to Calculator ..2.Get from Calculator3.Print display4.Print ..5.Transfer ..6.Start Server

1��2��3��4��5��6��7��

CANCL OK

3.2. Agora pressione

OK para receber a informacao.

33

Page 36: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Duvida de um leitor

[. . . ] Vamos supor que queiras calcular o cosseno de um angulo no for-mato (entrada) graus, minuto, segundo. O programa a seguir faz isto:

≪ → a

≪ DEG a HMS→ COS

≫≫

Vamos supor que queiras calcular o cosseno de

3o 12′ 15′′

Tens que entrar no seguinte formato

3.1215

O comando HMS→ faz a seuinte conversao

3.1215 = 3 +12

60+

15

3600= 3.20416666667

Observa que a calculadora deve ser fixada no modo grau, caso esteja emradiano, vai da errado; digo ela interpreta o ultimo numero acima comoradiano, e nao como grau.

HMS→ : Converte o angulo de G.MMSS (grau, minuto, segundo) para grau.

→HMS : Converte de decimal para G.MMSS (grau, minuto, segundo).

Por exemplo,3.20416666667 → HMS

converte para3.1215 = 3o 12′ 15′′

HMS+: Efetua soma no formato G.MMSS

HMS−: Efetua subtracao no formato G.MMSS

Estes comandos podem ser digitados ou acessados diretamente em

9TIME

4. Tools.. OK NXTL

34

Page 37: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Capıtulo 2Listas e Matrizes

O genio, porque sabe encontrar

relacoes novas entre as coisas, revela-nos

novas harmonias e nos aproximam do

pensamento de Deus. (Pietro Ubaldi)

(E = m · c2)

Com o objetivo de aumentar ainda mais nosso poder (potencia) de pro-gramacao e que incluimos este capıtulo com dois importantes recursos paraprogramacao: listas e matrizes.

2.1 Listas

Uma lista e constituida de objetos (numeros, letras, grafico, etc.) entrechaves e separados por um espaco (tecla SPC ). Uma lista e o que, emmatematica, comumente conhecemos por conjunto. Exemplo de lista:

{ 1 5 a {b c } }

Este e um recurso muito importante para manipulacao de objetos. Nosproximos capıtulos, inclusive no de Estatıstica, utilizaremos com bastantefrequencia os resultados (comandos e funcoes) do presente capıtulo.

2.1.1 Criando listas

Para introduzir uma lista a partir do teclado:

1. Use + para indicar o inıcio e o fim de uma lista.

2. Entre com os elementos da lista, separados por SPC .

Para montar uma serie de elementos numa lista:

1. Entre com os elementos na pilha.

35

Page 38: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

2. Digite o numero de elementos no nıvel 1 da pilha.

3. Use PRG LIST →LIST para converter os elementos da pilha emuma lista.

Exemplo: Crie uma lista com os elementos −1, 0 e 1, usando →LIST .

Passo 1: Entre com os elementos e o numero de elementos na pilha.

1 0 1 3+/- W SPC SPC SPC ENTER

Apos este procedimento a pilha deve apresentar-se assim:

1 :2 :3 :4 :5 :6 :7 :

310−1

{HOME } 07:52 15:APR

Passo 2: Converta a pilha para uma lista.

PRG LIST →LIST

ELEM PROC OBJ→ →LIST SUB REPL1 : {−1 0 1 }

Importante: Para realizar o processo inverso do anterior; digo, paradesmontar uma lista (ou ainda, para retirarmos os elementos de uma lista)basta digitarmos

PRG LIST OBJ→

Nota: A lista deve esta no nıvel 1 (tal como na tela anterior). Observe,ademais, que este comando nos devolve, no nıvel 1, o numero de elementosna lista.

2.1.2 Manipulacao de listas

As funcoes a seguir oferecem maneiras de manipular os elementos de umalista. Sugerimos ao leitor fazer uma simulacao em cada ıtem para que osrespectivos comandos fiquem perfeitamente compreendidos.

1) MTH LIST SORT coloca os elementos de uma lista em ordemascendente. A lista deve estar no nıvel 1.

2) MTH LIST REVLI reverte a ordem dos elementos de uma lista. Alista deve estar no nıvel 1.

3) + adiciona itens ao inıcio ou no final de uma lista ou concatena duaslistas. Para acrescentar um elemento ao inıcio da lista, entre com o ıtem, a

36

Page 39: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

lista e pressione + . Para adicionar um ıtem no final da lista, entre com alista, depois com o ıtem e pressione + .

4) PRG LIST ELEM NXTL

HEAD substitui a lista do nıvel 1 pelo seuprimeiro ıtem isolado.

5) PRG LIST ELEM NXTL TAIL substitui a lista do nıvel 1 por todos

seus elementos, com excecao do primeiro.

6) PRG LIST ELEM GET substitui a lista do nıvel 2 e um numero deposicao (ındice) do nıvel pelo elemento da lista naquela posicao indicada.

7) PRG LIST ELEM GETI e similar a GET, porem ela tambemincrementa o numero de posicoes (ındice). O novo ındice e colocado nonıvel 2. A lista original estara no nıvel 3.

8) PRG LIST ELEM PUT toma um objeto do nıvel 1 e substitui umobjeto existente dentro da lista. Voce deve fornecer a posicao do objeto nonıvel 2 e a lista (ou matriz) no nıvel 3. A lista resultante estara no nıvel 1.

9) PRG LIST ELEM PUTI e similar a PUT, porem ela tambemincrementa o ındice. O novo ındice e colocado no nıvel 1 e a nova lista nonıvel 2.

10) PRG LIST ELEM SIZE substitui a lista do nıvel 1 pelo numerode elementos que ela possui.

11) PRG LIST ELEM POS substitui a lista do nıvel 2 e um elementodaquela lista (nıvel 1) por um ındice contendo a primeira ocorrencia daqueleelemento na lista. Se o elemento nao for encontrado, 0 sera retornado.

2.1.3 Operacoes com listas de numeros

Podemos realizar com listas de numeros algumas das operacoes que re-alizamos com numeros.

Alterar os sinais

A tecla de alteracao de sinal ( +/- W ), quando aplicada a uma lista denumeros trocara o sinal de todos os elementos da lista.

Exemplo: A lista { 1 − 2 3 − 4 }, ficara: {−1 2 − 3 4 }.Adicao, subtracao, multiplicacao e divisao

Podemos multiplicar ou dividir todos os elementos de uma lista por ummesmo numero.

Exemplo:

Multiplicando a lista { 1 −2 3 −4 }, por 5, teremos: { 5 −10 15 −20 }.A subtracao de um unico numero de uma lista ira subtrair o mesmo

numero de cada elemento na lista, por exemplo:

{ 1 − 2 3 − 4 } − 2 = {−1 − 4 1 − 6 }

37

Page 40: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Atencao!: A adicao de um unico numero com uma lista produz uma listaaumentada pelo numero (“concatenacao”) e nao uma adicao desse uniconumero para cada elemento na lista. Por exemplo:

{ 1 − 2 3 − 4 }+ 2 = { 1 − 2 3 − 4 2 }

A subtracao, multiplicacao e a divisao de listas de numeros do mesmotamanho produzem uma lista do mesmo tamanho com operacoes termo atermo.

Nota: Se as listas envolvidas na operacao tiverem tamanhos diferentes, eapresentada uma mensagem de erro (Erro: Dimensao Invalida).

O sinal de mais (+), quando aplicado as listas, age como um operadorde concatenacao colocando juntas as duas listas em vez de adicionar termoa termo.

Para produzir adicao termo a termo de duas listas do mesmo tamanho,e necessario usar o operador ADD (ADD pode ser digitado diretamente do teclado).

2.1.4 O menu MTH/LIST

O menu MTH ( MTH LIST ) fornece um numero de funcoes refe-rentes exclusivamente as listas.

O menu contem as seguintes funcoes:

∆LIST : Calcula a diferenca entre elementos consecutivos na lista.∑LIST : Calcula o somatorio dos elementos na lista.

∏LIST : Calcula o produto dos elementos na lista.

SORT : Classifica os elementos na ordem crescente.

REVLIST : Reverte a ordem da lista.

ADD : Operador para adicao termo a termo de duas listas do mesmo tamanho.

2.2 Matrizes

A HP 50g possui grandes recursos para entrada e manipulacao de ma-trizes. Muitas das operacoes descritas aqui tambem se aplicam a vetores(que sao matrizes com apenas uma linha ou uma coluna). O nome matrizestambem inclui objetos vetoriais.

2.2.1 Criando e montando matrizes

Voce pode introduzir uma matriz de duas maneiras:

− O Editor de Matrizes (Matrix writer). Um metodo mais intuitivopara entrar, visualizar e editar elementos de matrizes.

− Linha de comando. O metodo basico de entrada de objetos.

38

Page 41: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Para entrar com uma matriz usando o Editor de Matrizes:

1. Pressione MTRW para acessar a tela e menu do Editor de Matrizes.

2. Para cada elemento na primeira linha execute uma das opccoes abaixo:� Digite um numero real ou complexo e pressione ENTER .

� Calcule o elemento usando a linha de comando e pressione ENTER . Paracalcular o elemento, digite os argumentos separados com SPC e pressione afuncao desejada para o calculo.

3. Pressione △para marcar o final da primeira linha (a qual especifica onumero de colunas para a matriz).

Nota: Manipulando os quatro botoes prateados, abaixo,

voce pode colocar o cursor em qualquer posicao da matriz.

4. Para cada elemento do restante da matriz, digite (ou compute) seu valore pressione ENTER . Ou, se voce desejar, introduza numeros em mais de umacelula de uma so vez, digitando-os na linha de comando e usando SPC parasepara-los. Pressione ENTER ao final para introduzi-los.

5. Apos a entrada de todos os elementos na matriz, pressione ENTER paracoloca-la na pilha operacional.

Para entrar com uma matriz utilizando a linha de comando:

1. Pressione [ ] duas vezes para entrar com os delimitadores para amatriz e para a primeira linha.

2. Digite os elementos da primeira linha. Pressione SPC para separar oselementos.

3. Pressione △ para avancar o cursor para alem do “fecha colchetes”.

4. Pressione [ ] para preencher uma nova linha (se necessario).

5. Repita os passos 3. e 4., se necessario. Ao termino pressione ENTER paracolocar a matriz na pilha.

Por exemplo: digitando

[ [ 1 2 ] [ 3 4 ] ]

ao pressionar ENTER, teremos na pilha:

[1 23 4

]

Para montar uma matriz por linhas a partir de uma serie devetores:

1. Introduza cada vetor na pilha, na mesma ordem que voce deseja queaparecam na matriz.

39

Page 42: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Entre com o vetor da linha 1 antes, depois a linha 2, e assim por diante.

2. Entre com o numero de linhas para a matriz desejada.

3. Pressione MTH MATRX COL COL→ para montar os vetores numamatriz.

Para criar uma matriz preenchida com uma constante dada:

1. Entre com um dos seguintes ıtens na pilha:

� Uma lista contendo as dimensoes da matriz desejada na forma:{linha coluna}.

� Qualquer matriz, cujos elementos voce nao se importa que sejam alter-ados.

2. Introduza a constante com a qual voce deseja preencher a matriz.

3. Pressione MTH MATRX MAKE CON . Isto retorna uma matriz com asdimensoes especificadas, preenchida com a constante fornecida.

Para criar uma matriz identidade:

1. Entre com um dos seguintes ıtens na pilha:

� Um numero real que representa o numero de linhas e colunas de umamatriz identidade (quadrada).

� Qualquer matriz quadrada, cujo conteudo voce nao se importa que se-jam alterados.

2. Pressione MTH MATRX MAKE IDN. Esta operaca retorna uma matrizidentidade com as dimensoes dadas.

2.2.2 Desmontando matrizes

A HP 50g monta e desmonta os elementos de uma matriz de duas di-mensoes, seguindo a ordem de preenchimento de linhas (da esquerda paraa direita, e de cima para baixo). Comecando com o elemento corrente (fre-quentemente o elemento da linha 1 e coluna 1), a ordem de preenchimentode linhas assume que o “proximo” elemento sera o proximo naquela linha.Caso nao existam mais elementos na linha, entao o proximo sera o primeiroda linha seguinte. Esta convencao de preenchimento e semelhante a umprocessador de textos, onde uma linha e preenchida e, assim que cheia, opreenchimento prossegue no inıcio da proxima.

Para desmembrar uma matriz em seus elementos

1. Entre com a matriz na pilha.

2. Pressione PRG TYPE OBJ→ . A matriz sera desmontada na ordem depreenchimento por linhas, colocando cada elemento em um nıvel separado.O nıvel 1 contem uma lista com as dimensoes originais da matriz.

Para montar uma matriz a partir de uma sequencia de elementos

1. Entre com com os elementos na pilha na ordem de preenchimento porlinhas.

40

Page 43: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

2. Entre com uma lista contendo as dimensoes da matriz desejada na forma:{ linhas colunas }.3. Pressione PRG TYPE →ARRY . Para montar a matriz.

Para desmembrar uma matriz em vetores-linha

1. Entre com a matriz na pilha.

2. Pressione MTH MATRX ROW →ROW . A matriz e desmembrada emvetores (primeira linha ate a ultima). O nıvel 1 da pilha contem um numeroreal representando o numero de linhas da matriz original.

Para desmembrar uma matriz em vetores-coluna

1. Entre com a matriz na pilha.

2. Pressione MTH MATRX COL →COL . A matriz e desmembradaem vetores (primeira coluna ate a ultima). O nıvel 1 da pilha contem umnumero real representando o numero de colunas da matriz original.

2.2.3 Inserindo linhas e colunas

Para inserir uma ou mais linhas novas numa matriz:

1. Entre com a matriz alvo (aquela que voce deseja modificar) na pilhaoperacional.

2. Entre com o vetor, matriz ou elemento (quando o objeto alvo e um vetor)que voce deseja inserir. Uma matriz inserida deve possuir o mesmo numerode linhas e colunas que a matriz alvo.

3. Entre com o numero da linha sobre a qual voce eseja inserir a nova matriz.Todos os elementos localizados naquela linha da matriz alvo serao movidospara baixo, acomodando a insercao. Numeros de linhas comecam de 1 e naode 0.

4. Pressione MTH MATRX ROW ROW+ para inserir as novas linhas.

Para inserir uma ou mais colunas novas numa matriz:

1. Entre com a matriz alvo (aquela que voce deseja modificar) na pilhaoperacional.

2. Entre com o vetor, matriz ou elemento (quando o objeto alvo e um vetor)que voce deseja inserir. Uma matriz inserida deve possuir o mesmo numerode linhas e colunas que a matriz alvo.

3. Entre com o numero da coluna sobre a qual voce eseja inserir a novamatriz. Todos os elementos localizados naquela coluna da matriz alvo seraomovidos para a direita, acomodando a insercao. Numeros de colunas comecamde 1 e nao de 0.

4. Pressione MTH MATRX COL COL+ para inserir as novas colunas.

2.2.4 Extraindo linhas e colunas

Para extrair uma linha especıfica de uma matriz:

41

Page 44: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

1. Entre com a matriz na pilha operacional.

2. Entre com o numero da linha (ou a posicao do elemento, caso a matrizalvo seja um vetor) que voce deseja extrair.

4. Pressione MTH MATRX ROW ROW- . O vetor-linha (ou elemento)extraıdo e colocado no nıvel 1 e a matriz com a linha removida e colocadano nıvel 2.

Para extrair uma coluna especıfica de uma matriz:

1. Entre com a matriz na pilha operacional.

2. Entre com o numero da coluna (ou a posicao do elemento, caso a matrizalvo seja um vetor) que voce deseja extrair.

4. Pressione MTH MATRX COL COL- . O vetor-coluna (ou elemento)extraıdo e colocado no nıvel 1 e a matriz com a coluna removida e colocadano nıvel 2.

Invertendo Linhas e Colunas

Para inverter a posicao de duas linhas numa matriz:

1. Entre com a matriz na pilha. Se a matriz for um vetor, ele sera consid-erado um vetor-coluna.

2. Entre com os dois numeros das linhas que serao trocadas.

4. Pressione MTH MATRX ROW NXTL RSWP . A matriz modificada sera

deixada no nıvel 1.

Para inverter a posicao de duas colunas numa matriz:

1. Entre com a matriz na pilha. Se a matriz for um vetor, ele sera consid-erado um vetor-linha.

2. Entre com os dois numeros das colunas que serao trocadas.

4. Pressione MTH MATRX COL CSWP . A matriz modificada sera deixadano nıvel 1.

2.2.5 Extraindo e substituindo elementos em matrizes

Para extrair um elemento de uma posicao especıfica:

1. Entre com a matriz na pilha.

2. Entre com um dos seguintes objetos:

� Uma lista contendo a linha e a coluna do elemento que voce desejaextrair: {linha, coluna}.

� A posicao do elemento que voce deseja extrair (contando da esquerdapara a direita, e de cima para baixo).

3. Pressione MTH MATRX MAKE NXTL GET para extrair o elemento

especıfico.

42

Page 45: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Para substituir um elemento de uma posicao especıfica:

1. Entre com a matriz na pilha.

2. Entre com um dos seguintes objetos:

� Uma lista contendo a linha e a coluna do elemento que voce deseja ex-trair: {linha coluna}.

� A posicao do elemento que voce deseja extrair (contando da esquerdapara a direita, e de cima para baixo).

3. Entre com o elemento substituto .

4. Pressione MTH MATRX MAKE NXTL PUT para substituir o elemento

especıfico na localizacao escolhida.

Obtendo as dimensoes de uma matriz: Para obter as dimensoes (numerode linhas e colunas) de uma matriz inicialmente coloque-a na pilha, apospressione: MTH MATRX MAKE SIZE

Transformando matrizes

Para transpor uma matriz:

1. Entre com a matriz na pilha.

2. Pressione MTH MATRX MAKE TRN . Para transpor a matriz.

Para inverter uma matriz quadrada:

1. Entre com a matriz quadrada na pilha.

2. Pressione 1/X Y .

Para alterar as dimensoes de uma matriz

1. Entre com a matriz na pilha.

2. Entre com uma lista contendo as novas dimensoes da matriz na forma:{linha coluna}.3. Pressione MTH MATRX MAKE RDM para redimensiona-la. Elementosda matriz original sao recolocados na matriz redimensionada, da esquerdapara a direita, da 1a linha ate a utima. Caso haja menos elementos na novamatriz, os elementos em excesso da original serao descartados. Caso hajamais elementos na nova matriz, as posicoes faltantes serao preenchidas comzeros (ou (0, 0) se a matriz for complexa).

Usando Matrizes e Seus Elementos em Expressoes Algebricas

Voce pode realizar calculos com elementos de matrizes usando sintaxe algebrica.A matriz deve ser representada por um nome na expressao simbolica ouequacao.

Para utilizar um elemento da matriz numa expressao algebrica

1. Certifique-se de que a matriz esta armazenada numa variavel.

43

Page 46: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

2. Crie a expressao algebrica e, no ponto onde o elemento de matriz serausado, digite o nome da matriz e pressione ( ) .

3. Entre com os ındices para o elemento:

� Para um vetor, digite um ındice (numero da posicao do elemento).

� Para uma matriz, entre os dois ındices separados , (numero dalinha e da coluna para o elemento).

Exemplo 7: Vejamos um exemplo deste importante recurso. Coloquena pilha a seguinte matriz,

[1 2 34 5 6

]

Para isto veja, por exemplo: Para entrar com uma matriz uti-lizando a linha de comando. (p. 39)

Apos, armazene-a em uma variavel. Por exemplo, para armazenar esta ma-triz na variavel M, proceda assim: digite pMp e pressione ENTER paracolocar este nome no nıvel 1 da pilha, em seguida pressione STO

Kpara ar-

mazenar a matriz neste nome. Este e o nome da matriz (com o qual ela serareferenciada).

Para se certificar disto basta pressionar ALPHA HIST M ENTER, a matrizdevera retornar a pilha.

Digite a seguinte expressao: pM(1, 1) +M(1, 2)p .

Agora pressione ENTER para colocar este objeto algebrico na pilha. Emseguida mande avalia-lo pressionando EVALN . O resultado devera ser 3, pre-cisamente a soma dos dois primeiros elementos da primeira linha da matriz.

Vamos sofisticar um pouco mais nosso exemplo. O seguinte objetoalgebrico∗.

p∑(k = 1, 3,M(1, k)) p

o qual e equivalente a,

3∑

k=1

M(1, k) = M(1, 1) +M(1, 2) +M(1, 3)

quando avaliado ( EVALN ) nos fornece o resultado 6, que e a soma dos ele-mentos da primeira linha da matriz M.

Agora vamos “abusar” da boa vontade daHP . O seguinte objeto algebrico

p∑(J = 1, 3,

∑(I = 1, 2,M(I, J))) p

∗Este somatorio, entre plics, pode ser acessado assim: p O SIN S

44

Page 47: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

o qual e equivalente a,

3∑

J=1

2∑

I=1

M(I, J) = M(1, 1) +M(2, 1)

+M(1, 2) +M(2, 2)

+M(1, 3) +M(2, 3)

quando avaliado nos fornece o resultado 21, que e a soma − por colunas −de todos os elementos da matriz M.

2.2.6 Calculo de Matrizes com Elementos Algebricos

Um estudante de engenharia civil (Liercio Feital) me escreveu com aseguinte duvida: Como fazer um programa para gerar matrizes tipo:

[12E/L 10E/2L

8E/L 5E

]

“onde eu entraria com os valores E = 10 e L = 2, o programa mostraria amatriz resultante”: [

60 25

40 50

]

Na edicao anterior deste livro apresentei o seguinte programa para asolucao deste problema.

≪ → E L

≪ p12∗E/L p

EVAL

p10 ∗ E/(2 ∗ L) p EVAL

p 8 ∗ E/L p EVAL

p 5 ∗ E p EVAL

{ 2 2 } →ARRY

≫≫

onde entramos com as varaveis E e L, o programa calcula cada elemento edepois monta a matriz resultante, 2× 2. Este programa pode ser adaptadopara outras matrizes, inclusive com outras dimensoes e variaveis.

Acontece que eu proprio fiquei insatisfeito com esta solucao − nao eelegante, e “dispendiosa”. Por oportuno, fui treinado na matematica (emlongos anos) a apurar a sensibilidade em “questoes que envolvem logica”.

45

Page 48: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Algo analogo ao que acontece com um musico.

Escrevendo esta segunda edicao do livro encontrei − meio que ao acaso −um comando que achei de grande potencial no trato com matrizes simbolicas,um recurso que eu proprio buscava desde meus primeiros tempos de HP.

Aproveito a oportunidade para apresentar ao leitor o:

• Catalogo de comandos

O catalogo de comandos da HP 50g − acessado com ( CAT ), acimada tecla P − contem varios dos comandos (funcoes) da calculadora.

Para acessar um comando qualquer utilize os botoes para cima e parabaixo ( △ △), apos destacar a funcao desejada pressione, no menu, OK .

Vejamos um exemplo, a funcao AXL converte um vetor em uma lista(e vice-versa). Entre na pilha, por exemplo, com o vetor [ 1 2 3 ]. Emseguida entre no Catalogo e procure pela funcao AXL, ao encontra-la pres-sione OK no menu, para obter: { 1 2 3 }.

RAD XYZ DEC R= pX p

{HOME CNUM INTP} 10:07 AUG : 19CATALOG: 771 COMMANDS

AXLAXMAXQBARBARPLOTBASISBAUDBEEP

1��2��3��4��5��6��7��

HELP CANCL OK

Descricao do comando Ativacao do comando

Nota: Muitas vezes procurar um comando atraves dos botoes torna-se demorado; podemos pegar um “atalho” digitando (modo ALPHA ) aprimeira letra do comando − ou as duas primeiras letras.

Pois bem, na verdade o comando que nos interessa, de momento, e o AXM(logo apos o AXL acima) este comando converte uma matriz simbolica emnumerica − que legal, nao?!

Com este novo comando o programa do Liercio fica assim:

≪ → E L

≪ [ [ p12 ∗ E/L p p 10 ∗ E/(2 ∗ L) p ] [ p8 ∗E/L p p 5 ∗ E p ] ]

AXM

≫≫

46

Page 49: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Este programa produz o mesmo resultado que o anterior. Observe, ademais,que o programa acima pode ser tratado como uma funcao de duas variaveis;por exemplo, armazene-o na variavel LF. Entao, ao entrar na pilha compLF(10, 2)p e mandar avaliar, EVAL N , recebemos de volta a matriz ja espera-da. (p. 45)

Descobri ainda que com este comando podemos operar (tratar) com ma-trizes na forma simbolica; por exemplo, entrando na pilha com as matrizes

[ [ pa p p b p ] [ pc p p d p ] ]

[ [ pE p pF p ] [ pG p pH p ] ]

e multiplicando-as a HP nos devolve o seguinte resultado: (matriz a direita)

[a b

c d

]

·[

E F

G H

]

=

[G · b+ E · a H · b+ F · aG · d+ E · c H · d+ F · c

]

(2.1)

Pois bem, o programa seguinte

≪ → a b c d E F G H

≪ [ [ pa p p b p ] [ pc p p d p ] ]

[ [ pE p p F p ] [ pG p pH p ] ]

∗ AXM

≫≫

realiza a multiplicacao dada em (2.1). Por exemplo, entrando com

1 2 3 4 5 6 7 8

Obtemos de volta o resultado de

[1 2

3 4

]

·[

5 6

7 8

]

=

[19 22

43 50

]

Duas observacoes: O programa acima pode ser visto como uma funcaode oito variaveis: (caso tenha sido armazenado em F )

F (a, b, c, d, E, F, G, H)

Os programas podem ser alterados − se necessario − para que as matrizessimbolicas sejam dados de entrada.

47

Page 50: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O comando AXM sera ainda de grande utilidade aos estudantes de en-genharia eletrica. Com efeito, na disciplina Circuitos Eletricos ocorre combastante frequencia produtos de matrizes complexas, tais como

[1 + i 1− i

2 2 + 3i

]

·[

1 3i

1− i 1 + i

]

A HP ate que calcula este produto− com os numeros complexos na formaalgebrica −, todavia nao simplifica o resultado. Por exemplo, para realizara multiplicacao apresentada anteriormente, entre com as matrizes na pilha,digitando-as no formato∗:

[ [ p1 + i p p1− i p ] [ 2 p2 + 3i p ] ]

[ [ 1 p3 ∗ i p ] [ p1− i p p1 + i p ] ]

Apos multiplica-las aplique o comando AXM para obter o resultado:

[(1, −1) (−1, 3)(7, 1) (−1, 11)

]

Evidentemente que operacoes mais complexas (p. ex. envolvendo multi-plicacoes e divisoes) podem ser programadas.

Vejamos mais um exemplo. O seguinte sistema matricial foi retirado deum livro de Circuitos Eletricos†: (p. 176)

[

6− j8 −(3− j4)

−(3− j4) 6− j8

] [

I1

I2

]

=

[

220 120o

220 0o

]

Onde: I1 e I2 , incognitas do sistema acima, sao as correntes de malha.Para os que nao sabem, j e utilizado na engenharia eletrica para o sımboloi complexo, ja que i e reservado para designar a corrente (como funcao dotempo i = i(t)).

Os numeros complexos na matriz da esquerda representam impedancias(que sao as grandezas que traduzem as resistencias oferecidas por compo-nentes do circuito tais como resistor, indutor (bobina) e capacitor a pas-sagem da corrente alternada) e na matriz da direita temos as tensoes nocircuito dadas na forma polar − esta forma esta contemplada na HP, comoveremos logo mais.

∗Certifique-se de que o sinalizador 103 de sua calculadora esteja ativado (Modo com-plexo ativo).

†O mesmo com o qual eu me formei em 1986 (sem HP!): Joseph A. Edminis-ter/Copyright c© 1971 by Editora McGraw-Hill do Brasil-Ltda.

48

Page 51: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Sem querer ser saudosista − apenas a tıtulo de informacao aos estu-dantes de hoje e para que apreciem devidamente a vantagem de se ter umaHP 50g −, na minha epoca de estudante ainda nao existiam calculadorasprogramaveis, apenas cientıficas (e ainda nao sofisticadas como as atuais).

Apenas uma decada antes ainda era pior. Com efeito, recebi um emailde um engenheiro que estudou a versao anterior deste livro e me escreveu −dentre outras coisas:

Gentil, bom dia! (email: 11/06/2012)

Aproveitei esses feriados estendidos em SP e li bem seu livro. Pratiqueitodos os exercıcios propostos e pratiquei todos os programas. Foi muito bommesmo. Aprendi muito! [. . .]

Nao sou matematico, sou engenheiro mecanico formado em 1975. Na minhaepoca de faculdade, nao havia calculadoras ainda. Tudo era feito na reguade calculo ou no lapis e borracha. A minha Aristo tenho ate hoje. [. . .]

Apesar de eu ja me encontrar no fim da linha (fim de carreira - 60 anos),ainda tenho disposicao para aprender.

Pedir ao Ariovaldo (Siqueira) para que me enviasse uma foto da sua reguapara que eu pudesse mostra-la aos meus alunos. Ele respondeu:

Em anexo encontra-se para sua apreciacao o seu pedido. Tenho duas reguasde calculo, a Aristo e a Sterling Slide Rule. Na epoca eu fazia tudo comelas em engenharia, ambas eu comprei em 1970 e as usei ate 1978. Depoisaposentei as duas e comprei minha primeira Texas.

Foto-Ariovaldo

49

Page 52: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Vamos apresentar a solucao do sistema feita pelo livro de CircuitosEletricos e depois vamos resolver pela HP − para que apreciemos devida-mente o “sofrimento dos tempos antigos” e saibamos valorizar “as delıciasdos paraısos hodiernos”, por assim dizer. Entao (como no livro, via deter-minantes):

I1 =

∣∣∣∣∣

220 120o −(3− j4)

220 0o 6− j8

∣∣∣∣∣

∣∣∣∣∣

6− j8 −(3− j4)

−(3− j4) 6− j8

∣∣∣∣∣

=2200 66, 9o + 1100 −53, 1o

100 −106, 2o − 25 −106, 2o

=1905 36, 9o

75 −106, 2o= 25, 4 143, 1o

I2 =

∣∣∣∣∣

220 120o −(3− j4)

220 0o 6− j8

∣∣∣∣∣

∆z

=2200 −53, 1o + 1100 66, 9o

75 −106, 2o

=1905 −23, 2o

75 −106, 2o= 25, 4 83o

Isto porque o autor do livro nao mostrou varias contas intermediarias.E olha que este e apenas um sistema 2×2, tambem sao comuns os de ordem3× 3, etc.

Nos meus tempos de estudante sofri bastante com estas contas − eu tinhaa esperanca de que um dia Deus iria atender minhas oracoes! −, finalmente,apos decadas, chegou minha vez de rir por ultimo!.

Vamos la! HP 50g a postos!:

[6− j8 −(3− j4)

−(3− j4) 6− j8

] [I1

I2

]

=

[220 120o

220 0o

]

Inicialmente vamos alterar a configuracao da calculadora para entrarmoscom a matriz da direita: pressionando a tecla MODE

H, coloque (se necessario)

sua calculadora no modo grau e o sistema de coordenadas mude de retan-gular para polar, assim:

Number Format...Fix 1

Angle Measure...Degrees

Coord System....Polar

50

Page 53: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Aproveitamos e fixamos a calculadora em uma decimal, para compararcom a resposta do livro. Pois bem, inicialmente observo que existe a seguintecorrespondencia com a notacao da HP

220 120o = (220,∠120 )

O sımbolo ∠ e obtido com a seguinte sequencia de teclas:

ALPHA 6

Pois bem, entramos inicialmente com a matriz da direita na seguinteforma

[ [ (220, ∠120) ] [ (220, ∠0) ] ]

Apos digita-la pressione ENTER para coloca-la no nıvel 1 da pilha. Entrecom a matriz da esquerda da seguinte forma:

[ [ p6− i ∗ 8 p p − (3− i ∗ 4) p ] [ p − (3− i ∗ 4) p p6− i ∗ 8 p ] ]

Em seguida pressione ENTER para coloca-la no nıvel 1 da pilha. Agorabasta dividir ( ÷ ) uma matriz pela outra; em seguida digite o comandoAXM, para obter a matriz:

[

( 25.4,∠143.1 )

( 25.4,∠83.1 )

]

Sendo assim posso afirmar que minhas insistentes oracoes foram ouvidas!− mesmo que tenha sido a favor de terceiros, nao importa! Por exemplo,meu filho (Aarao), atualmente cursa engenharia eletrica − advirto que istose deu sem que tenha havido qualquer sugestao minha neste sentido, e aindaporque quando ele fez esta opcao eu ja nao exercia a engenharia ha muitosanos∗.

∗ ∗ ∗Descobrimos que onde a ciencia mais progrediu a mente recuperou da

natureza aquilo que colocou la. Encontramos uma pegada estranha naspraias do desconhecido. Criamos teorias profundas, uma apos a outra,para explicar a origem daquela pegada. Por fim, conseguimos reconstruircom sucesso a criatura que deixou aquela marca. E vejam! A pegada enossa. (Sir Arthur Eddington)

∗Este breve interregno tem uma continuacao na p. 100, a quem interessar possa.

51

Page 54: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

A formula a seguirn = N(i− 1) + j (2.2)

nos permite transferir os elementos de uma matriz de ordem M × N paraum vetor de comprimento M ×N . (para a prova desta formula veja [4])

A formula nos diz em que posicao n (do vetor) devemos guardar o ele-mento a

ijda matriz. Por exemplo, para a matriz

[a11 a12 a13

a21 a22 a23

]

de ordem 2× 3, procedemos assim:

a11 ⇒ n = 3(1 − 1) + 1 = 1 ⇒ [ a11 , ? , ? , ? , ? , ? ]

a12 ⇒ n = 3(1 − 1) + 2 = 2 ⇒ [ a11 , a12 , ? , ? , ? , ? ]

a13 ⇒ n = 3(1 − 1) + 3 = 3 ⇒ [ a11 , a12 , a13 , ? , ? , ? ]

a21 ⇒ n = 3(2 − 1) + 1 = 4 ⇒ [ a11 , a12 , a13 , a21 , ? , ? ]

a22 ⇒ n = 3(2 − 1) + 2 = 5 ⇒ [ a11 , a12 , a13 , a21 , a22 , ? ]

a23 ⇒ n = 3(2 − 1) + 3 = 6 ⇒ [ a11 , a12 , a13 , a21 , a22 , a23 ]

Portanto:[a11 a12 a13

a21 a22 a23

]

[ a11 , a12 , a13 , a21 , a22 , a23 ]

A formula a seguir (tambem uma contribuicao minha):

i =⌊

n−1N

⌋+ 1

j = n−N⌊

n−1N

⌋ (2.3)

e a inversa da funcao dada em (2.2) e nos diz, caso desejemos, como transferirde volta as coordenadas do ponto para a matriz.

N e o numero de colunas na matriz. ⌊ x ⌋ e chamado o maior inteiro quenao supera x (funcao piso). Por exemplo, para a situacao anterior temos:

a5 ⇒

i =⌊

5−13

⌋+ 1 = 2

j = 5− 3⌊

5−13

⌋= 2

Ou seja, a quinta coordenada do vetor (n = 5) ocupara a posicao (i, j) =(2, 2) da matriz, assim:

[ a1 , a2 , a3 , a4 , a5 , a6 ]

[− − −− − −

]

Em [4] mostramos aplicacoes destas formulas na computacao.

52

Page 55: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Capıtulo 3Estruturas de Programacao

A preguica e a covardia sao as causas pelas quais uma parte taogrande dos homens (. . . ) compraz-se em permanecer por toda a suavida menores; e e por isso que e tao facil a outros instituırem-se seustutores. (Immanuel Kant)

Introducao

Uma estrutura de programac~ao permite a um programa tomar umadecisao sobre como ele deve ser executado, dependendo das condicoes dadasou dos valores de argumentos em particular. Um uso cuidadoso e inteligentedestas estruturas tornam possıvel a criacao de programas com extraordinariaflexibilidade.

Diriamos que a programacao propriamente dita comeca aqui com estru-turas de programacao, pois o que fizemos anteriormente foi a programacaode formulas apenas. Estas estruturas que iremos estudar sao comuns a variaslinguagens de programacao, como por exemplo, PASCAL, FORTRAN, C++,MATLAB, etc. Quero dizer: voce entendendo-as neste contexto, tambem es-tara apto a executa-las em qualquer outra linguagem em que estas se facampresentes; daı a importancia de entende-las nesta aqui, isto e, na HP .

As estruturas de programacao

As estruturas que iremos estudar sao as seguintes:

• Estruturas cıclicas :

FOR−NEXT

FOR− STEP

WHILE −REPEAT − END

• Estruturas condicionais :

{

IF − THEN − END

IF − THEN − ELSE − END

53

Page 56: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

3.1 Estruturas cıclicas

3.1.1 FOR - NEXT

Entre com esta estrutura num programa pressionando a seguinte sequenciade teclas:

PRG BRCH FOR

A sintaxe desta estrutura e assim:

≪ . . . inıcio fim FOR contador

clausula-cıclica

NEXT . . .

≫Esta estrutura executa uma porcao do programa por um numero definido

de vezes usando o conteudo de uma variavel local como contador, a qualpode ser usada dentro do loop para calculos ou outros propositos. A clausulacıclica e executada pelo ao menos uma vez.

FOR extrai dois numeros da pilha: inıcio e fim e cria uma variavel local(contador) para controle de incremento do ciclo. Depois disto a clausula-cıclica e executada, sendo que a variavel contador pode aparecer dentro daclausula. NEXT incrementa o contador em 1 (uma unidade) e testa se ele emenor ou igual ao valor fim. Se for este o caso, a clausula-cıclica e repetidacom o novo valor do contador. Caso contrario, a execucao prossegue aposNEXT. Quando o ciclo (loop) terminar o contador e apagado.

Vamos dar alguns exemplos de programas que utilizam esta estrutura,comentar alguns aspectos destes exemplos e colocar alguns problemas quedevem ser programados com esta estrutura.

Exemplo 8: (Somatorio). Vamos construir um programa para calcular asoma dos N primeiros numeros Naturais. Isto e, queremos o valor de:

N∑

i=1

i = 1 + 2 + 3 + · · · +N (3.1)

Devemos fornecer ao programa o valor de N (ate onde queremos que omesmo some) e este deve nos devolver o valor da soma. O programa fica:

≪ → N

≪ 0 pS p STO

1 N FOR I

S I + pS p STO

NEXT S p pSOMAp p →TAG

≫≫

54

Page 57: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Neste programa fornecemos o valor deN , que sera armazenado na variavellocal N e a execucao comeca inicializando uma variavel (global por causade STO) com zero. A variavel S ira armazenar (acumular) o valor da soma.O contador (ou variavel de controle) e o I, que ira variar de 1 ate N , o queconcorda com a variacao de i no somatorio em (3.1).

Para que o leitor entenda o funcionamento (logica) do programa sugeri-mos que o mesmo seja executado com o auxılio do DBUG. (ver 1.8, p. 21)

Existe uma formula para o somatorio dado em (3.1), assim:

N∑

i=1

i = 1 + 2 + 3 + · · ·+N =N · (N + 1)

2

a qual pode facilmente ser programada, veja:

≪→ N pN ∗ (N + 1)/2 p ≫Exemplo 9: (Fatorial). O fatorial de um numero natural n e definido assim:

n! = n(n− 1)(n − 2) · · · 1

Por exemplo, 5! = 5 ·4 ·3 ·2 ·1 = 120. O programa seguinte calcula o fatorialde um numero natural N .

≪ → N

≪ 1 pF p STO

1 N FOR I

F I ∗ pF p STO

NEXT F p pFAT.p p →TAG

≫≫

Sugestao: execute-o no DBUG. Nota: Podemos inicializar um somatoriosempre com 0 e um produtorio sempre com 1.

Exemplo 10: (Soma dos termos de uma P.A.). No estudo das progressoesaritmeticas existem duas formulas dadas por,

an = a1 + (n− 1) · r, Sn = n · a1 +n · (n− 1)

2· r

para o calculo do n-esimo termo e para a soma dos n primeiros termos,respectivamente.

Embora a segunda formula possa ser programada diretamente (e maisfacilmente), faremos um programa, para o calculo da soma dos termos deuma P.A., utilizando a primeira formula − como mais um exemplo de uti-lizacao do FOR-NEXT. O programa fica assim:

55

Page 58: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

≪ → a1 r N

≪ 0 pS p STO

1 N FOR npa1 + (n− 1) ∗ r p EVAL

S + pS p STO

NEXT S p pSOMAp p →TAG

≫≫

Observe que utilizamos − para o calculo de an − o modo algebrico aposo FOR, poderiamos ter utilizado o modo pilha.

� Subrotinas

Um recurso (ou tecnica) bastante utilizado em programacao e o que sechama de subrotina, que consiste na possibilidade de um programa ser aces-sado por um outro.

Uma situacao em que e recomendavel o uso de subrotina e quando temosum conjunto de instrucoes que e utilizado em diversas partes de um pro-grama e para que nao seja reescrito diversas vezes, e colocado em um pro-grama a parte onde o primeiro programa (podemos chama-lo de principal)acessa o segundo (subrotina). Podemos resumir a ideia no seguinte dia-grama:

P.P.

Subrotina

Atencao!: Os dados requeridos pelo programa subrotina sao passadospelo programa principal.

Para avancar passo a passo quando o proximo passo e uma sub-rotina

� Para executar a subrotina em uma unica etapa, pressione SST

(ver DBUG, p. 21)

� Para executar a subrotina passo a passo, pressione SST ↓ .

56

Page 59: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Exemplo 11: (Combinacoes). Como ilustracao da utilizacao de subrotinasvamos fazer um programa para o calculo do numero de combinacoes de mobjetos tomados n a n, segundo a formula:

(m

n

)

=m!

n! (m− n)!(3.2)

Observe que devemos calcular tres fatoriais e para isto vamos usar oprograma feito na p. 55 como subrotina. Para os nossos propositos aqueleprograma fica assim:

≪ → N

≪ 1 pF p STO

1 N FOR I

F I ∗ pF p STO

NEXT F

≫≫

Vamos armazenar este programa com o nome de FAT. O programa prin-cipal (para o calculo de (3.2)) pode ser:

≪ → M N

≪ M FAT

N FAT

M N − FAT

∗ / p pCOMB(M,N) p p →TAG

≫≫

Observe que o programa principal chama a subrotina (armazenada emFAT) tres vezes. O programa principal coloca o dado (inicialmente M) napilha e chama a subrotina, esta calcula o fatorial e deixa o resultado napilha. Execute-o no DBUG. Em blocos, temos:

M

N

(MN

)P.P.

FAT

57

Page 60: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

3.1.2 FOR - STEP

Entre com esta estrutura num programa pressionando a seguinte sequenciade teclas:

PRG BRCH FOR

A sintaxe desta estrutura e assim:

≪ . . . inıcio fim FOR contador

clausula-cıclica

incremento STEP . . .

≫Esta estrutura executa uma porcao do programa por um numero definido

de vezes usando o conteudo de uma variavel local como contador, da mesmaforma que em FOR-NEXT. A diferenca e que voce pode especificar umincremento diferente de 1.

FOR extrai dois numeros da pilha: inıcio e fim e cria uma variavel local(contador) para controle de incremento do ciclo. Depois disto a clausula-cıclica e executada, sendo que a variavel contador pode aparecer dentro daclausula. STEP aumenta o contador com o valor do incremento e testa seele e menor ou igual ao valor fim. Se for este o caso, a clausula-cıclica erepetida com o novo valor do contador (se o valor do incremento e negativo,o ciclo e repetido enquanto o contador for maior ou igual ao valor fim).Se o incremento de STEP for um objeto algebrico ou nome (variavel), ele eautomaticamente convertido para um numero. Ele tambem pode ser positivoou negativo. Se for positivo, o ciclo e executado novamente enquanto ocontador for menor ou igual a fim. Caso contrario, a execucao prossegueapos STEP.

Vejamos um exemplo de uso desta estrutura:No calculo numerico de integrais,

I =

∫ b

af(x) dx

efetuamos uma particao do intervalo [ a, b ] em n subintervalos e “amostramos”a funcao f nos pontos desta particao, assim:

p p p p p px0 =a x1 x2 x3 x4

· · · xn−2 x

n−1 xn = b

y0

y1

y2

y3

y4

yn−2

yn−1

yn

58

Page 61: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Onde:

y0 = f(x0), y1 = f(x1), y2 = f(x2), . . . , yn−1 = f(xn−1), yn = f(xn)

Para obter uma particao (regular) do intervalo [ a, b ] em N subintervalosde mesmo comprimento, fazemos h = b−a

N , no que resulta

xn = x0 + nh, n = 0, 1, 2, . . . , N.

[ ]a= x0 xn = bx1 x2 x

n−1

x. . .

h h h

Por exemplo, para x ∈ [ a, b ] = [ 0, 1 ] e N = 4 subintervalos, temos

h =b− a

N=

1− 0

4=

1

4= 0. 25

A discretizacao do intevalo fica: (n = 0, 1, 2, 3, 4)

p p p p px0=0 x1=

14

x2=12

x3=34

x4=1x

O programa seguinte recebe a, b e N , e sai com um vetor contendo aparticao do intervalo [ a, b ]:

≪ → a b N

≪ p(b− a)/N p EVAL ph p STO

a b FOR xi

xi

h STEP

N 1 + →ARRY

≫≫

Por exemplo, para a discretizacao acima entramos com a = 0, b = 1 eN = 4, o programa nos devolve o seguinte vetor: [ 0 .25 .5 .75 1 ].

59

Page 62: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Exercıcios

Nota: Os exercıcios seguintes devem, preferencialmente, ser implementadoscom a estrutura “FOR”.

1) Faca um programa para sair com os N primeiros termos de uma P.A.(progressao aritmatica), de dois modos distintos:

( a ) em uma lista ( b ) em um vetor.

2) Faca um programa para calcular o produto dos N primeiros termos deuma P.A.

3) Faca um programa para calcular a soma dos N primeiros termos de umaP.G.

4) Faca um programa para calcular o seguinte somatorio:

n∑

i=1

i2.

5) Seja a sequencia,

1, 1, −1, −1, 1, 1, −1, −1, 1, 1, −1, −1, . . .

cuja formula do termo geral e do produto sao,

an = (−1)(n−1)(n−2)

2 e Pn = (−1)n(n−1)(n−2)

6

Faca um programa para sair com um vetor contendo os N primeirostermos desta sequencia e mais ainda o produto destes N primeiros termos.

6) Faca um programa para calcular o somatorio:

n∑

i=1

im; onde m e n sao

valores arbitrarios que devem ser fornecidos ao programa.

Sugestao: Veja formula (4.8), p. 99.

7) Faca um programa para calcular a soma,

1 · 2 + 2 · 3 + 3 · 4 + · · · + n · (n+ 1)

8) Faca um programa para calcular o produto interno canonico de dois ve-tors, assim:

[ a1 a2 . . . an ] · [ b1 b2 . . . bn ] = a1 · b1 + a2 · b2 + · · ·+ an · bn

9) Faca um programa para sair com um vetor contendo os N primeirostermos de uma P.A., usando a formula de recorrencia (definicao) de umaP.A.:

a1 = a

an = an−1 + r, n ≥ 2.

60

Page 63: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

10) Faca um programa para sair com um vetor contendo os N primeirostermos de uma P.G., usando a formula de recorrencia (definicao) de umaP.G.:

a1 = a

an = an−1 · q, n ≥ 2.

11) Faca um programa para sair (em lista ou vetor) com os N primeirostermos das seguintes sequencias :

( i ) a1 = 4; an = (−1)n · an−1 .

( ii ) a1 = −2; an = (an−1)

2.

( iii ) (U.F.CE -81) Os termos da sucessao a1 , a2 , . . . , an , estao relaciona-dos pela formula a

n+1 = 1+ 2 · an , onde n = 1, 2, 3, . . .. Se a1 = 0, entao a6

e:

a ) 25 b ) 27 c ) 29 d ) 31

12) (PUC-SP - 81) Na sequencia (a1 , a2 , . . .) tem-se:

a1 = 1 e an+1 =

2 + a2n

2an

Qual dos numeros abaixo esta mais proximo de a3?

a ) 1 b ) 2 c )√2 d )

√3 e )

√5

Nota: Lembramos que nestes exercıcios queremos que voce faca um poucomais do que o exercıcio pede. Queremos que voce faca um programa paralistar os n primeiros termos das sequencias dadas.

13) (U.F.BA. - 81) sejam as sequencias

a1 = 4

an+1 = 1 + 2

an

e

b1 = 5

bn+1 = 1

1+bn

Se P = an · bn , tem-se:

a ) P < 0 b ) 0 ≤ P < 1 c ) 1 ≤ P < 2 d ) 2 ≤ P < 3 e ) P ≥ 3

14) (U.F.PR. - 80) Seja f uma funcao tal que f(1) = 2 e f(x+1) = f(x)−1,para todo valor real de x. Entao f(100) e igual a:

a ) − 99 b ) − 97 c ) 96 d ) 98 e ) 100

Nota: Aqui o leitor devera fazer um programa para fornecer f(N) ondeN > 1 e um um numero natural.

61

Page 64: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

15) (PUC - SP - 85) Na sequencia (a0 , a1 , a2 , . . .) onde a0 = 1 e an+1 =an + n, para todo n ∈ N, a soma dos 7 primeiros termos e

a ) 41 b ) 42 c ) 43 d ) 63 e ) 64

Nota: O leitor devera sempre resolver os problemas de forma generalizada.Por exemplo, aqui faca um programa para calculara soma dos N primeirostermos da sequencia .

16) (PUC - SP - 70) Sendo f : R → R definida por f(x) = 2x + 3, entaof(1) + f(2) + f(3) + · · ·+ f(25) e igual a:

a ) 725 b ) 753 c ) 653 d ) 1375 e ) 400

17) No calculo numerico de integrais (p. 58)

I =

∫ b

af(x) dx

A primeira regra de Simpson generalizada estabelece que,

∫ xnx0

f(x) dx∼= h3[ f(x0 )+ 4f(x1 ) +2f(x2 )+ 4f(x3 )+ ···+2f(x

n−2 )+ 4f(xn−1 )+ f(xn ) ]

Faca um programa que calcule a seguinte integral

I =

∫ 1

0x2 dx

O programa deve receber n. Depois calcule o valor exato da integral ecompare com os resultados do programa para alguns valores de n.

Sugest~ao: Inicialmente determine uma formula para gerar os coeficientesnumericos em destaque na expressao:

1f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + · · · +2f(xn−2) + 4f(x

n−1) + 1f(xn)

18) Armazenando um vetor de 16 posicoes em uma matriz 4 × 4, quais asposicoes ocupadas pelos conteudos das posicoes n = 7, n = 11 e n = 16 dovetor?

Sugest~ao: Programe a formula 2.3 (p. 52).

19) Para uma matriz de ordem M×N faca um programa que relacione suasposicoes i, j com as posicoes n de um vetor segundo a formula (2.2) (p. 52).

62

Page 65: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

3.1.3 FOR - NEXT’s concatenados

O que chamamos de concatenacao de FOR - NEXT’s e o mesmo queencaixe (ou aninhamento) de FOR - NEXT’s que, dependendo do programa,pode tomar diversas configuracoes. Por exemplo, assim:

FORFOR

NEXT

NEXT

a)

FORFORFOR

NEXT

NEXT

NEXT

b)

FORFOR

FOR

NEXTNEXT

NEXTc)

A concatenacao e, amiudo, util para se trabalhar com matrizes. Vejamosos seguintes exemplos:

Exemplo 12: (U.E.LONDRINA - 84) Dada a matriz A = ( amn )2×2 ondeamn = 2n−m, a soma de todos os elementos que compoe a matriz A2 e iguala:

a ) 81/4 b ) 10 c ) 9 d ) 25/4 e ) − 6

Motivados pelo desafio acima vamos fazer um programa para construiruma matriz (quadrada de ordem N) e que, em particular (N = 2) tenhamosa matriz do problema anterior.

Lembramos que o FOR - NEXT e acessado com a seguinte sequencia deteclas:

PRG BRCH FOR

O programa procurado fica assim:

≪ → N

≪ 1 N FOR m

1 N FOR np2 ∧(n−m)

pEVAL

NEXT N ROW→NEXT N ROW→

≫≫

Observe que temos uma concatenacao tipo a ). O primeiro FOR (ouainda, o primeiro laco) fixa a linha e o segundo varia as colunas, de modoque a matriz vai sendo construida linha a linha e de cima para baixo. Paramaiores detalhes execute-o no DBUG.

63

Page 66: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Para obter a matriz A2, apos a execucao do programa, basta pressionar

ENTER e multiplicar × . Por exemplo, fornecendo 2 ao programa, este nosdevolve a matriz:

[1 2

0.5 1

]

cujo quadrado e,[2 41 2

]

Exemplo 13: (CESCEM - 71) Define-se a distancia entre duas matrizesA = ( a

ij) e B = ( b

ij) quadradas e de mesma ordem n pela formula:

d(A, B) = max |aij− b

ij|, i, j = 1, 2, 3, . . . , n.

Assim a distancia entre as matrizes

[1 23 4

]

e

[5 76 8

]

e:

a ) − 5 b ) − 3 c ) 0 d ) 3 e ) 5

Nota: Na formula da distancia max significa maximo (maior).Antes de implementar o desafio acima em um programa, vejamos como

fica esta distancia para duas matrizes quadradas de ordem 2, isto e,

A =

[a11 a12

a21 a22

]

e B =

[b11 b12b21 b22

]

Primeiro, construimos a matriz diferenca:

A−B =

[a11 a12

a21 a22

]

−[b11 b12b21 b22

]

=

[a11 − b11 a12 − b12a21 − b21 a22 − b22

]

Agora temos que:

d(A, B) = max

|a11− b11 | |a12− b12 |

|a21− b21 | |a22− b22 |

Para as matrizes dadas no desafio temos:

d(A, B) = max

|1− 5| |2− 7|

|3− 6| |4− 8|

⇒ d(A, B) = max

4 5

3 4

= 5

64

Page 67: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O programa para calcular a distancia entre duas matrizes quadradas deordem n, fica assim:

≪ → A B

≪ A SIZE OBJ→ DROP DROP pN p STO

1 N FOR I

1 N FOR JpABS(A(I, J) −B(I, J))p EV AL

NEXT

1 N 1 − FOR k

MAX

NEXT

NEXT

1 N 1 − FOR k

MAX

NEXT p pd(A,B) p p →TAG

≫≫

Observe que temos uma concatenacao de FOR’s com a seguinte con-figuracao:

− Onde: O laco maior fixa as linhas; o primeiro laco interno ao maiorvaria as colunas e calcula o valor absoluto da diferenca dos elementos demesma posicao; o segundo laco interno encontra o maior valor de cada linha(de A−B), e o ultimo laco encontra o maior valor dentre os maiores valoresobtidos nas linhas (de A−B). Para maiores detalhes, execute-o no DBUG.

Exercıcios

Nota: Os exercıcios seguintes devem ser implementados com FOR-NEXT.

20) (U. MACK. - 73) Sendo A = ( aij) uma matrix quadrada de ordem 2 e

aij= j − i2, o determinante da matriz A e:

a ) 0 b ) 1 c ) 2 d ) 3 e ) 4

Nota: Novamente enfatizo que voce deve implementar os exercıcios da formamais geral possıvel. Por exemplo, neste, entre com N (dimensao da matrizquadrada) e o programa deve sair com o determinante (DET) da matriz.

65

Page 68: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

21) A seguinte formula (matriz) e de importancia decisiva para encontrar-mos combinacoes. Teremos oportunidade de usa-la futuramente:

aij= (−1 )

i−1

2j−1

Nota: ⌊x ⌋ e o maior inteiro que nao supera x. Na HP voce acessa estafuncao com o comando FLOOR. (ver tabela dos reais, p. 13)

Elabore um programa onde se entra com N e o mesmo nos devolva umamatriz de ordem 2N ×N .

Para deducao desta formula veja [4].22) Uma outra distancia entre matrizes A = ( a

ij) e B = ( b

ij) e dada pela

igualdade

d(A, B) =

m∑

i=1

n∑

j=1

(aij− b

ij)2

1/2

onde A e B sao matrizes retangulares de ordem m × n. Esta e conhecidacomo distancia euclidiana. Programe a formula acima.

23) Suponhamos uma calculadora que trabalhe apenas com vetores (unidi-mensionais) e nao com matrizes. Faca um programa para multiplicar duasmatrizes, ambas armazenadas em vetores. (p. 52)

Por exemplo, para as matrizes abaixo

A =

[1 0 10 1 1

]

e B =

1 00 11 2

deveremos entrar com as matrizes e respectivas ordens, assim:

[ 1 0 1 0 1 1 ] 2 3

[ 1 0 0 1 1 2 ] 3 2

Neste caso, o programa devera sair com o seguinte vetor: [ 2 2 1 3 ], quecorresponde a matriz:

C =

[2 21 3

]

66

Page 69: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

3.1.4 WHILE - REPEAT - END

Esta e uma outra estrutura cıclica bastante utilizada. Entre com estaestrutura num programa pressionando a seguinte sequencia de teclas:

PRG BRCH WHILE

A sintaxe desta estrutura e assim:

≪ . . .

WHILE clausula-de-teste

REPEAT

clausula-cıclia

END . . .

Esta estrutura executa um ciclo repetidamente, enquanto o resultado deum teste seja 1 (Verdadeiro). Ela pode ser interpretada como:

≪ . . .

ENQUANTO isto ocorrer

REPITA

esta instrucao

FIM . . .

Como a clausula-de-teste e executada antes da clausula-cıclica, o ciclojamais sera executado se o teste ja for falso desde o princıpio. WHILE iniciaa clausula-de-teste, a qual deixa no nıvel 1 da pilha o resultado do teste.REPEAT remove da pilha o resultado do teste e o avalia: se for verdadeiro(6= 0), a clausula-cıclica e executada novamente; caso contrario a execucaoprossegue com a instrucao seguinte a END.

Se o argumento do REPEAT for um objeto algebrico ou nome (de umavariavel), ele e automaticamente convertido para numero.

Esta estrutura sera bastante utilizada no capıtulo sobre Estatıstica.

Vamos ilustrar o uso desta estrutura atraves de alguns exemplos.

Exemplo 14: (UNESP - 84) Seja Sn = 121 + 1

22 + · · ·+ 12n , n um numero

natural diferente de zero. O menor numero n tal que Sn > 0, 99 e:

a ) 5 b ) 6 c ) 7 d ) 8 e ) 9

A ideia aqui e variarmos n (a partir de 1) e irmos somando os termos 12n

ate que o resultado da soma seja maior que 0, 99.

67

Page 70: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Vejamos alguns computos:

n Sn

1 12 = 0, 5

2 12 + 1

22= 0, 75

3 12 + 1

22 + 123 = 0, 875

. . . . . . . . . . . . . . . . . . . . . . . . . . .

Vamos fazer melhor: o programa vai receber como entrada um numeroL que, em particular, pode ser L = 0, 99. Entao:

≪ → L

≪ 1 pn p STO 0 pS p STO

WHILE pS ≤ L p

REPEAT p 1/2∧ n p EVAL

S + pS p STOpn p INCR DROP

END n 1 −≫

Para melhor compreensao de como o programa funciona: DBUG.

Exemplo 15: (F.C.M. STA. CASA - 82) Para que a soma dos termos dasequencia (−81, −77, −73, . . . ) seja um numero positivo, deve-se considerarno mınimo:

a ) 35 termos b ) 39 termos c ) 41 termos d ) 42 termos e ) 43 termos

Solucao: A sequencia dada e uma P.A. de primeiro termo a1 = −81 er = −77− (−81) = 4. Logo, an = a1 +(n−1)r = −81+(n−1) ·4. Podemostambem usar a formula da soma dos termos de uma P.A., assim:

Sn = na1 +n(n− 1)

2r

= n · (−81) + n(n− 1)

24 = −81n+ 2n(n− 1) (3.3)

Entao, vamos calcular esta soma, incrementando n, ate que a mesma sejapositiva. Temos,

≪ 1 pn p STO

WHILE p 2n(n− 1)− 81n ≤ 0 p

REPEAT pn p INCR DROP

END n

≫68

Page 71: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Rodando o programa este nos devolve n = 42. Confirmando em (3.3):

n = 41 ⇒ S41 = −81 · 41 + 2 · 41 · (41 − 1) = −41n = 42 ⇒ S42 = −81 · 42 + 2 · 42 · (42 − 1) = 42

Exemplo 16: Considere a sequencia numerica dada por an = n√a, onde a >

0 e um numero real. Em Analise matematica demonstra-se que limn→∞

n√a = 1.

Um outro resultado conhecido da Analise e que se uma sequencia convergepara um limite entao toda subsequencia desta sequencia converge para omesmo limite. A sequencia a seguir:

2√a , 4√a , 8√a , . . . , 2n

√a , . . .

e uma subsequencia da sequencia ( n√a ), portanto converge para 1.

Uma consequencia deste resultado e que se voce coloca qualquer numeroreal (positivo) em sua calculadora e vai apertando sucessivamente a tecla daraiz quadrada (

√) no final voce sempre obtera o numero 1 no visor.

O nosso problema e: Dado um numero a > 0 e um erro ε > 0 quan-tas vezes devemos pressionar a tecla de nossa calculadora de modo que adiferenca (“distancia”) entre o resultado no visor e 1 seja menor que ε ?

De outro modo: resolva, para n, a seguinte inequacao:

| 2n√a− 1 | < ε

O seguinte programa resolve nosso problema:

≪ → a ε

≪ 0 pn p STO

WHILE pABS(XROOT(2 ∧ n, a)− 1) ≥ ε p

REPEAT pn p INCR DROP

END n p p n0 p p →TAG

≫≫

Por exemplo,

a

ε

n0

50

0, 1

6

50

0, 01

9

0, 5

0, 1

3

0, 5

0, 01

7

69

Page 72: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Exercıcios

24) Determine n tal que∑n

i=1 2i = 4088.

25) Resolva o problema anterior utilizando a formula para a soma dos ter-

mos de uma P.G.: Sn =a1 ·qn−a1

q−1 .

26) Resolva a questao da UNESP (p. 67) utilizando a formula para a somados termos de uma P.G.

27) Elabore um programa onde entramos com o primeiro termo e a razao deuma P.A., e ainda com um numero L (maior ou igual ao primeiro termo),e o programa saia com n, a quantidade maxima de termos que podemossomar para que a soma nao ulrapasse L.

28) Qual e o primeiro termo positivo da P.A. (−81, −77, −73, . . .)?29) Encontre o valor de k de modo que:

k∑

j=1

30∑

i=1

(−2i+ 3j) = 300

30) Quantos termos devem ser somados na sequencia ,

2 − 1 2 − 1 2 − 1 2 − 1 2 − 1 . . .

a partir do primeiro termo, para que a soma seja 15?

Dado: Sn = [ 2n − 3 · (−1)n + 3 ] · 14 .31) Quantos termos devem ser somados na sequencia ,

−1 3 − 1 3 − 1 3 − 1 3 − 1 3 . . .

a partir do primeiro termo, para que a soma seja 13?

Dado: Sn = (−1)n + n− 1.

32) Diz-se que o numero real L e limite da sequencia (xn) de numeros reais,e escreve-se L = limxn ou L = lim

n→∞xn , quando para cada numero real

ε > 0, dado arbitrariamente, for possıvel obtermos um inteiro n0 ∈ N talque |xn − L| < ε sempre que n > n0 . Em linguagem simbolica:

limn→∞

xn = L ⇔ ∀ ε > 0,∃n0 ∈ N; n > n0 ⇒ |xn − L| < ε

Exemplos:

i ) A sequencia dada por 1, 12 ,

13 , . . . ,

1n , . . . tem 0 como limite;

ii ) A sequencia dada por xn = n√n tem 1 como limite.

Faca um programa no qual entramos com ε > 0 e o mesmo saia com on0 da definicao.

Observacao: a formula do termo geral da sequencia e o seu limite devemestar embutidos no programa.

33) Faca um programa que saia com os N primeiros numeros primos emuma lista.

70

Page 73: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

3.2 Estruturas Condicionais

3.2.1 IF - THEN - END

Entre com esta estrutura num programa pressionando a seguinte sequenciade teclas:

PRG BRCH IF

A sintaxe desta estrutura e assim:

≪ . . . IF

clausula-de-teste

THEN

clausula-verdadeira

END . . .

Esta estrutura executa uma sequencia de comandos somente se o testeresultar verdadeiro. A clausula de teste pode ser uma sequencia de comandos− da pilha− (por exemplo A B <) ou uma expressao algebrica (por exemplopA < B p), sendo neste ultimo caso desnecessario executar→NUM ou EVAL.

A palavra IF inicia a clausula-de-teste, a qual deixa o resultado do teste(0 ou 1) na pilha. THEN remove este resultado. Se o valor e diferentede zero, a clausula verdadeira e executada. Caso contrario, a execucao doprograma prossegue com a instrucao seguinte a END.

Exemplo 17: (O menor).

≪ → A B

≪ IF

A B <

THEN A

END

≫≫

≪ → A B

≪ IFpA < B p

THEN A

END

≫≫

Os dois programas acima executam a mesma tarefa, no da esquerda aclausula-de-teste e dada via operacoes de pilha, no da direita via expressaoalgebrica.

O programa recebe dois numeros, se o primeiro e menor entao e “im-presso”.

Exemplo 18: (Nos diz se um numero e par).

Iremos fazer um programa que nos diz se um dado inteiro e par. Fare-mos este programa de dois modos distintos para ilustrar duas funcoes paranumeros reais que sao FP e MOD. (ver tabela, p. 13)

71

Page 74: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

i ) Usando FP

≪ → N

≪ IF pFP (N/2) == 0 p

THEN p pO numero e par. p p

END

≫≫

Nota: O “duplo igual” : == e de comparacao. Voce pode digita-lodiretamente do teclado da calculadora, digitando duas vezes =.

ii ) Usando MOD

≪ → N

≪ IF

N 2 MOD 0 ==

THEN p pO numero e par. p p

END

≫≫

Neste programa N e 2 sao colocados na pilha, MOD coloca na pilha oresto da divisao de N por 2, o qual e comparado com 0. Execute-o no DBUG.

Vamos nos deter mais na proxima estrutura condicional, por ser a maisutilizada.

3.2.2 IF - THEN - ELSE - END

Entre com esta estrutura num programa pressionando a seguinte sequenciade teclas:

PRG BRCH IF

A sintaxe desta estrutura funciona assim:

≪ . . . IF

clausula-de-teste

THEN

clausula-verdadeira

ELSE

clausula-falsa

END . . .

72

Page 75: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Esta estrutura executa uma sequencia de comandos se o teste resultarverdadeiro e outra, caso seja falso. Se a clausula-de-teste for um objetoalgebrico, ela e automaticamente convertida para um valor numerico.

A palavra IF inicia a clausula-de-teste, a qual deixa o resultado (0 ou1) na pilha. THEN remove este resultado. Se o valor e diferente de 0, aclausula-verdadeira e executada; caso contrario, a clausula-falsa e executada.Apos ter executado a clausula apropriada, o programa prossegue com ainstrucao seguinte a END.

Exemplo 19: (Nos diz se um numero e par ou ımpar).

O programa seguinte nos diz se um numero e par ou ımpar.

≪ → N

≪ IF pFP (N/2) == 0 p

THEN p pO numero e par. p p

ELSE p pO numero e impar. p p

END

≫≫

Exemplo 20: . Fazer um programa para sair com os N primeiros termosda sequencia

an =

n2 , se n e par;

n+12 , se n e ımpar.

Entao,

≪ → N

≪ 1 N

FOR n

IF pFP (n/2) == 0 p

THEN n 2 /

ELSE n 1 + 2 /

END

NEXT N ROW→≫

Interprete o programa acima e execute-o no DBUG.

73

Page 76: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Exemplo 21: (U.E.CE. - 80) Considere a sequencia de numeros reais definidapor

an =

an−1 , se n e par;

n+12 , se n e ımpar.

Entao o produto dos seis primeiros termos e igual a:

a ) 48 b ) 30 c ) 36 d ) 42

Vamos fazer um programa para sair com os N primeiros termos dasequencia acima. Observe que quando n e par o n-esimo termo e igual aotermo anterior ( an−1 ), motivo pelo qual usaremos um vetor para guardaros termos da sequencia. Entao:

≪ → N

≪ [ 0 ] {N } RDM pA p STO

1 N FOR n

IF pFP (n/2) 6= 0 p

THEN p(n+ 1)/2 p EVAL pA(n) p STO

ELSE pA(n− 1) p EVAL pA(n) p STO

END

NEXT A

≫≫

Interprete o programa acima e execute-o no DBUG para dirimir quaisquerduvidas.

Uma formula alternativa para a sequencia dada e:

an = [ 2n + 1− (−1)n ]/4

Exemplo 22: (PUC- SP - 76) Se A e uma matriz 3 por 2 definida pela lei

aij=

1, se i = j;

i2, se i 6= j.

Entao A se escreve:

a )

[1 4 91 1 9

]

b )

1 14 19 9

c )

1 11 49 9

d )

[1 1 91 4 9

]

e )

1 14 16 6

Vamos resolver este problema para uma matriz de dimensao genericaM ×N . Assim:

74

Page 77: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

≪ → M N

≪ 1 M FOR I

1 N FOR J

IF pI == J p

THEN 1

ELSE I 2 ∧END

NEXT N ROW→NEXT M ROW→

≫≫

Exemplo 23: (Com)prove que uma matriz A, quadrada e de ordem N ,cujos elementos estao dados pela equacao,

aij=

(−1)j−1(j−1i−1

), se i < j;

(−1)i−1, se i = j;

0, se i > j.

satisfaz a relacao A2 = I.Vamos fazer um programa para comprovar esta relacao. Antes, ob-

servamos que(j−1i−1

)significa uma combinacao e que, na HP , encontra-se

disponıvel em

MTH NXTL

PROB COMB . O programa fica assim:

≪ → N

≪ 1 N FOR I

1 N FOR J

IF p I < J p

THENp (−1) ∧ (J− 1) ∗ COMB(J − 1, I − 1) p EVAL

ELSE

IF p I == J p

THEN p (−1) ∧ (I− 1) p EVAL

ELSE 0

END

END

NEXT N ROW→NEXT N ROW→

≫≫

75

Page 78: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O programa sai com a matriz A. Para comprovar que A2 = I (I e matrizidentidade) basta pressionar ENTER e × .

Exemplo 24: (Limite da func~ao quadratica)

Definicao (Limite): Sejam D ⊂ R um conjunto de numeros reais, f : D → R

uma funcao real e a ∈ D′ um ponto de acumulacao de D. Diz-se que onumero real L e limite de f(x) quando x tende a a, e escreve-se lim

x→ a= L,

quando, para todo ε > 0 dado arbitrariamente, pode-se obter δ > 0 tal quese tem |f(x)− L| < ε sempre que x ∈ X e 0 < |x− a| < δ.

Em [7] provamos o seguinte,

Teorema 1. Se f(x) = ax2 + bx+ c entao limx→d

f(x) = f(d), onde

f(d) = a · d2 + b · d+ c.

No referido opusculo deduzimos a seguinte formula

δ(ε) =

min{

1, εa (2d+ a

|a| )+b

}

, se a (2d − 1) + b ≥ 0;

min{

1, −εa (2d− a

|a| )+b

}

, se a (2d − 1) + b < 0.

(3.4)

que nos da o δ em funcao de ε para o limite em questao.

Exemplos ( p. 63-LEITHOLD): Prove que o limite e o numero indicado,

35. limx→1

x2 = 1. Neste caso, temos: a = 1, b = 0, d = 1. Entao, sendo

a (2d− 1) + b = 1 · (2 · 1− 1) + 0 = 1 > 0, temos

δ(ε) = min{

1,ε

a (2d + a|a|) + b

}

= min{

1,ε

1 · ( 2 · 1 + 1|1| ) + 0

}

= min{

1,ε

3

}

36. limx→−3

x2 = 9. Neste caso, temos: a = 1, b = 0, d = −3. Entao, sendo

a (2d− 1) + b = 1 · (2 · (−3)− 1) + 0 = −7 < 0, temos

δ(ε) = min{

1,−ε

a (2d − a|a|) + b

}

= min{

1,−ε

1 · ( 2 · (−3)− 1|1| ) + 0

}

= min{

1,ε

7

}

76

Page 79: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

15. limx→0

(x2 + 3x − 4) = −4; ε = 0, 03. Neste caso, temos: a = 1, b = 3,

d = 0. Entao, sendo

a (2d − 1) + b = 1 · (2 · 0− 1) + 3 = 2 > 0, temos

δ(ε) = min{

1,ε

a (2d+ a|a|) + b

}

= min{

1,0, 03

1 · ( 2 · 0 + 1|1| ) + 3

}

= min{

1; 0, 0075}

= 0, 0075

O programa a seguir implementa a formula (3.4):

≪ → a b d ε

≪ IF p a ∗ (2 ∗ d− 1) + b ≥ 0 p

THEN 1p ε/(a ∗ (2 ∗ d+ a/ABS(a)) + b) p EVAL

MIN p p δ(ε) p p →TAG

ELSE 1p − ε/(a ∗ (2 ∗ d− a/ABS(a)) + b) p EVAL

MIN p p δ(ε) p p →TAG

END

≫≫

Nota: Caracteres como δ e ε sao acessados pressionando-se as teclasCHARS.

Para acessar outros caracteres, alem dos que sao mostrados de imediato,pressione △(botao prateado). Coloque (com auxılio dos botoes prateados)o cursor sobre o sımbolo desejado aı e so pressionar a tecla virtual ECHO 1 .

Os verdadeiros criminosos sao os

polıticos, nao os criminosos que estao

em suas prisoes. Este mundo seria

muito melhor se houvesse uma troca:

todos os polıticos nas prisoes e to-

dos os criminosos nas posicoes dos

polıticos: eles se revelariam mais hu-

manos. (Osho)

77

Page 80: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

3.3 Operadores logicos relacionais

Um outro recurso − nao menos importante − que a programacao nosoferece sao os operadores logicos booleanos: OR, AND, XOR, NOT,etc., acessados com a seguinte sequencia de teclas:

PRG TEST NXTL

Estes operadores estao definidos pelas respectivas tabelas-verdade:

p q pOR q

V V V

V F V

F V V

F F F

p q pAND q

V V V

V F F

F V F

F F F

p q pXOR q

V V F

V F V

F V V

F F F

p p

V F

F V

Ou ainda, na forma em que a HP entende e opera:

p q pOR q

1 1 1

1 0 1

0 1 1

0 0 0

p q pAND q

1 1 1

1 0 0

0 1 0

0 0 0

p q pXOR q

1 1 0

1 0 1

0 1 1

0 0 0

p p

1 0

0 1

Vejamos um exemplo de aplicacao destes operadores:

Exemplo 25: (CESGRANRIO - 76) Seja H o conjunto

{n ∈ N : 2 ≤ n ≤ 40 },

n multiplo de 2, n nao multiplo de 3. O numero de elementos de H e:

a ) 12 b ) 14 c ) 7 d ) 13 e ) 6

Observe, na definicao do conjunto em questao: n e multiplo de 2 e n naoe multiplo de 3. Aqui temos uma tarefa para o operador logico AND.

Vamos fazer melhor, vamos fazer um programa que recebe dois numerosnaturais M e N (N < M) e devolve todos os multiplos de 2, e nao de 3,entre N e M ; assim:

≪ → N M

≪ N M FOR n

IF pFP(n/2) == 0 AND FP(n/3) 6= 0 p

THEN n

END

NEXT DEPTH →LIST

≫≫ 78

Page 81: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Nota: O comando DEPTH retorna o numero de objetos na pilha (p. 14).

O programa seguinte sai com os multiplos de 2 ou 3 entre N e M (N < M).

≪ → N M

≪ N M FOR n

IF pFP(n/2) == 0 OR FP(n/3) == 0 p

THEN n

END

NEXT DEPTH →LIST

≫≫

Exercıcios

34) (F. SANTANA - 83) Dadas as matrizes A = ( aij)2 , tal que

aij=

1 + i, se i = j;

0, se i 6= j.

e B = (Bij)2 , tal que b

ij= 2i− 3j, entao A+B e igual a:

a )

[−1 4−1 −2

]

b )

[1 −4−1 −2

]

c )

[−1 41 2

]

d )

[1 −41 2

]

e )

[1 41 2

]

35) Fazer um programa para sair com a matriz identidade de ordem N :

aij=

1, se i = j;

0, se i 6= j.

36) (U. MACK. - 80) Dada a matriz A = ( aij)2 tal que

aij=

sen π2 j, se i = j;

cos πj, se i 6= j.

Entao A2 e a matriz:

a )

[−1 −11 0

]

b )

[0 −11 1

]

c )

[−1 10 1

]

d )

[0 1−1 1

]

e )

[0 1−1 −1

]

79

Page 82: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

37) (UFRS - 83) A = ( aij) e uma matriz de ordem 2× 2 com a

ij= 2−i se

i = j e aij= 0 se i 6= j. A inversa de A e:

a )

[12 0

0 14

]

b )

[−1

2 0

0 −14

]

c )

[2 00 4

]

d )

[−2 00 −4

]

e )

2 0

0 212

38) (FCM STA CASA - 81) Seja a matriz A = ( aij), de ordem 3, tal que

aij=

1 se i < j;

k se i = j e k ∈ R;

−1 se i > j.

Se o determinante de A e igual a zero, entao k pertence ao conjunto:

a ) k ∈ {−3, 1, 3 } b ) k ∈ {−2, 1, 2 } c ) k ∈ { 0, 1/3, 1/2 }d ) k ∈ {−

√3,√3 } e ) k ∈ {−1/3, 1/3 }

39) (U. MACK - 80 ) Seja a funcao f : R→ R definida por

f(x) =

|x|+ 3 se |x| ≤ 2;

|x− 3| se |x| > 2

O valor de f(f(f(. . . f(0) . . .))),

a ) e 0 b ) pode ser 1 c ) e 3 d ) pode ser 3 e ) e impossıvel de calcular.

Neste exercıcio faca um programa onde entra-se com N e o mesmo saicom uma lista com as N composicoes de f em 0. Exemplo,

Se N = 1 entao f(f(0))

Se N = 2 entao f(f(f(0))), etc.

40) (PUC CAMP. - 80) Considerando N = { 0, 1, 2, 3, . . .} e, ainda,

A = {x ∈ N/24

x= n, x ∈ N }

B = {x ∈ N/ 3x+ 4 < 2x+ 9 }

podemos afirmar que,

a ) A ∪B tem 8 elementos b ) A ∪B = A c ) A ∩B = A

d ) A ∩B possui 4 elementos b ) n.d.a.

80

Page 83: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

41) (ITA - 66) Quantos numeros inteiros existem, de 1000 a 10000, naodivisıveis nem por cinco nem por sete?

42) (UFRN - 84) O numero de multiplos de sete entre 50 e 150 e:

a ) 9 b ) 12 c ) 14 d ) 16 e ) 23

43) (CESCEA - 75) Quantos numeros ımpares ha entre 14 e 192?

a ) 88 b ) 89 c ) 87 d ) 86 e ) 90

44) (FGV - 81) A soma dos numeros naturais nao superiores a 1000, naodivisıveis por 7, e:

a ) 429429 b ) 500500 c ) 500500/7 d ) 999999/7 e ) n.d.a.

45) (CESGRANRIO - 84) A soma dos numeros naturais menores que 100e que divididos por 5 deixam resto 2 e:

a ) 996 b ) 976 c ) 990 d ) 991 e ) 998

∗ ∗ ∗

Ao gerar o .pdf deste livro percebi que as paginas 82, 213 e 280 ficariamem branco (ociosas, por assim dizer) − os capıtulos iniciam em paginasımpares −, para nao desperdicar estas paginas decidir preenche-las com umresumo de um trabalho meu:∗

Numeros Hipercomplexos− 2D( Uma Nova Generalizacao dos Numeros Reais )

Em resumo foi uma multiplicacao que defini no plano R2. E uma nova

ferramenta matematica que disponibilizo − quem sabe alguem nao necessi-tara da mesma futuramente.

Por oportuno, desde ja deixo aqui uma sugestao de aplicacao para amesma: assim como os fractais sao construidos com a multiplicacao Complexa,que tal construirmos fractais com a multiplicacao Hipercomplexa?Nota: Caso alguem se disponha a gerar os fractais hipercomplexos, por favorentre em contato comigo; tenho curiosidade de ve-los.

Ademais, estes novos numeros podem ser programados na HP 50g , desorte que ela trabalhara nao apenas com os numeros complexos mas tambemcom os hipercomplexos.

∗Este trabalho foi postado em minha pagina em 04.04.2007, o original contem 67paginas.

81

Page 84: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Definicao: Numeros Hipercomplexos

Seja R o conjunto dos numeros reais. Consideremos o produto cartesianoR× R = R

2 ={(x, y) : x, y ∈ R

}.

Vamos tomar dois elementos neste conjunto, (a, b) e (c, d), para dar tresimportantes definicoes:

( i ) Igualdade: dois pares ordenados sao iguais se, e somente se, ocorre oseguinte:

(a, b) = (c, d) ⇔ a = c e b = d.

( ii ) Adicao: chama-se adicao de dois pares ordenados a um novo par orde-nado, obtido da seguinte forma:

(a, b) + (c, d) = (a+ c, b+ d)

( iii ) Multiplicacao: chama-se multiplicacao de dois pares ordenados a umnovo par ordenado, obtido da seguinte forma:

(a, b) · (c, d) = ( a c ∓ b d, |a| d+ b |c| ) (3.5)

onde, na abscissa do produto, tomamos − se a c ≥ 0, tomamos + casocontrario.

Definicao 1 (Numeros hipercomplexos). Chama-se sistema dos numeroshipercomplexos, e representamos por H, ao sistema de pares ordenados denumeros reais para os quais estao definidas a igualdade, a adicao e a multi-plicacao conforme o ıtem acima.

Representaremos cada elemento generico (x, y) ∈ H com o sımbolo w,portanto:

w ∈ H ⇔ w = (x, y) ∈ (R2, +, ·)Exemplos:

Calcule o produto dos pares dados a seguir:

( i ) w1 = (0, 1), w2 = (0, −1)( ii ) w1 = (−1, 1), w2 = (1, 1)

Solucao:

( i ) Como a c = 0 · 0 ≥ 0, o produto e calculado assim:

(0, 1) · (0, −1) =(0 · 0− 1 · (−1), |0| · (−1) + 1 · |0|

)= (1, 0)

( ii ) Como a c = −1 · 1 < 0, o produto e calculado assim:

(−1, 1) · (1, 1) =(− 1 · 1 + 1 · 1, | − 1| · 1 + 1 · |1|

)= (0, 2)

Nota: Este assunto continua na pagina 213, onde mostramos um programapara multiplicar dois hipercomplexos.

82

Page 85: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Capıtulo 4PROGRAMACAO SIMBOLICA

Matematica: Esta “ciencia vazia” que − espantosamente − se aplicaa todas as contingencias fenomenologicas, apesar de ser um puro for-malismo reflexivo.

4.1 Introducao:

O que diferencia a programacao simbolica − ou algebrica − da pro-gramacao dos capıtulos anteriores e que na programacao simbolica teremosna saıda dos programas formulas ou expressoes algebricas − alem dos obje-tos de saıda da programacao numerica, chamemo-la assim.

Veremos que, mesmo em casos onde se deve ter um numero como saıda deum programa a programacao algebrica pode facilitar bastante; apenas paracontextualizar, vejamos um exemplo elementar da matematica financeira; aser resolvido no proximo capıtulo:

Um congelador no valor de $ 950, 00 a vista e vendido em 12 pagamentosmensais e sem entrada no valor de $ 100, 00 cada. Qual a taxa de juroscobrada pela loja?

Ao tentar resolver esse problema nos deparamos com a seguinte equacao:

i(1 + i)12

(1 + i)12 − 1=

100

950

Como isolar i (taxa) nesta equacao? Veremos que com a programacaosimbolica isto e possıvel.

Nao podemos falar de computacao simbolica sem antes tratar do CAS dacalculadora∗.

∗Aqui trataremos apenas do essencial para o presente capıtulo, na secao 9.4 (p. 342)

alongaremos um pouco mais.

83

Page 86: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

4.2 Configuracoes CAS

CAS significa sistema algebrico do computador. Este e o centro matematicoda calculadora onde as operacoes e funcoes matematicas simbolicas sao pro-gramadas. O CAS oferece um numero de configuracoes que podem ser ajus-tados de acordo com o tipo de operacao de interesse. Para ver as con-figuracoes CAS opcionais use o seguinte:

• Pressione a tecla MODEH

para ativar formulario de entrada CALCULA-TOR MODES:

CALCULATOR MODES

Aqui esta.

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Operating Mode.. RPNNumber Format...Std FM,Angle Measure...RadiansCoord System....RectangularXBeep Key Click XLast Stack

Choose calculator operating Mode

FLAGS CHOOS CAS DISP CANCL OK

e depois a tecla virtual CAS . Voce obtera a seguinte tela − salvo possıveisalteracoes em alguns detalhes:

CAS MODES�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Indep var: pX p

Modulo: 13

Numeric Approx Complex

Verbose Step/Step Incr Pow

XRigorous XSimp Non-Rational

Enter independent variable name

EDIT CANCL OK

Esta tela fornece um formulario de entrada para alterar as configuracoesCAS.

• Para navegar atraves das diversas opcoes no formulario de entradaCAS MODES, use os quatro botoes prateados:

Aqui, para nao nos alongarmos em demasia, vamos tratar apenas de doisestados do CAS.

84

Page 87: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Modo CAS Numeric e Symbolic

Quando o modo CAS Numeric for selecionado, certas constantes na calcu-ladora sao exibidas no seu valor de ponto de flutuacao total. Por definicao, aopcao Numeric foi desmarcada, significando que estas constantes predefini-das serao exibidas com seu sımbolo, em vez de seus valores, no visor dacalculadora.

Vamos fazer uma simulacao: para marcar (ou desmarcar, dependendodo estado da sua calculadora) esta opcao − supondo que voce esteja naultima tela apresentada acima − com os botoes prateados selecione a opcaoNumeric, obtendo o seguinte resultado:

CAS MODES�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Indep var: pX p

Modulo: 13

XNumeric Approx Complex

Verbose Step/Step Incr Pow

XRigorous XSimp Non-Rational

Replace constantes by values?

Marque (ou desmarque).

EDIT XCHK CANCL OK

րAqui

Se esta opcao estiver marcada (X−Numeric) (apos pressione OK 2×) aoentramos, p. ex., com π na pilha esta constante aparecera no visor com seuvalo numerico: 3.1415 . . .; caso contrario, aparecera no visor o sımbolo: π.

Na verdade, observei que esta opcao do CAS nao e independente dosinalizador 02. Por exemplo, se este sinalizador estiver ativado: (p. 10)

X 02 Constant→ num

entao, a calculadora colocara na pilha o valor numerico de π, qualquer queseja a escolha feita em Numeric, no CAS.

Resumindo: para que as escolhas no CAS −no caso em discussao− sejamvalidas e necessario que o sinalizador 02 esteja desativado, assim:

02 Constant→ symb

Nota: Estes detalhes (importantes) eu tenho que ir descobrindo (“advin-hando”) por mim mesmo, uma vez que o manual da HP nao faz mencaoexplıcita − ou, pelo ao menos eu nao encontrei no meu manual.

Enfatizo: o manual afirma: (p. 846, arquivo .pdf)

“Por definicao, a opcao −Numeric foi desmarcada, significando que estasconstantes pre-definidas serao exibidas como seu sımbolo, em vez de seusvalores, no visor da calculadora”.

85

Page 88: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Observei que isto nao e verdade, pelo ao menos na minha calculadora, seo sinalizador 02 estiver ativo:

X 02 Constant→ num

No meu entendimento, o manual erra em nao mencionar a dependenciade −Numeric, no CAS, com relacao ao sinalizador 02.

Existe a seguinte correspondencia: −Numeric e o sinalizador 03 saoequivalentes: Marcar, ou desmarcar um deles significar marcar ou desmarcaro outro. Resumindo∗:

−Numeric ⇐⇒ Sinalizador 03

Modo CAS Aproximado e Exato

Quando X−Approx for selecionado, as operacoes simbolicas, (ex. Integraisdefinidas, raızes quadradas, etc.), serao calculadas numericamente. Quando

−Approx for desmarcado (modo Exact e ativo), as operacoes simbolicasserao calculadas como expressoes algebricas de formato fechado, sempre quepossıvel. (p. 351)

O estado deste (importante) sinalizador vem indicado na primeira linhado visor de sua calculadora:

R= ⇔ −Approx (modo exato/simbolico)

R∼ ⇔ X−Approx (modo aproximado/numerico)

Anteriormente notamos uma equivalencia entre −Numeric e o sinalizador03; no que diz respeito a −Approx este e equivalente ao sinalizador 105.Resumindo:

CAS

−Numeric ⇐⇒ Sinalizador 03 :{02 Constant→ symb︸ ︷︷ ︸

(Flags) Desativado

−Approx ⇐⇒ Sinalizador 105

Numeros reais e inteiros

As operacoes CAS utilizam os numeros para manter a precisao total noscalculos. Os numeros reais armazenados no formulario tem uma mantissa eum expoente e tem precisao limitada. No modo X−Approx, portanto, sempreque inserir um numero inteiro, ele e automaticamente transformado em um

∗Lembrando que a funcionalidade de −Numeric vai depender do sinalizador 02 estardesmarcado: 02 Constant → symb.

86

Page 89: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

numero real. Sempre que a calculadora listar um valor inteiro seguido porum ponto decimal, isto indica que o numero inteiro foi convertido para umarepresentacao real. Isto indicara que o numero foi inserido enquanto o CASfoi definido para o modo X−Approx.

Por exemplo, insira o numero 2 na pilha da sua calculadora: se, no nıvel 1da pilha, o numero aparece como 2. (dois seguido de um ponto decimal), istosignifica que a calculadora (CAS) encontra-se configurada no modo X−Approx(real), este numero e real; se, ao contrario, aparece 2 (sem ponto decimal) acalculadora encontra-se no modo −Approx, e 2 e tratado como um numerointeiro. Em alguns casos, inclusive em programacao, e importante certificar-se deste detalhe antes de inserir um dado em sua calculadora.

Um outro detalhe que e importante lembrar: a calculadora faz distincao− e isto em alguns casos e decisivo, inclusive em programacao − entre umavariavel seguida ou nao de um ponto. Por exemplo, neste momento, emminha calculadora se coloco a variavel i na pilha tenho 0.04; porem, secoloco i., tenho 10.00;

Um “incomodo” que resolvi com o uso de −Approx foi o seguinte: aocolocar na pilha (estando minha calculadora no modo X−Approx e Number

Format....Std), por exemplo, o polinomio pX∧2 + 4 ∗X + 1 p, ao pressionar

ENTER obtenho no visor X2. + 4. ·X + 1.

Para “extrair” os pontinhos ao lado dos numeros desmarque X−Approxe entre novamente com o polinomio para obter: X2 + 4 ·X + 1.

Retomando, para ter a oportunidade de exemplificar a programacaosimbolica tive que optar por um dos temas da matematica. Decidi escolhero tema das “Progressoes aritmeticas e geometricas de ordem m”.

Estes foram dois assuntos ineditos que desenvolvi em um livro que publi-quei no ano de 2000: “Novas Sequencias Aritmeticas e Geometricas”. ([4])

Posteriormente chegou ao meu conhecimento que ja existiam as progres-soes aritmeticas de ordemm. Entretanto, tempos depois tive a oportunidadede constatar que minha abordagem e mais completa e com formulas que naocomparecem nas outras; e, ademais, as progressoes geometricas de ordem mnao sao tratadas nos livros que consultei (p. ex., A Matematica do Ensino Medio/Vol.

2/SBM) − o que me leva a cre que sao totalmente ineditas. (Capa, p. 352)

� O Desafio do Seculo

Na pagina seguinte vai um Desafio que lancei em maio de 2013. Este eum problema − de programacao simbolica − que resolvi no contexto dasprogressoes aritmeticas de ordem m.

Ate o fechamento deste trabalho (data na folha de rosto) nao recebinenhuma proposta de resolucao. Estarei desenvolvendo as ferramentas parano momento oportuno apresentar a solucao do desafio − ao final o leitordecida por si mesmo se exagerei ou nao no tıtulo do Desafio.

87

Page 90: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O Desafio do Seculo

Um desafio dirigido − preferencialmente − aos estudantes de ciencia dacomputacao, mas nao apenas a estes. Nao fazemos discriminacao.

Nos livros de Calculo I constam algumas formulas (deduzidas a duraspenas) para se encontrar a soma de potencias dos n primeiros numerosnaturais, por exemplo:

1 + 2 + 3 + · · · + n =n(n+ 1)

2

Ou ainda

12 + 22 + 32 + · · · + n2 =n(2n+ 1)(n + 1)

6

Ou ainda

13 + 23 + 33 + · · · + n3 =n2 (n+ 1)2

4

No entanto, nao existe uma formula para uma potencia arbitraria.O Desafio: faca um programa no qual entramos (apenas) com a potencia

m e o mesmo saia com a formula correspondente:

1m + 2m + 3m + · · · + nm =?

Nota: m e um inteiro positivo arbitrariamente fixado. Por exemplo, seentrarmos com m = 2, teremos

Programa

?m = 2

n(2n+1)(n+1)6

− Faca o programa na linguagem de sua preferencia − deixamos livre.

Nota: Tente resolver o desafio, de preferencia sem nenhuma ajuda minha.− As possıveis solucoes devem ser enviadas para: [email protected]

Uma curiosidade: Se o eminente matematico Gauss vivesse nos diasatuais, e, se eu quisesse mante-lo ocupado por algum tempo, sera que eleresolveria este desafio antes de Jesus voltar?− O arquivo .pdf deste desafio encontra-se disponıvel em:

www.profgentil.com

Prof. Gentil, o taumaturgoBoa Vista, RR/17.05.2013

88

Page 91: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

4.3 Progressoes Aritmeticas de Ordem m

Como afirmei anteriormente resolvi o Desafio do Seculo dentro do con-texto das progressoes aritmeticas de ordem m.

O que sao as progressoes aritmeticas de ordem m? Respondemos quenao existe uma forma unica de defini-las; ou ainda, existem definicoes alter-nativas. Vamos optar por uma delas.

Inicialmente consideremos a sequencia dos cubos dos numeros naturais:

13 23 33 43 53 63 . . .

Ou ainda,

1 8 27 64 125 216 . . .

Facamos sucessivas diferencas entre os termos consecutivos desta sequenciapara obter a seguinte sequencia: (ver ∆LIST, p. 38)

7 19 37 61 91 . . .

Procedamos da mesma forma em relacao a sequencia acima, para obter:

12 18 24 30 . . .

E ainda mais uma ultima diferenca:

6 6 6 . . .

Obtivemos uma sequencia constante. Vamos resumir isto em um so dia-grama, assim:

1 8 27 64 125 216 . . . ∆0 an

7 19 37 61 91 . . . ∆1 an

12 18 24 30 . . . ∆2 an

6 6 6 . . . ∆3 an

Onde anotamos: ∆m an = m - esima diferenca da sequencia an .

Agora estamos em condicoes de estabelecer a seguinte:

Definicao 2 (Progressao aritmetica de ordem m). Uma sequencia (an) euma progressao aritmetica de ordem m se e somente se

∆m an = constante 6= 0

89

Page 92: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Usaremos da seguinte notacao: P.A.m, para uma progressao aritmeticade ordem m (m = 0, 1, 2, . . .).

Uma P.A.0 e qualquer sequencia constante, com a exigencia de que estaconstante seja diferente de 0.

O diagrama anterior nos fornece uma forte evidencia de que a sequenciadada por an = n3 e uma P.A.3, mas como podemos provar isto?

Em nosso livro ja mencionado ([4]) demonstramos a seguinte formula

∆m a(n) =

m∑

k=0

(−1)k(m

k

)

a(n− k +m) (4.1)

para a m-esima diferenca de uma sequencia a(n). A tıtulo de exemplo,vamos calcular a terceira diferenca da sequencia dada por a(n) = n3, assim:

∆3 a(n) =3∑

k=0

(−1)k(3

k

)

a(n− k + 3)

entao,

∆3 a(n) =

3∑

k=0

(−1)k(3

k

)

(n− k + 3)3

Desenvolvendo o somatorio, temos:

∆3 a(n) = (−1)0(3

0

)

(n − 0 + 3)3 + (−1)1(3

1

)

(n− 1 + 3)3

+ (−1)2(3

2

)

(n− 2 + 3)3 + (−1)3(3

3

)

(n − 3 + 3)3

Ou seja,

∆3 a(n) = 1 · (n+ 3)3 − 3 · (n+ 2)3 + 3 · (n+ 1)3 − 1 · n3 = 6

Sendo assim, provamos que a sequencia dos cubos dos n primeiros numerosnaturais e uma P.A.3. (vide def. 2, p. 89)

Nota: Nao desenvolvi as potencias no polinomio,

(n+ 3)3 − 3(n+ 2)3 + 3(n+ 1)3 − n3

entrei com este polinomio na pilha e pedi que a HP simplificasse, ela me deu6 como resultado. (EXPAND, p. 320)

A tıtulo de curiosidade, os coeficientes 1 3 3 1, formam a terceiralinha do Triangulo aritmetico de Pascal, veja isto na pagina seguinte.

90

Page 93: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Apenas a tıtulo de informacao, podemos mostrar que cada diagonal noTriangulo de Pascal esta em progressao aritmetica de alguma ordem.

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

ցP.A.

0

ցP.A.1

ցP.A.2

Nossa primeira programacao simbolica

Vamos “automatizar” todo o processo anterior, isto e, vamos desenvolvernossa primeira programacao simbolica programando a equacao (4.1) − paraa sequencia an = n3.

O programa resulta inacreditavelmente simples (compacto)!, veja a seguir:

≪ → m

≪ −2 CF − 3 CF − 105 SF − 103 CFp∑

(k = 0,m, (−1)∧ k ∗ COMB(m,k) ∗ (n− k +m)∧3 ) p

EVAL −105 CF SIMPLIFY

≫≫

Na primeira linha do programa entramos com m, a ordem da diferencadesejada. Na segunda linha desativamos o sinalizador 3 para trabalhar-mos no modo nao numerico (mas sim simbolico) − aqui esta o segredo dacomputacao simbolica.

Na ultima linha do programa antes de simplificar (SIMPLIFY) o polinomioresultante desativamos o sinalizador 105 − para que os numeros envolvidosnas operacoes sejam transformados de reais em inteiros (sem os “pontinhos”nas variaveis).

Importante: Ainda existe uma possibilidade de o programa nao funcionarem algumas calculadoras: Se houver algum valor (ou objeto) previamentearmazenado na variavel n. Neste caso apague (PURGE) esta variavel.

(p. 23, ou p. 340, Reinicio quente)

Pois bem, digite o programa anterior e entre com m = 1, por exemplo.

91

Page 94: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O programa devolvera a seguinte sequencia (ou polinomio):

3 · n2 + 3 · n + 1

Nota: Podemos escolher o polinomio na ordem crescente ou decrescente naspotencias de n − ver CAS, p. 84, (−Incr Pow).

O significado do polinomio acima e que

∆1 (n3) = 3 · n2 + 3 · n + 1

Esta e a formula do termo geral da sequencia que consta na segunda linhado diagrama

1 8 27 64 125 216 . . . ∆0 an

7 19 37 61 91 . . . ∆1 an

12 18 24 30 . . . ∆2 an

6 6 6 . . . ∆3 an

Se entramos com m = 2 no programa obtemos:

∆2 (n3) = 6 · n + 6

Se entramos com m = 3 no programa obtemos:

∆3 (n3) = 6

O seguinte teorema afirma que se tomarmos j diferencas sucessivas entretermos consecutivos de uma P.A.m , obteremos uma P.A. de ordem m− j.

Teorema 2 (Teorema do gene ). Seja m um natural arbitrariamente fixadoe seja j um natural tal que 0 ≤ j ≤ m. Nestas condicoes a seguinteidentidade e valida:

∆j anm = an(m−j)

Prova: [4] �

Este teorema nos permite ver o diagrama “dos cubos” da seguinte forma:

1 8 27 64 125 216 . . . P.A.3

7 19 37 61 91 . . . P.A.2

12 18 24 30 . . . P.A.1

6 6 6 . . . P.A.0

92

Page 95: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Formula do termo geral de uma P.A.m

Numa progressao aritmetica temos a conhecida formula do termo geral:

an = a1 + (n− 1) r (4.2)

Necessitaremos de dois ındices para localizar um termo qualquer em umaP.A.m , um que se refira ao proprio termo e, outro, que se refira a ordem dasequencia . Convencionamos:

anm = n - esimo termo da P.A. de ordem m.

Por exemplo, observe a disposicao dos ındices no diagrama a seguir

a13 a23 a33 a43 a53 a63 . . . P.A.3

a12 a22 a32 a42 a52 . . . P.A.2

a11 a21 a31 a41 . . . P.A.1

a10 a20 a30 . . . P.A.0

A formula que generaliza a equacao (4.2) e dada no seguinte

Teorema 3 (Formula do termo geral de uma P.A.m ). Em uma P.A.m on - esimo termo vale

anm =

m∑

j=0

(n− 1

j

)

a1(m−j)

(4.3)

Nota: Esta formula − e as seguintes − nao consta em nenhum dos livrossobre P.A.m.

Por exemplo, a formula do termo geral de uma P.A.3 e calculada assim:

an3 =

3∑

j=0

(n− 1

j

)

a1(3−j)

=

(n− 1

0

)

a1(3−0)

+

(n− 1

1

)

a1(3−1)

+

(n− 1

2

)

a1(3−2)

+

(n− 1

3

)

a1(3−3)

Simplificando, obtemos:

an3 = a13 + (n− 1)a12 +

(n− 1)(n − 2)

2a11 +

(n− 3)(n− 2)(n − 1)

6a10

Observe que para calcular o n-esimo termo de uma P.A.m necessitaremosconhecer, a priori, o primeiro termo de todas as progressoes anteriores, e oque nos diz o coeficiente a

1(m−j)(j = 0, 1, . . . , m) em (4.3).

93

Page 96: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

No caso particular de uma P.A.3 isto implica em que para conhecermosqualquer termo do retangulo em destaque na horizontal

a13 a23 a33 a43 a53 a63 . . . P.A.3

a12 a22 a32 a42 a52 . . . P.A.2

a11 a21 a31 a41 . . . P.A.1

a10 a20 a30 . . . P.A.0

deveremos conhecer os termos em destaque na vertical (como se observa naequacao de a

n3 anterior). Quando do desenvolvimento das progressoes ari-tmeticas de ordem m este “inconveniente” me causou um certo desconforto,assim e que me perguntei se nao seria possıvel uma formula do termo geralem funcao apenas dos termos da propria progressao − no caso do diagramaacima, apenas em funcao dos termos no retangulo em destaque na horizon-tal. Este problema foi solucionado pela seguinte formula:

a1(m−j)

=

j∑

k=0

(−1)k(j

k

)

a(1−k+j)m

(4.4)

Para m = 3, por exemplo, esta formula nos permite obter os tres termosem destaque na vertical − do diagrama anterior − em funcao dos quatroprimeiros termos do retangulo na horizontal.

O programa seguinte implementa a formula (4.4)

≪ → a

≪ −3 CF − 103 CF 0 a SIZE OBJ→ −FOR j

p∑

(k = 0, j, (−1)∧ k ∗ COMB(j, k) ∗ a(1− k + j)) p

EVAL

NEXT DEPTH ROW→≫

Armazene este programa na variavel CPAM− sera subrotina do proximo.

94

Page 97: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Por exemplo, para o diagrama a seguir

1 8 27 64 125 216 . . . ∆0 an

7 19 37 61 91 . . . ∆1 an

12 18 24 30 . . . ∆2 an

6 6 6 . . . ∆3 an

Entrando com o vetor: [ 1 8 27 64 ]

Recebemos de volta o vetor: [ 1 7 12 6 ].

O programa a seguir implementa a formula do termo geral de uma P.A.m

(eq. (4.3), p. 93)

≪ → a

≪ −2 CF − 3 CF − 105 SF − 103 CF

a CPAM AXL DUP SIZE 1 − pm p STO

REVLIST AXL pa1 p STOp∑

(j = 0,m,COMB(n− 1, j) ∗ a1(m− j + 1)) p

EVAL −105 CF SIMPLIFY COLLECT

≫≫

Comentario: Na terceira linha do programa colocamos o vetor a na pilha(p. ex. [ 1 8 27 64 ]), com os primeiros m+ 1 termos da P.A.m , e acionamosa subrotina anterior (CPAM), o vetor recebido (com o primeiro termo detodas as sequencias) e convertido em uma lista (AXL, p. 46) a fim de ser“invertido” , por exemplo, no caso da sequencia dos cubos, temos:

[ 1 7 12 6 ]→ { 1 7 12 6 } → { 6 12 7 1 } → [ 6 12 7 1 ]→ a1

porque esta forma invertida e requerida pela equacao (4.3) (p. 93).No somatorio fizemos uma translacao de uma unidade nos ındices do

vetor, a1(m− j + 1), porque na HP os ındices iniciam em 1 e nao em 0.Por exemplo, vamos encontrar uma formula para a sequencia :

1 3 5 7 9 11 . . .

Esta sequencia e uma progressao aritmetica de ordem 1, o que significa quee suficiente entrarmos com os dois primeiros termos: [ 1 3 ]. Neste caso oprograma nos devolve a seguinte formula: 2 · n− 1.

Encontre a formula do termo geral da seguinte P.A.2 (segunda diagonaldo triangulo de Pascal, p. 91)

1 3 6 10 15 21 . . .

95

Page 98: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Neste caso devemos fornecer os tres primeiros termos da sequencia : [ 1 3 6 ].

O programa nos devolve a seguinte formula: n·(n+1)2 .

Uma das possıveis aplicacoes de uma P.A.m e a seguinte: Dada umasequencia qualquer com m+1 termos, podemos encontrar um polinomio degrau menor ou igual a m que contem estes m+ 1 termos.

Por exemplo, nao existe uma formula que produza os numeros primos emsequencia, no entanto podemos obter uma formula para quantos numerosprimos desejarmos. Por exemplo, fixado os n primos iniciais, o programaanterior pode− teoricamente − ser utilizado para nos fornecer um polinomio(de grau menor ou igual a n− 1) que gera os n primeiros primos.

A tıtulo de exemplo, considere a sequencia dos cinco primeiros primos

2 3 5 7 11

Entrando com o vetor: [ 2 3 5 7 11 ], o programa nos devolve o seguintepolinomio:

P (n) =3 · n4 − 34 · n3 + 141 · n2 − 206 · n+ 144

24

Propriedade fundamental de uma P.A.m

Em uma progressao aritmetica a diferenca entre dois termos consecutivosquaisquer, e constante e igual a propria razao, isto e

a(n+1)

− an = r.

Este fato decorre da propria definicao. Perguntamos: Existiria uma pro-priedade analoga para uma P.A.m ? A resposta esta na seguinte,

Proposicao 1 (Propriedade fundamental da P.A.m). Em uma P.A.m, m+1termos consecutivos estao vinculados pela seguinte identidade:

m∑

k=0

(−1)k(m

k

)

a(n−k)m

= a10 (4.5)

Prova: [4] �

Exemplo: Tres termos consecutivos quaisquer de uma P.A.2, satisfazem:

2∑

k=0

(−1)k(2

k

)

a(n−k)2

= a10

Ou ainda,(2

0

)

a(n−0)2

−(2

1

)

a(n−1)2

+

(2

2

)

a(n−2)2

= a10

1 · an2 − 2 · a

(n−1)2+ 1 · a

(n−2)2= a10

96

Page 99: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Isto e,

an − 2 an−1 + a

n−2 = a10

Teorema da Unificacao

Em [4] demonstramos um teorema que unifica sob as P.A.m todas assequencias (an) que tem como formula um polinomio em n.

Resumindo: Uma sequencia (an) e uma P.A.m se, e somente se, e umpolinomio em n de grau m.

Soma dos termos de uma P.A.m

Para uma progressao aritmetica temos a seguinte formula para a somados seus n primeiros termos

Sn = n · a1 +n(n− 1) · r

2

Esta equacao e generalizada da seguinte forma:

Proposicao 2. Em toda P.A.m a soma Snm dos n termos iniciais vale:

Snm =m∑

j=0

(n

j + 1

)

a1(m−j)

(4.6)

Prova: [4] �

Fazendo uma ligeira mudanca no programa da p. 95 obtemos um pro-grama para calcular a formula, Snm , dos n primeiros termos de uma P.A.m ,assim:

≪ → a

≪ −2 CF − 3 CF − 105 SF − 103 CF

a CPAM AXL DUP SIZE 1 − pm p STO

REVLIST AXL pa1 p STOp∑

(j = 0,m,COMB(n, j + 1) ∗ a1(m− j + 1)) p

EVAL −105 CF SIMPLIFY COLLECT

≫≫

Armazene este programa na variavel FST − sera subrotina.

97

Page 100: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Exemplo: Dada a sequencia an = n2, dos quadrados dos numeros naturais,encontre uma formula para a soma dos seus n primeiros termos.

Solucao: Neste caso entramos com um vetor contendo os tres primeirostermos da sequencia: [ 1 4 9 ]. Obtemos: (2n+1)(n+1)n

6 .

Exemplo: Os numeros triangulares

1 3 6 . . .n(n+ 1)

2. . .

estao em P.A.2 , encontre uma formula para a soma dos seus termos.

Solucao: Neste caso entramos com um vetor contendo os tres primeirostermos da sequencia: [ 1 3 6 ]. Obtemos: (n+1)(n+2)n

6 .

O programa a seguir apresenta uma outra alternativa para o calculo daformula da soma, Snm :

≪ → P m

≪1 m 1 + FOR I

P n I 2 →LIST | EVALNEXT m 1 + →ARRY FST

≫≫

Entramos com a formula do termo geral da P.A.m e o grau do polinomio.Para o exemplo anterior, por exemplo, entramos com

p n ∗ (n+ 1)/2 p 2

O programa monta o vetor com os m+ 1 primeiros termos da P.A.m echama o programa anterior (subrotina).

Para a funcao do comando | veja p. 321 (Outra forma de substituicao. . . ).A seguir apresentamos um importante resultado para a resolucao do

Desafio do Seculo:

Teorema 4. Para a sequencia dada por an = nm, onde m e um naturalarbitrariamente fixado, e valida a seguinte identidade:

∆m(nm

)= m! (4.7)

Sendo assim, concluimos, pela definicao 2 (p. 89), que a sequencia listadaa seguir

1m 2m 3m . . . nm . . .

e uma P.A.m , o que significa que a formula (4.6) calcula a soma dos seustermos.

Juntando a equacao (4.6) (p. 97) com a equacao (4.4) (p. 94), anunciamoso seguinte resultado:

98

Page 101: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Teorema 5 (Gentil/1997). Sendo m um natural arbitrariamente fixado, evalida a seguinte identidade:

1m + 2m + 3m + · · · + nm =

m∑

j=0

(n

j + 1

)

a(m−j)

(4.8)

Onde:

a(m−j)

=

j∑

k=0

(−1)k(j

k

)

(1− k + j)m

(4.9)

Esta e uma formula inedita. Em 1713 foi publicado na ravista Ars Con-jectandi (Arte de Conjecturar) uma formula que, infelizmente, padece darecursividade − formula esta atribuida a Jacques Bernoulli (1654 − 1705).

Durante muitos anos − por seculos − os matematicos estiveram a procurade uma formula fechada para a referida soma . . . Ninguem teve exito, coubea mim materializar essa aspiracao.

Em um apendice (p. 102) mostramos e exemplificamos a formula de Bernoulli.

A Solucao do Desafio do Seculo

A solucao do desafio do seculo consta do seguinte programa:

≪ → m

≪ −2 CF − 3 CF − 105 SF − 103 CF

0 m FOR jp∑

(k = 0, j, (−1)∧ k ∗ COMB(j, k) ∗ (1− k + j)∧m) p EVAL

NEXT m 1 + ROW→ pa p STOp∑

(j = 0,m,COMB(n, j + 1) ∗ a(j + 1)) p EVAL

SIMPLIFY →Q COLLECT

≫≫

Da terceira ate a quinta linha do programa implementamos a equacao(4.9) e guardamos os coeficientes no vetor a. Na sexta (penultima) linhaimplementamos a equacao (4.8). A funcao COLLECT (p. 319) fatora umpolinomio (nos inteiros).

Entrando com m = 3, por exemplo, obtemos a formula:

13 + 23 + 33 + · · · + n3 =(n+ 1)2 · n2

22

Em FILES (p. 27) podemos ter acesso ao tamanho do programa.Resolvemos o Desafio do Seculo com a bagatela de 266 bytes . . . pasmem!

Jacques Bernoulli jamais sonhou com esta possibilidade (desenvolvimento).

99

Page 102: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Interregno: A Matematica como arte e engenharia

O matematico, como o pintor ou o

poeta, e um desenhista. Se os seus de-

senhos sao mais duradouros que os deles,

e porque sao feitos com ideias.

(G.H. Hardy)

Tenho enfatizado (junto a meus alunos) menos o aspecto utilitario damatematica, mas, sobretudo, sua vertente como arte e engenharia − talcomo de fato ela e em sua essencia. Assim como se desenvolve a sensibilidadepara a musica (ou outro tipo qualquer de arte) de igual modo desenvolve-sea sensibilidade para a matematica; digo, o enlevo experimentado pelo artistatambem faz parte da experiencia matematica.

A verdadeira matematica conjuga arte com engenharia. (p. ex., p. a seguir)

Me formei em engenharia (eletronica) no ano de 1986 e fui trabalhar emminha cidade natal (Boa Vista-RR) no setor de Telecomunicacoes (SistemaTelebras), era detentor de um cargo de chefia e minha ocupacao ordinaria seresumia em carimbar papeis e “monitorar” os “indicadores de desempenhooperacional”, onde utilizava tabelas e graficos. Embora fosse relativamentebem remunerado nao estava (nem um pouco) satisfeito pois sentia que min-has atividades nao se enquadravam na concepcao que se tem do que sejaengenharia.

Por outro lado, desde os tempos de estudante alimentei o sonho dedeixar minha contribuicao a ciencia; entretanto, nao desejava deixar umacontribuicao efemera mas, se possıvel, uma que “transcendesse os seculos”.Juntando a este requisito minha insatisfacao com a “engenharia” que eupraticava decidi me demitir para da aulas de matematica na ufrr, que es-tava sendo criada na ocasiao∗.

Observe que aquele que opta por fazer pesquisas antes de mais nada da(literalmente) um salto no escuro† porquanto, a priori, nao existe nenhumagarantia de que se tera algum exito.

Pois bem, atuando no magisterio, e nao descuidando do meu objetivoprincipal, comecei a ensaiar algumas criacoes na matematica; em retrospectocreio que fui bem sucedido. Por exemplo, em 2000 publiquei um livro ondeconstam alguns dos meus feitos − alem dos que constam no presente tra-balho.

∗Quando estudava para prestar concurso na universidade me ocorreu que naquele pre-ciso momento (1989) milhares de indivıduos, por este Brasil afora, estavam estudandopara melhorar suas condicoes salariais e eu, aqui, estudando para piorar a minha. Comefeito, de saida perderia a metade do salario, afora outras vantagens − foi o que aconteceu.

†Pelo ao menos numa conjuntura semelhante a que eu me encontrava, inclusive emtermos de preparo academico, apenas um curso de graduacao em engenharia, digo, numaoutra area. Por oportuno, por essa epoca (ainda como “engenheiro”) foi que comecei adesenvolver, de modo um tanto quanto empırico, as P.A. e P.G. de ordem m.

100

Page 103: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O interessante disso tudo e que somente muitos anos depois atinei comum fato deveras paradoxal: eu havia abandonado a “engenharia” e, semda-me conta, encontrava-me praticando a verdadeira engenharia!

Com efeito, conto com verdadeiras obras de engenharia-matematica dis-persas por outros livros meus (como [12], p. ex.), apenas para contextualizar:

Definicao P.A.m

(p. 89)

Triangulo

dePascal

F.T.G.

(eq. (4.3), p. 93)

∆m a(n)

(eq. (4.1), p. 90)

Teo. do gene

(Teo. 2, p. 92)

Binomiode

Newton

Snm

(Eq. (4.6), p. 97)

a1(m−j)

(Eq. (4.4), p. 94)

Teo. 4

(Eq. (4.7), p. 98)

1m +2m +3m + ···+nm

(Eq. (4.8), p. 99)

Aqui temos a “arvore genealogica” − ou fluxograma de interdependencia −do teorema 5 (p. 99).

Para a “construcao” daquela formula foi necessaria a construcao dasequacoes de Snm e a

1(m−j)e, ademais, a demonstracao do teorema Teo. 4,

etc., etc.A matematica e um campo demasiadamente arduo e

inospito para agradar aqueles a quem nao oferece grandes recom-

pensas. Recompensas que sao da mesma ındole que as do artista.

. . . Acrescenta ainda que e no ato de criar que o matematico en-

contra sua culminancia e que “nenhuma quantidade de trabalho

ou correcao tecnica pode substituir este momento de criacao na

vida de um matematico, poeta ou musico”. (Norbert Wiener)

101

Page 104: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Apendice: A formula recursiva de Bernoulli:

1m+2m+3m+ · · ·+nm =(n+ 1)m+1

m+ 1+

m∑

k=1

(m

k

)B

k

m− k + 1(n+1)m−k+1

Onde os Bksao os numeros de Bernoulli. Sabendo-se que B0 = 1, os

demais numeros sao calculados mediante a seguinte formula recursiva:

Bk= −

k−1∑

i=0

(k

i

)B

i

k + 1− i(4.10)

Por exemplo (m = 2):

12 + 22 + 32 + · · · + n2 =(n+ 1)2+1

2 + 1+

2∑

k=1

(2

k

)B

k

2− k + 1(n+1)2−k+1

Ou seja,

12 + 22 + 32 + · · · + n2 =(n+ 1)3

3+

2∑

k=1

(2

k

)B

k

3− k(n+ 1)3−k

Desenvolvendo o lado direito (LD),

LD =(n+ 1)3

3+

2∑

k=1

(2

k

)B

k

3− k(n + 1)3−k =

(n+ 1)3

3+

(2

1

)B1

2(n+ 1)2

+

(2

2

)B2

1(n+ 1)1

Isto e,

LD =(n+ 1)3

3+ B1 (n+ 1)2 + B2 (n+ 1) (4.11)

Em (4.10), temos

B1 = −1−1∑

i=0

(1

i

)B

i

2− i= −

(1

0

)B0

2− 0= −B0

2= −1

2

e

B2 = −2−1∑

i=0

(2

i

)B

i

2 + 1− i= −

(2

0

)B0

3−

(2

1

)B1

2

temos

B2 = −B0

3−B1 = −1

3− −1

2=

1

6Substituindo em (4.11), temos:

LD =(n+ 1)3

3+−12

(n+ 1)2 +1

6(n+ 1) =

n(2n+ 1)(n + 1)

6

A simplificacao a direita obtive na HP. (p. 282)

102

Page 105: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

4.4 Progressoes Geometricas de Ordem m

Qualquer progressao geometrica serve como exemplo de uma progressaogeometrica de ordem um;

Um exemplo de uma progressao geometrica de ordem dois e dado pelasequencia a seguir:

1 1 − 1 − 1 1 1 − 1 − 1 . . .

Um outro exemplo e dado pela sequencia seguinte:

1 22 43 84 165 . . . 2n(n−1) . . .

O que estas sequencias tem em comum e o fato de os quocientes suces-sivos entre seus termos consecutivos resultar em uma sequencia constante,veja:

1 1 −1 −1 1 1 . . . ∆0

1 −1 1 −1 1 . . . ∆1

−1 −1 −1 −1 . . . ∆2

Ainda,

1 22 43 84 165 326 . . . ∆0

22 24 26 28 210 . . . ∆1

22 22 22 22 . . . ∆2

Onde anotamos: ∆m an = m - esimo quociente da sequencia an .

Agora estamos em condicoes de estabelecer a seguinte:

Definicao 3 (Progressao geometrica de ordem m). Uma sequencia (an) euma progressao geometrica de ordem m se e somente se

∆m an = constante 6= 1

Usaremos da seguinte notacao: P.G.m, para uma progressao geometricade ordem m (m = 0, 1, 2, . . .).

Uma P.G.0 e qualquer sequencia constante, com a exigencia de que estaconstante seja diferente de 1 (e de 0).

Em nosso livro ja mencionado ([4]) demonstramos a seguinte formula

∆m a(n) =

m∏

k=0

(a(n− k +m)

)(−1)k(m

k ) (4.12)

para o m-esimo quociente de uma sequencia a(n).

Compare esta equacao com a equacao (4.1) (p. 90).

103

Page 106: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Tal como no estudo das progressoes aritmeticas, convencionamos:

anm = n - esimo termo da P.G. de ordem m.

Tambem demonstramos a formula do termo geral de uma P.G.m , assim:

Teorema 6 (Formula do termo geral de uma P.G.m ). Em uma P.G.m on - esimo termo vale

anm =

m∏

j=0

a(n−1

j )1(m−j)

(4.13)

Compare esta formula com a equacao (4.3) (p. 93).Podemos escrever a formula do termo geral de uma P.G.m em funcao

apenas dos seus proprios termos com a seguinte equacao:

a1(m−j)

=

j∏

k=0

a(−1)k ( j

k )(1−k+j)m

(4.14)

Compare esta formula com a equacao (4.4) (p. 94).O seguinte teorema afirma que se tomarmos j quocientes sucessivos entre

termos consecutivos de uma P.G.m , obteremos uma P.G. de ordem m− j.

Teorema 7 (Teorema do gene-II). Seja m um natural arbitrariamente fixa-do e seja j um natural tal que 0 ≤ j ≤ m. Nestas condicoes a seguinteidentidade e valida:

∆j anm = an(m−j)

Prova: [4] �

Propriedade fundamental de uma P.G.m

Em uma progressao geometrica o quociente entre dois termos consecu-tivos quaisquer, e constante e igual a propria razao, isto e

a(n+1)

/an = q.

Este fato decorre da propria definicao. Perguntamos: Existiria uma pro-priedade analoga para uma P.G.m ? A resposta esta na seguinte,

Proposicao 3 (Propriedade fundamental da P.G.m). Em uma P.G.m, m+1termos consecutivos estao vinculados pela seguinte identidade:

m∏

k=0

a(−1)k (m

k )(n−k)m

= a10 (4.15)

Prova: [4] �

Compare esta equacao com a equacao (4.5) (p. 96).

104

Page 107: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Produto dos termos de uma P.G.m

Para uma progressao geometrica temos a seguinte formula para o produtodos seus n primeiros termos

Pn = an1· q

n(n−1)2

Uma generalizacao desta formula e dada a seguir

Proposicao 4. Em toda P.G.m o produto Pnm dos n termos iniciais vale:

Pnm =m∏

j=0

a( nj+1)

1(m−j)(4.16)

Compare esta equacao com a equacao 4.6 (p. 97).

Nao iremos programar as formulas das P.G.m em funcao de uma falhada HP 50g , por exemplo, ela nao simplifica uma expressao trivial como aseguinte:

(−1)n · (−1)n2

Unificando sequencias sob as P.G.m

Na p. 97 afirmamos que toda sequencia que tem como formula do termogeral um polinomio de grau m e uma P.A.m . Desejamos agora estabelecerum analogo para as P.G.m .

Definicao 4 (Polinomio dual). Dada uma sequencia de numeros reais

(am , am−1 , . . . , a1 , a0)

com ai6= 0 (i = 0, 1, . . . , m) consideremos a funcao p : R→ R dada por

p(x) = axm

m· axm−1

m−1· · · · · ax2

2· ax

1· a0 (4.17)

a funcao p e denominada funcao dupolinomial ou dupolinomio associa-da(o) a sequencia dada.

Nota: Devido as regras de potenciacao, se x ∈ R, a definicao acima evalida para 0 < a

i6= 1 e se x ∈ Z, vale para todo a

ireal nao-nulo.

Exemplos:

(a) p(x) = 2x3 · 3x2 · 4−x · 12 ⇒

(2, 3, 1

4 ,12

)

(b) p(x) = 3x2−1 ⇒

(3, 1, 1

3

)

(c) p(n) = (−1)n3−1 ⇒(− 1, 1, 1, −1

)

105

Page 108: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Definicao 5 (Grau). Seja p(x) um polinomio dual nao identicamente 1 (talcomo em (4.17)). Chama-se grau de p, e representa-se por ∂p ou gr p, onumero natural q tal que aq 6= 1 e a

i= 1 para todo i > q.

∂p = q ⇐⇒{

aq 6= 1

ai= 1, ∀ i > q

Pode ser mostrado (veja [4]) que para um dupolinomio p(x), tal como em(4.17), vale a seguinte identidade

m∏

k=0

p(−1)k (mk )(x+m−k)

= am!m

(4.18)

Para x = n ∈ N o lado esquerdo da identidade acima e justamente om - esimo quociente, assim: (eq. (4.12) p. 103)

∆m p(n) =m∏

k=0

p(−1)k (mk )(n+m−k)

= am!m

Conclusao: Toda sequencia que tem como formula do termo geral umdupolinomio de grau m e tal que am!

m6= 1 e uma P.G.m . (def 3, p. 103)

A formula do termo geral de uma P.G.m e um polinomio dual.

Definicao 6 (Expressao aritmetica ordenada-Dualidade). Chamamos deexpressao aritmetica ordenada uma expressao da forma

y = k0 a0 + k1 a1 + k2 a2 + · · · + kn an + · · ·e sua expressao dual por

y = ak00 · ak11 · ak22 · · · · · aknn · · · ·

Definimos tambem ¯y = y. Para os nossos propositos sera suficienteconsiderar expressoes aritmeticas ordenadas em que a

i∈ R

∗ e ki∈ Z.

Isto e, dada uma expressao aritmetica ordenada, para obtermos sua ex-pressao dual, intermudamos soma e produto, enquanto seus coeficientespassam a ser expoentes na expressao dual.

A toda propriedade (ou formula) de uma P.A.m corresponde uma pro-priedade (ou formula) dual para a P.G.m .

Nas provas concernentes as P.A.m se trocarmos soma por produtoprovaremos as propriedades (ou formulas) duais das P.G.m .

4.4.1 Encontrando combinacoes

Em seguida ao Desafio do Seculo lancei tambem o da Decada.

� O Desafio da Decada

106

Page 109: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O Desafio da DecadaNao temos conhecimento de que existia uma formula para gerar a re-

presentacao binaria de um numero inteiro positivo. A formula seguintepreenche esta lacuna

anj

=

1, se⌊

n

2j

⌋e ımpar;

0, se⌊

n

2j

⌋e par.

(4.19)

Onde: anj

e o j−esimo bit da representacao de n. Fixado n fazemosj = 0, 1, 2, . . . ,

⌊logn

2

⌋.

Nota:⌊x⌋e a parte inteira de x (funcao piso). Por exemplo,

⌊1, 25

⌋= 1.

Para n = 20, por exemplo, temos j = 0, 1, 2, 3, 4; a formula acima nosfornece: 0 0 1 0 1. Ou ainda: 0 0 1 0 1 = 0 · 20 + 0 · 21 + 1 · 22 + 0 · 23 + 1 · 24.

Observe, ademais, que esta formula nos permite obter diretamente (senecessario) qualquer bit de uma representacao binaria − sem precisar obtertoda a representacao. Por outro lado, considere tambem a seguinte formula

bnj

=

1, se( n2j

)e ımpar;

0, se( n2j

)e par.

Estamos assumindo que:(mn

)= m!

(m−n)! n! , se m ≥ n e(mn

)= 0, se m < n.

Nota: Uma outra aplicacao da matriz dada em (4.19) e no calculo de com-binacoes. A formula

(mn

)= m!

(m−n)!n! nos diz quantas sao as combinacoesde m objetos tomados n a n, mas esta formula nao nos diz quais sao estascombinacoes. A matriz (a

nj) nos permite encontrar as tais combinacoes.

O Desafio:1a ) Etapa: programe as duas formulas e comprove − em alguns casos par-ticulares − que ambas fornecem o mesmo resultado.

2a ) Etapa: prove matematicamente que as duas formulas sao iguais.

Sugestao: prove que⌊

n

2j

⌋e( n2j

)tem a mesma paridade (i.e., ambos sao

pares ou ambos sao ımpares) para n e j inteiros positivos arbitrariamentefixados.3a ) Etapa: prove que a formula a

njde fato nos fornece o desenvolvimento

binario de um inteiro positivo n.

− As possıveis solucoes devem ser enviadas para: [email protected]

− O arquivo .pdf deste desafio encontra-se disponıvel em:

www.profgentil.comProf. Gentil, o taumaturgoBoa Vista, RR/21.05.2013

107

Page 110: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Depois de nomear os dois desafios me bateu uma forte suspeita de queO Desafio da Decada − na sua ıntegra − e que deveria ser o do seculo.

A conhecida formula da analise combinatoria(nr

)= n !

(n−r)! r! nos forneceo numero de combinacoes dos n elementos de um conjunto, tomados r a r.Mas esta formula nao nos fornece as tais combinacoes. O nosso objetivonesta secao e estabelecer, com o auxılio das P.G.m, uma formula que temprecisamente esta finalidade.

Problema: Dado o conjunto A = {a1 , a2 , a3 , a4}, obter todas as com-binacoes possıveis de seus elementos.

Solucao: O raciocınio que sera desenvolvido a seguir se estende a umconjunto com um numero arbitrario de elementos.

Todas as combinacoes podem ser obtidas da seguinte matriz

1 1 1 1

−1 1 1 1

1 −1 1 1

−1 −1 1 1

1 1 −1 1

−1 1 −1 1

1 −1 −1 1

−1 −1 −1 1

1 1 1 −1

−1 1 1 −1

1 −1 1 −1

−1 −1 1 −1

1 1 −1 −1

−1 1 −1 −1

1 −1 −1 −1

−1 −1 −1 −1

a1 a2 a3 a4 {ai}

∅{a1}{a2}{a1 , a2}{a3}{a1 , a3}{a2 , a3}{a1 , a2 , a3}{a4}{a1 , a4}{a2 , a4}{a1 , a2 , a4}{a3 , a4}{a1 , a3 , a4}{a2 , a3 , a4}{a1 , a2 , a3 , a4}

Onde convencionamos que quando

ocorre 1 na sequencia o respectivo ele-

mento (na coluna) participa da com-

binacao, onde ocorre −1 nao participa.

O leitor pode inferir facilmente a lei de construcao desta matriz. Soobservamos que o numero de colunas e igual ao numero n de elementos doconjunto, o numero de linhas e igual ao de subconjuntos 2n.

Esta matriz, apropriadamente modificada, comparece em Logica e EletronicaDigital.

Com o auxılio das P.G.ms vamos deduzir uma formula para a matrizacima:

( i ) Os termos da coluna um (j = 1) estao em P.G.1, onde an1 = (−1 )n−1 ;

( ii ) os termos da coluna dois (j = 2) estao em P.G.2, onde an2 = (−1 )(

n−12 )

;

( iii ) pode ser mostrado ainda que os termos da coluna tres (j = 3) estao

em P.G.4, onde an4 = (−1 )(n−14 )

.

De um modo geral, os termos da coluna j estao em P.G.2j−1

, onde

108

Page 111: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

aij= (−1 )

(i−1

2j−1 )

(4.20)

Interregno: Costumo dizer que, enquanto a gestacao da mulher duranove meses, a do homem pode durar anos. Deduzi a formula (4.20) por voltado ano de 1989 e, naturalmente, senti uma certa euforia (mesmo porque naocasiao estava precisando, desesperadamente, calcular algumas combinacoes− observo que nao se tratava de fazer uma “fezinha”). Mas, nao obstanteo deslumbramento inicial, confesso que a euforia foi fugaz. Nao tardei a meentristecer sobremaneira com a formula em questao (entrei em depressaopos-parto. O leitor pode estar certo de que isto tambem acontece paraquem concebe pelas vias intelectuais). Explico: Ao programar a formulapara o calculo de algumas combinacoes, observei que o resultado nao era oesperado. Revi cuidadosamente a deducao da formula e nao encontrei erroalgum. Algum tempo depois percebi que o erro era computacional − maisprecisamente de arredondamentos.

Observe que no expoente da equacao devemos ter um numero inteiro, parou ımpar; no que ira resultar +1 ou −1 na matriz. Como devemos lidar comvalores elevados de combinacoes, o computador fara um arredondamento e,por vezes, o que seria um numero ımpar (no expoente) vai ser arredondadopara um numero par e, vice-versa. Por exemplo, a calculadora (estamosfalando da HP48, uma das mais conceituadas∗) nos fornece o seguinte re-sultado:

(−1 )(6020 )

= (−1 )4.19184450581E15 = 1,

enquanto o resultado correto e, (−1 )(6020)

= −1.Como ja disse, fiquei assaz frustrado, pois minha formula nao era confiavel

do ponto de vista computacional.Uma pena, pois e uma formula tao bonitinha (o leitor queira nos descul-

par, e que todo pai acha seu proprio filho bonito; e uma lei natural, fazero que?). Desta forma foi que perdi todo o encantamento com este rebento,rebelde a tecnica. . .

Bem, cerca de dez anos depois (1999, precisamente), consegui a ressureicaodo que fora reputado como inutil. . . Atraves de um teorema do matematicofrances Edouard Lucas (1842−1891) estabeleci a seguinte curiosa identidade

aij= (−1 )

(i−1

2j−1 )

= (−1 )µi−1

2j−1

Ou seja, nao existe a necessidade de calcularmos o binomial constante naformula, basta obter o bit de posicao j − 1, na expansao binaria de i− 1.

(p. 116)

∗Era a versao da HP que eu usava quando redigia o presente texto.

109

Page 112: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

. . . E assim e que, apos uma decada de afastamento, consegui me reapro-ximar de meu rebento.

A matriz abaixo

aij= (−1 )

i−1

2j−1

(4.21)

gera (em um caso particular) a matriz de combinac~oes da p. 108.

Nota: ⌊x ⌋ e o maior inteiro que nao supera x. Na HP voce acessa estafuncao com o comando FLOOR (ver tabela dos reais, p. 13).

− Ja nao conto mais o numero de formulas que deduzi (demonstrei) namatematica (lembro a eq. 4.8, p. 99), confesso que, pela formula acima, tenhoum carinho todo especial∗.

O programa a seguir utiliza a matriz (4.21) para encontrar as combinacoesde N objetos, tomados r a r.

Devemos entrar com uma lista contendo os objetos e r (nesta ordem).

≪ → L r

≪ {} pLC p STO L SIZE pN p STO

1 2 N ∧ FOR I

1 N FOR J

IF p(−1) ∧ FLOOR((I − 1)/2 ∧ (J − 1)) == 1p

THEN J

END

NEXT DEPTH DUPpC

pSTO

IFpC==r

p

THEN ROW→ pV p STO 1 r

FOR K L pV(K) p EVAL

GET

NEXT r

→LIST 1 →LIST LC + pLC p STO

ELSE CLEAR

END

NEXT LC

≫≫

∗Precisamente pelos detalhes tecnicos envolvidos em sua deducao e demonstracao.

110

Page 113: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Por exemplo, para a seguinte entrada: { a b c d } 3, o programanos devolve,

{ { a b c } { a b d } { a c d } { b c d } }

Para a seguinte entrada: { a∑

c π − 1 } 3, o programa nosdevolve,

{ { a∑

c } { a∑

π } { a c π } { ∑c π } { a

∑-1 }

{ a c -1 } { ∑c -1 } { a π -1 } { ∑

π -1 } { c π -1 } }

Descricao do programa:

Inicialmente observe que temos uma concatenacao de estruturas com aseguinte configuracao:

FOR

FORIF

IFFOR

1. Inicialmente (segunda linha do programa) armazenamos uma lista vaziana variavel LC (esta lista guardara as combinacoes “uteis”);

2. Depois colocamos a lista (com os objetos) na pilha e pedimos seu com-primento (dimensao) o qual e armazenado na variavel N;

3. Em seguida fixamos a variacao do primeiro FOR: de 1 ate 2N ; este FORira gerar os ındices das linhas da matriz de combinacoes;

4. Apos, fixamos a variacao do segundo FOR: de 1 ate N ; este FOR iragerar os ındices das colunas da matriz de combinacoes;

5. O primeiro IF testa se o elemento aijda matriz e igual a 1; se for este o

caso colocamos o ındice da coluna deste elemento na pilha;

− Resumindo ate aqui: o primeiro FOR fixa uma linha (da matriz); o se-gundo FOR pesquisa todas as colunas desta linha procurando os elementosiguais a 1 e guarda os ındices (posicoes) destes elementos.

6. Ao sair do segundo laco (FOR) perguntamos (via comando DEPTH)quantos elementos (ındices) existem na pilha;∗

7. Em seguida, duplicamos esta informacao e guardamos uma copia navariavel C;

∗Em outras palavras: estamos contabilizando o saldo de nossa “pescaria”.

111

Page 114: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

8. Apos, temos o segundo IF que testa se o numero de elementos iguais a 1,na linha pesquisada, e igual a r; se for este o caso guardamos (com ROW→)os ındices em um vetor V e o armazenamos na variavel V ; o FOR a seguirtem a incubencia de retirar, da lista original, todos os elementos com ındicesno vetor V (ou seja, uma combinacao valida; digo, com r elementos); ao sairdo FOR colocamos os elementos da pilha em uma lista e depois novamenteentre chaves (uma lista dentro da outra); em seguida colocamos na pilhaa lista LC (inicialmente vazia) e colocamos (+ ) a lista com a combinacaovalida dentro da lista LC e armazenamos a lista “atualizada” na variavelLC (nela propria). Em seguida o ultimo NEXT incrementa a linha (istoe, faz o processamento ir para uma nova linha da matriz) e tudo se repetecomo anteriormente.

Se nao for este o caso (isto e, se o numero de elementos iguais a 1, nalinha pesquisada, nao e igual a r), simplesmente limpamos (CLEAR) a pilha(esta linha nao nos interessa);

9. Ao termino o programa disponibiliza, na pilha, a lista com todas ascombinacoes uteis.

Desenvolvimento binario

Uma outra utilidade para a matriz de combinacoes e no desenvolvimentobinario de um inteiro positivo n. Com efeito, se trocarmos −1 por 0, assim:

aij=

1, se⌊

i−1

2j−1

e par;

0, se⌊

i−1

2j−1

e ımpar.

(4.22)

Obtemos, por exemplo:

20 21 22 23

1 1 1 1 15=1·20 +1·21 +1·22 +1·230 1 1 1 14=0·20 +1·21 +1·22 +1·231 0 1 1 13=1·20 +0·21 +1·22 +1·230 0 1 1 12=0·20 +0·21 +1·22 +1·231 1 0 1 11=1·20 +1·21 +0·22 +1·230 1 0 1 10=0·20 +1·21 +0·22 +1·231 0 0 1 9=1·20 +0·21 +0·22 +1·230 0 0 1 8=0·20 +0·21 +0·22 +1·231 1 1 0 7=1·20 +1·21 +1·22 +0·230 1 1 0 6=0·20 +1·21 +1·22 +0·231 0 1 0 5=1·20 +0·21 +1·22 +0·230 0 1 0 4=0·20 +0·21 +1·22 +0·231 1 0 0 3=1·20 +1·21 +0·22 +0·230 1 0 0 2=0·20 +1·21 +0·22 +0·231 0 0 0 1=1·20 +0·21 +0·22 +0·230 0 0 0 0=0·20 +0·21 +0·22 +0·23

112

Page 115: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Na matriz de combinacoes (equacao (4.21), p. 110) a contagem de linhas ecolunas inicia-se em 1, na matriz acima (matriz binaria) a contagem de lin-has e colunas deve iniciar-se em 0, o que significa que devemos fazer umatranslacao nos ındices da matriz (4.22); e, ademais, “inverter-la ”∗; sendoassim tendo em conta estas observacoes e escrevendo a equacao anterior emfuncao do natural n, a ser desenvolvido, resulta:

anj

=

1, se⌊

n

2j

⌋e ımpar;

0, se⌊

n

2j

⌋e par.

(4.23)

Esta equacao nos fornece o j-esimo bit do desenvolvimento binario de n.Para programar esta equacao precisamos da variacao de j, e isto se

consegue assim:

n

2j≥ 1 ⇒ 2

j ≤ n ⇒ j ≤ logn2

Entao, fazemos: j = 0, 1, 2, . . . ,⌊logn

2

⌋.

O programa a seguir recebe um numero natural n e devolve n em base 2.

≪ → n

≪ 0 pFLOOR(LOG(n)/LOG(2)) p EVAL

FOR j

IF pFP(FLOOR(n/2 ∧ j)/2)==0 p

THEN 0

ELSE 1

END

NEXT DEPTH ROW→≫

∗ ∗ ∗Dogmas sao prisoes, um espırito que

queira realizar belas obras, que tambem

queira os meios necessarios, tem de ser

cetico. Estar livre de toda forma de

crenca pertence a forca, ao poder de ver

sem algemas. (Nietzsche)

∗Isto e, trocar 1 por 0 e 0 por 1.

113

Page 116: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

4.5 Exercıcios

Os exercıcios seguintes destinam-se a dois tipos de publico: os diletantesda matematica e os da computacao (programacao). A maioria dos exercıciossao da forma: prove e comprove; os da matematica devem prova-los e osda computacao comprova-los − programando-os “tanto quanto possıvel”.

1) Resolva o Desafio do Seculo utilizando a formula de Bernoulli. (p. 102)

2) Sendo f : R −→ R, dada por f(x) = x2 + 1, encontre

S = f(1) + f(2) + f(3) + · · · + f(n)

3) Sendo f : R −→ R, dada por f(x) = 2x2−1, encontre

P = f(1) · f(2) · f(3) · · · · · f(n)

4) Prove (e comprove) que a diagonal m (m = 0, 1, 2, . . .) do Trianguloaritmetico de Pascal esta em P.A.m .

5) Existe a funcao NEXTPRIME (p. 325) que fornece o proximo primo paraum numero inteiro dado. Faca um programa que devolva uma formula(polinomio) que gere todos os primos entre dois inteiros dados.

6) Considere o dupolinomio p(x) = 3x2−1, prove que (eq. (4.18), p. 106)

2∏

k=0

p(−1)k (2k)(x+2−k)

= 32!

7) Seja p(n) = (−1)n3−1, prove que

3∏

k=0

p(−1)k (3k)(n+3−k)

= (−1)3!

8) Calcule o valor da soma

S =

n∑

k=1

k(2k + 1)

9) Calcule o valor da soma

S =

n∑

k=1

(2k − 1)2 (2k + 1)

10) Produto dos termos de uma P.A. Em nosso livro [4] deduzimose demonstramos a seguinte formula para o produto dos termos de umaprogressao aritmetica de primeiro termo a1 e razao r:

Pn = a1 rn ·

((a1 + nr)(1r )!

)

(a1 + nr)(a1

r

)!

(4.24)

114

Page 117: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Comentario: Existe uma funcao matematica (funcao gama − ja esta embu-tida na HP 50g ) que generaliza o fatorial de um numero para todos os reais,salvo os inteiros negativos. Portanto, a formula anterior e valida sempre quea1r 6∈ Z−. Por exemplo, confirme em sua calculadora os seguintes fatoriais

(−0.5)! = 2(0.5)! =√π = 1.772454 . . .

A vantagem da formula (4.24) e que podemos trabalha-la com qualquercalculadora, pois sempre sera possıvel simplificar o fatorial de uma eventualfracao. Pois bem, prove (e comprove) a seguinte equacao:

1 · 3 · 5 · . . . · (2n− 1)

2 · 4 · 6 · . . . · (2n) =1

n!·((2n + 1)(12 )

)!

(2n + 1)(12 )!

Para todo x ∈ ] − 1, 1 [, temos

(1 + x)−1/2 = 1 +

+∞∑

n=1

(−1)n 1 · 3 · 5 · . . . · (2n− 1)

2 · 4 · 6 · . . . · (2n) xn

Ou ainda,

Para todo x ∈ ] − 1, 1 [, temos

(1− x2)−1/2 = 1 +

+∞∑

n=1

(−1)n 1 · 3 · 5 · . . . · (2n− 1)

2 · 4 · 6 · . . . · (2n) x2n

11) A energia cinetica K de uma partıcula de massa m e velocidade v edada por K = 1

2 mv2. Nesta formula, a massa m e considerada constantee K e denominada energia cinetica newtoniana. Por outro lado, na teoriada relatividade de Albert Einstein, a massa m cresce com a velocidade e aenergia K e dada pela formula

K = m0 c2

[

1√

1− (v/c)2− 1

]

na qual m0 e a massa de repouso (quando a velocidade da partıcula e iguala 0) e c e a velocidade da luz. Use uma serie binomial apropriada paramostrar que se a velocidade for pequena comparada com a velocidade da luz(i.e., v/c ≪ 1), entao as energias newtoniana e relativista sao praticamentea mesma.

12) Prove, pela definicao 3 (p. 103), que a sequencia dada por an = (−1 )(n−12 )

e uma P.G.2 .

13) Prove, pela definicao 3 (p. 103), que a sequencia dada por an = (−1 )(n−14 )

e uma P.G.4 .

115

Page 118: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

14) Prove que, para j arbitrariamente fixado, a sequencia resultante damatriz (4.20) (p. 109) e, de fato, uma P.G.2

j−1

15) Prove que a sequencia dada por an = (−1 )⌊n−12 ⌋

e uma P.G.2 .

16) Prove que a sequencia dada por an = (−1 )⌊n−14 ⌋

e uma P.G.4 .

17) Prove que, para j arbitrariamente fixado, a sequencia resultante damatriz (4.21) (p. 110) e, de fato, uma P.G.2

j−1

18) Prove os teoremas do gene − teo. 2, p. 92 e teo. 7, p. 104.

19) Prove que a sequencia dada por an = nm e uma progressao aritmeticade ordem m. Sugestao: Prove (4.7), p. 98.

20) Prove que se (an) e uma sequencia dada por

an = am nm + am−1 n

m−1 + · · ·+ a1 n+ a0

com am 6= 0, entao (an) e uma P.A.m.

21) Seja q(x) = axm. Sendo x ∈ R e 0 < a 6= 1 ou x ∈ Z e a 6= 0 prove

que:m∏

k=0

q(−1)k (mk )(x+m−k)

= am!

22) Para cada m, natural arbitrariamente fixado, a sequencia seguinte

an = 4⌊ n− 1

2m

− 2⌊ n− 1

2m−1

+ 1

e uma P.G. de ordem 2m−1. Prove isto para m = 1 e m = 2.

23) Faremos uso da seguinte notacao:

µn2j e o bit (digito) de posicao j no desenvolvimento binario de n.

Estamos contando as posicoes da esquerda para a direita, iniciando em zero.Por exemplo, para

25 = 1 · 20 + 0 · 21 + 0 · 22 + 1 · 23 + 1 · 24 ⇒ 25 = ( 1 0 0 1 1 )2

temos,µ2520

= 1, µ2521

= 0, µ2522

= 0, µ2523

= 1, µ2524

= 1.

Podemos considerar,

µ2525

= µ2526

= µ2527

= · · · = 0.

A sequencia dada abaixo

an =

1, se µn−1

2m−1 = 0;

−1, se µn−1

2m−1 = 1.

116

Page 119: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

e uma P.G.2m−1

, onde m e um natural arbitrariamente fixado.Prove isto para m = 1 e m = 2.

24) Prove que a matriz (4.21) (p. 110) gera a matriz de combinacoes e queela presta-se de fato ao calculo de combinacoes.

25) Prove que de fato a matriz dada pela equacao (4.20) (p. 109) calculacombinacoes.

Sugestao: Tendo resolvido o exercıcio anterior, demonstre a igualdade:

(−1 )(

i−1

2j−1 )

= (−1 )⌊

i−1

2j−1

∗ ∗ ∗No ano de 2000 publiquei um livro de matematica − “Novas Sequencias

Artmeticas e Geometricas ” (p. 352) − com alguns resultados ineditos.Esse livro chegou as maos de um renomado matematico brasileiro, Prof.Ubiratan D,Ambrosio, que teceu∗ alguns comentarios sobre o mesmo.

Tomei a liberdade de incluir aqui o email que o Prof. me enviou. Emboraos comentarios se refiram a um outro livro, penso que minha decisao sejustifica tendo em conta que ambos os livros tem em comum o mesmo autor.O endereco [email protected] foi recusado.

Gostaria que ele recebesse esse e-mail. De fato, gostei muito do livro.

Um Abraco, Ubiratan

−−−−− Original Message −−−−−From: Ubiratan D,Ambrosio <[email protected]>

To: Gentil Lopes da Silva

Sent: Saturday, November 06, 2004 10:46 AM

Subject: Obrigado pelo livro

Caro Gentil

Muito obrigado pelo livro que voce mandou pelo Chateau. Esta muito bom,interessante e cheio de provocacoes. Da oportunidade para os estudantesse iniciarem em pesquisas. Voce fala que o livro destina-se a alunos de2o e 3o graus. Eu diria que e tambem para a pos. Aritmetica continuasendo grande fonte de problemas de pesquisa que podem ser trabalhadoscom relativamente pouco da complicada linguagem, notacoes e resultadosque caracterizam muitas areas da matematica. Sao formulacoes simples quepodem ser trabalhados com pouca tecnica, exigindo imaginacao e criativi-dade. Vou recomendar aos meus alunos. Mas tive um problema. Nos sitesdas livrarias, o livro nao existe. E nem esta no site da Thesaurus. Recomen-dar um livro implica dizer como adquirir. O que voce diz? Siga em frente

∗Observo que de livre iniciativa, isto e, sem que eu tenha solicitado.

117

Page 120: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

com suas ideias. As suas reflexoes iniciais, a sua escolha de epıgrafes, e apropria capa, sao uma grande contribuicao para um novo pensar na urgenterenovacao da educacao em todos os nıveis. A sua trajetoria desde seus estu-dos, lecionando em condicoes precarias, e com as dificuldades para publicaro livro e um exemplo, muitıssimo frequente, do processo (certamente inten-cional) de desencorajar o florescimento dos criativos, e abrir o espaco paraos executores de ideias de outros.

Uma curiosidade: voce sabia que o Edouard Lucas, que voce cita na pagina393, e quem fez a revisao tecnica para a publicacao postuma do livro “Melangesde Calcul Integral”, de Joaquim Gomes de Souza, o Souzinha, em 1882? Olivro havia sido recusado por inumeras editoras enquanto ele estava vivo.

Muito obrigado.

Um abraco, Ubiratan

∗ ∗ ∗Nota: Como o Prof. Ubiratan nao estava conseguindo acessar o meu

antigo endereco eletronico ([email protected]) ele enviou o email a umseu ex-aluno (saudoso Chateaubriand), colega meu, que me repassou.

Como evidentemente muitos sao os que nao conhecem o Professor Ubi-ratan, a seguir transcrevo uma parte do seu currıculo:

- Em 1963, defendeu sua tese de doutorado em matematica pura na Escolade Engenharia de Sao Carlos (EESC);

- Pos-doutor em matematica - Brown University;

- Em 1964, foi convidado para ser pesquisador associado no Departamentode Matematica da Brown University, em Providence, Rhode Island, nos Es-tados Unidos da America;

- Durante sua permanencia nos Estados Unidos, dedicou-se a matematicapura;

- Em 1972, decidiu voltar ao Brasil, para a Universidade Estadual de Campi-nas (UNICAMP), onde foi Diretor do Instituto de Matematica, Estatıstica eCiencia da Computacao (IMECC), orientou varios doutores e mestres; alemde fazer pesquisa em matematica pura e autor de livros na area de Topologiae Analise;

- Atualmente e apontado como um dos maiores pesquisadores da visaoholıstica em Ciencias e Educacao. Possui mais de 200 obras, entre livrose artigos.

118

Page 121: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Capıtulo 5APLICACOES A MATEMATICAFINANCEIRA

Flexibilidade permite-me progredir a cada dia; a mover-me cada vezmais proximo a minha meta de perfeicao. Esta virtude tem forca dentrodela, assim como elasticidade. (Raja Yoga)

Introducao:

Neste capıtulo estaremos tornando patente as inumeras vantagens da cal-culadora HP 50g frente a HP 12C no que diz respeito a matematica finan-ceira; estaremos ademais arrolando mais alguns exemplos da importancia daprogramacao algebrica, mesmo nos casos em que a saıda de um programaseja apenas um numero.

5.1 Breve comparacao entre a HP 50g e a HP 12C

Apresentaremos brevemente algumas diferencas imediatas − e decisivas− entre as duas calculadoras.

×

119

Page 122: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

1a ) Tela plana × tela unidimensional. Como consequencia a HP 12Ctrabalha com alguns registradores∗ invisıveis ao operador, na HP 50g estesregistradores (que sao os nıveis da pilha) sao visıveis. Aqui vai uma diferencasignificativa entre ambas. Um visor maior tanto facilita a insercao de dadoscomo a saıda (visualizacao) de dados.

2a ) A HP 12C trabalha apenas com a logica RPN (modo pilha), aHP 50g trabalha nos dois modos: RPN e algebrico − Apenas esta diferencaja coloca a HP 50g kilometros a frente da HP 12C, no que diz respeito apotencia de calculos.

Tenho lido na internet alguns comentarios sugerindo que a logica RPNe sempre superior a algebrica. Creio que vai depender do criterio adotado.Para calculos longos − inclusive a nıvel de programacao − a algebrica e maisaconselhavel.

O ideal e um dispositivo que utiliza ambas as logicas, creio que destaafirmacao ninguem discorda. E este dispositivo e a HP 50g e nao a HP 12C.

3a ) A HP 12C nao e programavel, enquanto que esta e, precisamente, aespecialidade da HP 50g − Apenas esta diferenca ja coloca a HP 50g anos-luz a frente da HP 12C, no que diz respeito a potencia de calculos.

Nota: A bem da verdade, a HP 12C admite um certo nıvel de programacao,que eu, todavia, cosidero rudimentar, tosco e sofrivel, quando comparado aoda HP 50g − e como se fosse inexistente, tanto isto e verdade que consulteialguns livros de matematica financeira, que trabalham com a HP 12C, enenhum deles sequer menciona que esta calculadora seja programavel.

4a ) A HP 12C nao trabalha com listas e matrizes, e isto faz muitadiferenca, tanto na matematica financeira quanto na Estatıstica, como estare-mos mostrando no cap. 6 − na verdade, ja mostramos isto em capıtulosanteriores.

5a ) Os usuarios da HP 50g podem guardar seus arquivos (programas)em pastas ou cartao de memoria. Por exemplo, assim:

HP 50g

HOME

HP 12G

MAT.FIN.

ESTAT.

6a ) A HP 50g admite programacao simbolica.

∗Que sao posicoes de memoria.

120

Page 123: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

7a ) Os usuarios da HP 12C aprendem a pressionar teclas enquanto osda HP 50g aprendem a programar teclas.

Existem problemas simples − de matematica financeira! − que naopodem ser resolvidos diretamente na HP 12C por falta da tecla correspon-dente; para citar apenas um:

“Qual o capital que, aplicado a 8, 2% a.m., durante seis meses, rendejuros compostos de R $ 75.573, 51?”

Na HP 50g podemos criar uma tecla para resolver nao apenas problemasdo genero, como diversos outros que nao podem ser resolvidos facilmentepela HP 12C.

8a ) E para encerrar estas ligeiras comparacoes, oportunamente estareimostrando que a calculadora financeira HP 12C fornece alguns resultadosde calculos financeiros errados! . . . Pasmem!!! (p. 149)

E acrescento: “Quando um remedio nao produz os efeitos prometidos,ou quando seus efeitos colaterais vao alem dos previstos, os laboratoriosresponsaveis por sua fabricacao sao obrigados a retira-lo de circulacao, deigual modo, estou sugerindo que deva acontecer com a calculadora financeiraHP 12C.”

Oportunamente estaremos confrontando as duas calculadoras no que dizrespeito a eficacia de calculos financeiros.

Por oportuno, a comparacao acima vale nao apenas com respeito aHP 12Ccomo tambem para varias outras calculadoras financeiras. Com efeito, fizuma pesquisa na internet sobre varias calculadoras financeiras − consulteialguns manuais −, tais como: BA II PLUSTM (Texas), HP-19B (HP), HF100F (Dismac), EL-735 (Sharp), etc.

A maioria delas tem tela unidimensional, com duas excecoes (HP-19Be EL-735) que tem tela plana e mesmo assim com altura apenas metadeda altura da tela da HP 50g . Todas elas pecam em dois detalhes muitoimportantes − na minha apreciacao, claro −: nao sao programaveis e naotrabalham com listas e matrizes.

Encontrei, ainda, a calculadora financeira Casio FC-1000 com tela planaque me pareceu superior a todas as outras, infelizmente nao encontrei omanual, razao porque nao posso emitir uma opiniao a respeito, a nao ser que,caso nao seja programavel e nao incorpore os recursos de listas e matrizes,entao, por isto mesmo, partilha com as demais estes dois pecados capitais.

No presente capıtulo estaremos criando (“projetando”) uma nova calcu-ladora financeira, superior a todas as que se encontram no mercado − portodas as razoes expostas anteriormente.

Alem das vantagens ja mencionadas − como se nao bastasse − existeuma outra: pelo fato de nossa calculadora ser programavel isto implica emque ela sera uma “Calculadora Financeira Personalizada”, no sentido de

121

Page 124: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

que voce vai construindo-a de acordo com suas necessidades. O fato de elatrabalhar com listas, vetores e matrizes isto facilitara tanto a entrada comotambem a manipulacao e exibicao dos dados − a ausencia destes objetos nasoutras calculadoras financeiras e, verdadeiramente, de se lastimar − comoestaremos mostrando nao apenas neste capıtulo mais ainda no de Estatıstica.

Apenas para citar, an passant, um unico exemplo, nossa calculadorafinanceira − HP 12G , e assim que a chamaremos − calcula a Tabela PRICE(demonstrativo deste sistema de amortizacao) digitando-se apenas “duasteclas”, assim: (p. 166)

pPRICE(PV, i, n)

pEVAL N

Duvidamos de que qualquer outra calculadora financeira construa esta Tabela(e exiba-a) de modo mais simples que a HP 12G . Fica o desafio!

Pilha de Registradores na HP 12C

A HP 12C possui alguns registradores (posicoes de memoria) associadosao visor, embora somente um deles (X) e exibido como visor:

X

Y

Z

T

Last X

−→Visor

Registradores

da

HP 12C

“Visor”

Quando um numero e digitado no teclado, ele e automaticamente in-serido no registrador X (visor). Se a tecla [ENTER] e pressionada, o numeroe duplicado, sendo seu valor copiado para o registrador Y. As operacoes nacalculadora sao, na maioria das vezes, efetuadas com o auxılio dos regis-tradores X e Y. Assim, sugere-se que ao iniciar-se operacoes na calculadoraa pilha de registradores financeiros seja limpa (“Reset”); para isto bastapressionar as teclas [f] [FIN].

122

Page 125: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Novamente enfatizamos, enquanto na HP 12C os outros registradoresassociados ao visor nao estao visıveis ao operador, o que evidentementedificulta as operacoes e programacao, na HP 50g os registradores associadosao visor de fato estao visıveis − sao os diversos nıveis da pilha.

5.2 Aplicacoes a Matematica FinanceiraAntes de iniciarmos propriamente a transferencia daHP 12C para dentro

da HP 50g , vamos criar uma pasta que guardara os “arquivos financeiros”.

Pois bem, para observar a “arvore” de arquivos em sua calculadora pres-sione a combinacao de teclas∗ FILES para obter o visor do gerenciadorde arquivo da calculadora:

File Manager�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

0 : IRAM 237 KB

1 : ERAM 127 KB

2 : FLASH 699 KB

Home 237 KBGENTILPROG.INTN

CASDIR

CHDIR CANCL OK

Atencao: Este e o visor da configuracao atual da minha calculadora, nasua certamente sera diferente . . . porem similar.

Vamos criar uma pasta chamada HP12G, na qual guardaremos nossosprogramas concernentes as teclas da HP 12C, e outros mais.

Como nao tenho a menor ideia da configuracao da arvore de diretoriosda sua calculadora, inicialmente retorne a pilha − pressione ON .

1o ) Se voce esta na pilha observe na parte superior do visor (segunda linha)que existe um par de chaves: {HOME . . . } isto indica qual o (sub)diretorioatual da sua calculadora. Vamos unificar a minha e a sua calculadora nodiretorio raiz (HOME) para isto pressione† UPDIR , possivelmentemais de uma vez ate que tenhamos entre chaves apenas o diretorio HOME:{HOME }.

2o ) Vamos entrar na arvore de diretorios: pressione: FILES ;

3o ) na sua calculadora devera aparecer um visor similar ao seguinte:

∗A funcao FILE ativa o navegador de arquivo na memoria da calculadora.†A funcao UPDIR move o local da memoria um nıvel acima na arvore do arquivo da

calculadora.

123

Page 126: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

File Manager�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

0 : IRAM 237 KB

1 : ERAM 127 KB

2 : FLASH 699 KB

Home 237 KBGENTILPROG.INTN

CASDIR

CHDIR CANCL OK

Agora pressione a tecla virtual OK para adentrarmos no diretorio raiz.Digite NXT

LNEW . Isto produzira a seguinte forma de entrada:

NEW VARIABLE�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Object:

Name:

Directory

Enter New Object

EDIT CHOOS CANCL OK

O campo de entrada Object , o primeiro campo de entrada no formulario,e ressaltado por padrao. Este campo de entrada pode manter o conteudode uma nova variavel que esta sendo criada. Dado que nao temos nesteponto nenhum conteudo para o novo subdiretorio, simplesmente pulamoseste campo de entrada pressionando a tecla com a seta para baixo,

, umavez. O campo de entrada Name e agora ressaltado.

NEW VARIABLE�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Object:

Name:

Directory

Enter variable name

EDIT CHOOS CANCL OK

Neste local inserimos o nome do novo subdiretorio, conforme a seguir:ALPHA ALPHA HP12G ENTER .

124

Page 127: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Apos a ultima operacao acima o cursor se move para o campo de selecao

−Directory.

NEW VARIABLE�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Object:

Name: HP12G

Directory

Create a new directory?

EDIT X CHK CANCL OK

Pressione a tecla virtual XCHK para especificar que voce esta criandoum diretorio e pressione OK para sair do formulario de entrada. Asvariaveis constantes no diretorio HOME serao mostradas no visor conformea seguir:

Memory: 242367 Select: 0|HP12G DIR 6GENTIL DIR 1233CASDIR DIR 531

PURGE RENAM NEW ORDER SEND RECV

Isto na minha calculadora, na sua certamente e diferente. Mas o queimporta e que o subdiretorio que acabamos de criar comparece em destaqueno visor acima.

Agora pressione UPDIR para retornar a tela da arvore de diretorios

File Manager�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

0 : IRAM 237 KB

1 : ERAM 127 KB

2 : FLASH 699 KB

Home 237 KBHP12CGENTILPROG.INTN

CASDIR

CHDIR CANCL OK

Agora descemos a arvore uma posicao pressionando a tecla com a setapara baixo,

, para assinalar a pasta recem criada, assim:

125

Page 128: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

File Manager�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

0 : IRAM 237 KB

1 : ERAM 127 KB

2 : FLASH 699 KB

Home 237 KBHP12CGENTILPROG.INTN

CASDIR

CHDIR CANCL OK

Em seguida pressione a tecla virtual (menu) CHDIR para selecionar odiretorio (CHange DIRectory) assinalado. Nesse momento a calculadoraretornara a tela principal:

RAD XYZ HEX R∼ pX p HLT

{HOME HP12G} 08:30 , 07 : JUN

1��2��3��4��5��6��7��

Obseve que em cima comparece {HOME HP12G} indicando que estamosna pasta HP12G. Se o leitor pressionar a tecla VAR

J(se necessario) observara

que os menus estao todos vazios, digo, nossa pasta HP12G, recem criada, estavazia − como seria de se esperar.

5.2.1 A HP 50g como Calculadora financeira

Agora vamos criar, a tıtulo de ilustracao, algumas teclas∗ naHP 50g apli-cadas a matematica financeira.

Antes vejamos um importante instrumento muito utilizado nas transacoesfinanceiras: Fluxo de Caixa.

O diagrama de fluxo de caixa e uma representacao pictorica dos mo-mentos e sentidos das transacoes financeiras. O diagrama consta de umalinha horizontal, denominada linha de tempo − que especifica a duracao datransacao financeira − e setas verticais para cima e para baixo indicandoentradas e saıdas de caixa (dinheiro). Um possıvel exemplo seria:

∗Teclas virtuais, menus.

126

Page 129: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

p p p p p p0 1 2 3 · · ·

· · ·

n−1 n

onde n e o numero de perıodos.

Juros Compostos

Iniciamos com a sobejamente conhecida formula para capitalizacao com-posta:

M = C(1 + i)n (5.1)

Essa formula na linguagem da HP 12C fica assim

M =C (1 + i)n

FV =PV (1 + i)n

Onde: FV= Valor Futuro = Montante;

PV= Valor Presente = Capital inicial.

Da equacao acima deduzimos outras tres, quais sejam:

FV = PV (1 + i)n PV =FV

(1 + i)n

n =log

(FVPV

)

log(1 + i)

i = n

FV

PV− 1

As principais funcoes financeiras na HP 12C para operacoes com juroscompostos sao:

127

Page 130: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

[ n ] : numero de perıodos;

[ i ] : taxa de juros;

[ PV ] : do ingles Present Value, valor presente;

[ PMT ] : do ingles Payment, valor da prestacao (ou pagamento);

[ FV ] : do ingles Future Value, valor futuro.

Exemplo: Qual o montante obtido de uma aplicacao de $ 550, 00 feita porquatro meses a uma taxa de 2% a.m.?

Solucao: O programa a seguir calcula o valor futuro de um dado capital:

≪ → PV i n

≪ pPV ∗ (1 + i/100)∧n p

EVAL

p p FV p p →TAG 2 FIX

≫≫

Na ultima linha Fixamos o resultado em duas decimais. Digite este pro-grama em sua calculadora e armazene-o na variavel FV.

Entrando com os dados: PV = 550, i = 2, n = 4; obtemos: FV = 595.34.

p p p p p0 1 2 3 4

n

PV=$550 FV=$595.34

Pela HP 12C resolvemos este problema digitando a seguinte sequenciade teclas:

[ f ] [ FIN ] 550 [CHS ] [ PV ] 2 [ i ] 4 [ n ] [ FV ] ⇒ 595.34

A tecla [ CHS ] troca o sinal de um numero. O sinal negativo se deve auma “convencao de sinais” na HP 12C, nesta convencao PV e FV devemter sinais contrarios − Ou ainda: o que entra tem sinal negativo e o que saitem sinal positivo, do ponto de vista do aplicador.

Observe que para a utilizacao do nosso programa digitamos as teclas

550 SPC 2 SPC 4 FV

Digitamos apenas tres teclas (duas iguais) contra sete da HP 12C.

128

Page 131: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Alternativamente, podemos acrescentar a exibicao das variaveis de en-trada no programa anterior, assim:

≪ p pEntre com PV, i e n p p PROMPT → PV i n

≪ −51 SFpPV ∗ (1 + i/100)∧n p

EVAL

p p FV p p →TAG 2 FIX

≫≫

Acrescentamos na segunda linha, a tıtulo de exemplo, a ativacao do sina-lizador 51 que coloca vırgula ao inves do ponto decimal. Entrando com osmesmos valores agora recebemos FV = 595, 34.

Atencao: Ao executar o programa na versao anterior nao esqueca de, aposdigitar os dados de entrada, pressionar CONT (continue).

Dando prosseguimento a implementacao da HP 12C vamos fazer umprograma para o numero de perıodos n, que e a tecla [n] nessa calculadora.

Considerando a formula para o numero de perıodos, dada na p. 127,temos o seguinte programa:

≪ p pEntre com PV, FV e i p p PROMPT → PV FV i

≪ plog(FV/PV)/log(1 + i/100)p EVAL

p pN p p →TAG 2 FIX

≫≫

Digitei o programa acima e o armazenei em minha calculadora HP 12G como nome de NP (numero de perıodos).

Problema: Durante quanto tempo um capital de $ 2000, 00 deve ser apli-cado a juros compostos e a taxa de 1, 5% a.m. para gerar um montante de$ 2 236, 28?

Entrando com os dados: PV = 2000, FV = 2236.28, i = 1.5; obtive oseguinte resultado: N = 7.50.

p p p p p p p p p0 1 2 3 4

n

5 6 7 8

PV=$2000 FV=$2 236.28

129

Page 132: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

A resolucao algebrica deste problema da-se assim:

n =log

FVPV10

log(1+i)10

=log

2 236. 282000, 0010

log(1+1. 5/100)10

= 7.500

Pela HP 12C resolvemos este problema digitando a seguinte sequenciade teclas:

[ f ] [ FIN ] 2000 [CHS ] [ PV ] 2 236.28 [ FV ] 1.5 [ i ] [ n ] Visor ⇒ 8

Que nao e o valor exato: 7.5. O que estaria acontecendo?

O que acontece e que a HP 12C arredonta os perıodos nao inteiros parao proximo inteiro: 7.5→ 8.

Se eventualmente vamos usar este resultado para outros calculos istosignifica que nao podemos confiar nos resultados da HP 12C., nao e assim?

Vejamos mais um exemplo. Problema: Um montante de $ 630, 00 foiobtido apos a aplicacao de $ 570, 00 a uma taxa de juros compostos igual a3%. Qual a duracao da operacao?

Solucao: Entrando no programa anterior com os dados: PV=570, FV=630e i=3, o programa nos devolve: N=3.39. Pela HP 12C resolvemos esteproblema digitando a seguinte sequencia de teclas:

[ f ] [ FIN ] 630 [ FV ] 570 [CHS ] [ PV ] 3 [ i ] [ n ] Visor ⇒ 4

Que nao e o valor exato: 3.39 (com duas decimais). A HP 12C arredontaos perıodos nao inteiros para o proximo inteiro: 3.39→ 4.

O Programa que calcula a taxa de juros fica assim: (p. 127)

≪ p pEntre com PV, FV e n p p PROMPT → PV FV n

≪ pXROOT(n, FV/PV )− 1p EVAL

100 ∗ p p i p p →TAG 2 FIX

≫≫

Digitei o programa acima e o armazenei em minha calculadora com onome de TJ (taxa de juros).

Nota: A funcao XROOT e obtida na tecla x√y (acima da letra R).

Problema: Um capital de $ 2000, 00 foi aplicado a juros compostos, du-rante 4 meses, produzindo um montante de $ 2 200, 00. Qual a taxa mensalde juros da aplicacao?

Solucao: Entrando no programa anterior com os dados: PV=2000, FV=2200e n=4, o programa nos devolve: i=2.41.

Portanto, a taxa de juros da aplicacao e 2, 41% a.m.

130

Page 133: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Pela HP 12C resolvemos este problema digitando a seguinte sequenciade teclas:

[ f ] [ FIN ] 2000 [ PV ] 2200 [CHS ] [ FV ] 4 [ n ] [ i ] Visor ⇒ 2.41

Problema: Um capital inicial de $ 430, 00 rendeu $ 80, 00 de juros apospermanecer aplicado por quatro meses. Qual a taxa mensal de juros daaplicacao?

Solucao: Entrando no programa anterior com os dados: PV=430, FV=430+80 = 510 e n=4, o programa nos devolve: i=4.36.

Pela HP 12C resolvemos este problema digitando:

[ f ] [ FIN ] 430 [ PV ] 510 [CHS ] [ FV ] 4 [ n ] [ i ] Visor ⇒ 4.36

Problema: Qual o capital que, aplicado a 8, 2% a.m., durante seis meses,rende juros compostos de $ 75.573, 51.

Este e um simples problema de matematica financeira para o qual naoexiste uma tecla especıfica para sua resolucao na HP 12C.

Vamos acrescentar esta tecla em nossa HP 12G . A formula para a reso-lucao desse problema e a seguinte

J = PV((1 + i)n − 1

)⇒ PV = J/

((1 + i)n − 1

)

A nova “tecla” e a seguinte:

≪ p pEntre com i, n e J p p PROMPT → i n J

≪ pJ/( (1 + i/100 )∧n − 1 )p EVAL

p pPV p p →TAG 2 FIX

≫≫

Solucao: Entrando no programa anterior com os dados: i = 8.2, n = 6 eJ = 75573.51, o programa nos devolve: PV= 125, 000.00.

Problema: Que juro produz um capital de $ 10.000, 00 aplicado por 15meses a taxa composta de 2% a.m.?

Este e mais um problema que nao tem solucao direta pela HP 12C−embora possa ser resolvido.

Vamos acrescentar mais uma tecla em nossa HP 12G . A formula para aresolucao desse problema e

J = PV((1 + i)n − 1

)

A nova “tecla” e a seguinte:

131

Page 134: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

≪ p pEntre com PV, i e n p p PROMPT → PV i n

≪ pPV ∗ ( (1 + i/100 )∧n − 1 )p EVAL

p pJ p p →TAG 2 FIX

≫≫

Solucao: Entrando no programa anterior com os dados: PV = 10000,i = 2, n = 15, o programa nos devolve: J= 3.458, 68.

Pela HP 12C resolvemos este problema digitando a seguinte sequenciade teclas:

[ f ] [ FIN ] 1000 [ PV ] 15 [ n ] 2 [ i ] [ FV ] [RCL ] [PV] [+]⇒ −3.458, 68

Observe

J = PV((1 + i)n − 1

)⇒ J = PV (1 + i)n − PV ⇒ J = FV − PV

[RCL] [PV]: Significa: Recupera o conteudo do registrador [PV].

Novamente, a resolucao pela HP 12G resultou bem mais simples.

5.3 Valor Atual de um Conjunto de Capitais

Suponhamos que uma pessoa tenha uma dıvida de P1 reais para pagardaqui a 1 mes. Suponhamos ainda que ela consiga aplicar seu dinheiro ajuros compostos, a taxa de i% a.m. A pergunta e: quanto essa pessoadevera aplicar hoje aquela taxa para fazer frente ao seu compromisso?

Solucao: Graficamente temos o seguinte esquema

p p0 1

C0 =? P1

Considerando a formula M = C(1 + i)n, devemos ter

P1 = C0(1 + i)1 ⇒ C0 =P1

(1 + i)1

O valor encontrado e chamado de valor atual de P1 reais.

132

Page 135: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Agora suponhamos que a pessoa tivesse uma dıvida de P1 reais paradaqui a 1 mes e outra de P2 reais para daqui a 2 meses. A pergunta e:quanto essa pessoa devera aplicar hoje aquela taxa para fazer frente aosseus compromissos?

Solucao: Consideremos o seguinte esquema grafico

p p p0 1 2

C′0=? P1 P2

Para saldar o segundo compromisso a pessoa devera aplicar

P2

(1 + i)2

Portanto, para saldar as duas dıvidas, hoje ela precisaria de:

C ′0=

P1

(1 + i)1+

P2

(1 + i)2

Confirmando: Vamos necessitar da equacao M(n) = C(1 + i)n : utilizandoo montante encontrado acima, daqui a um mes o montante sera

M(1) = C(1 + i)1 =

[P1

(1 + i)1+

P2

(1 + i)2

]

(1 + i)1

= P1 +P2

(1 + i)

Saldando, no final do primeiro perıodo, o compromisso devido, ficamos como montante

M(1) = P1 +P2

(1 + i)− P1

Aplicando o capital restante por mais um perıodo teremos ao final do se-gundo perıodo o seguinte rendimento

M(1) = C(1 + i)1 =P2

(1 + i)(1 + i)1 = P2

para saldar o segundo compromisso.

133

Page 136: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Generalizando: Dado um conjunto de valores monetarios Y1 na data 1,Y2 na data 2, e assim por diante ate o valor Yn na data n, chamamos devalor atual desse conjunto, a uma taxa i, ao valor indicado por V , que,aplicado a taxa i, gera as rendas Y1 , Y2 , . . . , Yn , isto e:

V =Y1

(1 + i)1+

Y2

(1 + i)2+

Y3

(1 + i)3+ · · ·+ Yn

(1 + i)n

Y1 Y2 Y3 Yn

V

· · ·

0 1 2 3 ··· n

Para efeitos de programacao, podemos escrever

V =Y1

(1 + i)1+

Y2

(1 + i)2+ · · ·+ Yn

(1 + i)n=

n∑

k=1

Yk

(1 + i)k(5.2)

O programa a seguir recebe um vetor contendo as rendas e a taxa i e saicom o valor atual V :

≪ → Y i

≪ −105 SF 2 FIX

Y SIZE OBJ→ DROP pN p STOp∑

( k = 1, N, Y (k)/(1 + i/100)∧ k) p EVAL

≫≫

Exemplo: Uma pessoa tem dıvidas de $ 9000, 00 e $ 8000, 00 quevencem dentro de 1 e 2 meses, respectivamente. Quanto devera aplicarhoje, a juros compostos − a uma taxa de 2% a.m., para fazer frente aoscompromissos?

Solucao: Entrando com os dados: [ 9000 8000 ] 2 ; temos: 16 512.88

p p p0 1 2

PV=$16 512.88 $ 9000 $ 8000

134

Page 137: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Exemplo: Uma pessoa tem dıvidas de $ 2000, 00, $ 3500, 00 e $ 5000, 00que vencem dentro de 2, 5 e 6 meses, respectivamente. Quanto deveraaplicar hoje, a juros compostos e a taxa de 2% a.m., para fazer frente aoscompromissos?

p p p p p p p0 1 2 3 4

n

5 6

PV=? 2000

3500

5000

Solucao: Este problema nao pode ser resolvido diretamente pelo programaanterior. Vamos altera-lo da seguinte forma:

≪ → Y z i

≪ −105 SF 2 FIX

Y SIZE OBJ→ DROP pN p STOp∑

( k = 1, N, Y (k)/(1 + i/100)∧ z(k)) p EVAL

≫≫

Agora entramos com dois vetores de mesmo comprimento, o primeirocontendo as rendas e o segundo os valores dos respectivos vencimentos, emais a taxa.

Para o problema proposto entramos com:

[ 2000 3500 5000 ] [ 2 5 6 ] 1

Recebemos: 10 000.95 de outro modo: 10. 000, 95.

5.4 Sequencia Uniforme de Pagamentos

5.4.1 Calculo de prestacoes

Quando compramos um artigo a prazo efetuamos geralmente seu paga-mento em uma serie de prestacoes igualmente espacadas no tempo. Essaserie de prestacoes e equivalente a um pagamento unico, que seria o paga-mento a vista.

Este e um caso particular da equacao (5.2) (p. 134), assim:

135

Page 138: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

p p p p p p0 1 2 3 · · ·

· · ·

n−1 n

V=?

P P P P P

Entao:

V =P

(1 + i)1+

P

(1 + i)2+

P

(1 + i)3+ · · · + P

(1 + i)n

No lado direito dessa equacao temos a soma dos termos de uma progressaogeometrica de primeiro termo a1 = P

(1+i)1e razao q = 1

(1+i)1. Sendo

assim, podemos aplicar a formula que soma os n primeiros termos de umaprogressao geometrica, que e a seguinte

S = a1 + a2 + a3 + · · · + an =a1(q

n − 1)

q − 1

Entao

V =

P(1+i)

[ (1

1+i

)n − 1]

1(1+i) − 1

Simplificando, obtemos

V = P · 1− ( 1 + i )−n

i(5.3)

Essa formula nos fornece o valor a V ista de uma compra feita em nparcelas iguais a P quando embutida uma taxa de juros de valor i.

Exemplos:

1 ) Um banco concedeu um emprestimo para uma pessoa adquirir um carro.O pagamento deveria ser feito em 12 prestacoes mensais de $ 1400, 00 cadauma, sem entrada. Qual o valor do emprestimo sabendo-se que a taxa dejuros compostos cobrada pelo banco foi de 3% a.m.?

Solucao: O emprestimo deve ser pago em 12 prestacoes mensais uniformes,sem entrada, conforme vemos no diagrama de fluxo de caixa:

p p p p p p0 1 2 3 · · ·

· · ·

11 12

$ 1400, 00 $ 1400, 00

136

Page 139: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Dos dados fornecidos obtemos: P = 1400, n = 12 e i = 3% a.m.Substituindo esses resultados na equacao (5.3), obtemos

V = P · 1− ( 1 + i )−n

i

= 1400 · 1− ( 1 + 0, 03 )−12

0, 03= 13 935, 61

Vamos programar a formula deduzida. Antes, passando a formula paraa linguagem da HP 12C, temos

V =P · 1−( 1+i )−ni

PV =PMT · 1−( 1+i )−ni

(# )

Onde: PV = Valor Presente e PMT = Pagamento = Prestacoes.

Antes de programar essa formula criei uma subpasta (por nome SUP) −dentro da pasta HP12G − para guardar os proximos programas, para naomisturar com os programas oriundos da outra equacao. (eq. (5.1), p. 127)

Pois bem, o programa a seguir calcula o valor de PV de acordo com aequacao (# ):

≪ p pEntre com PMT, n e i p p PROMPT → PMT n i

≪ i 100 / pipSTO

pPMT ∗ ( (1− (1 + i)∧ − n )/i )

pEVAL

p pPV p p →TAG 2 FIX

≫≫

Para fazer um teste neste programa executei-o com os dados do problemaanterior, isto e: PMT = 1400, n = 12 e i = 3% a.m.

Ao final, obtive o seguinte resultado: V P : 19, 935.61

137

Page 140: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Series postecipadas e antecipadas

Nos pagamentos periodicos, os pagamentos podem ser feitos no inıcio doperıodo de capitalizacao, quando sao chamados de antecipados, ou no finaldo perıodo, quando sao chamados de postecipados. Por exemplo, os salarios,por serem pagos no fim do mes, sao rendas postecipadas; as mensalidadesescolares, por sua vez, sao rendas antecipadas.

p p p p0 1 2 3 · · ·

· · ·P P P

− Antecipados

p p p p0 1 2 3 · · ·

· · ·PP P

− Postecipados

Temos a seguinte formula:

PMT = PV · i(1 + i)n−1

(1 + i)n − 1(1 + i)m (5.4)

como uma generalizacao da formula (5.3) (p. 136). Quando m = 0 temos asseries antecipadas e m = 1 as series postecipadas.

Obviamente que a formula (5.4) contempla outras possibilidades. Porexemplo, se a primeira parcela for paga no final do segundo perıodo (ouinıcio do terceiro) (m = 2):

p p p p p0 1 2 3 4 · · ·

· · ·P PP

− Postecipados, m = 2

O programa a seguir calcula o valor do PMT de acordo com a formula (5.4).

≪ p pEntre: PV, n, i, e m p p PROMPT → PV n i m

≪ i 100 / p i p STO

pPV ∗ i ∗ (1 + i)∧ (n − 1) ∗ (1 + i )∧m/((1 + i)∧n− 1)p EVAL

p pPMT p p →TAG 2 FIX

≫≫

138

Page 141: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Exemplo: Uma geladeira possui preco a vista igual a $ 800, 00, podendoser paga em tres parcelas mensais e iguais sem entrada. Sabendo que a taxade juros praticada pela loja e igual a 5% a.m., calcule o valor da prestacaoa ser cobrada pela loja.

Solucao: Entrando no programa anterior com os dados: PV=800, n=3,i=5 e m=1 (sem entrada), o programa nos devolve: PMT=293.77.

Para operar com a tecla [PMT] daHP 12C, e preciso previamente ter emconta se a serie e postecipada − configurada por meio das teclas [g] [END]− ou antecipada, configurada pelas teclas [g] [BEG].

Nota: Quando se pressiona [g] [END], nada muda no visor; quando sepressiona [g] [BEG], acende o indicador de estado BEGIN, indicando paga-mentos antecipados.

Ademais, deve-se ter em conta a “convencao de sinais”. A resolucao doproblema anterior pela HP 12C se da pela seguinte sequencia de teclas:

[ f ] [ FIN ] 800 [ PV ] 3 [ n ] 5 [ i ] [ g ] [ END ] [ PMT ] ⇒ −293.77

Temos uma outra alternativa:

[ f ] [ FIN ] 800 [CHS ] [ PV ] 3 [ n ] 5 [ i ] [ g ] [ END, ] [ PMT ]⇒ 293.77

Pela convencao de sinais PV e PMT tem sinais contrarios. Em muitoscasos se a convencao nao for observada a HP 12C emite uma mensagem deerro.

Observe que na HP 12G nao existe uma tal convencao de sinais; nao pre-cisamos nos preocupar com isto.

5.4.2 Calculo da taxa de juros

Consideremos o seguinte problema: Um congelador no valor de $ 950, 00a vista e vendido em 12 pagamentos mensais e sem entrada no valor de$ 100, 00 cada. Qual a taxa de juros cobrada pela loja?

Substituindo os dados na formula (5.4) (p. 138), temos:

PMT = PV · i(1 + i)n−1

(1 + i)n − 1(1 + i)m

isto e,

100 = 950 · i(1 + i)12−1

(1 + i)12 − 1(1 + i)1

Ou ainda,i(1 + i)12

(1 + i)12 − 1=

10

95

Como isolar i nesta equacao? A este respeito na referencia [3], lemos:

139

Page 142: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

“Se e possıvel uma formula especial para o calculo de n, tal nao acontecepara o calculo de i, quando se conhecem PV , PMT e n. O calculo de iso e possıvel por aproximacoes sucessivas. Calcula-se o valor de PV comvarias taxas ate que se consigam valores proximos do valor dado para PV .Em seguida, com o auxılio da regra de tres, faz-se uma interpolacao paradeterminar a taxa correspondente a esse valor dado.” (p. 145)

Este, em geral, e o sentimento presente nos livros de matematica finan-ceira. Vamos mostrar aqui que e possıvel sim obter “uma formula especialpara o calculo de i”. Veremos como, atraves da computacao algebrica, obteruma formula para o calculo da taxa e sem aproximacoes − num sentido aser esclarecido oportunamente.

Para os nossos propositos iremos necessitar do binomio de Newton:

(a+ b)n =

n∑

k=0

(n

k

)

an−k b k (5.5)

Tomando nesta equacao a = 1 e b = i, resulta:

(1 + i )n =

n∑

k=0

(n

k

)

i k

Vejamos um caso particular desta equacao:

( 1 + i )3 =

3∑

k=0

(3

k

)

ik =

(3

0

)

i0 +

(3

1

)

i1 +

(3

2

)

i2 +

(3

3

)

i3

= 1 + 3i + 3i2 + i3

Resulta um polinomio do terceiro grau em i. Polinomios e uma dasespecialidades da HP 50g .

O programa a seguir recebe n e sai com o polinomio dado pela equacao

(1 + X )n =

n∑

k=0

(n

k

)

X k

≪ → n

≪ −2 CF − 3 CF − 105 SF − 103 CF − 114 SFp∑

(k = 0, n,COMB(n, k) ∗X∧k) p EVAL

−105 CF SIMPLIFY

≫≫

Nota: Trabalharemos com a variavel padrao X, no lugar da taxa i.

140

Page 143: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Na segunda linha ativamos o sinalizador 114 para que o polinomio resul-tante esteja em ordem crescente, nas potencias de X. Entrando com n = 3,por exemplo, recebemos de volta o seguinte polinomio: (CAS, p. 153)

1 + 3 ·X + 3 ·X2 +X3

Vamos manipular algebricamente a formula

PMT = PV · i(1 + i)n−1

(1 + i)n − 1(1 + i)m

para obter:

(1 + i)n − 1− i(1 + i)n+m−1 · PV/PMT = 0

Ou ainda,

n∑

k=0

(n

k

)

i k − 1− i ·n+m−1∑

k=0

(n+m− 1

k

)

i k · PV/PMT = 0

Sendon∑

k=0

(n

k

)

i k =

(n

0

)

i 0

︸ ︷︷ ︸

=1

+

(n

1

)

i 1 + · · ·+(n

n

)

in

e

n+m−1∑

k=0

(n+m− 1

k

)

i k =

(n+m− 1

0

)

i 0 + · · · +(n+m− 1

n+m− 1

)

in+m−1

Observe que temos uma diferenca entre dois polinomios em i:

n∑

k=1

(n

k

)

i k

︸ ︷︷ ︸

p1(i)

− PV/PMT ·n+m−1∑

k=0

(n+m− 1

k

)

i k+1

︸ ︷︷ ︸

p2(i)

= 0

O programa seguinte calcula a taxa de juros dada pela equacao (5.4) (p. 138).

≪ p pEntre : PV, PMT, n e m p p PROMPT → PV PMT n m

≪ 4 FIX − 2 CF − 3 CF − 105 SF − 103 CFp∑

(k = 1, n,COMB(n, k) ∗X∧k) p EVAL

pPV/PMT ∗∑(k = 0, n +m− 1,COMB(n+m− 1, k) ∗X∧ (k + 1)) p

EVAL − pX p ZEROS

≫≫

141

Page 144: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Problema: Um congelador no valor de $ 950, 00 a vista e vendido em 12pagamentos mensais iguais e sem entrada no valor de $ 100, 00 cada. Quala taxa de juros cobrada pela loja?

O diagrama de fluxo de caixa da operacao e visto a seguir:

p p p p p p p p p p p p p0 1 2 3 4 5 6 7 8 9 10 11 12

VP PMT PMT

Solucao: Entrando no programa anterior com os dados: PV = 950,PMT = 100, n = 12, m = 1 (sem entrada), o programa nos devolve aseguinte lista:

{ 0.0000 3.7909 − 178.6066 }Ou seja: o polinomio resultante do problema em questao possui tres raızes

reais. A que nos interessa e: i = 3.7909.

Pela HP 12C resolvemos este problema digitando a seguinte sequenciade teclas:

[ f ] [ FIN ] 950 [ PV ] 100 [CHS ] [ PMT ] 12 [ n ] [ g ] [ END ] [ i ]⇒ 3.7909

Vamos fazer um acrescimo no programa anterior para que o programasaia apenas com a taxa i que esteja entre 0 e 1; isto e, 0 < i < 1. Oprograma modificado fica assim:

≪ p pEntre : PV, PMT, n e m p p PROMPT → PV PMT n m

≪ 4 FIX − 2 CF − 3 CF − 105 SF − 103 CFp∑

(k = 1, n,COMB(n, k) ∗X∧k) p EVAL

pPV/PMT ∗∑(k = 0, n +m− 1,COMB(n+m− 1, k) ∗X∧ (k + 1)) p

EVAL − pX p ZEROS

DUP AXL p v p STO SIZE 1 SWAP

FOR I

IF p 0 < v(I) AND v(I) < 1 p

THEN p v(I) p EVAL

END

NEXT 100 ∗ p p i p p →TAG

≫≫

142

Page 145: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Problema: Uma loja de decoracoes anuncia a venda de um objeto de artepor $ 600, 00 a vista ou em 1 + 8 (isto e, com uma entrada e oito parcelasmensais) de $ 80, 00 cada. Qual a taxa de juros cobrada pela loja?

Solucao: O diagrama de fluxo de caixa da operacao e visto a seguir:

p p p p p p p p p0 1 2 3 4 5 6 7 8

PV=$600, 00

PMT PMT=$80, 00

Entrando no programa com os dados: PV = 600, PMT = 80, n = 9,m = 0 (com entrada), o programa nos devolve: i = 4.8598 (a.m.).

Pela HP 12C resolvemos este problema digitando:

[ f ] [ FIN ] 600 [ PV ] 80 [CHS ] [ PMT ] 9 [ n ] [ g ] [ BEG ] [ i ]⇒ 4.8598

Problema: Um aparelho de som e anunciado com um preco a vista de$ 1200, 00 ou em tres parcelas mensais iguais a $ 500, 00. Calcule a taxa dejuros cobrada pela loja, supondo que a primeira parcela seja paga:

a) no ato;

b) 30 dias apos a compra.

Solucao:

a) Entrando no programa com os dados: PV = 1200, PMT = 500,n = 3, m = 0, o programa nos devolve: i = 27.4659 (a.m.).

Pela HP 12C resolvemos este problema digitando a seguinte sequenciade teclas:

[ f ] [ FIN ] 1200 [ PV ] 500 [CHS ] [ PMT ] 3 [ n ] [ g ] [ BEG ] [ i ]⇒ 27.4659

b) Entrando no programa com os dados: PV = 1200, PMT = 500,n = 3, m = 1, o programa nos devolve: i = 12.0444 (a.m.).

Pela HP 12C resolvemos este problema digitando a seguinte sequenciade teclas:

[ f ] [ FIN ] 1200 [ PV ] 500 [CHS ] [ PMT ] 3 [ n ] [ g ] [ END ] [ i ]⇒ 12.0444

Vamos armazenar (STO) o programa seguinte (modificacao do anterior):

143

Page 146: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

≪ → PV PMT n m

≪ 4 FIX − 2 CF − 3 CF − 105 SF − 103 CFp∑

(k = 1, n,COMB(n, k) ∗X∧k) p EVAL

pPV/PMT ∗∑(k = 0, n +m− 1,COMB(n+m− 1, k) ∗X∧ (k + 1)) p

EVAL − pX p ZEROS

DUP AXL p v p STO SIZE 1 SWAP

FOR I

IF p 0 < v(I) AND v(I) < 1 p

THEN p v(I) p EVAL

END

NEXT 100 ∗ p p i p p →TAG

≫≫

numa variavel por nome FTJ (formula da taxa de juros). Este programaagora pode ser visto, efetivamente, como uma formula para o calculo dataxa de juros, derivada da equacao (5.4) (p. 138). E uma funcao de quatrovariaveis, por exemplo, para

pFTJ(1200, 500, 3, 0)p EVAL

temos FTJ(1200, 500, 3, 0) = 27.4659, para a taxa de juros.

E mais: pela “deducao” do programa podemos dizer que este e um valor“logicamente exato” da taxa de juros; embora, eventualmente, possa naoser numericamente exato, uma vez que no calculo das raızes do polinomio,pela HP 50g , introduz-se aproximacoes nos algoritmos numericos.

∗ ∗ ∗Nao creio que devo gastar anos estudando o trabalho dos outros,

decifrando um campo complicado para poder contribuir com um pequenoaporte meu. Prefiro dar largas passadas numa direcao totalmente nova,em que a imaginacao e, pelo menos, inicialmente, muito mais importantedo que a tecnica, porque suas tecnicas correspondentes tem ainda de serdesenvolvidas. [. . .]

Lembre-se que a matematica e uma livre criacao da mente humanae, como disse Cantor − o inventor da moderna teoria da infinitude,descrita por Wallace −, a essencia da matematica reside na liberdade,na liberdade de criar. A historia, porem, julga essas criacoes por suabeleza duradoura e pela extensao com que elas iluminam outras ideiasmatematicas ou o universo fısico, em suma, por sua “fertilidade”.

(Gregory Chaitin/Matematico e cientista da computacao)

144

Page 147: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

5.4.3 Capitalizacao composta em perıodos fracionarios

Os exemplos apresentados ate agora − com respectivos fluxos de caixa− foram para transacoes financeiras em que os juros comecam a acumularno inıcio do primeiro perıodo de pagamento regular. No entanto, muitasvezes os juros comecam a acumular antes do inıcio do primeiro perıodode pagamento regular − pode ser o caso de um emprestimo bancario, porexemplo. O perıodo referido, durante o qual os juros comecam a acumularantes da data do primeiro pagamento, e denominado perıodo fracionario.

p p p p0 1 2 3

VP

PMT

Antecipado

{

Perıodofracionario

· · ·

p p p p0 1 2 3

VP

PMT

Postecipado

{

Perıodofracionario

· · ·

Consideremos o seguinte problema: Um emprestimo de $ 3 950 por 42meses para comprar um carro comeca a acumular juros 13 dias antes doinıcio do primeiro perıodo de pagamento. Pagamentos de $ 120 sao feitos nofinal de cada mes. Calcule a taxa de juros do financiamento considerandoos dias extras.

Solucao: O diagrama de fluxo de caixa e visto a seguir:

p p p p p0 1 2 3 42

VP=$ 3 950 PMT PMT=$120

{

13 dias

· · ·

O numero de perıodos que devemos utilizar no exemplo e:n = 42 + 13

30 = 42, 43. Substituindo os dados do problema na formula(5.4) (p. 138), temos:

145

Page 148: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

120 = 3950 · i(1 + i)42, 43−1

(1 + i)42, 43 − 1(1 + i)1

Simplificando ligeiramente, temos

i(1 + i)42, 43 =120

3950

[(1 + i)42, 43 − 1

]

E nao podemos aplicar a formula do binomio de Newton para desenvolver obinomio acima posto que o expoente nao e um numero natural.

O desenvolvimento matematico que se segue e com vistas a construir umalgoritmo (programa) para resolver problemas do genero.

Antes precisamos generalizar o coeficiente binomial, assim:

Definicao 7. Se m for qualquer numero real e k um numero natural, entaodefinimos o coeficiente binomial, assim:

(m

k

)

=

1, se k = 0;

m(m− 1)(m− 2) · · ·(m− (k − 1)

)

k!, se k ≥ 1.

Por exemplo,

a ) Calcule( 42

).

Solucao: Sendo m = 4 e k = 2, temos,(m− (k − 1)

)= 4− 1, entao

(4

2

)

=4(4− 1)

2!=

4 · 32

= 6

b ) Calcule( 4, 5

3

).

Solucao: Sendo m = 4, 5 e k = 3, temos,(m− (k − 1)

)= 4, 5− 2, entao

(4, 5

3

)

=4, 5 (4, 5− 1)(4, 5− 2)

3!=

4, 5 · 3, 5 · 2, 56

= 6, 5625

c ) Calcule(−4

2

).

Solucao: Sendo m = −4 e k = 2, temos,(m− (k − 1)

)= −4− 1, entao

(−42

)

=−4(−4− 1)

2!=−4 · (−5)

2= 10

A HP possui uma funcao, COMB ( MTH NXTL PROB COMB ), que

calcula combinacoes COMB(m,k), no entanto se m nao for inteiro ou se fornegativo a calculadora acusara um erro. Vamos contornar esta limitacao.

146

Page 149: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O programa a seguir calcula o coeficiente binomial como definido acima.

≪ → m k

≪ IF pFP(m == 0) AND m ≥ 0 p

THEN m k COMB

ELSE

IF k 0 ==

THEN 1

ELSE 1 pP p STO

0 k 1 − FOR I

m I − P ∗ pP p STO

NEXT P k ! /

END

END

≫≫

Apos o primeiro IF perguntamos se m e um numero inteiro e positivo,se for este o caso entao calculamos o coeficiente tal como na calculadora(COMB); caso contrario, calculamos segundo nossa definicao.

Observe que este programa generaliza a funcao COMB da calculadora.Armazene o programa acima na variavel comb (tudo em minusculo, paraevitar problemas com o COMB da calculadora).

Iremos necessitar da serie binomial (estudada no Calculo), ei-la:

1 + mx +m(m− 1)

2!x2 + · · · + m(m− 1) · · ·

(m− (k − 1)

)

k!xk + · · ·

Pode-se provar, que se m nao for um numero Natural, entao a seriebinomial converge para (1 + x)m para |x| < 1. Sendo assim,

(1+x)m = 1+mx+m(m− 1)

2!x2 + · · ·+ m(m− 1) · · ·

(m− (k − 1)

)

k!xk + · · ·

Tendo em conta nossa extensao do coeficiente binomial, temos:

( 1 + x )m =

+∞∑

k=0

(m

k

)

xk

Esta identidade vale se m nao e um numero natural. Na verdade e o casoque nos interessa agora, uma vez que para m natural ja tratamos anterior-mente.

147

Page 150: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

A tıtulo de exemplo, vamos substituir x por i e m por −n para obter:

( 1 + i )−n =

∞∑

k=0

(−nk

)

ik (5.6)

Vejamos dois casos particulares:

( 1 + i )−2 =

∞∑

k=0

(−2k

)

ik =

(−20

)

i0 +

(−21

)

i1 +

(−22

)

i2 + · · ·

= 1 + −2i + 3i2 + · · ·

Os coeficientes binomiais foram calculados com o programa comb.

( 1 + i )−3 =

∞∑

k=0

(−3k

)

ik =

(−30

)

i0 +

(−31

)

i1 +

(−32

)

i2 + · · ·

= 1 + −3i + 6i2 + · · ·

O programa seguinte recebe n e N

≪ → n N

≪ −2 CF − 3 CF − 105 SF − 103 CF − 114 SFp∑

(k = 0, N, comb(−n, k) ∗X∧k) p EVAL

−105 CF SIMPLIFY

≫≫

e sai com o polinomio

( 1 +X )−n =N∑

k=0

(−nk

)

Xk =

(−n0

)

X0 +

(−n1

)

X1 + · · ·+(−n

N

)

XN

na variavel X e de grau N .

Na segunda linha ativamos o sinalizador 114 para que o polinomio re-sultante esteja em ordem crescente, nas potencias de X. Observe quecomb(−n, k), dentro do somatorio, chama o programa que foi armazenadona variavel comb − e uma subrotina.

Por exemplo, fornecendo ao programa n = 2 e N = 2, recebemos devolta o polinomio:

1− 2 ·X + 3 ·X2

Fornecendo n = 3 e N = 4, recebemos de volta o polinomio:

1− 3 ·X + 6 ·X2 − 10 ·X3 + 15 ·X4

148

Page 151: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Vamos manipular algebricamente a formula∗

PMT = PV · i(1 + i)n−1

(1 + i)n − 1(1 + i)M (5.7)

para obter:

(1 + i)n − 1− i(1 + i)n+M−1 · PV/PMT = 0

Considerando que n nao e um numero Natural, podemos escrever:

+∞∑

k=0

(n

k

)

ik − 1− i

+∞∑

k=0

(n+M − 1

k

)

ik · PV/PMT = 0

Ou ainda,

+∞∑

k=0

(n

k

)

i k − 1 − PV/PMT · i+∞∑

k=0

(n+M − 1

k

)

i k = 0

O programa para esta formula muda muito pouco em relacao ao pro-grama da p. 142. Devemos estabelecer um limite N (N = 10 no programa)para o somatorio e usar comb ao inves de COMB.

≪ p pEntre : PV, PMT, n e M p p PROMPT → PV PMT n M

≪ 4 FIX − 2 CF − 3 CF − 105 SF − 103 CFp∑

(k = 0, 10, comb(n, k) ∗X∧k)− 1 p EVAL

pPV/PMT ∗X ∗∑(k = 0, 10, comb(n+M − 1, k) ∗X∧k) p

EVAL − pX p ZEROS

DUP AXL p v p STO SIZE 1 SWAP

FOR I

IF p 0 < v(I) AND v(I) < 1 p

THEN p v(I) p EVAL

END

NEXT 100 ∗ p p i p p →TAG

≫≫

Entrando neste programa com os dados (p. 145): PV= 3950, PMT= 120,n = 42.43 e M = 1 (postecipada); o programa nos devolve a seguinte taxa:i = 1.2279 (a.m.).

∗Agora estamos usando M maiusculo.

149

Page 152: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Pela HP 12C resolvemos este problema digitando as teclas:

[ f ] [ FIN ] [ g ] [ END ] 3950 [ PV ] 120 [CHS ] [ PMT ] 42.43 [ n ] [ i ]⇒ 1.1626

Nao podemos nem considerar estes valores como aproximados um dooutro. Um ou outro deve estar errado.

Para confirmar isto podemos, por exemplo, calcular o pagamento comambas as taxas, na formula (M = 1):

PMT = PV · i(1 + i)n−1

(1 + i)n − 1(1 + i)M

isto e,

( HP 12G ) : PMT = 3950 · 1.2279/100 (1 + 1.2279/100)42.43

(1 + 1.2279/100)42.43 − 1= 120.00

e

(HP 12C) : PMT = 3950 · 1.1626/100 (1 + 1.1626/100)42.43

(1 + 1.1626/100)42.43 − 1= 118.47

E o primeiro valor da taxa nos da o valor exato do PMT, enquanto o segundofornece um valor incorreto.

Vejamos mais um exemplo: Um emprestimo de $ 4 500 por 36 mesescomeca a acumular juros 15 dias antes do inıcio do primeiro perıodo depagamento. Pagamentos de $ 157, 03 sao feitos no inıcio de cada mes. Cal-cule a taxa de juros do financiamento considerando os dias extras.

Solucao: O diagrama de fluxo de caixa e visto a seguir:

p p p p p0 1 2 3 35

VP=$4500

PMT PMT=$157, 03

{

15 dias

· · ·

O numero de perıodos que devemos utilizar no exemplo e:n = 36 + 15

30 = 36, 5.Entrando neste programa com os dados: PV= 4500, PMT= 157.03, n = 36.5e M = 0 (Antecipada); o programa nos devolve a seguinte taxa: i = 1.4366.

Pela HP 12C resolvemos este problema digitando as seguintes teclas:

[ f ] [ FIN ] [ g ] [ BEG ] 4500 [ PV ] 157.03 [CHS ] [ PMT ] 36.5 [ n ] [i]⇒ 1.3282

Novamente os resultados fornecidos por ambas as calculadoras sao dis-tintos. Os dois resultados nao podem esta corretos ao mesmo tempo.

150

Page 153: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Vamos decidir calculando o pagamento com ambas as taxas, na formula:

PMT = PV · i(1 + i)n−1

(1 + i)n − 1(1 + i)0

isto e,

( HP 12G ) : PMT = 4500 · 1.4366/100 (1 + 1.4366/100)36.5−1

(1 + 1.4366/100)36.5 − 1= 157.03

e

(HP 12C) : PMT = 4500 · 1.3282/100 (1 + 1.3282/100)36.5−1

(1 + 1.3282/100)36.5 − 1= 154.33

Novamente a HP 12G forneceu − de volta − um valor exato do PMT en-quanto a HP 12C um valor incorreto.

Conclusao: Nao trabalho no meu dia-a-dia com a HP 12C− tomei umaemprestada para escrever este capıtulo do livro − e tambem nao trabalhocom matematica financeira, nao e minha especialidade; e, ademais, ad-mito que possam ter existido “variaveis ocultas” na resolucao destes doisultimos problemas que me passaram despercebidas, entretanto, ate provaem contrario, vou admitir que a HP 12C esteja errada nos seus resultados.

Quando um remedio nao produz os efeitos prometidos, ou quando seusefeitos colaterais vao alem dos previstos, os laboratorios responsaveis pelasua fabricacao sao obrigados a retira-lo de circulacao, de igual modo, estousugerindo que deva acontecer com a calculadora financeira HP 12C.

5.5 Series Nao Uniformes

As series nao uniformes contemplam o estudo de operacoes matematicasfinanceiras que envolvem fluxos nao uniformes de pagamento. Basicamente,dois criterios sao utilizados nas analises: a taxa interna de retorno e o valorpresente lıquido.

Mais uma vez constataremos a superioridade da HP 50g frente a calcu-ladora financeira HP 12C em mais este tema da matematica financeira.

5.5.1 Series com prestacoes diferentes

As series nao uniformes se caracterizam por lidarem com prestacoes devalores diferentes; aqui dois parametros de analise sao utilizados: o VPL ea TIR.

− VPL : Valor Presente Lıquido − na HP 12C NPV, (do ingles NetPresent Value) − que e o valor, na data zero, de todos os fluxos de caixada serie nao uniforme. A VPL tambem e denominda na literatura de ValorAtual Lıquido (VAL).

151

Page 154: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

− TIR : Taxa Interna de Retorno − na HP 12C IRR, (do ingles InternalRate of Return) − corresponde ao valor da taxa de juros que torna nulo ovalor VPL.

A figura a seguir representa um fluxo de caixa generico:

p p p p p0 1 2 3 n

CF0CF1

CF2

CF3

CFn

· · ·

Onde:

CF0 : parcela do fluxo de caixa no ponto 0 (Cash Flow no ponto 0);

CF1 : parcela do fluxo de caixa no ponto 1 (Cash Flow no ponto 1);

CF2 : parcela do fluxo de caixa no ponto 2 (Cash Flow no ponto 2); etc.

A parcela CF0 normalmente corresponde ao investimento inicial e, sendoassim, tem sinal negativo, por representar um desembolso, ou saıda de caixa.

A taxa de juros utilizada para descontar as parcelas futuras do fluxo decaixa e denominada taxa de desconto.

Fixada uma taxa de desconto i, o valor presente lıquido do fluxo de caixae

V PL = C0 +C1

(1 + i)1+

C2

(1 + i)2+ · · · + Cn

(1 + i)n(5.8)

Ou, de modo equivalente:

V PL =n∑

j=0

CFj

(1 + i)j(5.9)

Sendo o VPL uma soma algebrica “de entradas e saıdas” no diagramade fluxo de caixa, ele indicara o resultado do investimento.

• Se o VPL for positivo, o valor financeiro do ativo do investidor aumen-tara: O investimento sera atrativo em termos financeiros.

• Se o VPL for zero, o valor financeiro do ativo do investidor nao mudara:o investidor sera indiferente ao investimento.

• Se o VPL for negativo, o valor financeiro do ativo do investidor serareduzido: o investimento nao sera atrativo em termos financeiros.

Comparando os VPLs de investimentos alternativos temos como saber quale o mais atrativo: quanto maior for o VPL, maior sera o aumento do valorfinanceiro do ativo do investidor.

Se na equacao (5.8) fazemos 11+i = x, resulta:

V PL = C0 + C1 x+C2 x2 + · · ·+ Cn x

n (5.10)

um polinomio de grau n, justamente uma das especialidades da HP 50g .

152

Page 155: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O programa a seguir recebe um vetor e sai com um polinomio cujoscoeficientes sao extraıdos do vetor, assim:

[−2 3 5 ] → −2 + 3X + 5X2

≪ → V

≪ −2 CF −3 CF −105 CF 0 pP p STO

V AXL REVLIST AXL DUPpV p STO SIZE OBJ→ DROP DUPpn p STO 1 SWAP

FOR I pV (I) p EVALpX p n I − ∧ ∗ P + pP p STO

NEXT P

≫≫

Em particular este programa calcula o “polinomio VPL” dado pelaequacao (5.10).

O programa seguinte − com uma outra “filosofia” − tambem recebe umvetor e sai com um polinomio:

≪ → V

≪ −2 CF −3 CF −105 SF V 1 COL− pV 0

pSTO

DUP pV p STO SIZE OBJ→ DROP pn p STOpV 0 +

∑( I = 1, n, V (I) ∗X∧ I) p EVAL

≫≫

Por exemplo,

[−2 3 5 ] → −(2.+−3. ·X +−5. ·X2.

)

Esta forma de apresentacao do polinomio pela HP as vezes me incomoda,por ser antiestetica.

Consegui resolver este problema com o primeiro programa acima, apenascom um detalhe adicional: quando digitamos o vetor e pressionamos ENTER

este pode aparecer na pilha de dois modos:

[−2. 3. 5. ] ou [−2 3 5 ]

devemos entrar com o vetor no formato da direita.

153

Page 156: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Caso o vetor que consta na pilha esteja no formato da esquerda isto in-dica que os numeros (componentes do vetor) estao no formato real (paraa calculadora sao numeros reais). Isto significa que quando o numero foiinserido (digitado) no CAS X−Approx estava assinalado. Sendo este o casovoce deve ir no CAS (p. 86) e desmarcar X−Approx , entre novamente com ovetor, so entao teremos:

[−2 3 5 ] → −2 + 3 ·X + 5 ·X2

Na HP 12C o valor presente lıquido de um fluxo de caixa, para umadeterminada taxa de desconto i, e obtido pela tecla [NPV], para isto, antesdevemos armazenar os valores de CF0 e CF

j, nas teclas (registradores)

correspondentes. Convencionamos que CFjcorresponde a qualquer parcela

do fluxo de caixa a partir do final do primeiro perıodo ate o final do ultimoperıodo, no diagrama esta convencao fica assim:

p p p p p0 1 2 3 n

CF0CF1

CF2

CF3

CFn

· · ·

CFj

A taxa interna de retorno do fluxo de caixa e a taxa de desconto que fazcom que o valor presente lıquido seja igual a zero. Sendo assim, na equacao(5.8) devemos ter

V PL = C0 +C1

(1 + i)1+

C2

(1 + i)2+ · · ·+ Cn

(1 + i)n= 0

i =taxa internade retorno

Que e equivalente a

V PL = C0 + C1 x+ C2 x2 + · · ·+ Cn x

n = 0

A taxa interna de retorno∗ e uma das raızes deste polinomio. Uma outradas especialidades da HP 50g , raızes de polinomios.

O valor da TIR comparado com a taxa de desconto do valor presentetambem indica o resultado do investimento:

• Se a TIR for maior que a taxa de desconto desejada, o investimento eatrativo em termos financeiros.

• Se a TIR for igual a taxa de desconto desejada, o investidor e indiferenteao investimento.

∗Indicada por IRR, na HP 12C temos a tecla [IRR] para o calculo desta taxa.

154

Page 157: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

• Se a TIR for menor que a taxa de desconto desejada, o investimentonao e atrativo em termos financeiros.

Se varios investimentos estao sendo comparados, o melhor e o que tem amaior taxa de desconto. Se sao emprestimos que estao sendo analisados, omelhor e o que oferece a menor taxa de desconto.

Exemplo: O estudo de viabilidade economica de um projeto resulta nofluxo de caixa indicado na tabela abaixo:

Ano

Soma

Valor( $ )

0

1

2

3

4

5

(−)

(+)

(+)

(+)

(+)

(+)

(+)

11.500, 00

2.350, 00

1.390, 00

3.350, 00

4.275, 00

5.350, 00

5.215,00

a) Determine o valor presente lıquido desse fluxo de caixa para as taxas dedesconto de 0, 00% a.a., 10, 00% a.a. e 12, 00% a.a.;

b) encontre a taxa interna de retorno desse fluxo de caixa em % ao ano.

Vamos inicialmente resolver este exemplo pela HP 12C e, posterior-mente, pela HP 12G , para efeitos de comparacao.

Solucao: Inicialmente devemos registrar o fluxo de caixas na HP 12C, como seguinte procedimento:

[ f ] REG (apaga os registradores)

1500 [CHS ] [ g ] [ CF0 ] (parcela do ano 0=$ -11500, 00)

2350 [ g ] [ CFj] (parcela do ano 1=$ 2350, 00)

1390 [ g ] [ CFj] (parcela do ano 2=$ 1390, 00)

3350 [ g ] [ CFj] (parcela do ano 3=$ 3350, 00)

4275 [ g ] [ CFj] (parcela do ano 4=$ 4275, 00)

5350 [ g ] [ CFj] (parcela do ano 5=$ 5350, 00)

Para armazenar o fluxo de caixa na HP 12C digitamos 15 teclas∗. NaHP 12G guardaremos o fluxo de caixa em um vetor, assim:

[−11500 2350 1390 3350 4275 5350 ]

∗Nao estamos contando os digitos (valores), estes sao comuns nas duas HP’s.

155

Page 158: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

a) Calculo do valor presente lıquido: para o calculo do VPL para cada umadas taxas propostas e suficiente digitar:

0 [ i ] [ f ] [ NPV ] ⇒ 5 215, 00

10 [ i ] [ f ] [ NPV ] ⇒ 543, 84

12 [ i ] [ f ] [ NPV ] ⇒ −156, 65

Observe que o VPL (NPV) para taxa i = 0 e o valor da Soma na tabelado exemplo. Para ver que nao se trata de uma coincidencia basta substituiri = 0 na equacao (5.8) (p. 152). O fluxo de caixa continua armazenado nosregistradores da HP 12C, sem nenhuma alteracao.

b) Para o calculo da taxa interna de retorno basta digitar: [ f ] [ IRR ],para obter: 11.537, isto e, IRR= 11.537% a.a.

Apenas a tıtulo de complemento, se entrarmos com o vetor

[−11500 2350 1390 3350 4275 5350 ]

no programa da pagina 153 recebemos de volta o polinomio:

−11500 + 2350X + 1390X2 + 3350X3 + 4275X4 + 5350X5

Apenas a tıtulo de verificacao, podemos calcular os zeros deste polinomio,para isto basta digitar: ALPHA X ENTER ZEROSpara obter: X = 0.89656, com cinco decimais. Sendo X = 1

1+i , destaigualdade retiramos i = 0.11537, o que confirma o valor encontrado.

Programa para o calculo do valor presente lıquido

Vamos programar a equacao (5.9) (p. 152) no formato seguinte

V PL =

n∑

j=0

CFj

(1 + i)j= CF0 +

CF1

(1 + i)1+

CF2

(1 + i)2+ · · ·+ CFn

(1 + i)n

Entraremos com um vetor contendo o fluxo de caixa assim:

[CF0 CF1 CF2 . . . CFn ]

e mais a taxa de desconto i. Pois bem, este e o programa:

≪ → CFj i

≪ 2 FIX i 100 / p i p STO

CFj 1 COL− pCF0

pSTO DUP

pCFj

pSTO

SIZE OBJ→ DROP pn p STOpCF0 +

∑( I = 1, n,CFj(I)/(1 + i)∧ I p EVAL

p pVPL p p →TAG≫

≫ 156

Page 159: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Entrando neste programa com os dados

[−11500 2350 1390 3350 4275 5350 ] 10

recebemos de volta: VPL= 543.84.Caso se queira calcular o VPL para um mesmo fluxo de caixas e varias

taxas podemos declarar o vetor fluxo de caixas dentro do proprio programa,assim: (salve uma copia do programa e altere)

≪ → i

≪ 2 FIX i 100 / p i p STO

[−11500 2350 1390 3350 4275 5350 ] pCFj p STO

CFj 1 COL− pCF0 p STO DUP pCFj p STO

SIZE OBJ→ DROP pn p STOpCF0 +

∑( I = 1, n,CFj(I)/(1 + i)∧ I p EVAL

p pVPL p p →TAG

≫≫

Feito isto teremos, por exemplo:

i = 0 ⇒ VPL: 5 215, 00

i = 10 ⇒ VPL: 543, 84

i = 12 ⇒ VPL: − 156, 65

Para um outro fluxo de caixa basta editar o programa. A HP 12C,e outras calculadoras finaceiras, tem limites para o numero de entradasdiferentes no fluxo de caixa − de no maximo 20 valores diferentes −, observeque a HP 12G nao sofre desta limitacao.

Calculo da taxa interna de retorno

Para o calculo da taxa intena de retorno (IRR) basta uma modificacaono programa da pagina 153, assim:

≪ → V

≪ −2 CF −3 CF −105 SF V 1 COL− pV 0 p STO

DUP pV p STO SIZE OBJ→ DROP pn p STOpV 0 +

∑( I = 1, n, V (I) ∗X∧ I) p EVAL

pX p ZEROS INV 1 − 100 ∗3 FIX p p IRR p p →TAG

≫≫

157

Page 160: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Observe que

X =1

1 + i⇒ i =

1

X− 1

Entrando neste programa com o vetor do fluxo de caixa do exemplo

[−11500 2350 1390 3350 4275 5350 ]

recebemos de volta: IRR= 11.537.

Exemplo: Mostre que o fluxo de caixa, representado a seguir, se anula paraas taxas de 10% a.a. e 1000% a.a.

anosp p p0 1 2

$ 413, 22 $ 5000, 00 $ 5000, 00

Solucao: Entrando no programa anterior com o vetor:

[−413.22 5000 − 5000 ]

recebemos de volta: IRR= { 1, 000.009 10.000 }.Dependendo das magnitudes e dos sinais dos fluxos de caixa, o calculo

da IRR pode ter uma solucao unica, multiplas solucoes, solucoes negativas,complexas ou ate nenhuma solucao real.

Vejamos alguns resultados uteis da algebra:

1o ) Teorema Fundamental da Algebra.

Todo polinomio P (x) de grau n ≥ 1 admite ao menos uma raiz complexa.

2o ) Teorema da decomposicao.

Todo polinomio P (x) de grau n ≥ 1:

P (x) = a0 + a1x+ · · ·+ an−1xn−1 + anx

n

pode ser decomposto em n fatores do primeiro grau, isto e:

P (x) = an(x− r1)(x− r2)(x− r3) · · · (x− rn)

em que r1 , r2 , r3 , . . . , rn sao as raızes de P (x).

Decompor (fatorar) polinomios e uma das especialidades da HP. (p. 320)

Corolario: Toda equacao polinomial de grau n (n ≥ 1) admite n, e somenten, raızes complexas.

3o ) Teorema das raızes conjugadas.

Se um polinomio P (x) de coeficientes reais admite como raiz o numerocomplexo z = α + β i (β 6= 0), entao esse polinomio tambem admite comoraiz o numero z = α− β i, conjugado de z.

158

Page 161: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Corolario: Se um polinomio de coeficientes reais tem grau ımpar, entaoele admite um numero ımpar de razes reais. Sendo assim, por exemplo, todaequacao ax3 + bx2 + cx+ d = 0 (com a, b e c reais) tem uma ou tres raızesreais, pois o numero de raızes complexas (“puras”) e par.

4o ) Teorema de Bolzano.

Sejam P (x) = 0 uma equacao polinomial com coeficientes reais e ] a, b [um intervalo real aberto.

a) Se P (a) e P (b) tem mesmo sinal, entao existe um numero par deraızes reais ou nao existem raızes da equacao em ] a, b [.

b) Se P (a) e P (b) tem sinais contrarios, entao existe um numero ımparde raızes reais da equacao em ] a, b [.

Numero de raızes reais/A Regra de Sinais de Descartes

Considerando um polinomio ordenado, entao o numero de raızes positivasdo polinomio e igual ao numero de permutacoes de sinal nos coeficientes −ou e menor por uma diferenca par.

Por exemplo, na equacao

P (x) = 8− x− 5x2 + 2x3 = 0

existem duas variacoes de sinal na sequencia dos coeficientes. Pela regra deDescartes existem duas raızes positivas ou nenhuma. Na equacao

P (x) = −2− 3x+ x3 = 0

existe uma variacao de sinal na sequencia dos coeficientes. Pela regra deDescartes existe uma raiz positiva. Temos

−2− 3x+ x3 = 0 ⇒ (x+ 1)2 · (x− 2) = 0

Exemplo-A: Um investidor aplicou um capital de $ 650.000, 00 e recebeurendimentos parcelados de acordo com o diagrama a seguir:

mesesp p p p p p p p p p0 1 2 3 4 5 6 7 8 9

$ 650.000

$160.000

$160.000

$200.000

$490.000

Calcule a taxa interna de retorno desse investimento.Vamos inicialmente resolver este exemplo pela HP 12C e, posterior-

mente, pela HP 12G , para efeitos de comparacao.

159

Page 162: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Solucao: Inicialmente devemos registrar o fluxo de caixas na HP 12C, de-vemos substituir por 0 as “lacunas” no diagrama.

[ f ] REG (apaga os registradores)

650.000 [CHS ] [ g ] [ CF0 ] (parcela do ano 0=$ -650.000, 00)

0 [ g ] [ CFj] (“parcela” do ano 1=$ 0, 00)

0 [ g ] [ CFj] (“parcela” do ano 2=$ 0, 00)

160.000 [ g ] [ CFj] (parcela do ano 3=$ 160.000, 00)

160.000 [ g ] [ CFj] (parcela do ano 4=$ 160.000, 00)

0 [ g ] [ CFj] (“parcela” do ano 5=$ 0, 00)

200.000 [ g ] [ CFj] (parcela do ano 6=$ 200.000, 00)

0 [ g ] [ CFj] (“parcela” do ano 7=$ 0, 00)

0 [ g ] [ CFj] (“parcela” do ano 8=$ 0, 00)

490.000 [ g ] [ CFj] (parcela do ano 9=$ 490.000, 00)

Para o calculo da taxa interna de retorno basta digitar: [ f ] [ IRR ],para obter: 7.065, isto e, IRR= 7, 065% a.m.

Nesta sequencia de digitacoes sempre existe a possibildade de erros, umavez que nao vemos os digitos nos registradores; por sinal, tive que digitarduas vezes para obter este valor, que eu ja conhecia de antemao.

Para resolver este problema pela HP 12G − e outros do genero − vamosalterar o programa dado a p. 157 da seguinte forma:

≪ → V W

≪ −2 CF −3 CF −105 SF −103 CF

V 1 COL− pV 0 p STO DUP pV p STO

SIZE OBJ→ DROP pn p STO

W 1 COL− DROPpW

pSTO

pV 0 +∑

( I = 1, n, V (I) ∗X∧W (I)) p EVALpX p ZEROS INV 1 − 100 ∗3 FIX p p IRR p p →TAG

≫≫

Neste programa, para o calculo da IRR, entramos com dois vetores demesmo comprimento; um contendo os valores presentes no fluxo e o outrocontendo as datas respectivas.

160

Page 163: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Para o exemplo dado, entramos com os vetores

[−650000 160000 160000 200000 490000 ]

[ 0 3 4 6 9 ]

recebemos de volta: IRR= 7.065.

Com poucas alteracoes no programa anterior obtemos um outro para ocalculo do VPL, assim:

≪ → V W i

≪ i 100 / p i p STO

V 1 COL− pV 0

pSTO DUP

pV

pSTO

SIZE OBJ→ DROP pn p STO

W 1 COL− DROP pW p STOpV 0 +

∑( I = 1, n, V (I)/(1 + i)∧W (I)) p EVAL

3 FIX p pVPL p p →TAG

≫≫

A precisao da taxa interna de retorno

A taxa IRR calculada no exemplo anterior e apenas uma aproximacaohaja vista que o programa calcula as raızes (ZEROS) do polinomio

V 0 +∑

( I = 1, n, V (I)/(1 + i)∧W (I))

e este calculo nao e exato − envolve aproximacoes.Para se ter uma ideia desta aproximacao vamos inicialmente alterar o

programa do calculo do VPL (p. 161) para que ele fique apenas em funcao dataxa, assim:

≪ → i

≪ i 100 / p i p STO MFC →ROW DROP

1 COL− DROPpW

pSTO

1 COL− pV 0 p STO DUP pV p STO

SIZE OBJ→ DROP pn p STOpV 0 +

∑( I = 1, n, V (I)/(1 + i)∧W (I)) p EVAL

2 FIX p pVPL p p →TAG

≫≫

161

Page 164: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Armazene este programa com o nome VPLi. Antes de utilizar o pro-grama teremos que armazenar o fluxo de caixa em uma matriz. Digite aseguinte matriz (Exemplo-A, p. 159)

[ [−650000 160000 160000 200000 490000 ] [ 0 3 4 6 9 ] ]

Colocando na pilha (ENTER), teremos

[−650000 160000 160000 200000 490000

0 3 4 6 9

]

Armazene (STO) esta matriz na variavel MFC (matriz do fluxo de caixa),a qual comparece na segunda linha do programa anterior.

Apos isto vamos obter o VPL para a taxa 7.065, obtida anteriormente.Entrando com este valor no programa acima resulta: VPL= −4.49.

Esse resultado mostra que a IRR= 7.065 calculada anteriormente e ape-nas uma aproximacao ja que, por definicao, a taxa interna de retorno eaquela que anula o VPL.

An passant, observe que o programa anterior pode ser visto como umaformula (ou funcao) que nos da o VPL em funcao da taxa: VPLi(i), para umdado fluxo de caixa fixado. Estamos dizendo que o programa e equivalentea equacao:

V PL(i) =

n∑

j=0

CFj

(1 + i)j= CF0 +

CF1

(1 + i)1+

CF2

(1 + i)2+ · · ·+ CFn

(1 + i)n

Por exemplo digite entre plics p VPLi(7.065) p pressione ENTER e EVAL,para obter VPL= −4.49.Personalizando a taxa interna de retorno

Com o programa anterior podemos refinar a taxa interna de retorno,tendo em conta que o objetivo e obter um VPL igual a 0 − ou suficientementeproximo deste valor.

Antes, vamos modular a ultima equacao acima

|V PL(i)| =∣∣∣∣CF0 +

CF1

(1 + i)1+

CF2

(1 + i)2+ · · ·+ CFn

(1 + i)n

∣∣∣∣

≤ |CF0 |+ |CF1 |1

(1 + i)1+ |CF2 |

1

(1 + i)2+ · · ·+ |CFn |

1

(1 + i)n

Facamos

ki= |CF0 |+ |CF1 |

1

(1 + i)1+ |CF2 |

1

(1 + i)2+ · · ·+ |CFn |

1

(1 + i)n

162

Page 165: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Onde, para um fluxo de caixa fixado, kie uma funcao positiva e decres-

cente de i. Temos

|VPL(i)| ≤ ki⇐⇒ −k

i≤ VPL(i) ≤ k

i

Isto implica em que, se VPL e positivo aumentando a taxa ele diminui, e seVPL e negativo diminuindo a taxa ele aumenta.

Sendo assim temos o seguinte algoritmo para refinar a taxa interna deretorno:

VPL > 0 ⇒ ( i ↑ )VPL < 0 ⇒ ( i ↓ )

Ou ainda,

p0

p p

VPL> 0VPL< 0

( i ↓ ) ( i ↑ )

Isto implica em que como VPL(7.065) = −4.49 < 0, devemos diminuir ovalor de i para o proximo calculo de VPLi(i).

Utilizando o algoritmo anterior encontrei VPL(7.0648815) = −0.0004;um valor da taxa com maior precisao que o inicial.

Penso que em transacoes com altos valores envolvidos o algoritmo pararefinamento da taxa de retorno podera ser de alguma utilidade.

Observe que na HP 12G podemos obter, se necessario, uma taxa de re-torno com uma precisao desejada, ao contrario da HP 12C.

Para utilizar o programa (VPLi) para um outro fluxo de caixa bastaalterar a matriz MFC. Para isto, pressione a tecla virtual (menu) MFC

para colocar a matriz na pilha, faca as alteracoes, apos:

ENTERp MFC p

ENTER STOK

Exemplo-B: Numa epoca em que a taxa de mercado e 6, 2% a.m., qual omelhor retorno para uma aplicacao de $ 500.000, 00:

a) receber $ 700.000, 00 no fim de seis meses;

b) receber duas parcelas trimestrais de $ 330.000, 00;

c) receber tres parcelas bimestrais de $ 210.000, 00;

d) receber seis parcelas mensais de $ 100.000, 00?.

163

Page 166: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Solucao:

a) Para esta alternativa temos o seguinte diagrama de fluxo:

mesesp p p p p p p0 1 2 3 4 5 6

$ 500.000$ 700.000

Inicialmente armazenamos na variavel MFC a seguinte matriz:[−500000 700000

0 6

]

Apos isto, entramos no programa (VPLi) (p. 161) com a taxa 6.2, para obter:VPL= −12.077, 39

b) Para esta alternativa temos o seguinte diagrama de fluxo:

mesesp p p p p p p0 1 2 3 4 5 6

$ 500.000$ 330.000 $ 330.000

Sendo assim armazenamos na variavel MFC a seguinte matriz:[−500000 330000 330000

0 3 6

]

Apos isto, entramos no programa (VPLi) com a taxa 6.2, para obter:VPL= 5.532, 57

c) Para esta alternativa temos o seguinte diagrama de fluxo:

mesesp p p p p p p0 1 2 3 4 5 6

$ 500.000

$ 210.000 $ 210.000 $ 210.000

Sendo assim armazenamos na variavel MFC a seguinte matriz:[−500000 210000 210000 210000

0 2 4 6

]

164

Page 167: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Apos isto, entramos no programa (VPLi) com a taxa 6.2, para obter:VPL= −2.337, 08

d) Para esta alternativa temos o seguinte diagrama de fluxo:

mesesp p p p p p p0 1 2 3 4 5 6

$500.000

$100.000

$100.000

$100.000

$100.000

$100.000

$100.000

Sendo assim armazenamos na variavel MFC a seguinte matriz:

[−500000 100000 100000 100000 100000 100000 100000

0 1 2 3 4 5 6

]

Apos isto, entramos no programa (VPLi) com a taxa 6.2, para obter:VPL= −11.342, 41Resumindo, temos:

i = 6, 2% :

a) VPL = −12.077, 39b) VPL = 5.532, 57

c) VPL = −2.337, 08d) VPL = −11.342, 41

A melhor alternativa e a segunda pois, nesta, VPL > 0. (p. 152)

∗ ∗ ∗

Ate entao a ciencia se caracterizara por duas abordagens. “Aque-les que trataram de ciencia foram ou homens de experimento ou homensde dogma. Os homens de experimento sao como a formiga; apenas col-hem e usam; os raciocinadores assemelham-se a aranhas, que fazem teiascom sua propria substancia. Mas a abelha adota o meio-termo; colhe seumaterial das flores do jardim e do campo, mas o transforma e digere porum poder que lhe e proprio.” ( Paul Strathern/“O sonho de Mendeleiev”)

165

Page 168: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Para finalizar vamos juntar num mesmo programa o calculo do valorpresente lıquido (VPL) e da taxa interna de retorno (IRR), assim:

≪ → i

≪ i 100 / p i p STO MFC →ROW DROP

1 COL− DROP pW p STO

1 COL− pV 0 p STO DUP pV p STO

SIZE OBJ→ DROP pn p STOpV 0 +

∑( I = 1, n, V (I)/(1 + i)∧W (I)) p EVAL

p pVPL p p →TAG

−3 CF −105 SF −103 CFpV 0 +

∑( I = 1, n, V (I) ∗X∧W (I)) p EVAL

pX p ZEROS INV 1 − 100 ∗2 FIX p p IRR p p →TAG

≫≫

Basicamente acrescentamos no programa anterior (VPLi) as quatro ultimaslinhas. Neste programa, tal qual como no anterior, devemos antes armazenaro fluxo de caixa na variavel MFC e, apos, e so entrar com a taxa i (desconto).

Rodei os dados do Exemplo-B neste programa e encontrei:

a) VPL = −12.077, 39; IRR = {−205.77 5.77 }b) VPL = 5.532, 57; IRR = { 6.47 − 181.78 }c) VPL = −2.337, 08; IRR = {−206.07 6.07 }d) VPL = −11.342, 41; IRR = { 5.47 − 168.79 }

A taxa de retorno fixada foi de 6, 2% a.m., para analise das alternativaspela TIR veja comentario a p. 154.

5.5.2 Sistemas de amortizacao (PRICE)

Nos livros de matematica financeira constam varios sistemas de amor-tizacao (pagamento) de dıvidas; vamos, a tıtulo de ilustracao, programarapenas um deles:

Sistema PRICE

A “Tabela Price” , como e conhecido o sistema frances de amortizacao,foi apresentada em 1771 por Richard Price∗, este sistema se caracteriza pelo

∗Richard Price (1803-1812), matematico, filosofo e teologo ingles.

166

Page 169: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

fato de que o devedor salda o emprestimo em prestacoes iguais (posteci-padas, final do perıodo), incluindo, em cada uma delas, uma amortizacaoparcial do emprestimo e os juros sobre o saldo devedor.

Para a construcao da Tabela vamos necessitar da formula

PMT = PV · i(1 + i)n−1

(1 + i)n − 1(1 + i)m

Quando m = 1 temos as series postecipadas.Suponhamos um emprestimo PV , feito a taxa i para ser pago em n

prestacoes, pelo sistema PRICE. As prestacoes (PMT ) sao calculadas naformula acima com m = 1. Vamos utilizar o seguinte quadro demonstrativo:

N

0

1

2...

......

......

n

PAGAMENTO

−PMT

PMT

PMT

JUROS

−J1

J2

Jn

AMORTIZACAO

−A1

A2

An

SALDO DEVEDOR

SD0 = PV

SD1

SD2

SDn = 0

As colunas tem os seguintes significados:PMT: Pagamento de cada prestacao;Juros: O valor dos juros cobrados no perıodo;Amortizacao: O quanto da dıvida foi paga apos ter sido efetuado o

pagamento dos juros do perıodo;Saldo Devedor: O quanto da dıvida esta pendente para ser paga.

Para preencher a tabela inicialmente calculamos o PMT , dado por

PMT = PV · i(1 + i)n

(1 + i)n − 1

preenchemos a tabela por linha do seguinte modo:

J1 = SD0 i A1 = PMT − J1 SD1 = SD0 −A1

J2 = SD1 i A2 = PMT − J2 SD2 = SD1 −A1

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Jn = SDn−1 i An = PMT − Jn SDn = SD

n−1 −An

− Observe que, em cada linha, a prestacao (PMT ) e igual a amortizacaomais os juros.

167

Page 170: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Exemplo: Um emprestimo de $ 100.000, 00 deve ser pago apos quatro mesescom juros de 10% a.m. no sistema PRICE, determinar o pagamento mensale fazer um demonstrativo do estado da dıvida nesses quatro meses.Solucao: Inicialmente, temos

PMT = PV · i(1 + i)n

(1 + i)n − 1= 100.000 · 0, 1 · (1 + 0, 1)4

(1 + 0, 1)4 − 1= 31.547, 08

Entao,

J1 = V P i = 100.000 · 0, 1 = 10.000

A1 = PMT − J1 = 31.547, 08− 10.000 = 21.547, 08

SD1 = SD0 −A1 = 100.000 − 21.547, 08 = 78.452, 92· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·J2 = SD1 i = 78.452, 92 · 0, 1 = 7.845, 29

A2 = PMT − J2 = 31.547, 08− 7.845, 29 = 23.701, 79

SD2 = SD1 −A2 = 78.452, 92 − 23.701, 79 = 54.571, 13· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·J3 = SD2 i = 54.751, 13 · 0, 1 = 5.475, 11

A3 = PMT − J3 = 31.547, 08− 5.475, 11 = 26.071, 97

SD3 = SD2 −A3 = 54.751, 13 − 26.071, 97 = 28.679, 16· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·J4 = SD3 i = 28.679, 16 · 0, 1 = 2.867, 92

A4 = PMT − J4 = 31.547, 08− 2.867, 92 = 28.679, 16

SD4 = SD3 −A4 = 28.679, 16 − 28.679, 16 = 0· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Demonstrativo:

N

0

1

2

3

4

PAGAMENTO

−31.547, 08

31.547, 08

31.547, 08

31.547, 08

JUROS

−10.000, 00

7.845, 29

5.475, 11

2.867, 92

AMORTIZACAO

−21.547, 08

23.701, 79

26.071, 97

28.679, 16

SALDO DEVEDOR

10.000, 00

78.452, 92

54.751, 13

28.679, 16

0, 00

168

Page 171: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O programa a seguir monta a Tabela PRICE:

≪ → PV i n

≪ −105 SF 2 FIX i 100 / p i p STOpPV ∗ i ∗ (1 + i)∧n/((1 + i)∧n− 1) p EVAL pPMT p STO

n 1 + 5 2 →LIST 0 CON pMP p STO

PV i ∗ pMP (2, 3) p STO PV pMP (1, 5) p STO

1 n FOR I

I pMP (I + 1, 1) p STO PMT pMP (I + 1, 2) p STO

NEXT

2 n 1 + FOR IpMP (I − 1, 5) ∗ i p EVAL pMP (I, 3) p STOpPMT −MP (I, 3) p EVAL pMP (I, 4) p STOpMP (I − 1, 5) −MP (I, 4) p EVAL pMP (I, 5) p STO

NEXT MP

≫≫

Nota: Armazene este programa na variavel PRICE − para futuras re-ferencias.

Entrando com PV = 100000, i = 10 e n = 4, o programa sai com amatriz (Tabela-Price):

0.00 0.00 0.00 0.00 100, 000.001.00 31, 547.08 10, 000.00 21, 547.08 78, 452.922.00 31, 547.08 7, 845.29 23, 701.79 54, 751.133.00 31, 547.08 5, 475.11 26, 071.97 28, 679.164.00 31, 547.08 2, 867.92 28, 679.16 0.00

Aonde:

0.00 0.00 0.00 0.00 100, 000.001.00 31, 547.08 10, 000.00 21, 547.08 78, 452.922.00 31, 547.08 7, 845.29 23, 701.79 54, 751.133.00 31, 547.08 5, 475.11 26, 071.97 28, 679.164.00︸︷︷︸

N

31, 547.08︸ ︷︷ ︸

Pagamento

2, 867.92︸ ︷︷ ︸

Juros

28, 679.16︸ ︷︷ ︸

Amortizacao

0.00︸︷︷︸

Saldo Devedor

Os tres tracinhos (−) da Tabela foram substituidos por 0.00.Para visualizar toda a matriz pressione simultaneamene:

.

169

Page 172: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Vamos explicar em detalhes o funcionamento do programa para que elepossa, se necessario, ser adaptado para outros sistemas de amortizacao.

Por uma questao didatica vamos supor uma matriz de ordem (4+1)×5,como e a do exemplo visto − embora o numero de linhas possa ser maior,claro.

Pois bem, na terceira linha do programa calculamos o valor de cadaprestacao e armazenamos este valor na variavel PMT . Na linha seguintecriamos uma matriz com elementos CONstantes e iguais a 0, armazenamosna variavel MP (Matriz Price), ate aqui temos: (Execute-o no DBUG)

0.00 0.00 0.00 0.00 0.000.00 0.00 0.00 0.00 0.000.00 0.00 0.00 0.00 0.000.00 0.00 0.00 0.00 0.000.00 0.00 0.00 0.00 0.00

= MP

Observe que genericamente, temos:

MP =

MP (1, 1) MP (1, 2) MP (1, 3) MP (1, 4) MP (1, 5)MP (2, 1) MP (2, 2) MP (2, 3) MP (2, 4) MP (2, 5)MP (3, 1) MP (3, 2) MP (3, 3) MP (3, 4) MP (3, 5)MP (4, 1) MP (4, 2) MP (4, 3) MP (4, 4) MP (4, 5)MP (5, 1)︸ ︷︷ ︸

N

MP (5, 2)︸ ︷︷ ︸

Pagamento

MP (5, 3)︸ ︷︷ ︸

Juros

MP (5, 4)︸ ︷︷ ︸

Amortizacao

MP (5, 5)︸ ︷︷ ︸

Saldo devedor

Apos o primeiro FOR-NEXT temos a seguinte area da matriz ja preenchida:

MP =

MP (1, 1) MP (1, 2) MP (1, 3) MP (1, 4) MP (1, 5)MP (2, 1) MP (2, 2) MP (2, 3) MP (2, 4) MP (2, 5)MP (3, 1) MP (3, 2) MP (3, 3) MP (3, 4) MP (3, 5)MP (4, 1) MP (4, 2) MP (4, 3) MP (4, 4) MP (4, 5)MP (5, 1)︸ ︷︷ ︸

N

MP (5, 2)︸ ︷︷ ︸

Pagamento

MP (5, 3)︸ ︷︷ ︸

Juros

MP (5, 4)︸ ︷︷ ︸

Amortizacao

MP (5, 5)︸ ︷︷ ︸

Saldo devedor

O segundo FOR-NEXT calcula os elementos restantes tendo em contaque:

MP (I − 1, 5) ∗ i = MP (I, 3) ⇐⇒ SDn−1 · i = Jn

PMT −MP (I, 3) = MP (I, 4) ⇐⇒ PMT − Jn = An

MP (I − 1, 5)−MP (I, 4) = MP (I, 5) ⇐⇒ SDn−1 −An = SDn

Ate aqui ja foi possıvel observar, como foi afirmado na introducao destecapıtulo, como o recurso de matrizes facilita tanto a insercao quanto a apre-sentacao de dados.

170

Page 173: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Exemplo: Um emprestimo de $ 20.000, 00 deve ser quitado apos oito mesescom uma taxa de juros de 4% a.m., no sistema PRICE. Exibir a Tabela dedemonstrativos deste financiamento.

Solucao: Entrando com PV = 20000, i = 4 e n = 8, o programa sai com amatriz (Tabela-Price):

0.00 0.00 0.00 0.00 20, 000.001.00 2, 970.56 800.00 2, 170.56 17, 829.442.00 2, 970.56 713.18 2, 257.38 15, 572.063.00 2, 970.56 622.88 2, 347.67 13, 224.394.00 2, 970.56 528.98 2, 441.58 10, 782.815.00 2, 970.56 431.31 2, 539.24 8, 243.576.00 2, 970.56 329.74 2, 640.81 5, 602.757.00 2, 970.56 224.11 2, 746.45 2, 856.308.00︸︷︷︸

N

2, 970.56︸ ︷︷ ︸

Pagamento

114.25︸ ︷︷ ︸

Juros

2, 856.30︸ ︷︷ ︸

Amortizacao

3.30E − 7︸ ︷︷ ︸

Saldo devedor

Observe que nosso programa PRICE pode ser visto como uma “trans-formacao” (sinonimo de funcao) com domınio e contradomınio dados assim:

PRICE : ] 0, +∞ [× ] 0, +∞ [×N −→ M(n+1)×5

(PV, i, n) [ · · · ]

(Evidentemente que existem limitacoes de memoria) Ou seja, o programaassocia a cada terna de numeros (PV, i, n) uma matriz do conjunto M

(n+1)×5

das matrizes com (n+ 1) linhas e 5 colunas.Diferentemente de todas as outras calculadoras financeiras, assim creio,

a HP 12G gera a Tabela-Price com o toque de apenas “duas teclas” :

pPRICE(PV, i, n) p EVAL N

∗ ∗ ∗[. . .] Sim, de fato ele [Leibniz] percebeu no bit 0 e no bit 1 o poder

combinatorio para criar o universo inteiro, que e exatamente o que acon-tece nos modernos computadores digitais eletronicos e no restante denossa tecnologia de informacao digital: CDS, DVDS, cameras digitais,PCS. . . Tudo isso e 0’s e 1’s, e esta e a nossa imagem do mundo! Vocecombina apenas 0’s e 1’s e voce consegue tudo. [. . .]

A despeito da crıtica de Laplace, a visao de Leibniz, pela qual o mundoe criado a partir dos 0’s e 1’s, recusa-se a sair de cena. De fato, elacomecou a inspirar alguns fısicos contemporaneos, que provavelmentenunca ouviram falar de Leibniz. (Gregory Chaitin/Metamat!/p.’s 99-101)

171

Page 174: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Conclusao: Cremos que os programas implementados ate aqui sao maisdo que suficientes para ilustrar como podemos transferir − com vantagensmil − a HP 12C para dentro da HP 12G . Ademais, um outro aspecto noqual a HP 12G leva vantagens frente a HP 12C (e as outras calculadorasfinanceiras) diz respeito a parte de Estatıstica∗, no cap. 6 desenvolvemosvarios programas desta disciplina que podem ser incorporados na HP 12G .Por exemplo, da seguinte forma:

HP 50g

HOME

HP 12G

MAT.FIN.

ESTAT.

ou seja, por enquanto nossa calculadora comporta uma parte (subdiretorio)de matematica financeira e uma outra de estatıstica; e esta arvore poderase desenvolver de acordo com as necessidades individuais − com galhosramificando-se em todas as direcoes. Programas para serem incorporados aHP 12G podem ser trocados via internet e assim teremos, ao final, “a maior,a mais versatil e a mais completa calculadora financeira do mundo! ”.

(Ate prova, em contrario!)

De fato, como ja mencionei na introducao deste trabalho, consultei −via internet − os manuais das principais calculadoras financeiras, tais como:BA II PLUSTM (Texas), HP-19B (HP), HF 100F (Dismac), EL-735 (Sharp),etc., em determinada etapa de desenvolvimento do presente trabalho me deiconta de algo deveras interessante: As industrias das respectivas calculado-ras mencionadas mobilizaram equipes e mais equipes de desenvolvimento(projetos) das mesmas, investiram pesado em varias frentes − por suposto−, inclusive em hardware. Pois bem, numa primeira avaliacao creio que eu,sozinho, seja capaz de criar uma calculadora financeira superior a muitasdas que se encontram no mercado e com investimento quase nulo − comodei uma ligeira mostra aqui.

Nao deixa de ser ironico!

∗Isto decorre das diferencas ja mencionadas: programavel, tela plana; incorpora listas,vetores e matrizes, etc.

172

Page 175: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Capıtulo 6APLICACOES A ESTATISTICA

A fısica precisa limitar-se a descricao das relacoes entre as per-cepcoes. A coisa em si nao lhe e acessıvel, apenas as relacoes entre ascoisas. (Jurgen Neffe)

Introducao:

Este nao e um capıtulo de Estatıstica mas de aplicacoes a Estatıstica.Aqui desenvolvemos programas concernentes a varios topicos da Estatıstica− sugerimos ao leitor ter em maos, concomitantemente, um livro do assunto.Em nossas referencias consta um livro de Estatıstica donde programamos amaioria dos exemplos.

Definicao 8 (Dados Brutos). Dados brutos e uma sequencia de valoresnumericos nao organizados, obtidos diretamente da observacao de um feno-meno coletivo.

Quando os dados coletados sao organizados na forma crescente ou de-crescente, os Dados Brutos passam a se chamar Rol.

Definicao 9 (Rol). Rol e uma sequencia ordenada dos Dados brutos.

Entrada de dados na HP 50g : Quanto aos programas que desen-volveremos subsequentemente podemos optar por tres formas de entradasde dados:

− Listas, como por exemplo: (p. 35, p. 38)

{ 2 5 0 1 8 4 }− Vetores ou Matrizes, como por exemplo: (p. 38)

[ 2 5 0 1 8 4 ] ou

0 81 52 5

Sugerimos ao leitor abrir uma nova pasta (p. 23) para conter os programasde Estatıstica.

173

Page 176: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

6.1 Series EstatısticasO programa a seguir recebe uma lista de dados e um elemento da lista e

sai com a frequencia do elemento.

≪ → L n

≪ L DUP SIZE pN p STO AXLpV p STO 0 pJ p STO

1 N FOR I

IF pV (I) == n p

THEN J 1 + pJ p STO

END

NEXT J

≫≫

A segunda linha do programa duplica a lista pega o seu comprimento earmazena em N em seguida transforma a lista em um vetor (AXL, p. 46).

Na terceira linha o vetor e armazenado em V e iniciamos um contadorJ com 0.

Na quarta linha do programa (FOR) faremos a variavel I percorrer (ouvarrer) todos os elementos do vetor (lista inicial) comparando-os com o ele-mento de entrada n; sempre que houver coincidencia incrementamos o con-tador J com uma unidade.

Ao final o programa disponibiliza na pilha a frequencia do elemento n.Armazene este programa na variavel PE1 − sera subrotina de um outro.Por exemplo, entrando com: { 2 4 3 4 2 5 1 } 4, o programa nos

devolve 2. Que e a frequencia com que o 4 ocorre na lista acima.

6.1.1 Distribuicao de frequencia-variavel discreta

O programa a seguir encontra a distribuicao de frequencia

≪ → L

≪ −2 CF −3 CF L SORT pLp STO

WHILE L { } 6=REPEAT L DUP HEAD DUP pxi p STO

PE1 DUP pf p STO 1 SWAP

FOR I

L TAIL pL p STO

NEXT pxi p f 2 →ARRY

END DEPTH ROW→≫

≫ 174

Page 177: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Para o entendimento deste programa sugerimos ao leitor executa-lo noDBUG.

Armazene este programa na variavel PE2 − sera subrotina de um outro.Como um exemplo: a sequencia abaixo representa a observacao do numero

de acidentes por dia, em uma rodovia, durante 20 dias.

0, 2, 0, 1, 1, 0, 0, 0, 3, 2, 1, 0, 1, 2, 0, 1, 3, 2, 2, 0

Entrando com a lista:

{ 0 2 0 1 1 0 0 0 3 2 1 0 1 2 0 1 3 2 2 0 }

recebemos de volta a tabela (matriz):

0 81 52 53 2

xi

fi

0 8

1 5

2 5

3 2

Nota: Se a lista de dados for grande podemos, alternativamente, digitaros dados em varias listas (a criterio) e depois somamos (+ ) as listas ateobter apenas uma.

Para os dados acima, por exemplo, temos

{ 0 2 0 1 1 0 0 0 3 2 }

{ 1 0 1 2 0 1 3 2 2 0 }

Conferimos cada lista individualmente e depois somamos (+ ) para obterapenas uma, que sera a entrada do programa.

Vejamos mais um exemplo: na sequencia abaixo listamos as notas de 30alunos:

3.5, 5, 4.5, 4, 4.5, 5, 3.5, 4, 4, 5

2, 3, 4.5, 3.5, 4, 4.5, 3, 4, 3, 4

3.5, 3.5, 3.5, 4, 4, 3, 4, 4, 5, 3

podemos, alternativamente, alocar estes dados em tres listas:

{ 3.5 5 4.5 4 4.5 5 3.5 4 4 5 }

{ 2 3 4.5 3.5 4 4.5 3 4 3 4 }

{ 3.5 3.5 3.5 4 4 3 4 4 5 3 }

175

Page 178: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Somando duas vezes (++ ) obtemos uma lista, entrando no programa, obte-mos:

2 13 53.5 64 104.5 45 4

xi

fi

2 1

3 5

3.5 6

4 10

4.5 4

5 4

Para implementar o proximo programa iremos considerar a figura

q q q q q q· · · · · ·a1 a2 a3 a4 aI

aN

na qual estao alocadas as classes. A sequencia (a1 , a2 , a3 , . . .) dos pontosextremos das classes esta em progressao aritmetica de primeiro termos a1 erazao r = h = a2 − a1 , entao:

an = a1 + (n− 1) r

= a1 + (n− 1) (a2 − a1)

O programa a seguir recebe uma lista com dois elementos (primeira classe)e N (numero de classes) e sai com uma lista cujos elementos sao listas dedois elementos contendo os extremos das classes.

≪ → L1 N

≪ {} N 1 + + 0 CON pa p STO

L1 OBJ→ DROP pa(2) p STO pa(1) p STO

3 N 1 + FOR npa(1) + (n− 1) ∗ (a(2)− a(1)) p EVALpa(n) p STO

NEXT

1 N FOR Ipa(I) p EVAL pa(I + 1) p EVAL

2 →LIST

NEXT N →LIST≫

176

Page 179: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Armazene este programa na variavel PE3 − sera subrotina de um outro.Por exemplo, entrando com: { 2 4 } 4O programa nos devolve: { { 2 4 } { 4 6 } { 6 8 } { 8 10 } }Geometricamente, temos

q q q q q2 4 6 8 10

{ 2 4 } { 6 8 }

{ 4 6 } { 8 10 }

Agora temos um problema matematico a resolver: Em uma distribuicaode frequencia com N classes, dada a primeira classe e um valor (elemento) xdeterminar a que classe I este elemento pertence. Geometricamente, temos:

x

I=?

q q q q q q· · · · · ·a1 a2 aI

aI+1

aN

aN+1

TemosaI≤ x < a

I+1

Ou aindaa1 + (I − 1) r ≤ x < a1 +

((I + 1)− 1

)r

Desenvolvendo as desigualdades

{

x ≥ a1 + Ir − r

x < a1 + Ir

Encontramosx− a1 < Ir ≤ x− a1 + r

Como r = a2 − a1 > 0, dividindo por r, obtemos

x− a1

r< I ≤ x− a1

r+ 1

Sendo assim, podemos escrever

I =

⌊x− a1

r+ 1

=

⌊x− a1

r

+ 1

Nota: ⌊ · ⌋ e a funcao maior inteiro (ou funcao piso).Por exemplo, ⌊ 3.9 ⌋ = 3, ou ⌊ 1.99 ⌋ = 1. Na HP voce acessa esta funcao

com o comando FLOOR (ver tabela dos reais, p. 13).

Este resultado sera utilizado no proximo programa.

177

Page 180: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

6.1.2 Distribuicao de frequencia-variavel contınua

O programa seguinte recebe uma lista de dados e sai com a distribuicaode frequencia − variavel contınua.

≪ → L

≪ −3 CF L DUP SIZE pn p STO

SORT DUP HEAD pm p STO

REVLIST HEAD pM p STO L PE2

ROW→ →LIST pLH p STO m M R→C

1000 4 BEEP

p p(Xmin, Xmax) p p →TAG

n p pn p p →TAG

p pEntre C1 e NC p p HALTpN p STO pC1 p STO DROP DROP DROP

N 2 2 →LIST 0 CON pMC p STO C1 OBJ→DROP SWAP DUP pa1 p STO − pr p STO

WHILE LH { } 6=REPEAT LH HEAD OBJ→ DROP

pf p STO px p STO LH TAIL pLH p STOpFLOOR((x− a1)/r) + 1 p EVALpnc p STO pMC(nc, 2) + f p EVAL pMC(nc, 2) p STO

END C1 N PE3 pLCp STO

1 N FOR k

k LC k GET OBJ→ DROP pMC(k, 2) p EVAL

4 →ARRY

NEXT N ROW→≫

≫Alguns comentarios: na segunda linha n guardara o numero de elementos

da lista; na terceira linha m guardara o menor valor da lista; na quarta linhaM guardara o maior valor da lista. Na quarta linha a subrotina PE2 seraacionada.

Na sexta linha o programa emitira um beep e em seguida exibira − emum par ordenado − o menor e o maior valor da lista, bem como o numeron de elementos da mesma.

Em seguida pede que se entre com a primeira classe (que sera armazenadaem C1) e o numero de classes (que sera armazenado em N). A execucao doprograma sera suspensa (HALT) ate que estes valores sejam fornecidos.

178

Page 181: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Vejamos um exemplo: na sequencia abaixo listamos as notas de 30alunos:

3, 4, 2.5, 4, 4.5, 6, 5, 5.5, 6.5, 7

7.5, 2, 3.5, 5, 5.5, 8, 8.5, 7.5, 9, 9.5

5, 5.5, 4.5, 4, 7.5, 6.5, 5, 6, 6.5, 6

Entrando com estes dados em uma lista:

{ 3 4 2.5 4 4.5 6 5 5.5 6.5 7 7.5 2 3.5 5 5.5

8 8.5 7.5 9 9.5 5 5.5 4.5 4 7.5 6.5 5 6 6.5 6 }

Apos o beep a calculadora exibira:

(Xmin,Xmax) : (2., 9.5)

n : 30.

“Entre C1 e NC”

O que significa que o menor valor encontrado na lista e 2 e o maior valor e9.5; o numero de elementos na lista e 30.

O usuario devera fornecer a primeira classe e o numero de classes, porexemplo, entre com: { 2 4 } 4

Nota: a calculadora podera ate ser desligada enquanto tomamos a de-cisao quanto as classes.

Apos entrar com os dados acima deveremos dar Continue:

ONCONT

O resultado sera:

1 2 4 42 4 6 123 6 8 104 8 10 4

Classe Notas fi

1 4

2 12

3 10

4 4

2 4

4 6

6 8

8 10

Para o entendimento deste programa sugerimos ao leitor executa-lo noDBUG.

179

Page 182: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Vejamos mais um exemplo: Os dados abaixo referem-se a uma coleta dedados relativos as estaturas (cm) de quarenta alunos:

166, 160, 161, 150, 162, 160, 165, 167, 164, 160

162, 161, 168, 163, 156, 173, 160, 155, 164, 168

155, 152, 163, 160, 155, 155, 169, 151, 170, 164

154, 161, 156, 172, 153, 157, 156, 158, 158, 161

Entrando com estes dados em uma lista, apos o beep teremos:

(Xmin, Xmax): (150, 173)

n : 40.

“Entre C1 e NC”

O que significa que o menor valor encontrado na lista e 150 e o maior valore 173; o numero de elementos na lista e 40.Nota: Para ver Xmax digite: ROT ENTER

e, apos, ENTER .O usuario devera fornecer a primeira classe e o numero de classes, diga-

mos, entre com: { 150 154 } 6Apos entrar com os dados acima deveremos dar Continue:

ONCONT

O resultado sera:

1 150 154 42 154 158 93 158 162 114 162 166 85 166 170 56 170 174 3

Classe Estaturas (cm) fi

1 4

2 9

3 11

4 8

5 5

6 3

150 154

154 158

158 162

162 166

166 170

170 174

180

Page 183: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

6.1.3 Frequencia relativa de um elemento da serie − fr

E a divisao da frequencia simples deste elemento pelo numero total deelementos da serie.

fri=

fi

nou fri

=fi

n× 100%

O programa seguinte recebe duas listas (xie f

i) e sai com uma matriz

contendo na terceira coluna a frequencia relativa dos elementos.

≪ → xi fi

≪ −3 SF fi DUP∑LIST / 100 ∗

AXL fi AXL

SWAP xi AXL

ROT ROT 3 COL→≫

Por exemplo, para a seguinte tabela de variavel discreta

xi

fi

2 3

3 7

4 8

6 6

7 1

Entramos no programa com as duas listas:

{ 2 3 4 6 7 }{ 3 7 8 6 1 }

O programa nos devolve a seguinte matriz:

2 3 123 7 284 8 326 6 247 1 4

xi

fi

fri

%

2 3 12

3 7 28

4 8 32

6 6 24

7 1 4

181

Page 184: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

6.1.4 Frequencia acumulada de um elemento da serie − Fi

E a soma da frequencia simples deste elemento com as frequencias simplesdos elementos que o antecedem.

Fi= f1 + f2 + · · · + f

i

O programa seguinte − uma adaptacao do anterior − recebe duas listas(x

ie f

i) e sai com uma matriz contendo na quarta coluna a frequencia

acumulada dos elementos.

≪ → xi fi

≪ −3 SF fi DUP∑LIST / 100 ∗

AXL fi AXL SWAP xi AXL

ROT ROT 3 COL→ pA p STO

1 xi SIZE FOR Ip∑

( j = 1, I,A(j, 2)) p EVAL

NEXT DEPTH →ARRYA SWAP 4 COL+

≫≫

Por exemplo, para a seguinte tabela de variavel discreta

xi

fi

2 3

3 7

4 8

6 6

7 1

{ 2 3 4 6 7 }

{ 3 7 8 6 1 }

Entramos no programa com as duas listas a direita.

O programa nos devolve a seguinte matriz:

2 3 12 33 7 28 104 8 32 186 6 24 247 1 4 25

xi

fi

fri

% Fi

2 3 12 3

3 7 28 10

4 8 32 18

6 6 24 24

7 1 4 25

182

Page 185: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

6.1.5 Frequencia acumulada relativa de um elemento da serie− F

Ri

E a divisao da frequencia acumulada deste elemento, pelo numero total deelementos da serie:

FRi

=F

i

nou F

Ri=

Fi

n× 100%

O programa seguinte − uma adaptacao do anterior − recebe duas listas(x

ie f

i) e sai com uma matriz contendo na quinta coluna a frequencia

acumulada relativa dos elementos.

≪ → xi fi

≪ −3 SF fi DUP∑LIST / 100 ∗

AXL fi AXL SWAP xi AXL

ROT ROT 3 COL→ pA p STO

1 xi SIZE FOR Ip∑

( j = 1, I,A(j, 2)) p EVAL

NEXT DEPTH →ARRY

A SWAP 4 COL+

DUP 4 COL− SWAP DROP

fi∑LIST / 100 ∗ 5 COL+

≫≫

Por exemplo, para a seguinte tabela de variavel discreta

xi

fi

2 3

3 7

4 8

6 6

7 1

Entramos no programa com as duas listas:

{ 2 3 4 6 7 }{ 3 7 8 6 1 }

O programa nos devolve a seguinte matriz:

183

Page 186: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

2 3 12 3 123 7 28 10 404 8 32 18 726 6 24 24 967 1 4 25 100

xi

fi

fri

% Fi

FRi

%

2 3 12 3 12

3 7 28 10 40

4 8 32 18 72

6 6 24 24 96

7 1 4 25 100

6.1.6 Frequencia relativa de um elemento da serie − fr

E a divisao da frequencia simples desta classe pelo numero total de ele-mentos da serie.

fri=

fi

nou fri

=fi

n× 100%

6.1.7 Frequencia acumulada de uma classe − Fi

E a soma da frequencia simples desta classe com as frequencias simplesdas classes anteriores: F

i= f1 + f2 + · · · + f

i.

6.1.8 Frequencia acumulada relativa de uma classe − fRi

E a divisao da frequencia acumulada desta classe pelo numero total deelementos da serie:

FRi

=F

i

nou F

Ri=

Fi

n× 100%

O programa da pagina seguinte recebe uma matriz, oriunda de uma dis-tribuicao de frequencia de uma variavel contınua, e sai com uma matrizcontendo todas as frequencias listadas acima − veremos um exemplo.

Desafio - I (Dirigido a todos os matematicos)

Construir uma transformacao:

λ : [ 0, 1 [ −→ [ 0, 1 [× [ 0, 1 [

Satisfazendo as duas seguintes condicoes:

1a ) A transformacao devera ser sobrejetiva;

2a ) Devera ser contınua.

(Gentil, o taumaturgo)

184

Page 187: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

≪ → A

≪ −3 SF A 4 COL− SWAP

DROP DUP AXL∑LIST DUP pn p STO /

100 ∗ A SWAP 5 COL+ DUPpA p STO SIZE OBJ→ DROP

DROP pNL p STO

1 NL FOR Ip∑

( j = 1, I,A(j, 4)) p EVAL

NEXT NL →ARRY

A SWAP 6 COL+ DUP

6 COL− SWAP DROP n

/ 100 ∗ 7 COL+

≫≫

Vejamos um exemplo. Para a distribuicao a seguir:

1 2 4 62 4 6 183 6 8 104 8 10 6

Entrada

Classe Notas fi

1 6

2 18

3 10

4 6

2 4

4 6

6 8

8 10

Entrando com a matriz a direita, recebemos de volta a seguinte matriz:

1 2 4 6 15 6 152 4 6 18 45 24 603 6 8 10 25 34 854 8 10 6 15 40 100

⇓Classe Notas f

ifri

% Fi

FRi

%

1 6 15 6 15

2 18 45 24 60

3 10 25 34 85

4 6 15 40 100

2 4

4 6

6 8

8 10

185

Page 188: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

6.2 Medidas de Tendencia Central

As principais medidas de tendencia central sao: media, mediana e moda.

O que vem a seguir constitui-se em prerrequisito para o calculo das me-didas acima referidas.

6.2.1 Somatorio − notacao sigma (∑

)

A soma de n parcelas, tipo

x1 + x2 + · · · + xn−1 + xn

Sera escrita numa notacao mais compacta (simplificada), como:

x1 + x2 + · · ·+ xn−1 + xn =

n∑

i=1

xi

Quando a variacao do somtorio for de i = 1 a i = n, podemos simplificarainda mais a notacao, assim:

x1 + x2 + · · ·+ xn−1 + xn =

n∑

i=1

xi=

xi

A tıtulo de ilustracao, vejamos como calcular alguns somatorios com aHP 50g .

Exemplo: Calcule para a tabela abaixo, o valor numerico das somas indi-cadas:

i xi

fi

1 3 2

2 4 5

3 6 3

4 8 2

a)∑

i b)∑

xi

c)∑

fi

d)∑

xifi

e)∑

i xi

f)∑

x2ifi

g)∑

(xi− 10)2 f

ih)

∑(

xifi

i

)

i)∑ |x

i− i| f

i

Solucao:

a) Aqui deveremos somar todos os ındices. Entre com os ındices na pilhaem uma lista, assim:

{ 1 2 3 4 }

186

Page 189: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Agora digite a seguinte sequencia de teclas:

MTH LIST∑

LIST

para obter: 10. O que significa que

i =

4∑

i=1

i = 1 + 2 + 3 + 4 = 10

b) Aqui deveremos somar todos os termos da segunda coluna da tabela.Entre com os termos na pilha em uma lista, assim:

{ 3 4 6 8 }

Agora digite (se necessario) a mesma sequencia de teclas do ıtem anterior:

MTH LIST∑

LIST

para obter: 21. O que significa que

xi=

4∑

i=1

xi= 3 + 4 + 6 + 8 = 21

c) Aqui deveremos somar todos os termos da terceira coluna da tabela. Entrecom os termos na pilha em uma lista, assim:

{ 2 5 3 2 }

Agora digite (se necessario) a mesma sequencia de teclas do ıtem anterior:

MTH LIST∑

LIST

para obter: 12. O que significa que

fi=

4∑

i=1

fi= 2 + 5 + 3 + 2 = 12

d) Aqui o somatorio significa

xifi= x1 f1 + x2 f2 + x3 f3 + x4 f4

Entre com a segunda e terceira colunas em duas listas, assim:

{ 3 4 6 8 }{ 2 5 3 2 }

187

Page 190: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Multiplique estas listas ( × ) como se fosse multiplicar dois numeros∗ e de-pois some a lista resultante − como nos ıtens anteriores, para obter: 60.

e) Procedimento analogo ao anterior − para obter: 61.

f) Aqui o somatorio significa

x2ifi= x2

1f1 + x2

2f2 + x2

3f3 + x2

4f4

Inicialmente entre com a segunda coluna:

{ 3 4 6 8 }

Eleve esta lista ao quadrado − como se fosse elevar um numero. Em seguida,entre com a terceira coluna em uma lista, obtendo nos nıveis 1 e 2 da pilha:

{ 9 16 36 64 }{ 2 5 3 2 }

Multiplique e some a lista resultante para obter: 334.

Podemos, alternativamente, obter o mesmo resultado pelo programa aseguir:

≪ → x f p∑

( I = 1, 4, x(I)∧ 2 ∗ f(I) p ≫

Armazene este programa em uma variavel e entre com a segunda e ter-ceira colunas em dois vetores, assim:

[ 3 4 6 8 ]

[ 2 5 3 2 ]

Nota: No programa acima a letra i que consta no somatorio deve ser digitadaem maiusculo (I), pois o i minusculo a calculadora reserva para a unidadeimaginaria dos complexos.

g) Aqui o somatorio significa

(xi− 10)2 f

i= (x1 − 10)2 f1 +(x2 − 10)2 f2 +(x3 − 10)2 f3 +(x4 − 10)2 f4

O programa seguinte resolve nosso problema:

≪ → x f p∑

( I = 1, 4, (x(I)− 10)∧ 2 ∗ f(I) p ≫∗A lista resultante contem o produto termo a termo das listas.

188

Page 191: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Armazene este programa em uma variavel (ou apenas altere o programaanterior) e entre com a segunda e terceira colunas em dois vetores, assim:

[ 3 4 6 8 ]

[ 2 5 3 2 ]

Para obter: 334.

h) Aqui o somatorio significa

∑ ( xifi

i

)

=x1 f1

1+

x2 f2

2+

x3 f3

3+

x4 f4

4

O programa seguinte resolve nosso desafio:

≪ → x f p∑

( I = 1, 4, x(I) ∗ f(I)/I p ≫

Armazene este programa em uma variavel (ou apenas altere o programaanterior) e entre com a segunda e terceira colunas em dois vetores, assim:

[ 3 4 6 8 ]

[ 2 5 3 2 ]

Para obter: 26.

i) Aqui o somatorio significa

|xi− i| f

i= |x1 − 1| f1 + |x2 − 2| f2 + |x3 − 3| f3 + |x4 − 4| f4

O programa seguinte resolve nosso desafio:

≪ → x f p∑

( I = 1, 4,ABS(x(I)− I) ∗ f(I)) p ≫

Armazene este programa em uma variavel (ou apenas altere o programaanterior) e entre com a segunda e terceira colunas em dois vetores, assim:

[ 3 4 6 8 ]

[ 2 5 3 2 ]

Para obter: 31.

189

Page 192: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

6.3 Medias

6.3.1 Media aritmetica simples

Para calcular a media aritmetica simples de uma sequencia numerica com“n entradas”:

x1 , x2 , . . . , xn

que denotaremos por

x =

∑x

i

n

entraremos com os dados em uma lista

{x1 x2 . . . xn }

no seguinte programa

≪ → L

≪ L∑LIST L SIZE /

≫≫

6.3.2 Media aritmetica ponderada

Definimos como media aritmetica ponderada de uma sequencia

x1 , x2 , . . . , xn

afetada por pesos

p1 , p2 , . . . , pn

respectivamente, o seguinte resultado

X =

∑x

ipi

∑pi

(6.1)

Ou ainda − abrindo os somatorios:

X =x1 p1 + x2 p2 + · · ·+ xn pn

p1 + p2 + · · ·+ pn

No programa entraremos com duas listas, assim:

{x1 x2 . . . xn }{ p1 p2 . . . pn }

Eis o programa que implementa a equacao (6.1):

190

Page 193: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

≪ → L1 L2

≪ L1 L2 ∗ ∑LIST L2

∑LIST /

≫≫

Exemplo: Entrando no programa com os dados

{ 2 5 6 8 }{ 1 4 3 2 }

onde, a primeira lista refere-se aos xie a segunda aos p

i, o programa nos

devolve: 5.6 − como sendo a media aritmetica ponderada.

6.3.3 Mediana

Veja a definicao de mediana em um livro de Estatıstica.O programa seguinte recebe uma lista − com os dados brutos − e nos

devolve a mediana.

≪ → L

≪ L SORT DUP pL p STO SIZE pN p STO

IF pFP (N/2) == 0 p

THEN L DUP N 2 / GET SWAP

N 2 / 1 + GET + 2 /

p pMediana p p →TAG

ELSE L N 1 + 2 / GET

p pMediana p p →TAG

END

≫≫

Exemplo: Entrando com a lista { 5 13 10 2 18 15 6 16 9 };recebemos de volta: Mediana: 10.

Entrando com a lista { 2 6 7 21 12 13 18 10 }; recebemos de volta:Mediana: 11.

191

Page 194: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Mediana-variavel discreta

O programa a seguir calcula a mediana a partir da tabela de distribuicaode frequencia.

≪ → xi fi

≪ −3 SF xi AXL fi AXL

2 COL→ pAp STO 1 xi SIZE DUP pN p STO

FOR Ip∑

( j = 1, I,A(j, 2)) p EVAL

NEXT DEPTH →ARRY

A SWAP 3 COL+ pAp STOp∑

( j = 1,N,A(j, 2))/2 p EVAL pm p STO

A 3 COL− SWAP DROP

AXL m POS pk p STO

IF pk == 0 p

THEN 1 pIp STO

WHILE pA(I,3) ≤ mp

REPEAT I 1 + pI p STO

END pA(I,1) p EVAL p pMediana p p →TAG

ELSEp(A(k,1)+A(k+1,1))/2 p EVAL p pMediana p p →TAG

END

≫≫

Para um melhor entendimento do programa execute-o no DBUG. Porexemplo, para a distribuicao a seguir

xi

fi

2 1

5 4

8 10

10 6

12 2

192

Page 195: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Entramos no programa com as duas listas:

{ 2 5 8 10 12 }{ 1 4 10 6 2 }

O programa nos devolve: Mediana: 8.

Vejamos ainda um outro exemplo. Para a distribuicao a seguir

xi

fi

12 1

14 2

15 1

16 2

17 1

20 1

Entramos no programa com as duas listas:

{ 12 14 15 16 17 20 }{ 1 2 1 2 1 1 }

O programa nos devolve: Mediana: 15.5.

Desafio - II (Dirigido a todos os matematicos)

Construir uma transformacao:

γ : [ 0, 1 [× [ 0, 1 [ −→ [ 0, 1 [

Satisfazendo as duas seguintes condicoes:

1a ) A transformacao devera ser injetiva e nao sobrejetiva;

2a ) Devera ser contınua.

(Gentil, o taumaturgo)

Dogmas sao prisoes, um espırito que

queira realizar belas obras, que tambem

queira os meios necessarios, tem de ser

cetico. Estar livre de toda forma de

crenca pertence a forca, ao poder de ver

sem algemas. (Nietzsche)

193

Page 196: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Mediana-variavel contınua

O programa a seguir calcula a mediana a partir da tabela de distribuicaode frequencia.

≪ → A

≪ −3 SF A SIZE OBJ→ DROP DROP pN p STO

1 N FOR Ip∑

( j = 1, I,A(j, 4)) p EVAL

NEXT N →ARRY

A SWAP 5 COL+ pAp STOp∑

( j = 1,N,A(j, 4))/2 p EVAL pm p STO

A 5 COL− SWAP DROP

AXL m POS pk p STO

IF pk == 0 p

THEN 1 pIp STO

WHILE pA(I,5) ≤ mp

REPEAT I 1 + pI p STO

ENDpA(I,2)+(m-A(I-1,5))*(A(I,3)-A(I,2))/A(I,4) p

EVAL p pMediana p p →TAG

ELSEpA(k,3) p EVAL p pMediana p p →TAG

END

≫≫

Para um melhor entendimento do programa execute-o no DBUG. Ve-jamos um exemplo, para a distribuicao a seguir:

1 3 6 22 6 9 53 9 12 84 12 15 35 15 18 1

Entrada

Classe Notas fi

1 2

2 5

3 8

4 3

5 1

3 6

6 9

9 12

12 15

15 18

194

Page 197: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

entrando no programa com a matriz a direita, recebemos de volta (com 4decimais fixadas): Mediana: 9.9375.

Vejamos mais um exemplo, para a distribuicao a seguir:

1 0 10 12 10 20 33 20 30 94 30 40 75 40 50 46 50 60 2

Entrada

Classe Notas fi

1 1

2 3

3 9

4 7

5 4

6 2

0 10

10 20

20 30

30 40

40 50

50 60

entrando no programa com a matriz a direita, resulta: Mediana: 30.

6.3.4 Moda

Definicao 10. E o valor de maior frequencia em um conjunto de dados.

Calculo da moda

No caso de dados brutos ou rol sugerimos− se necessario − a utilizacao doprograma a p. 174 para a obtencao da tabela de distribuicao de frequencia.

Por exemplo, para a tabela da esquerda

xi

fi

0 2

2 5

3 10

4 3

5 4

xi

fi

1 2

2 5

3 4

4 5

5 3

xi

fi

3 1

5 1

8 1

10 1

12 1

a maior frequencia observada na segunda coluna vale 10 que corresponde aotermo 3 da serie. Portanto, a moda vale mo = 3.

Para a tabela do centro a maior frequencia observada na segunda colunae 5 que corresponde a dois termos da serie, 2 e 4. Dizemos que esta e umaserie com duas modas, ou bimodal: mo = 2 e mo = 4.

Podemos encontrar series nas quais nao exista nenhum valor que aparecamais vezes que outros, neste caso dizemos que a serie nao possui moda, ouque e amodal. E o caso da serie que comparece na tabela da direita.

195

Page 198: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Variavel contınua

Para a determinacao da moda a partir de uma distribuicao de frequenciaem variavel contınua como a a seguir

Classe Notas fi

1 1

2 3

3 6

4 2

0 10

10 20

20 30

30 40

existem varios metodos, dentre os quais o algoritmo (formula) de Czuberdado a seguir:

mo = lmo +fmo − fant

2fmo − ( fant + fpost )· h (6.2)

Onde:

lmo : limite inferior da classe modal;

fmo : frequencia simples da classe modal;

fant : frequencia simples da classe anterior a modal;

fpost : frequencia simples da classe posterior a modal;

h : amplitude do intervalo de classe.

A classe modal, na apresentacao da variavel contınua, e a classe queapresenta a maior frequencia. No caso da tabela acima e a terceira classe.

Calculemos a moda para a distribuicao exemplificada acima:

mo = 20 +6 − 3

2 · 6 − ( 3 + 2 )· 10 = 24.29

Se a classe modal for a primeira classe, considera-se fant = 0 e se a classemodal for a ultima consideramos fpost = 0.

∗ ∗ ∗O matematico, como o pintor ou

o poeta, e um desenhista. Se os seus de-

senhos sao mais duradouros que os deles,

e porque sao feitos com ideias.

(G.H. Hardy)

196

Page 199: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O programa a seguir calcula a moda para uma distribuicao de frequenciaem variavel contınua.

≪ → A

≪ −3 CF −105 CF A 4 COL− SWAP DROP AXL

DUP SIZE pN p STO DUP pLF p STO OBJ→ DROP

1 N 1 − FOR I

MAX

NEXT LF SWAP POS pk p STO −3 SF

IF pk == 1 p

THENpA(k,2)+(A(k,4)−0)/(2 ∗A(k,4) − (0 + A(k+1,4))) ∗ (A(1,3) −A(1,2)) p

EVAL p pModa p p →TAG

ELSE

IF pk == N p

THENpA(k,2)+(A(k,4)−A(k-1,4))/(2 ∗ A(k,4) − (A(k-1,4) + 0)) ∗ (A(1,3) −A(1,2)) p

EVAL p pModa p p →TAG

ELSE

pA(k,2)+(A(k,4)−A(k−1,4))/(2∗A(k,4)−(A(k-1,4)+A(k+1,4)))∗(A(1,3)−A(1,2))p

EVAL p pModa p p →TAG

END

END

≫≫

Para a distribuicao a seguir

1 0 10 12 10 20 33 20 30 64 30 40 2

Entrada

Classe Notas fi

1 1

2 3

3 6

4 2

0 10

10 20

20 30

30 40

entramos no programa com a matriz da direita. O programa nos devolve:Moda: 24.29.

197

Page 200: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Faremos alguns comentarios sobre o programa. Inicialmente observe −no caso particular do exemplo dado − que

1 0 10 12 10 20 33 20 30 64 30 40 2

Entrada

=

A11 A12 A13 A14

A21 A22 A23 A24

A31 A32 A33 A34

A41 A42 A43 A44

Por exemplo, a amplitude de classe: h = 10− 0 = A13 −A12 .A classe modal encontra-se na terceira linha da matriz: [ 20, 30 [.A formula (6.2) (p. 196), fica assim:

mo = lmo +fmo − fant

2fmo − ( fant + fpost )· h

= A32 +A34 −A24

2A34 − (A24 +A44)· (A13 −A14)

O FOR-NEXT encontra a maior frequencia. A funcao MAX encontra omaior de dois numeros − veja tabela dos reais (p. 13).

Ao sair do laco, na sexta linha do programa:

NEXT LF SWAP POS pkp STO −3 SF

encontramos o ındice (numero) da classe modal e guardamos o valor navariavel k. Na elaboracao do programa tive a oportunidade de perceber oseguinte: ao pedir a posicao (POS) do elemento 6 (resultado do FOR-NEXT)na lista de frequencias:

{ 1 3 6 2 }se o seis estiver com um ponto decimal, isto e, 6., a HP interpretara como seeste numero nao estivesse na lista acima e retorna 0 como posicao − sendoque deveria ser 3. Isto causara um erro na execucao. A solucao que euencontrei foi desativar os sinalizadores 3 e 105, o que foi feito na segundalinha do programa. Na sexta linha do programa o sinalizador 3 volta aser ativado para que o resultado de uma eventual fracao seja escrito comodecimal (e nao no modo simbolico, p. ex., 2

3).O primeiro IF pergunta se a classe modal e a primeira, se for este o caso,

faz fant = 0 na formula de Czuber. O segundo IF, mais interno, perguntase a classe modal e a ultima, se for este o caso, faz fpost = 0 na formula deCzuber.

198

Page 201: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Vejamos mais dois exemplos de aplicacao do programa. Para a dis-tribuicao a seguir

1 0 2 202 2 4 63 4 6 34 6 8 1

Entrada

Classe Notas fi

1 20

2 6

3 3

4 1

0 2

2 4

4 6

6 8

entramos no programa com a matriz da direita. O programa nos devolve:Moda: 1.18.

Para a distribuicao a seguir

1 0 1 122 1 2 153 2 3 214 3 4 325 4 5 54

Entrada

Classe Notas fi

1 12

2 15

3 21

4 32

5 54

0 1

1 2

2 3

3 4

4 5

entramos no programa com a matriz da direita. O programa nos devolve:Moda: 4.29.

∗ ∗ ∗

0 0 0

1 0 0...

...

0 1 0

1 1 0

0 0 1

1 0 1

0 1 1

1 1 1

No Nada as possibilidades contraditorias

sao simultaneas, e por isso se anulam reci-

procamente. O Nada e, assim, a totalidade

simultanea das possibilidades contraditorias.

(Marcelo Malheiros/filosofo)

199

Page 202: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

6.4 Medidas de Dispersao

6.4.1 Desvio medio simples

O desvio medio simples − indicado por DMS − e definido como sendouma media aritmetica dos desvios de cada elemento da serie para a mediada serie.

Calculo do desvio medio simples

1o ) Caso − Dados brutos ou rol.

Consideremos a sequencia de dados representada por: x1 , x2 , . . . , xn .

Neste caso aplicamos a seguinte formula:

DMS =

∑ |xi− x|

n(6.3)

onde: x =x1+x2+···+xn

n e a media aritmetica simples.

O programa que implementa a formula anterior a princıpio deveria ser oseguinte. (Digite este programa)

≪ → L

≪ L DUP SIZE pn p STO∑LIST n / p x p STO

L AXL px p STOp∑

( I = 1, n,ABS(x(I)− x)) p EVAL

n / p pDMS p p →TAG

≫≫

Nota: O x barrado (x), que comparece na terceira linha do programa, podeser acessado em CHARS (caracteres) acima de EVAL N . Apos a execucao doprograma x aparecera no menu, podendo ser acessado a partir deste.

Quando da tentativa de utilizacao do programa acima tive a oportunidadede aprender um pouco mais sobre a programacao da HP 50g , aprendizadoeste que eu gostaria de compartilhar com o amigo leitor.

Pois bem, entrando no programa com a lista { 2 8 5 6 } o programa nosdevolve 0 como o desvio medio simples. Acontece que o resultado correto,calculado pela formula (6.3), e 1. 75.

Fiquei intrigado, executei o programa no DBUG para tentar descobrir oerro. Percebi que o resultado do somatorio na quinta linha do programa era0, quando nao deveria ser. Fiz algumas trocas de nomes de variaveis, nadaadiantou, o erro persistia.

200

Page 203: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Posteriormente, apos algumas simulacoes e ainda sem entender o queestaria acontecendo, percebi que a HP estava simplesmente ignorando omodulo (ABS), digo, sendo

( I = 1, n,ABS(x(I)− x)) =

n∑

i=1

|xi− x|

a HP na verdade estava calculando

4∑

i=1

|xi− x| = x1 − x + x2 − x + x3 − x + x4 − x

= x1 + x2 + x3 + x4 − 4 x = 0

Por um momento me senti desapontado por nao entender o que estavaacontecendo, cheguei ate a imaginar uma possıvel falha dos engenheiros queprojetaram a HP 50g .

A parte da estatıstica que antes eu havia imaginado que seria a maisfacil de programar (apenas formulas) estava agora se tornando a mais difıcilpor conta deste pequeno “probleminha”.

A princıpio tentei reescrever o programa evitando o somatorio na quintalinha, por exemplo trabalhando apenas com listas, ao inves de vetor (linhaquatro).

O programa resultou complicado e antiestetico, foi quando lembrei-mede que

|x| =√x2

Alterei o programa para

≪ → L

≪ L DUP SIZE pn p STO∑LIST n / p x p STO

L AXL pxp STOp∑

( I = 1, n, (x(I)− x)∧ 2) p EVAL

n / p pDMS p p →TAG

≫≫

Funcionou! . . . Posteriormente, lembrei-me de que tambem

|x| = max{x, −x }

201

Page 204: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Alterei o programa para

≪ → L

≪ L DUP SIZE pn p STO∑LIST n / p x p STO

L AXL px p STOp∑

( I = 1, n,MAX(x(I)− x, x− x(I))) p EVAL

n / p pDMS p p →TAG

≫≫

Tambem funcionou!Nao obstante este relativo exito, a noite fui para a cama ainda com um

resquıcio de frustracao por nao ter entendido o que estaria acontecendo como primeiro programa, por que ele nao funcionava . . .

Ao amanhecer do dia finalmente a solucao do problema me veio a mente:Eu ja havia concluido a redacao do capıtulo seguinte ha algum tempo atras,lembrei-me de que ja havia escrito alguma coisa a respeito da funcao modulo;de fato, no CAS (p. 342) (sistema algebrico computacional) da calculadoradeveria ativar o modo X−Rigorous (p. 347).

Ora, mas este procedimento equivale a desativar o sinalizador 119, desorte que, finalmente, o programa que implementa a formula (6.3) (p. 200)

fica assim: (ver programa p. 200)

≪ → L

≪ −119 CF L DUP SIZE pn p STO∑LIST n / p x p STO

L AXL px p STOp∑

( I = 1, n,ABS(x(I)− x)) p EVAL

n / p pDMS p p →TAG

≫≫

202

Page 205: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

2o ) Caso − Variavel discreta.

Para uma distribuicao de frequencia como a seguinte

xi

fi

1 2

3 5

4 2

5 1

a formula para o desvio medio simples e dada por:

DMS =

∑ |xi− x| f

i∑

fi

(6.4)

onde, desta vez, x e uma media aritmetica ponderada, dada assim:

x =

∑x

ifi

∑fi

Nos livros de estatıstica, para o calculo do DMS, sao feitos varios calculosintermediarios acrescentando-se mais colunas a tabela anterior.

Aqui basta digitarmos o programa seguinte e calcularemos “todos” osDMS “de uma vez por todas”.

≪ → x f

≪ −119 CF x SIZE OBJ→ DROP pN p STOp∑

( I = 1,N, x(I) ∗ f(I))/∑( I = 1,N, f(I)) p EVAL p x p STOp∑

( I = 1,N,ABS(x(I)− x) ∗ f(I))/∑( I = 1,N, f(I)) p EVAL

p pDMS p p →TAG

≫≫

Entramos com os dados (colunas da tabela) em dois vetores. Para atabela exibida acima entramos com:

[ 1 3 4 5 ]

[ 2 5 2 1 ]

O programa nos devolve: DMS: 0. 80.

203

Page 206: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

3o ) Caso − Variavel contınua.

Para uma distribuicao de frequencia como a seguinte

Classe Notas fi

1 5

2 10

3 4

4 1

2 4

4 6

6 8

8 10

a formula para o desvio medio simples e dada por:

DMS =

∑ |xi− x| f

i∑

fi

(6.5)

onde, desta vez, x e uma media aritmetica ponderada, dada assim:

x =

∑x

ifi

∑fi

Nestas formulas xie o ponto medio da classe i.

O programa que implementa a formula (6.5) e o seguinte:

≪ → A

≪ −119 CF A SIZE OBJ→ DROP DROPpN p STO A 4 COL− p f p STO DROP

1 N FOR kp(A(k, 2) + A(k, 3))/2 p EVAL

NEXT N →ARRY p x p STOp∑

( I = 1,N, x(I) ∗ f(I))/∑( I = 1,N, f(I)) p EVAL p xp STOp∑

( I = 1,N,ABS(x(I)− x) ∗ f(I))/∑( I = 1,N, f(I)) p EVAL

p pDMS p p →TAG

≫≫

204

Page 207: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Por exemplo, para a distribuicao dada acima:

1 2 4 52 4 6 103 6 8 44 8 10 1

Entrada

Classe Notas fi

1 5

2 10

3 4

4 1

2 4

4 6

6 8

8 10

entrando com a matriz a direita o programa nos devolve: DMS: 1. 15.

6.4.2 Variancia e Desvio Padrao

Se substituirmos nas formulas do DMS a distancia |xi− x | por (x

i− x )2,

obteremos uma nova medida de dispersao conhecida como variancia.

O desvio-padrao e definido como a raiz quadrada da variancia.

Quando a sequencia de dados representa uma Populacao∗ a variancia seradenotada por σ2(x) e o desvio-padrao por σ(x).

Quando a sequencia de dados representa uma Amostra† a variancia seradenotada por s2(x) e o desvio-padrao por s(x).

Calculo da variancia e desvio-padrao

1o ) Caso − Dados brutos ou rol.

Consideremos a sequencia de dados representada por: x2 , . . . , xn .

Se a sequencia representa uma populacao a equacao (6.2) (p. 196) e modi-ficada como a seguir, para o calculo da variancia:

σ2(x) =

∑(x

i− x )2

n(6.6)

onde: x =x1 + x2 + · · ·+ xn

ne a media aritmetica simples.

Para a construcao do programa que implementa esta formula basta umapequena alteracao no programa dado a p. 202, assim:

∗Populacao: e o conjunto de todos os itens (pessoas, coisas, objetos) portadores de,pelo menos, uma caracterıstica comum.

†Amostra: e qualquer subconjunto finito e nao vazio de uma Populacao.

205

Page 208: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

≪ → L

≪ L DUP SIZE pn p STO∑LIST n / p x p STO

L AXL px p STOp∑

( I = 1, n, (x(I)− x)∧ 2) p EVAL

n / p p σ(x)∧ 2 p p →TAG

≫≫

Por exemplo, para a sequencia: { 4 5 8 5 }, teremos: σ2(x) : 2. 25.

2o ) Caso − Variavel discreta.

Para uma distribuicao de frequencia como a seguinte

xi

fi

2 3

3 5

4 8

5 4

a formula para o calculo da variancia e dada por:

σ2(x) =

∑(x

i− x )2 f

i∑

fi

(6.7)

onde, como antes, x e uma media aritmetica ponderada, dada assim:

x =

∑x

ifi

∑fi

Para implementar esta formula basta alterar o programa dado na p. 203da seguinte forma:

≪ → x f

≪ x SIZE OBJ→ DROP pN p STOp∑

( I = 1,N, x(I) ∗ f(I))/∑( I = 1,N, f(I)) p EVAL p xp STOp∑

( I = 1,N, (x(I)− x)∧ 2) ∗ f(I))/∑( I = 1,N, f(I)) p EVAL

p p σ(x)∧ 2 p p →TAG

≫≫

206

Page 209: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Entramos com os dados (colunas da tabela) em dois vetores. Para atabela exibida acima entramos com: [ 2 3 4 5 ] [ 3 5 8 4 ].

O programa nos devolve: σ2(x) : 0. 9275.

3o ) Caso − Variavel contınua.

Para uma distribuicao de frequencia como a seguinte

Classe Notas fi

1 1

2 3

3 5

4 1

0 4

4 8

8 12

12 16

a formula para a variancia e dada por:

σ2(x) =

∑(x

i− x )2 f

i∑

fi

(6.8)

onde, como antes, x e uma media aritmetica ponderada, dada assim:

x =

∑x

ifi

∑fi

Nestas formulas xie o ponto medio da classe i.

Para construir o programa que implementa a formula (6.8) basta umaligeira alteracao no programa dado a p. 204, assim:

≪ → A

≪ A SIZE OBJ→ DROP DROPpNp STO A 4 COL− p f p STO DROP

1 N FOR kp(A(k, 2) + A(k, 3))/2 p EVAL

NEXT N →ARRY p x p STOp∑

( I = 1,N, x(I) ∗ f(I))/∑( I = 1,N, f(I)) p EVAL p x p STOp∑

( I = 1,N, (x(I)− x)∧ 2 ∗ f(I))/∑( I = 1,N, f(I)) p EVAL

p p σ(x)∧ 2 p p →TAG

≫≫

207

Page 210: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Por exemplo, para a distribuicao dada acima:

1 0 4 12 4 8 33 8 12 54 12 16 1

Entrada

Classe Notas fi

1 1

2 3

3 5

4 1

0 4

4 8

8 12

12 16

entrando com a matriz a direita o programa nos devolve: σ2(x) : 10. 24.

6.5 Ajustamento de Reta e Correlacao

Ha um topico na estatıstica que consiste no “ajustamento” de uma retaa um conjunto de pontos dados: { (x

i, y

i) : i = 1, 2, . . . , n }.

A plotagem destes pontos num sistema cartesiano resulta no diagramade dispersao do conjunto.

x

y

0

r

r

r

r

r

x1 x2 x3 xn−1 xn· · ·

...

y1

yn

y3

y2

− Diagrama de Dispersao

O objetivo e encontrar a reta Y = a + bX que melhor se ajusta aospontos dados. Melhor se ajusta segundo um dado criterio.

6.5.1 A reta de mınimos quadrados

Ometodo mais utilizado e conhecido comometodo dos mınimos quadra-dos que consiste em minimizar a soma dos quadrados das distancias (verti-cais) da reta aos pontos, como na figura seguir:

208

Page 211: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

x

y

0

r

r

r

r

r

xi

yi

r

di l

Y

Tendo em conta que Y = a + bX, temos:

di= y

i− Y (x

i) ⇒ d

i= y

i− (a + bx

i)

Entao,

d2i=

(yi− a− bx

i)2 ⇒ min

d2i= min

(yi− a− bx

i)2

Observe que temos que minimizar uma funcao de duas variaveis, que saoos parametros a e b a serem ajustados.

Ou ainda, a funcao a ser minimizada e

f(a, b) =∑

d2i= (y1 − a− bx1)

2 + (y2 − a− bx2)2 + · · ·+ (yn − a− bxn)

2

Para encontrar o mınimo desta funcao, o primeiro procedimento e igualaras derivadas parciais a zero, isto e:

∂ a

d2i= 0 e

∂ b

d2i= 0

A primeira derivada fica:

2 (y1 − a− bx1)(−1) + 2 (y2 − a− bx2)(−1) + · · ·+ 2 (yn − a− bxn)(−1) = 0

A segunda derivada fica:

2 (y1−a−bx1)(−x1)+2 (y2−a−bx2)(−x2)+ · · ·+2 (yn−a−bxn)(−xn) = 0

Destas duas igualdades resulta o sistema:

∑yi= na+ b

∑x

i

∑x

iyi= a

∑x

i+ b

∑x2

i

209

Page 212: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Multiplicando a primeira equacao por∑

xie a segunda por −n e so-

mando eliminamos o a, obtendo:

b =n∑

xiyi−∑

xi·∑ y

i

n∑

x2i−

(∑x

i

)2

Substituimos o valor encontrado para b na primeira equacao do sistemae determinamos a:

a =

∑yi− b

∑x

i

n⇒ a = y − bx

Onde: x =∑

xi/n e y =

∑yi/n.

Para simplificar a programacao podemos fazer a seguinte manipulacaoem b:

b =n∑

xiyi− n2

∑xi

n ·∑

yi

n

n∑

x2i− n2

(∑xi

n

)2

Ou ainda:

b =

∑x

iyi− n x y

∑x 2

i− n x2

O programa a seguir encontra os coeficientes da reta Y = a+ bX:

≪ → x y

≪ x SIZE OBJ→ DROP pN p STOp∑

(I = 1, N, x(I))/N p EVAL pxm p STO

p∑

(I = 1, N, y(I))/N p EVAL pym p STO

p∑

(I = 1, N, x(I) ∗ y(I)) −N ∗ xm ∗ ym p EVAL

p∑

(I = 1, N, x(I)∧ 2)−N ∗ xm∧2 p EVAL

/ pb p STO pym− b ∗ xm p EVAL DUP pa p STO

p pa p p →TAG b p pb p p →TAG

≫≫

Devemos entrar com dois vetores: [xi] e [ y

i].

Exemplo: Obter a equacao da reta de mınimos quadrados para os seguintespontos oriundos de uma experiencia:

x 1 2 3 4 5 6 7 8

y 0, 5 0, 6 0, 9 0, 8 1, 2 1, 5 1, 7 2, 0

Tracar a reta no diagrama de dispersao.

210

Page 213: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Solucao: Fornecendo ao programa anterior os seguintes dados de entrada:

[ 1 2 3 4 5 6 7 8 ]

[ 0.5 0.6 0.9 0.8 1.2 1.5 1.7 2.0 ]

Obtemos: a = 0.175 e b = 0.217. Portanto, Y = 0.175 + 0.217X e aequacao da reta pedida. Graficamente, temos:

Y

p p pp p p p p p

1

2

pp

0x

y

1 2 3 4 5 6 7 8

r

r

r

r

r

r

r

r

− Reta de mınimos quadrados

6.5.2 Correlacao linear

Anteriormente vimos como determinar uma funcao (afim, ou linear porum abuso de linguagem) relacionando duas variaveis que podem estar ligadasa dados experimentais. Agora estamos interessados em verificar exatamenteo quanto os pontos, no diagrama de dispersao, se aproximam de uma reta,isto e feito com o conceito de correlacao linear. Conquanto existam variostipos de correlacao, aqui nos deteremos em apenas um. Para medir o grau decorrelacao linear entre duas variaveis, ou seja, medir o grau de ajustamentodos valores em torno de uma reta, usaremos o coeficiente de correlac~ao

linear de Pearson, dado por:

r =n∑

xiyi−∑

xi·∑ y

i√

[n∑

x2i−

(∑x

i

)2 ][n∑

y2i−

(∑yi

)2 ]

onde n e o numero de observacoes. Pode-se demonstrar que −1 ≤ r ≤ 1.

Alternativamente, podemos multiplicar o valor encontrado de r por 100,obtendo a resposta em porcentagem.

A figura abaixo mostra algumas relacoes entre o coeficiente de Pearson eo diagrama de dispersao:

211

Page 214: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

x

y

r

r

r

r

r

r

r = 1

Correlacao linear perfeita (positiva)

x

y

r

r

r

r

r

r

r = −1Correlacao linear perfeita (negativa)

x

y

r

r r

rr

r

r > 0

Forte correlacao linear positiva

x

y

r

r

r

r

r

rr < 0

Forte correlacao linear negativa

x

y

r

r

r

r

r

rr

r r

r

r > 1

Fraca correlacao linear positiva

x

y

r

r

rrr

r

r

r

r

r

r < 0

Fraca correlacao linear negativa

O programa a seguir encontra o coeficiente de Pearson:

≪ → x y

≪ x SIZE OBJ→ DROP pN p STOpN ∗∑(I = 1, N, x(I) ∗ y(I))−∑

(I = 1, N, x(I)) ∗∑(I = 1, N, y(I)) p

EVAL pN ∗∑(I = 1, N, x(I)∧ 2) p EVAL p∑

(I = 1, N, x(I))∧ 2 p

EVAL − pN ∗∑(I = 1, N, y(I)∧ 2) p EVAL p∑

(I = 1, N, y(I))∧ 2 p

EVAL − ∗ √/ p p r p p →TAG

≫≫

212

Page 215: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Devemos entrar com dois vetores: [xi] e [ y

i].

Para o exemplo dado na p. 210, encontramos r = 0.978. Esse valorsignificativo (97.8%) do coeficiente de Pearson implica que a reta de mınimosquadrados se ajusta bem ao conjunto de pontos, como pode ser observadona figura.

∗ ∗ ∗

O programa a seguir multiplica dois hipercomplexos, conforme (3.5)(p. 82)

≪ → a b c d

≪ IF pa ∗ c ≥ 0 p

THEN pa ∗ c− b ∗ d p EVALpABS(a) ∗ d+ b ∗ABS(c) p EVAL

R→C

ELSE pa ∗ c+ b ∗ d p EVALpABS(a) ∗ d+ b ∗ABS(c) p EVAL

R→C

END

≫≫

Proposicao 5. A operacao de multiplicacao em H verifica as seguintes pro-priedades: (Exercıcio)

M1) Propriedade comutativa;

M2) nao associativa;

M3) existencia do elemento neutro;

M4) existencia do elemento inverso;

M5) nao distributiva em relacao a adicao.

Devido a existencia do inverso multiplicativo podemos definir em H aoperacao de divisao. Dado w = (a, b), deixamos como exercıcio provar queseu inverso e dado por

w′ =( a

a2 + b2,−b

a2 + b2)

w′ multiplicado por w = (a, b) da como resultado 1 = (1, 0).

Faca um programa para dividir dois hipercomplexos.

Vamos agora ressaltar algumas diferencas entre H e C.

Em H existe um numero, j = (0, 1), o qual possui duas propriedadesque, em conjunto, nao sao partilhadas por nenhum numero complexo,

213

Page 216: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

quais sejam,{

j2 = −1,−1 · j = j

Como consequencia destas propriedades existem problemas sem solucaoem C mas com soluao em H. Por exemplo

{

x2 + 1 = 0,

−1 · x− x = 0

Ou seja, nao existe nenhum numero complexo x satisfzendo, simultaneamente,as duas condicoes a direita.

Vejamos mais um exemplo, o sistema a seguir:

x+ y = 0

(−1 · x− y) · y = 2

nao tem solucao no corpo complexo C, em H sim.Das duas equacoes abaixo:

x2 + 1 = 0

(−1 · x+ x) · x + 1 = 0

Com o numero i (complexo) resolvemos apenas a primeira, ao passo que,com o numero j resolvemos as duas − prove isto!

A interpretacao geometrica do produto complexo, como se sabe, e a deuma rotacao; a do produto hipercomplexo, como pode ser mostrado, com-bina as transformacoes: rotacao, reflexao e oscilacao.

Ademais, podemos mostrar que os Reais passam a ser um “subconjunto”de H. Vale a identificacao: k = (k, 0).

Deixamos como exercıcio, a quem interessar possa, a prova da seguinte

Proposicao 6. Para todo k ∈ R, e para todo w = (a, b) em H, a seguinteidentidade

k · (a, b) = ( k a, |k| b ) ={

(k a, k b), se k ≥ 0;

(k a, −k b), se k < 0.

se verifica.Como um corolario desta proposicao concluimos que em H nao vale a

identidade: −1 · x = −x, ∀x ∈ H.

Exercıcio: Resolva, em H, as seguintes equacoes do pimeiro grau (aw = b):

(a ) (1, 1) · (x, y) = (3, 1).

(b ) (−1, 1) · (x, y) = (1, 2).

Nota: Continua na pagina 280.

214

Page 217: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Capıtulo 7APLICACOES AO CALCULONUMERICO

[. . .] sugere que o vacuo pode nao estar preenchido apenas de energiaponto-zero, que pode ser medida objetivamente com tecnicas da fısica,mas tambem permeado de consciencia, que pode ser experienciada sub-jetivamente com tecnicas de introspeccao.

(B. Alan Wallace/Dimensoes Escondidas, p. 54)

7.1 Interpolacao

Introducao:

Em muitas situacoes de interesse necessitamos aproximar uma funcaode “aspecto complicado” , como por exemplo∗,

C(θ) = 3θ−3

∫ θ

0

x3

ex − 1dx

por uma outra funcao mais simples de manipular. A integral a seguir†

∫ 1

0

1 + (k2 − 1)x2

1− x2dx

e conhecida como integral elıtica, para 0 < k < 1 e impossıvel encontrarexplicitamente uma primitiva da funcao

f(x) =

1 + (k2 − 1)x2

1− x2

∗Esta e conhecida como funcao de Debye, encontrada em Termodinamica Estatısticano calculo do calor especıfico a volume constante de certas substancias.

†Que representa a quarta parte do perımetro da elipse de semieixo maior 1 e semieixomenor k.

215

Page 218: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Ainda em outras situacoes, dispomos apenas de um conjunto de dadostabelados − colhidos “no campo” −, como por exemplo, os dados a seguir

x 0 3 6 9 12 15 18 21 24 27 30

y 2, 38 7, 78 11, 43 13, 57 15, 79 12, 78 10, 31 6, 88 4, 44 2, 98 1, 35

para o calculo da abscissa x do centro de gravidade de uma placa, dado pelaformula,

x =

∫ b

axy dx

∫ b

ay dx

Em situacoes tais como estas − e em muitas outras − necessitaremos doimportante conceito de

Interpolacao Polinomial

Considere uma funcao f(x) conhecida (ou “amostrada”) em n+1 pontosdistintos: x0 , x1 , . . . , xn , de um intervalo [ a, b ] contido em seu domınio.Tomemos a seguinte notacao y

i= f(x

i), i = 0, 1, . . . , n; como no grafico a

seguir,

p p p px0= a x1 x2 xn= b· · ·

...

y0

y1

yn

pp

p

0x

y

f

s

s

s

Interpolar por um polinomio a funcao f − com x0 , x1 , . . . , xn ∈ [ a, b ],n + 1 pontos distintos − significa determinar um polinomio P (x), de graumenor ou igual a n, que coincida com f em todos estes pontos, isto e, talque:

P (xi) = f(x

i) = y

i, para i = 0, 1, . . . , n.

Geometricamente, temos

216

Page 219: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

p p p px0=a x1 x2 xn= b· · ·

...

· · ·y0

y1

yn

pp

p

0x

y

f

P

s

s

s

s

O teorema a seguir afirma a existencia e unicidade do polinomio inter-polante.

Teorema 8 (Existencia e unicidade). Seja f(x) definida em x0 , x1, . . . ,xn, (n + 1) pontos distintos de um intervalo [ a, b ], entao existe um unicopolinomio P (x) de grau menor ou igual a n de modo que

P (xi) = f(x

i) = y

i, para i = 0, 1, . . . , n. (7.1)

Prova: Considere o polinomio P (x), de grau n, da forma

P (x) = an xn + an−1 x

n−1 + · · · + a1 x + a0

Vamos provar que existem (e sao unicos) os coeficientes an , an−1 , . . . , a1 ,a0 , tais que P (x) satisfaz as condicoes dadas em (7.1), isto e

i = 0 ⇒ an xn0+ a

n−1 xn−10

+ · · · + a1 x0 + a0︸ ︷︷ ︸

P (x0 )

= y0︸︷︷︸

f(x0 )

i = 1 ⇒ an xn1+ a

n−1 xn−11

+ · · · + a1 x1 + a0︸ ︷︷ ︸

P (x1 )

= y1︸︷︷︸

f(x1 )

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

i = n ⇒ an xnn+ a

n−1 xn−1n

+ · · · + a1 xn + a0︸ ︷︷ ︸

P (xn )

= yn︸︷︷︸

f(xn )

217

Page 220: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Sendo assim, temos:

an xn0+ a

n−1 xn−10

+ · · · + a1 x0 + a0 = y0

an xn1+ a

n−1 xn−11

+ · · · + a1 x1 + a0 = y1

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

an xnn+ a

n−1 xn−1n

+ · · · + a1 xn + a0 = yn

Ou ainda,

xn0

xn−10

· · · x0 1

xn1

xn−11

· · · x1 1

. . . . . . . . . . . . . . . . . . . . . .

xnn

xn−1n

· · · xn 1

an

an−1

. . . .

a1

a0

=

y0

y1

. . . .

yn−1

yn

No que resulta em um sistema de equacoes lineares da forma AX = B, ondeA e a matriz dada por:

A =

xn0

xn−10

· · · x0 1

xn1

xn−11

· · · x1 1

. . . . . . . . . . . . . . . . . . . . . .

xnn

xn−1n

· · · xn 1

O determinante da matriz A e conhecido como determinante das potencias

ou de Vandermonde e, e dado por: detA =∏

i<j

(xi− x

j).

Como, por hipotese, os pontos xi, i = 0, 1, . . . , n, sao distintos dois a

dois, segue que detA 6= 0, donde concluimos que o sistema linear possui umaunica solucao.

Isto e, os coeficientes do polinomio em (an , an−1 , . . . , a1 , a0) sao unicose podem ser calculados pela resolucao deste sistema; sendo assim demons-tramos que o polinomio P (x) existe e e unico. �

Consideracoes sobre erros

Pela construcao do polinomio interpolante P (x) dada no teorema 8 temosque este coincide com a funcao f(x) em todos os pontos x0 , x1 , . . . , xn ,fora destes pontos certamente estaremos cometendo um erro porquanto, ede se esperar que P (x) 6= f(x) para x 6= x

i, i = 0, 1, . . . , n.

Definimos o erro cometido na aproximacao por

E(x) = f(x)− P (x), onde x ∈ [ a, b ].

218

Page 221: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Geometricamente fica assim:

p p px0= a xn= b· · ·

...

y0

yn

pp

0x

y

f

Ps

s

s

s

x

E(x) = f(x)− P (x)

Teorema 9 (Erro na interpolacao). Seja f(x) definida em x0, x1 , . . . ,xn, (n + 1) pontos distintos de um intervalo [ a, b ], e, ademais, contınua e(n + 1) vezes diferenciavel. Se P (x) interpola f(x) nestes pontos, entao oerro cometido E(x) e calculado por:

E(x) = f(x)− P (x) =

n∏

i=0

(x− xi)

(n+ 1)!f (n+1)(ξ) (7.2)

onde ξ ∈ [x0 , xn ].

Prova: Veja, por exemplo, [10]. �

Observe que quando x = xi, i = 0, 1, . . . , n, o erro cometido e nulo,

como era de se esperar.

Limitante superior para o erro

A existencia do ponto ξ que comparece em (7.2) e garantida pelo Teoremade Rolle do Calculo∗, no entanto nao existe uma regra para encontrarmoseste ponto o que tem como consequencia a impossibilidade de calcularmoso erro cometido, no entanto podemos determinar uma estimativa superior,como segue: “modulando” a equacao (7.2), temos

|E(x)|=∣∣∣

n∏

i=0

(x− xi)

(n+1)!f(n+1)(ξ)

∣∣∣=

∣∣∣

n∏

i=0

(x− xi)∣∣∣

(n+1)! |f(n+1)(ξ)|≤

∣∣∣

n∏

i=0

(x− xi)∣∣∣

(n+1)!M

0nde estamos convencionando que M = max{ ∣∣f (n+1)(x)

∣∣ : x ∈ [x0 , xn ]

}.

∗Se a funcao f e contınua no intervalo [ a, b ] e diferenciavel no intervalo ] a, b [ ef(a) = f(b), entao existe um ξ ∈ ] a, b [ tal que f ′(ξ) = 0.

219

Page 222: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

A existencia do maximo e assegurada pelo Teorema de Weierstrass∗ dadoa seguir:

Teorema 10 (Weierstrass). Toda funcao contınua f : [ a, b ] −→ R e limi-tada e assume valores maximo e mınimo.

Sabemos do Calculo que diferenciabilidade implica em continuidade, daıa exigencia no enunciado do teorema 9 de que f seja (n + 1) vezes dife-renciavel.

Lembramos que a HP 50g calcula derivadas de qualquer ordem − o quepode facilitar no calculo de M , como estaremos mostrando oportunamente.

Ademais, observe que somente podemos calcular uma estimativa parao erro quando dispomos da expressao analıtica da funcao f ; nos casos emque temos apenas a funcao tabelada em um numero finito de pontos naopodemos estimar o erro.

A prova do teorema 8 (p. 217) e construtiva no sentido de que nos mostracomo obter o polinomio interpolatorio, no entanto existem outras tecnicas− computacionalmente mais eficientes − para o calculo do polinomio.

Observe que qualquer que seja a tecnica escolhida obteremos sempre omesmo polinomio interpolador uma vez que o ja citado teorema nos garanteum unico polinomio.

Na sequencia estudaremos tres das mencionadas tecnicas: Lagrange,Newton e Gregory-Newton.

7.1.1 Interpolacao de Lagrange

Seja f(x) definida em x0 , x1 , . . . , xn , (n + 1) pontos distintos de umintervalo [ a, b ] e y

i= f(x

i), i = 0, 1, . . . , n; a formula de Lagrange para

o polinomio interpolador de grau menor ou igual a n e dada assim:

Pn(x) =n∑

i=0

yi·

n∏

j =0j 6= i

(x− xj)

(xi− x

j)

(7.3)

Para demonstracao desta formula, veja, por exemplo, [8].

Vamos abrir esta formula tomando n = 3, por exemplo. Entao, parai = 0, 1, 2, 3; expandindo apenas o somatorio,temos

∗Karl Weierstrass (1815−1897) foi durante muitos anos professor em Berlim, e exerceuprofunda influencia no desenvolvimento da Analise. Sempre insistindo em demonstracoesrigorosas, elaborou, mas nao publicou, uma introducao ao sistema de numeros reais. Deutambem importantes contribuicoes a Analise Real e Complexa, as equacoes diferenciais eao calculo das variacoes.

220

Page 223: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

P3(x) = y0 ·3∏

j=0j 6=0

(x− xj)

(x0 − xj)+ y1 ·

3∏

j=0j 6=1

(x− xj)

(x1 − xj)+ y2 ·

3∏

j=0j 6=2

(x− xj)

(x2 − xj)+

+ y3 ·3∏

j=0j 6=3

(x− xj)

(x3 − xj)

Agora, expandindo todos os produtorios, temos

P3(x) = y0 ·(x− x1)(x− x2)(x− x3)

(x0 − x1)(x0 − x2)(x0 − x3)+

+ y1 ·(x− x0)(x− x2)(x− x3)

(x1 − x0)(x1 − x2)(x1 − x3)+

+ y2 ·(x− x0)(x− x1)(x− x3)

(x2 − x0)(x2 − x1)(x2 − x3)+

+ y3 ·(x− x0)(x− x1)(x− x2)

(x3 − x0)(x3 − x1)(x3 − x2)

∗ ∗ ∗

(John Wheeler)

De acordo com Wheeler, a licao a ser aprendida dessa evolucao da

fısica e que a “lei nao pode ficar gravada em uma placa ou rocha por toda

a eternidade. . . Tudo e mutavel”. O fısico Paul C.W. Davies comenta:

“A esse respeito, Wheeler estava quebrando uma tradicao cientıfica de

quatrocentos anos de considerar a natureza sujeita a leis eternas. Se-

gundo, a propria aparencia real de comportamento semelhante a lei na

natureza pode estar ligada de alguma forma a nossas observacoes da

natureza − sujeito e objeto, observador e observado, entrelacados. Essas eram de fato ideias radi-

cais.” (B. Alan Wallace)

A proposito, Allan Kardec − influenciado pela ciencia de seu tempo −acreditava que as leis de Deus sao perfeitas e imutaveis. Penso que ja passada hora de seus seguidores atualizarem suas bıblias (“codificacao”) postoque o Espiritismo, segundo eles, caminha de “maos dadas” com a ciencia.

221

Page 224: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Implementacao do polinomio interpolador de Lagrange

O programa seguinte recebe como dados de entrada dois vetores, um con-tendo os x

i(i = 0, 1, . . . n) e o outro contendo os y

i(i = 0, 1, . . . n), e sai

com o polinomio de Lagrange dado pela formula (7.3):

≪ → x y

≪ −2 CF − 3 CF − 105 SF

x SIZE OBJ→ DROP pN p STO 0 pS p STO

0 N 1 − FOR I py(I + 1) p EVAL pP p STO

0 N 1 − FOR J

IF pJ 6= I p

THEN pX p px(J + 1) p EVAL −px(I + 1)− x(J + 1) p EVAL

/ P * pP p STO

END

NEXT S P + pS p STO

NEXT S pX p PURGE

EXPAND SIMPLIFY DUP pS p STO

≫≫

Antes de executar o programa anterior, vejamos alguns comentarios:

A segunda linha do programa desativa os sinalizadores 02 e 03 e ativao sinalizador 105.

O sinalizador 03, que deve estar assim:

03 Function→ symb

Isto para que o programa interprete o X apos o THEN, isto e

THEN pX p px(J + 1) p EVAL −

como um sımbolo; caso contrario, isto e, se o sinalizador estiver ativado,

X 03 Function→ num

a variavel X sera substituıda por um numero − que eventualmente estejaarmazenado nela.

Tambem desativamos o sinalizador 02 para nao haver problema quandoo polinomio S for expandido na ultima linha. Observe, ademais, que napenultima linha apagamos (PURGE) a variavel X, isto porque se existe al-gum valor armazenado nela teremos problemas na expansao de S.

222

Page 225: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Importante: O sinalizador 105 deve estar ativo para evitar problemasquando da expansao do polinomio − na ultima linha do programa. (p. 86)

− A primeira linha do programa guarda os vetores de entrada nas variaveisx e y, respectivamente, assim:

[x0 x1 x2 . . . xn ] → x e [ y0 y1 y2 . . . yn ] → y

Nota: Para evitar problemas digite x e y como minusculas.

− Na terceira linha obtemos o numero de elementos no vetor x (numerode pontos) e guardamos esta informacao na variavel N . E iniciamos umsomatorio (S) com zero.

− Na quarta linha fazemos I variar de 0 a N − 1; isto porque na HP a con-tagem dos ındices nos vetores inicia em 0; entao, observe a correspondencia:

I : 0, 1, 2, . . . , N − 1

↓ ↓ ↓ · · · ↓y(I + 1): [ y(1) y(2) y(3) . . . y(N) ] → y

A variavel P em cada ciclo acumula os produtos e a variavel S acumulatoda a soma − ao final o polinomio encontra-se na variavel S.

Observe isto em um caso particular:

P3(x) =y0 ·(x− x1)(x− x2)(x− x3)

(x0 − x1)(x0 − x2)(x0 − x3)︸ ︷︷ ︸

P

+ y1 ·(x− x0)(x− x2)(x− x3)

(x1 − x0)(x1 − x2)(x1 − x3)︸ ︷︷ ︸

P

+ ···

e

P3(x) =y0 ·(x− x1)(x− x2)(x− x3)

(x0 − x1)(x0 − x2)(x0 − x3)+ y1 ·

(x− x0)(x− x2)(x− x3)

(x1 − x0)(x1 − x2)(x1 − x3)︸ ︷︷ ︸

S

+ ···

Vamos fazer um teste com tres exemplos.

1o ) Encontre uma lei algebrica para a tabela abaixo

i xi

yi

0 0, 0 −0, 5

1 0, 1 0, 0

2 0, 3 0, 2

3 0, 5 1, 0

Neste caso entramos com os vetores: [ 0 0.1 0.3 0.5 ] e [−0.5 0 0.2 1 ],para obter o seguinte polinomio: 125

3 ·X3 − 30 ·X2 + 9112 ·X − 1

2 .

223

Page 226: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

2o ) Encontre o polinomio de Lagrange para a tabela abaixo

i xi

yi

0 0, 0 0, 000

1 0, 2 2, 008

2 0, 4 4, 064

3 0, 5 5, 125

Neste caso entramos com os vetores:

[ 0 0.2 0.4 0.5 ] e [ 0 2.008 4.064 5.125 ]

para obter o seguinte polinomio: 1 ·X3 + 1500000000000 ·X2 + 10 ·X.

O coeficiente de X2 neste polinomio pode ser considerado 0, o que nosda X3 + 10X.

Nota: A calculadora nos fornece a opcao para que polinomios sejam listadoscom as potencias, na variavel independente, aumentando ou diminuindo −para isto, veja p. 342 e p. 347.

A funcao EPSX0 e EPS

A variavel ε (epsilon) e tipicamente usado nos livros de matermatica pararepresentar um numero real positivo arbitrariamente fixado que, em particu-lar, pode ser feito arbitrariamente pequeno. O CAS da calculadora cria umavariavel EPS, com o valor padrao 0.0000000001 = 10−10, quando voce usaa funcao EPSX0. Voce pode alterar este valor, quando criado, se preferirum valor diferente para EPS. A funcao EPSX0, quando aplicada em umpolinomio, substituira todos os coeficientes cujo valor absoluto for menordo que EPS com um zero. A funcao EPSX0 deve ser acessada atraves docatalogo de funcoes ( SYMB P ), ou digitada diretamente.

Exemplo:

Entre na pilha com o polinomio: pX∧3 +1.2E−12∗X+1 p, va no catalogode funcoes (ou digite) selecione EPSX0 e pressione OK , teremos na pilhaX3 + 0 ·X + 1, em seguida pressione EVAL N para obter X3 + 1.

A ultima linha do programa (p. 222): EXPAND →Q DUP pS p STO ,pode ser alterada para: EXPAND DUP pS p STO EPSX0 →Q EVAL.

Fazendo esta alteracao e rodando novamente o programa com os dadosdo exemplo 2o ), teremos na pilha o polinomio: X3 + 10X.

3o ) Com este exemplo vejamos como a HP pode nos auxiliar no calculo da

estimativa do erro. Considere a funcao f dada por f(x) =x+ 3

x+ 1, amostrada

nos pontos da tabela abaixo:

xi 0, 1 0, 2 0, 4

f(xi) 2, 82 2, 67 2, 43

224

Page 227: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Determine o polinomio interpolador de Lagrange, avalie f(0, 25) e umlimitante superior para o erro.Solucao: Entrando com os dados da tabela, o programa devolve o seguintepolinomio: X2 − 1.8 ·X + 3. Entao:

f(0, 25) ∼= P (0, 25) = 0, 252 − 1.8 · 0, 25 + 3 = 2, 6125

Por outro lado temos que (p. 219)

|E(x)| ≤

∣∣∣

n∏

i=0

(x− xi)∣∣∣

(n+ 1)!M

Onde: M = max{ ∣∣f (n+1)(x)

∣∣ : x ∈ [ a, b ]

}.

Adaptando ao nosso problema em particular (n = 2), temos

|E(x)| ≤

∣∣∣

2∏

i=0

(x− xi)∣∣∣

(2 + 1)!M

Onde: M = max{ ∣∣f (3)(x)

∣∣ : x ∈ [ a, b ]

}.

Isto e,

|E(x)| ≤ |(x− x0)(x− x1)(x− x2)|3!

M

Substituindo todos os pontos, temos

|E(0, 25)| ≤ |(0, 25 − 0, 1)(0, 25− 0, 2)(0, 25− 0, 4)|6

M

Ainda,

|E(0, 25)| ≤ 3

16000M (7.4)

Na sequencia vamos necessitar da terceira derivada da funcao f . Digite:

p(X + 3)/(X + 1) p ENTER

CALC

4 DERVX DERVX DERVX

obtemos: −3·22(x+1)4

, ou seja, f (3)(x) = −12(x+1)4

. (sinalizadores 03 e 105 desativados)

A funcao que nos interessa e: |f (3)(x)| = 12(x+1)4

. Vamos obter a tabela

de variacao (TABVAR, p. 337) para esta funcao, para isto entre com∗:

p12 ∗X/(X + 1)∧4 p ENTER

CALC

4 GRAPH NXTL

TABVA

∗Antes certifique-se de que na sua calculadora os sinalizadores 03 e 105 estejam desati-vados.

225

Page 228: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Nota: No menu ira constar dois TABVA , pressione o da direita.

Com o botao

(“para baixo”) desloque-se ate a parte inferior do visor,na qual constara a seguinte tabela:

Variation table:[−∞ + −1 − +∞ X

0 ↑ ∞ ↓ 0 F

]

Esta tabela nos mostra como a funcao (modulo da terceira derivada)varia (crescimento e decrescimento) em funcao da variavel independente X,assim: a funcao e crescente desde −∞ (onde vale 0) ate X = −1, ondevale ∞, apos o que comeca a decrescer ate X = +∞ (onde vale 0). A rigor,diriamos: lim

X→±∞F (X) = 0. Descontando a limitacao tecnica dos tracadores

de graficos, temos:

0x

|f(3)(x)|

p p p p1 2−1−2

1

2

3

pp

p

Na figura da direita plotamos o mesmo grafico, sem os eixos coordenados.Todavia, o intervalo de analise que nos interessa e [ 0, 1; 0, 4 ] (tab. p. 224),

sendo a funcao decrescente neste intervalo o maximo que a funcao assumeocorre no extremo esquerdo, isto e:

M = max{ ∣∣∣f (3)(x)

∣∣∣ : x ∈ [ 0, 1; 0, 4 ]

}

=12

(0, 1 + 1)4= 8, 1962

Substituindo este valor na desigualdade (7.4) (p. 225), temos:

|E(0, 25)| ≤ 3

16000· 8, 1962 = 0, 0015

226

Page 229: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

7.1.2 Interpolacao de Newton

Conceito de Diferenca Dividida

Nesta secao estudaremos uma formula, alternativa a de Lagrange, para aconstrucao do polinomio interpolatorio − a formula de Newton − que farauso das diferencas divididas.

Seja f(x) uma funcao contınua, (n+ 1) vezes diferenciavel e definida emx0 , x1 , . . . , xn , (n+ 1) pontos distintos do intervalo [ a, b ].

Definicao 11 (Diferenca dividida de ordem zero). Definimos diferencadividida de ordem zero de uma funcao f(x) definida nos pontos x

i, i =

0, 1, . . . , n por:

∆0 f(xi) = f(x

i) = y

ii = 0, 1, . . . , n.

A diferenca dividida de primeira ordem e definida em funcao da diferencadividida de ordem zero, assim:

∆yi= f [x

i, x

i+1 ] =∆0 y

i+1 −∆0 yi

xi+1 − x

i

Nota: f [ · ] e uma outra notacao para diferenca dividida.

As diferencas divididas de ordens superiores sao definidas recursivamente,como segue:

Definicao 12 (Diferenca dividida de ordem n). Definimos diferenca divi-dida de ordem n de uma funcao f(x) definida nos pontos x

i, i = 0, 1, . . . , n

por:

∆n yi= f [x

i, x

i+1 , . . . , xi+n]

=f [x

i+1 , xi+2 , . . . , xi+n] − f [x

i, x

i+1 , . . . , xi+n−1 ]

xi+n− x

i

=∆n−1 y

i+1 −∆n−1 yi

xi+n− x

i

Podemos dispor as diferencas divididas em uma tabela, observando queas diferencas de ordem 1 sao calculadas a partir das diferencas de ordemzero, as diferencas de ordem 2, a partir das diferencas de ordem 1 e, assimsucessivamente, veja:

227

Page 230: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

i

0

1

2

3

xi

x0

x1

x2

x3

Ordem 0

f [x0 ]

f [x1 ]

f [x2 ]

f [x3 ]

Ordem 1

f [x0 , x1 ]

f [x1 , x2 ]

f [x2 , x3 ]

Ordem 2

f [x0 , x1 , x2 ]

f [x1 , x2 , x3 ]

Ordem 3

f [x0 , x1 , x2 , x3 ]

As diferencas sendo calculadas assim:

f [x0 , x1 ] =f [x1 ]− f [x0 ]

x1 − x0

, f [x1 , x2 ] =f [x2 ]− f [x1 ]

x2 − x1

, f [x2 , x3 ] =f [x3 ]− f [x2 ]

x3 − x2

e,

f [x0 , x1 , x2 ] =f [x1 , x2 ]− f [x0 , x1 ]

x2 − x0

, f [x1 , x2 , x3 ] =f [x2 , x3 ]− f [x1 , x2 ]

x3 − x1

ainda,

f [x0 , x1 , x2 , x3 ] =f [x1 , x2 , x3 ]− f [x0 , x1 , x2 ]

x3 − x0

Veja se a figura seguinte ajuda a divisar um padrao no calculo dasdiferencas acima:

i

0

1

2

3

xi

x0

x1

x2

x3

Ordem 0

f [x0 ]

f [x1 ]

f [x2 ]

f [x3 ]

Ordem 1

f [x0 , x1 ]

f [x1 , x2 ]

f [x2 , x3 ]

Ordem 2

f [x0 , x1 , x2 ]

f [x1 , x2 , x3 ]

Ordem 3

f [x0 , x1 , x2 , x3 ]

Exemplo: Construir a tabela de diferencas divididas da funcao f dadapor f(x) = 1/x para os pontos x0 = 1, x1 = 2, x2 = 4 e x3 = 5.

Solucao: Diferencas divididas de ordem zero:

f [x0 ] = f(x0) = f(1) = 1

f [x1 ] = f(x1) = f(2) = 1/2

f [x2 ] = f(x0) = f(4) = 1/4

f [x3 ] = f(x1) = f(5) = 1/5

228

Page 231: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Isto e suficiente para construirmos a tabela − conforme algoritmo dadoanteriormente:

i

0

1

2

3

xi

1

2

4

5

Ordem 0

1

12

14

15

Ordem 1

12−1

2−1 = −12

14− 1

24−2 = −1

8

15− 1

45−4 = − 1

20

Ordem 2

− 18−(− 1

2)

4−1 = 18

− 120

−(− 18)

5−2 = 140

Ordem 3

140

− 18

5−1 = − 140

Teorema 11. Seja f(x) uma funcao contınua, (n + 1) vezes diferenciavelno intervalo [ a, b ]. Sejam x0 , x1 , . . . , xn , (n+1) pontos distintos de [ a, b ].Nestas condicoes temos:

∆n y0 = f [x0 , x1 , . . . , xn ] =

n∑

j=0

f(xj)

n∏

k=0k 6=j

(xj− x

k)

(7.5)

Prova: Veja [10]. �

A tıtulo de ilustracao, vamos abrir esta formula para n = 3, por exemplo:

∆3 y0 = f [x0 , x1 , x3 ] =

3∑

j=0

f(xj)

3∏

k=0k 6=j

(xj− x

k)

Entao,

∆3 y0 =f(x0)

3∏

k=0k 6=0

(x0 − xk)

+f(x1)

3∏

k=0k 6=1

(x1 − xk)

+f(x2)

3∏

k=0k 6=2

(x2 − xk)

+f(x3)

3∏

k=0k 6=3

(x3 − xk)

Ou ainda,

∆3 y0 =y0

(x0 − x1)(x0 − x2)(x0 − x3)+

y1

(x1 − x0)(x1 − x2)(x1 − x3)+

+y2

(x2 − x0)(x2 − x1)(x2 − x3)+

y3

(x3 − x0)(x3 − x1)(x3 − x2)

229

Page 232: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O programa a seguir implementa a formula (7.5).

≪ → x y

≪ x SIZE OBJ→ − pn p STO 0 pS p STO

0 n FOR j 1 pP p STO

0 n FOR k

IF pk 6= jp

THEN px(j + 1)− x(k + 1) p EVAL

P * pP p STO

END

NEXT S py(j + 1) p EVAL

P / + pS p STO

NEXT S 3 RND

≫≫

Armazene o programa acima na variavel DDYO, pois sera utilizado sub-sequentemente como subrotina de um outro programa. Na ultima linhaarredondamos o resultado para tres casas decimais − a criterio. (p. 13)

Para implementar a formula de Newton posteriormente, iremos necessitardas seguintes diferencas:

∆1 y0 , ∆2 y0 , ∆

3 y0 , . . . , ∆n y0 (7.6)

Para encontrar cada uma destas diferencas iremos necessitar dos seguintesvetores de pontos:

[x0 , x1 ] ⇒ ∆1 y0

[x0 , x1 , x2 ] ⇒ ∆2 y0

[x0 , x1 , x2 , x3 ] ⇒ ∆3 y0

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Alem do vetor correspondente [ yi], claro.

O programa seguinte recebe os vetores [xi] e [ y

i] e sai com um vetor

contendo todas as diferencas divididas em (7.6).

230

Page 233: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

≪ → x y

≪ x SIZE OBJ→ − pn p STO

1 n FOR m

0 m FOR k px(k + 1) p EVAL

NEXT m 1 + ROW→0 m FOR k py(k + 1) p EVAL

NEXT m 1 + ROW→DDYO

NEXT n ROW→≫

≫Armazene o programa acima na variavel DDTO − sera uma subrotina.Por exemplo, para a tabela a seguir:

i xi

yi

∆yi

∆2 yi

∆3 yi

∆4 yi

0 0, 00 1, 000 10, 010 1, 300 10, 000 10, 000

10, 400 7, 300 20, 000 −−14, 050 25, 300 −− −−31, 760 −− −− −−−− −− −− −−

1 0, 10 2, 001

2 0, 30 4, 081

3 0, 60 8, 296

4 1, 00 21, 000

Entrando com os vetores:

[ 0. 00 0. 10 0. 30 0. 60 1. 00 ] → x

[ 1. 000 2. 001 4. 081 8. 296 21. 000 ] → y

Recebemos de volta o vetor: [ 10. 01 1. 3 10. 10. ].

Formula de Newton

A formula de Newton para o polinomio interpolador e dada assim:

Pn(x) = y0 +n∑

i=1

∆i y0

i−1∏

j=0

(x− xj) (7.7)

Para demonstracao desta formula, veja, por exemplo, [8].

Vamos abrir esta formula tomando n = 3, por exemplo.

P3(x) = y0 +3∑

i=1

∆i y0

i−1∏

j=0

(x− xj)

231

Page 234: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Ou ainda,

P3(x) = y0 + ∆1 y0

1−1∏

j=0

(x− xj) + ∆2 y0

2−1∏

j=0

(x− xj) + ∆3 y0

3−1∏

j=0

(x− xj)

Entao,

P3(x) = y0 +∆y0 (x−x0)+∆2 y0 (x−x0)(x−x1)+∆3 y0 (x−x0)(x−x1)(x−x2)

O programa seguinte implementa a formula de Newton; recebe os vetores[x

i] e [ y

i] e sai com o polinomio dado por (7.7).

≪ → x y

≪ −2 CF − 3 CF − 103 SF − 105 SF

x SIZE OBJ→ − pn p STO

x y DDTO p∆ p STOpy(1) p EVAL pS p STO 1 pP p STO

1 n FOR i

0 i 1 − FOR jpX p px(j + 1) p EVAL −P * pP p STO

NEXT p∆(i) p EVAL P *

S + pS p STO 1 pP p STO

NEXT S EXPAND EPSX0 EVAL

≫≫

A seguir apresentamos o fluxograma da implementacao do “metodo deNewton” :

NewtonEquacao (7.7)

(p. 231)

[xi], [ y

i] Pn(x)

x, y [∆1 y0 , . . . ,∆n y0 ]

Subrotina

DDTO

[xk], [ y

k]

∆k y0

Subrotina

DDYOEquacao (7.5), p. 229

232

Page 235: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Exemplo: Para a tabela a seguir:

x 3 −2 0 9 4

y 15 5 3 687 47

O programa devolve o seguinte polinomio: X3 − 5 ·X + 3.

Ja para esta outra tabela:

x −2 1 2 4 5

y 16 −2 −4 −2 2

O programa devolve o seguinte polinomio: X2 − 5 ·X + 2.

7.1.3 Interpolacao de Gregory-Newton

Conceito de Diferenca Finita

I) de ordem zero: ∆0 yi= y

i

II) de primeira ordem: ∆ yi= y

i+1 − yi

III) de segunda ordem: ∆2 yi= ∆ y

i+1 − ∆ yi

IV) de ordem n: ∆n yi= ∆n−1 y

i+1 − ∆n−1 yi

Em nosso livro ([4]) (p. 69) demonstramos a formula a seguir para o calculodireto da n-esima diferenca finita − i.e., sem passar pela recursividade.

∆n f(i) =

n∑

k=0

(−1)k(n

k

)

f(i− k + n) (7.8)

Esta formula sera util para efeitos de programacao. Por exemplo, asegunda diferenca fica assim:

∆2 yi=

2∑

k=0

(−1)k(2

k

)

yi−k+2

= (−1)0(2

0

)

yi−0+2 + (−1)1

(2

1

)

yi−1+2 + (−1)2

(2

2

)

yi−2+2

= yi+2 − 2 y

i+1 + yi

Como exemplo, vamos obter as diferencas finitas para a seguinte tabela:

233

Page 236: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

i xi

yi

0 3, 5 9, 82

1 4, 0 10, 91

2 4, 5 12, 05

3 5, 0 13, 14

4 5, 5 16, 19

Vejamos um algoritmo para encontrarmos todas as diferencas finitas:iniciamos com os dados y

ina horizontal, assim:

9, 82 10, 91 12, 05 13, 14 16, 19

Em seguida vamos fazendo diferencas sucessivas entre termos consecutivos,ate obtermos um unico numero, veja:

9, 82 10, 91 12, 05 13, 14 16, 19 : ∆0 yi

1, 09 1, 14 1, 09 3, 05 : ∆1 yi

0, 05 − 0, 05 1, 96 : ∆2 yi

−0, 10 2, 01 : ∆3 yi

2, 11 : ∆4 yi

− − − −

− − −

− −

Estas diferencas podem ser alocadas em uma tabela assim:

i xi

yi

∆ yi

∆2 yi

∆3 yi

∆4 yi

0 3, 5 9, 82 1, 09 0, 05 −0, 10 2, 11

1, 14 −0, 05 2, 01 −−1, 09 1, 96 −− −−3, 05 −− −− −−−− −− −− −−

1 4, 0 10, 91

2 4, 5 12, 05

3 5, 0 13, 14

4 5, 5 16, 19

O nosso objetivo agora sera “automatizar” o calculo destas diferencasfinitas − as quais serao utilizadas oportunamente na obtencao do polinomiointerpolante de Gregory-Newton.

Para uma melhor compreensao dos programas vamos passo-a-passo. Oprograma a seguir recebe o vetor [ y

i] e sai com um vetor contendo a primeira

diferenca, segundo a formula dada em (7.8) − a qual repetimos aqui para o

234

Page 237: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

caso n = 1:

∆1 y(i) =1∑

k=0

(−1)k(1

k

)

y(i− k + 1)

≪ → y

≪ y SIZE OBJ→ SWAP 1 −FOR i

p∑

(k = 0, 1, (−1)∧ k ∗COMB(1, k) ∗ y(i− k + 1) ) p EVAL

NEXT DEPTH ROW→≫

Se necessario, execute-o no DBUG. Para o caso da tabela anterior, en-trando com o vetor: [ 9. 82 10. 91 12. 05 13. 14 16. 19 ];

recebemos de volta o vetor: [ 1. 09 1. 14 1. 09 3. 05 ], veja:

i xi

yi

∆ yi

∆2 yi

∆3 yi

∆4 yi

0 3, 5 9, 82 1, 09 0, 05 −0, 10 2, 11

1, 14 −0, 05 2, 01 −−1, 09 1, 96 −− −−3, 05 −− −− −−−− −− −− −−

1 4, 0 10, 91

2 4, 5 12, 05

3 5, 0 13, 14

4 5, 5 16, 19

Observe que a formula (7.8) (p. 233) pode ser vista como uma “matriz”que calcula todas as diferencas finitas; como, por exemplo, a “matriz” vistaa seguir: (p. 234)

9, 82 10, 91 12, 05 13, 14 16, 19 : ∆0 yi

1, 09 1, 14 1, 09 3, 05 : ∆1 yi

0, 05 − 0, 05 1, 96 : ∆2 yi

−0, 10 2, 01 : ∆3 yi

2, 11 : ∆4 yi

Naquela formula temos a seguinte variacao para os ındices: n = 0, 1, 2, 3, . . .e i = 1, 2, 3, . . ., (n linha, i coluna), veja:

235

Page 238: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

(0, 1) (0, 2) (0, 3) (0, 4) · · · ∆0 yi

(1, 1) (1, 2) (1, 3) (1, 4) · · · ∆1 yi

(2, 1) (2, 2) (2, 3) (2, 4) · · · ∆2 yi

(3, 1) (3, 2) (3, 3) (3, 4) · · · ∆3 yi

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

i

n

(n, i)

Nos valendo desta observacao, construimos o programa a seguir que re-cebe o vetor [ y

i] e sai com uma lista cujos elementos sao vetores contendo

todas as diferencas finitas.

≪ → y

≪ −103 SF − 105 SF { } pLDF p STO

y SIZE OBJ→ DROP pN p STO

1 N 1 − FOR n

1 N n − FOR ip∑

(k = 0, n, (−1)∧ k ∗ COMB(n, k) ∗ y(i− k + n) ) p EVAL

NEXT DEPTH ROW→LDF + pLDF p STO

NEXT LDF REVLIST

≫≫

Observe que N e o numero de pontos no vetor [ yi]. O primeiro laco

1 N 1 − FOR n

NEXT

Calcula as diferencas ∆1, ∆2, . . . , ∆N−1. O segundo laco

1 N n − FOR i

NEXT

calcula, em cada diferenca, todos os termos. Se necessario, execute-o noDBUG.

236

Page 239: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Para o caso da tabela anterior, entrando com o vetor

[ 9. 82 10. 91 12. 05 13. 14 16. 19 ]

recebemos de volta a lista:

{ [ 1. 09 1. 14 1. 09 3. 05 ] [ 0. 05 − 0. 05 1. 96 ] [−0. 01 2. 01 ] [ 2. 11 ] }Na qual temos:

{ [ 1. 09 1. 14 1. 09 3. 05 ]︸ ︷︷ ︸

∆ yi

[ 0. 05 − 0. 05 1. 96 ]︸ ︷︷ ︸

∆2 yi

[−0. 01 2. 01 ]︸ ︷︷ ︸

∆3 yi

[ 2. 11 ]︸ ︷︷ ︸

∆4 yi

}

Formula de Gregory-Newton

No caso em que os nos da interpolacao x0 , x1 , . . . , xn sao igualmenteespacados∗ inicialmente procedemos a uma mudanca de variavel, assim:

z =x− x0

h, ou ainda x = x0 + zh

Observe a correspondencia entre os ındices nas duas variaveis:

xp p p p

x0 x1 x2 xn−1 xn

· · · h h h

zp p p p

0 1 2 n−1 n· · ·

h = 1

Os pontos x0 , x1 , . . . , xn , com espacamento h, possuem uma corres-pondencia unica (bijecao) com os pontos 0, 1, . . . , n, com espacamento h =1, o que acarreta simplicidade nos calculos − e na programacao.

Com esta mudanca de variavel o polinomio de Newton (eq. (7.7), p. 231)

toma a seguinte forma:

Pn(x) = y0 + z · ∆ y01! + z(z−1) · ∆

2 y02! + · · · + z(z−1) . . . (z−(n−1)) · ∆

n y0n!

Para a deducao desta formula, veja, por exemplo, [8].

A formula anterior pode ser reescrita de forma compacta, assim:

Pn(x) = y0 +n∑

i=1

i−1∏

j=0

(z − j) · ∆i y0

i!(7.9)

Observe que vamos necessitar apenas do primeiro termo de todas asdiferencas finitas; por exemplo, veja isto no caso da tabela da p. 234, →

∗Isto e, xi+1 − x

i= h, para i = 0, 1, 2, . . . , n, sendo h uma constante.

237

Page 240: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

i xi

yi

∆ yi

∆2 yi

∆3 yi

∆4 yi

0 3, 5 9, 82 1, 09 0, 05 −0, 10 2, 11

1, 14 −0, 05 2, 01 −−1, 09 1, 96 −− −−3, 05 −− −− −−−− −− −− −−

1 4, 0 10, 91

2 4, 5 12, 05

3 5, 0 13, 14

4 5, 5 16, 19

Isto significa que podemos fixar i = 1 (primeira coluna na matriz da p. 235) naequacao (7.8) (p. 233) que, para os nossos propositos, toma a forma

∆n y1 =

n∑

k=0

(−1)k(n

k

)

y1−k+n

(7.10)

Nota: O ındice i na formula (7.8) e contado a partir de 1 (i = 1, 2, 3, . . .),enquanto nas tabelas do Calculo Numerico (como a tabela anterior) e con-tado a partir de 0 (i = 0, 1, 2, . . .).

O programa a seguir recebe o vetor [ yi] e sai com um vetor contendo o

primeiro termo de todas as diferencas, segundo a formula anterior,

≪ → y

≪ y SIZE OBJ→ SWAP 1 −FOR n

p∑

(k = 0, n, (−1)∧ k ∗ COMB(n, k) ∗ y(1− k + n) ) p EVAL

NEXT DEPTH ROW→≫

≫Nota: Armazene este programa com o nome de PTDF (subrotina).

Para o calculo do polinomio de Gregory-Newton, os livros de CalculoNumerico, calculam todas as diferencas finitas (como na tabela da p. 234);ora, mas isto nao e necessario uma vez que so utilizamos o primeiro termode todas as diferencas e, estes, podem ser calculados pela formula (7.10).Isto significa, no caso a seguir, (p. 234)

9, 82 10, 91 12, 05 13, 14 16, 19 : ∆0 yi

1, 09 1, 14 1, 09 3, 05 : ∆1 yi

0, 05 − 0, 05 1, 96 : ∆2 yi

−0, 10 2, 01 : ∆3 yi

2, 11 : ∆4 yi

238

Page 241: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

que para encontrarmos os termos em destaque na vertical, so necessitamosdo termos y

i− em destaque na horizontal.

O programa a seguir recebe o vetor [ yi], o primeiro termo x

i, isto e, x0 ,

e o passo h; e sai com o polinomio de Gregory-Newton,

≪ → y x0 h

≪ −103 SF − 105 SF y PTDF DUP pD p STO

SIZE OBJ→ DROP pN p STOpy(1) p EVAL pS p STO 1 pPp STO

1 N FOR IpD(I) p EVAL I ! / P * pP p STO

0 I 1 − FOR JpZ p J − P * pP p STO

NEXT S P + pS p STO 1 pP p STO

NEXT S SIMPLIFYpZ = (X − x0)/h p SUBST SIMPLIFY →Q

≫≫Alguns comentarios:

− PTDF (segunda linha) e o programa anterior que aqui funciona comosubrotina;

− Observe que N e o comprimento do vetor dos primeiros termos dasdiferencas, que e igual ao numero de pontos menos um − que e igual aograu do polinomio;

− Nao necessitamos entrar com todo o vetor [xi], e suficiente o primeiro

termo x0 (x0, com x minusculo, observamos) e o passo h;

− No final o programa devolve o polinomio na variavel X; caso se desejeavalia-lo, para um dado valor de X, basta (com o polinomio no nıvel 1 dapilha) colocar na pilha pX = 0. 25 p (estamos supondo, a tıtulo de exemplo,que este seja o valor) e, em seguida, pressionar

4 NXTL

SUBST

Vejamos alguns exemplos:

a ) Para a tabela do exemplo da p. 233 entramos com

[ 9. 82 10. 91 12. 05 13. 14 16. 19 ] 3. 5 0. 5

O programa nos devolve o polinomio:

211

150· x4 +

−3607150

· x3 +91961

600· x2 +

−257639600

· x +45509

100

239

Page 242: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

b ) Para a tabela a seguir

i xi

yi

0 0 1, 00

1 1 1, 50

2 2 2, 20

3 3 3, 10

4 4 4, 60

Entramos com os dados

[ 1. 00 1. 50 2. 20 3. 10 4. 60 ] 0 1

O programa nos devolve o polinomio:

1

60· x4 +

−110· x3 +

17

60· x2 +

18

60· x + 1

c ) Para a tabela a seguir

i xi

yi

0 1 5

1 4 9

2 7 18

3 10 32

Entramos com os dados

[ 5 9 18 32 ] 1 3

O programa nos devolve o polinomio:

5

18· x2 +

−118· x +

43

9

Limitante superior para o erro para pontos equidistantes

Nas mesmas condicoes (hipoteses) do teorema 9 (p. 219) temos o seguinteatalho para o calculo de um limitante superior para o erro, para pontosequidistantes: ([10], p. 137)

|E(x)| ≤ hn+1

4(n+ 1)M

onde,

M = max{ ∣∣∣f (n+1)(x)

∣∣∣ : x ∈ [x0 , xn ]

}

Compare este resultado com o dado na p. 219.

240

Page 243: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

7.2 Integracao

Introducao: Nesta secao implementaremos as principais regras de inte-gracao numerica − as quais constam nos livros de Calculo Numerico. Paraa deducao das formulas consulte um dos livros de nossas referencias.

No calculo numerico de integrais,

I =

∫ b

af(x) dx

efetuamos uma particao do intervalo [ a, b ] em n subintervalos e “amostramos”a funcao f no pontos desta particao, assim:

p p p p p px0 = a x1 x2 x3 x4

· · · xn−2 x

n−1 xn = b

y0

y1

y2

y3

y4

yn−2

yn−1

yn

Onde:

y0 = f(x0), y1 = f(x1), y2 = f(x2), . . . , yn−1 = f(xn−1), yn = f(xn)

a= x0 xn = bx1 x2 xn−1

0x

f(x)

h h h. . .

7.2.1 Regra dos trapezios

A formula para a regra dos trapezios generalizada e como a seguir:∫ xn

x0

f(x) dx ∼= h

2[ f(x0) + 2f(x1) + 2f(x2) + · · · + 2f(x

n−1) + f(xn) ]

Erro:

Et = −h2

12(xn − x0) f

(2)(ξ) , ξ ∈ [x0 , xn ]

241

Page 244: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Limitante superior para o erro:

O ponto ξ no intervalo [ a, b ] nao tem como ser determinado, razao porqueo erro nao pode ser calculado com precisao, no entanto, podemos calcularum limitante superior para o erro:

|Et | ≤h2

12(xn − x0) max

{ ∣∣∣f (2)(x)

∣∣∣ : x0 ≤ x ≤ xn

}

Implementacao da regra dos trapezios generalizada

O programa seguinte

≪ → n

≪ 1 1 n 1 −FOR I

2

NEXT 1 n 1 + →ARRY

≫≫

recebe n (o numero de subintervalos) e sai com um vetor contendo os coefi-cientes numericos em destaque na expressao:

1f(x0) + 2f(x1) + 2f(x2) + · · · + 2f(xn−1) + 1f(xn)

Nota: Armazene este programa na variavel CRTG, pois sera referenciadocomo subrotina do proximo programa.

Por exemplo,

n = 2 ⇒ [ 1 2 1 ]

n = 3 ⇒ [ 1 2 2 1 ]

n = 4 ⇒ [ 1 2 2 2 1 ]

Vamos exemplificar a regra dos trapezios para a integral:∫ 41

√x dx.

Antes vamos armazenar f(x) =√x numa variavel, isto pode ser feito

assim:≪→ x p

√x p ≫

Armazene este programa na variavel FUNC (funcao).

Pois bem, a regra dos trapezios generalizada:

∫ xn

x0

f(x) dx ∼= h

2[ f(x0) + 2f(x1) + 2f(x2) + · · · + 2f(xn−1) + f(xn) ]

esta implementada pelo seguinte programa:

242

Page 245: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

≪ → a b n

≪ p(b− a)/n p EVAL ph p STO

a b FOR x

x FUNC

h STEP n 1 + →ARRY

n CRTG DOT h 2 / ∗≫

A instrucao x FUNC (dentro do FOR - STEP) coloca x na pilha ecalcula o valor da funcao (previamente armazenada na variavel FUNC).

Ao sair do laco existem n+ 1 valores de y = f(x) na pilha, os quais saocolocados em um vetor, assim:

[ y0 y1 y2 y3 y4 . . . yn−2 y

n−1 yn ]

Em seguida, o programa coloca n na pilha e chama a subrotina CRTG(programa dado na p. 242) para gerar o seguinte vetor:

[ 1 2 2 2 2 . . . 2 2 1 ]

Dados dois vetores x = [ a1 a2 . . . an ] e y = [ b1 b2 . . . bn ] ainstrucao DOT realiza o produto interno entre estes vetores, assim:

x · y = a1 · b1 + a2 · b2 + · · ·+ an · bn

Portanto, apos o DOT − no nosso programa − obtemos a soma:

1 · y0 + 2 · y1 + 2 · y2 + 2 · y3 + 2 · y4 + · · · + 2 · yn−2 + 2 · y

n−1 + 1 · yn

Para usar o programa para uma outra funcao basta editar a variavelFUNC.

Para a = 1, b = 4 e n = 6 (subintervalos), o programa nos devolve:4.6615.

Limitante superior para o erro

Vamos calcular um limitante superior para o erro, segundo a desigual-dade:

|Et | ≤h2

12(xn − x0) max

{ ∣∣∣f (2)(x)

∣∣∣ : x0 ≤ x ≤ xn

}

Para este caso particular, temos: h = (b − a)/n = (4 − 1)/6 = 0.5.Substituindo os valores ja disponıveis, obtemos:

|Et | ≤0.52

12(4− 1) max

{ ∣∣∣f (2)(x)

∣∣∣ : 1 ≤ x ≤ 4

}

243

Page 246: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Ou ainda,

|Et | ≤ 0.0625 ·max{ ∣∣∣f (2)(x)

∣∣∣ : 1 ≤ x ≤ 4

}

(7.11)

Na sequencia vamos necessitar da segunda derivada da funcao f(x) =√x.

Digite:p√X p

ENTER

CALC

4 DERVX DERVX

obtemos: −√X

4·X2 , ou seja, f (2)(x) = −√X

4·X2 . (sinalizadores 03 e 105 desativados)

A funcao que nos interessa e: |f (2)(x)| =√X

4·X2 . Vamos obter a tabela devariacao (TABVAR, p. 337) para esta funcao, para isto entre com:

p√X/(4 ∗X ∧ 2) p ENTER

CALC

4 GRAPH NXTL

TABVA

Nota: No menu ira constar dois TABVA , pressione o da direita.

Com o botao

(“para baixo”) desloque-se ate a parte inferior do visor,na qual constara a seguinte tabela:

Variation table:[−∞ ? 0 + 0 − +∞ X

? ? ∞ ↓ +: 0 F

]

Esta tabela nos mostra como a funcao (modulo da segunda derivada)varia (crescimento e decrescimento) em funcao da variavel independente X,assim: a funcao nao esta definida para valores negativos de X; a direita de0 a funcao vale ∞; isto e,

limX→0+

√X

4 ·X2= lim

X→0+

1

4 ·X3/2=∞

A direita de 0 a funcao e decrescente. Graficamente, temos:

0x

|f(2)(x)|

p p p p1 2 3 4

1

2

3

pp

p

244

Page 247: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O intervalo de analise que nos interessa e [ 1, 4 ], sendo a funcao de-crescente neste intervalo o maximo que a funcao assume ocorre no extremoesquerdo, isto e:

M = max{ ∣∣∣f (2)(x)

∣∣∣ : x ∈ [ 1, 4 ]

}

= max

{ √x

4 · x2 : x ∈ [ 1, 4 ]

}

=

√1

4 · 12 = 0.25

Substituindo este valor na desigualdade (7.11) (p. 244), temos:

|Et | ≤ 0.0625 · 0.25 = 0.0156

7.2.2 Primeira regra de Simpson

A primeira regra de Simpson generalizada − ou regra 1/3 de Simpson −estabelece que, (p. 241)

∫ xnx0

f(x) dx∼= h3[ f(x0 )+ 4f(x1 )+ 2f(x2 )+ 4f(x3 ) + ···+2f(x

n−2 )+4f(xn−1 )+ f(xn ) ]

Com erro dado por: Et = − h4

180 (xn − x0) f(4)(ξ) , ξ ∈ [x0 , xn ].

Ou, alternativamente, tendo em conta que: h =xn−x0

n ,

Et = −(xn − x0)

5

180n4f (4)(ξ) , ξ ∈ [x0 , xn ]

Limitante superior para o erro: Como ξ ∈ [x0 , xn ] nao e conhecido, pode-mos, no entanto, calcular um limitante superior para o erro:

|Et | ≤h4

180(xn − x0) max

{ ∣∣∣f (4)(x)

∣∣∣ : x0 ≤ x ≤ xn

}

Implementacao da regra de Simpson generalizada

Inicialmente vamos determinar uma formula para gerar os coeficientesnumericos em destaque na expressao:

1f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + · · · +2f(xn−2) + 4f(x

n−1) + 1f(xn)

Uma formula para o termo geral desta sequencia e:

aI=

1, se I = 0 ou I = n;

3− (−1)I , se 1 ≤ I ≤ n− 1

O programa seguinte

245

Page 248: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

≪ → n

≪ 1 1 n 1 −FOR I

p3− (−1)∧ I p EVAL

NEXT 1 n 1 + →ARRY

≫≫

recebe n e devolve um vetor contendo os termos da sequencia acima.Nota: Armazene este programa na variavel CPRS, pois sera referenciado

por um outro programa. Nao esquecer que n deve ser um multiplo de 2.

Vamos tomar como exemplo o calculo da seguinte integral,

∫ b

a

1

1 + x2dx (7.12)

Antes vamos armazenar f(x) numa variavel, isto pode ser feito assim:

≪→ x p1/(1 + x ∧2)p ≫

Armazene este programa na variavel FUNCA (funcao). Pois bem, a regrade Simpson generalizada esta implementada pelo seguinte programa:

≪ → a b n

≪ p(b− a)/n p EVAL p h p STO

a b FOR x

x FUNCA

h STEP n 1 + →ARRY

n CPRS DOT h 3 / ∗≫

O funcionamento deste programa e analogo ao ja visto para a regra dostrapezios. Para a = 0, b = 1 e n = 8, o valor da integral (7.12) e: 0.785398.

7.2.3 Segunda regra de Simpson

Segunda regra de Simpson ou Regra 3/8 de Simpson.A segunda regra de Simpson generalizada estabelece que,

∫ xnx0

f(x) dx∼= 3h8

[ y0 +3y1 +3y2 +2y3 +3y4 +3y5 +2y6 + ···+3yn−2 +3y

n−1 + yn ]

Onde: n deve ser um multiplo de 3 e h = (b− a)/n. O erro e dado por,

Et = −h4

80(xn − x0) f

(4)(ξ) , ξ ∈ [x0 , xn ]

246

Page 249: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Antes de implementar esta formula vamos fazer um programa para gerara sequencia dos coeficientes:

I : 0 1 2 3 4 5 6 . . . n− 2 n− 1 n

aI: 1 3 3 2 3 3 2 . . . 3 3 1

(7.13)

Esta sequencia e gerada com o seguinte programa:

≪ → n

≪ 1 1 n 1 −FOR I

IF pFP (I/3) == 0 p

THEN 2

ELSE 3

END

NEXT 1 n 1 + →ARRY

≫≫

Nota: Armazene este programa na variavel CSRS, pois sera referenciadopor um outro programa. Nao esquecer que n deve ser um multiplo de 3.

− Implementando a Segunda Regra de Simpson. Como exemplo, vamosfazer um programa para calcular a integral,

∫ b

aln(x3 +

(ex + 1)) dx

Antes vamos armazenar f(x) numa variavel, isto pode ser feito assim:

≪→ x pLN(x∧ 3 + (EXP(x) + 1))p ≫

Armazenamos este programa em FNC. O programa muda muito pouco emrelacao ao da primeira regra de Simpson (p. 246), assim:

≪ → a b n

≪ p(b− a)/n p EVAL ph p STO

a b FOR x

x FNC

h STEP n 1 + →ARRY

n CSRS DOT 3 h ∗ 8 / ∗≫

≫Para a = 1, b = 4 e n = 9, o valor da integral resulta: 8.5620.

247

Page 250: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

7.2.4 Quadratura gaussiana

A formula de quadratura de Gauss, ou simplesmente quadratura gaus-siana, e mais uma alternativa que se conta para o calculo numerico de inte-grais:

I =

∫ b

af(x) dx

Este metodo fornece um resultado bem mais preciso que os anteriores −embora so possa ser aplicado quando se conhece a funcao dada por f(x);nao se aplica a partir de pontos definidos por experimentos (tabelados).

Inicialmente, o intervalo de integracao [ a, b ] deve ser “transladado” parao intervalo [−1, 1 ]; isto se consegue atraves de uma mudanca de variavel,fornecida pela seguinte bijecao:

[

[

a

b

(−1, a)

(1, b)

0t

x(t)

p p−1 1

x− a = b−a1−(−1) (t− (−1))

Encontrando a equacao da reta por dois pontos, temos:

x =1

2(b− a) t +

1

2(b+ a) ⇒ dx =

1

2(b− a) dt

Sendo assim, temos:

I =

∫ b

af(x) dx =

∫ 1

−1F (t) dt

Onde:

F (t) =1

2(b− a) · f

( 1

2(b− a)t +

1

2(b+ a)

)

(7.14)

A formula de Gauss para n+ 1 pontos e da forma:

I =

∫ 1

−1F (t) dt = A0 F (t0) + A1 F (t1) + · · · +An F (tn)

Onde os coeficientes Aie os pontos t

i(i = 0, 1, . . . , n) sao incognitas a

serem determinadas.Observe que temos 2n+ 2 incognitas: A0 , A1 , . . . , An ; t0 , t1 , . . . , tn .

248

Page 251: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Escolheremos os coeficientes Aie os pontos t

ide tal forma que a formula

forneca um valor exato da integral para polinomios de graus ≤ 2n+ 1.Vamos por partes, para dois pontos, a formula de Gauss e:

I =

∫ 1

−1F (t) dt = A0 F (t0) + A1 F (t1) (7.15)

Neste caso os parametros A0 , A1 , t0 , t1 , devem ser determinados de modoque esta formula seja exata para polinomios de graus ≤ 2 · 1 + 1 = 3.

Sendo assim, basta exigir que seja exata para os polinomios∗

F0(t) = 1, F1(t) = t, F2(t) = t2, F3(t) = t3. (7.16)

tendo em vista que qualquer outro polinomio de grau ≤ 3 pode ser escritocomo: (combinacao linear)

P3(t) = a0 + a1 t + a2 t2 + a3 t

3

= a0 F (t0) + a1 F (t1) + a2 F (t2) + a3 F (t3)

Sendo assim, se a formula∫ 1

−1F

k(t) dt = A0 Fk

(t0) + A1 Fk(t1), k = 0, 1, 2, 3

e exata para estes polinomios, entao teremos: (prove isto)

∫ 1

−1P3(t) dt = A0 P3(t0) + A1 P3(t1)

Ou seja, a formula tambem e exata para P3(t).Portanto, considerando os polinomios dados em (7.16) as quatro incognitas

A0 , A1 , t0 , t1 podem ser encontradas por:∫ 1

−1tk dt = A0 t

k0+ A1 t

k1, k = 0, 1, 2, 3.

Desdobrando, temos:

k = 0 ⇒∫ 1

−1t0 dt = A0 t

00+ A1 t

01

k = 1 ⇒∫ 1

−1t1 dt = A0 t

10+ A1 t

11

k = 2 ⇒∫ 1

−1t2 dt = A0 t

20+ A1 t

21

k = 3 ⇒∫ 1

−1t3 dt = A0 t

30+ A1 t

31

∗Sao os polinomios da base canonica: B = { 1, t, t2, t3 }, na linguagem da AlgebraLinear.

249

Page 252: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Resolvendo as integrais obtemos o seguinte sistema de equacoes nao-lineares:

A0 + A1 = 2 (7.17)

A0 t0 + A1 t1 = 0 (7.18)

A0 t20+ A1 t

21= 2/3 (7.19)

A0 t30+ A1 t

31= 0 (7.20)

De (7.18), obtemos, t0/t1 = −A1/A0 . De (7.20), obtemos, ( t0/t1 )3 =

−A1/A0 . Destas igualdades segue que

t0 = ± t1 e A0 = ±A1

De (7.18) concluimos que so pode ser A0 = A1 . Logo, A0 = A1 = 1.Este resultado nos permite concluir que

t0 + t1 = 0

t20+ t2

1= 2/3

Daqui concluimos que so pode ser t0 = −t1 . Substituindo este resultado nasegunda equacao acima, obtemos: t1 = ± 1/

√3.

Da formula (7.15) (p. 249) concluimos que e irrelevante qual sinal tomamospara t1 , sendo assim escolheremos t1 = 1/

√3, do que resulta t0 = −1/

√3.

A formula de Gauss para dois pontos resulta

IG=

∫ 1

−1F (t) dt = F

(−√3

3

)+ F

(√3

3

)(7.21)

Esta formula e exata para polinomios de grau ≤ 3, por construcao.

Exemplo: Calcular, utilizando a quadratura gaussiana para dois pontos, o

valor da integral

∫ 2

−2e−x2/2 dx.

Solucao: Inicialmente procedemos a mudanca de variavel. Do enunciadoretiramos: a = −2, b = 2 e f(x) = e−x2/2.

Substituindo na equacao (7.14) (p. 248), temos:

F (t) =1

2(b− a) · f

( 1

2(b− a)t +

1

2(b+ a)

)

=1

2

(2− (−2)

)· f

( 1

2

(2− (−2)

)t +

1

2

(2 + (−2)

) )

Sendo assim:

F (t) = 2 f(2t) = 2 e−(2t)2/2 = 2 e−2t2

250

Page 253: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Logo,

F(−√3

3

)= 2 e−2 (−

√3

3)2 ; F

(√3

3

)= 2 e−2 (

√3

3)2

Substituindo em (7.21) resulta

IG= 4 e−2/3 = 2.05367

O erro para o algoritmo de Gauss e dado por:

En =22n+1 (n!)4

(2n+ 1) ·((2n)!

)3 · F (2n)(ξ), −1 < ξ < 1.

Se tentarmos obter a formula de Gauss para tres pontos

I =

∫ 1

−1F (t) dt = A0 F (t0) + A1 F (t1) + A3 F (t3)

teremos um sistema nao-linear com seis incognitas: A0 , A1 , A3 ; t0 , t1 , t3 ,que certamente e de difıcil resolucao.

Essa dificuldade pode ser contornada (minimizada) utilizando a teoriados polinomios ortogonais, definidos a seguir:

Definicao 13 (Conjunto ortogonal). Um conjunto de polinomios

P ={pn(x) : n = 0, 1, 2, . . .

},

onde n e o grau do polinomio, e dito ortogonal em relacao a funcao pesoω(x), num intervalo [ a, b ] se:

∫ b

aω(x) pm(x) pn(x) dx = 0 para m 6= n

Existem varios conjuntos de polinomios ortogonais − como, p. ex.polinomios de Hermite (p. 326), de Laguerre e de Legendre (p. 327) −, de-pendendo da escolha da funcao peso ω(x).

Quando ω(x) = 1 e o intervalo de integracao [ a, b ] e o intervalo[−1, 1 ], os polinomios sao chamados polinomios de Legendre − disponıveisna HP 50g (p. 327).

O seguinte teorema e de importancia decisiva para o algoritmo de Gauss.

Teorema 12. Fixado arbitrariamente um natural n, o ponto tipara a

quadratura gaussiana e a i - esima raiz (zero) do polinomio de Legendre deordem n: pn(t). Os coeficientes A

i, sao obtidos pela formula:

Ai=

2

(1− t2i) · [ p′

n(t

i) ]2

(7.22)

onde p′n(t

i) e o valor da derivada de pn(t) avaliada no ponto t

i.

Prova: [11]. �

251

Page 254: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O nosso objetivo agora sera implementar (programar) a quadratura gaus-siana. Bem, posto o nosso problema vejamos agora alguns recursos que acalculadora nos fornece para resolve-lo:

O menu ARITHMETIC e ativado atraves da combinacao de teclas (p. 323)

ARITH

Ao pressionar: POLY NXTL

NXTL temos acesso aos polinomios de Legendre.

Para obter o polinomio de ordem 4, por exemplo, basta colocar 4 na pilhae pressionar a tecla virtual LEGEN . Se necessario, podemos plotar o graficodestes polinomios (p. 327).

Vamos nos concentrar na equacao (7.22), entao necessitaremos dos zerosdo polinomio de Legendre e tambem de sua derivada.

Antes, certifique-se de que os sinalizadores 03 e 105 estejam desativadosem sua calculadora.

Por exemplo, coloque p3(x) na pilha∗,

5x3 − 3x

2

Para obter os zeros deste polinomio inicialmente coloque a variavel X napilha e depois digite ZEROS (p. 349; ou Catalogo, p. 46); a calculadora nos daraos zeros em uma lista:

{

0 −√15

5

√15

5

}

Coloque novamente P3(x) na pilha para calcularmos sua derivada. Agora,pressione: CALC DERVX para obter,

(5x2 − 1) · 32

Programando a formula da quadratura gaussiana

Creio que ja dispomos das principais ferramentas para implementar aquadratura gaussiana. Como exemplo, vamos resolver a integral:

∫ b

a

log x+ x2

(x+ 3)2dx

Antes vamos armazenar f(x) numa variavel, isto pode ser feito assim:

≪→ x p( LOG(x) + x ∧2 )/(x + 3) ∧2 p ≫

Armazene este programa na variavel FUNC (funcao).

∗Para isto digite, se necessario, a sequencia de teclas:

ARITH POLYNXTL

NXTL 3 LEGEN .

252

Page 255: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Agora faremos uma subrotina que recebe n (a ordem do polinomio deLegendre) e calcula as raizes deste polinomio e, ademais, os respectivoscoeficientes, segundo a formula (7.22). (p. 251)

Entao,

≪ → n

≪ −2 CF −3 CF −105 SF −103 CF

n LEGENDRE DUP DERVX SWAPpXp ZEROS DUP p ti p STO

SWAP MAP XNUM 2 ∧ ti p 1− X∧2 p

MAP XNUM ∗ 2 SWAP / pAi p STO

≫≫

Armazene (STO) esta subrotina como: p tiAi p . Se o leitor quiser ter acessoa lista com as raizes t

ie a lista A

i, com os respectivos coeficientes pressione,

se necessario, a tecla VARJ

e procure, estas listas, no menu.

A funcao MAP encontra-se na p. 315. Para melhor entendimento,execute-o no DBUG.

Finalmente, o programa principal fica assim:

≪ → a b n

≪ n tiAi tip (b− a)/2 ∗ FUN((b− a)/2 ∗X + (b+ a)/2) p

MAP XNUM Ai ∗ LIST∑

≫≫

A instrucao∑LIST, acessada com a seguinte sequencia de teclas:

MTH LIST∑

LIST , calcula a soma de todos os elementos de uma lista.Se necessario, execute-o no DBUG. Para o calculo da integral de nosso

exemplo, entrando com: 2 4 8, (isto e, a = 2, b = 4 e n = 8) obtemosIG= 0.521284.Em FILES podemos ter acesso ao tamanho (em bytes) de cada um

dos nossos programas para a quadratura gaussiana, temos:

FUNC → 58

tiAi → 181

QGAUSS → 157

de sorte que os tres programas somam 396 bytes.Enfatizando: Na HP 50g implementamos a quadratura gaussiana com a

bagatela de 396 bytes!

253

Page 256: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

7.2.5 Integracao dupla

Seja o problema de calcular a integral dupla a seguir:

I =

D

f(x, y) dx dy

onde D e o retangulo delimitado por:

a ≤ x ≤ b

c ≤ y ≤ d

Veremos que as regras apresentadas anteriormente podem ser usadas aqui.Inicialmente fazemos uma particao do retangulo anterior em nx subinterva-los em [ a, b ] e em ny subintervalos em [ c, d ], assim:

p p p p p px0 = a x1 x2 x

i· · ·· · · x

n−1 xn = b

pp

pp

p

y0 = c

y1

...

...yj

yn−1

yn = d

x

y

· · ·· · ·...

...s

(xi, y

j)

Na verdade o n que comparece no eixo x e nx e o n que comparece noeixo y e ny (nao sao necessariamente iguais). Pois bem, temos

I =

D

f(x, y) dx dy =

∫ b

adx

∫ d

cf(x, y) dy

Chamando∫ dc f(x, y) dy de G(x), isto e,

G(x) =

∫ d

cf(x, y) dy (7.23)

podemos escrever:

I =

∫ b

aG(x) dx

Para resolver esta integral simples aplicaremos a segunda regra de Simpson,assim: (p. 246)

254

Page 257: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

I =3h

8

(G(x0) + 3G(x1) + 3G(x2) + 2G(x3) + 3G(x4) + 3G(x5) + 2G(x6)

· · ·+ 3G(xn−2) + 3G(xn−1) +G(xn))

(7.24)

Da equacao (7.23), temos:

G(xi) =

∫ d

cf(x

i, y) dy; (i = 0, 1, 2, . . . , nx) (7.25)

Para cada i fixo, devemos calcular a integral da funcao (de uma unicavariavel) f(x

i, y) no intervalo [ c, d ] (veja particao do retangulo).

Para resolver esta integral em y utilizaremos a primeira regra de Simpson:

G(xi) =

h

3

(f(x

i, y0) + 4f(x

i, y1) + 2f(x

i, y2) + 4f(x

i, y3) + 2f(x

i, y4)+

· · ·+ 2f(xi, y

n−2) + 4f(xi, y

n−1) + f(xi, yn)

)(p. 245)

Observe que temos nx+1 desta equacoes (veja equacao (7.25)). Ademais, observeque como estamos particionando o intervalo [ c, d ] em ny subintervalos arigor temos, (i = 0, 1, 2, . . . , nx)

G(xi) =

h

3

(f(x

i, y0) + 4f(x

i, y1) + 2f(x

i, y2) + 4f(x

i, y3) + 2f(x

i, y4)+

· · ·+ 2f(xi, y

ny−2) + 4f(xi, y

ny−1) + f(xi, yny)

)

Pois bem, substituindo estas nx+1 equacoes na equacao (7.24), obtemos:

I= 3hx8

[hy3

(F (x0 , y0 )+ 4F (x0 , y1 )+2F (x0 , y2 )+ 4F (x0 , y3 )+ ···+4F (x0 , yn−1 )+F (x0 , yn )

)

+3·hy3

(F (x1 , y0 )+4F (x1 , y1 )+ 2F (x1 , y2 )+4F (x1 , y3 )+ ···+4F (x1 , yn−1 ) +F (x1 , yn)

)

+3·hy3

(F (x2 , y0 )+4F (x2 , y1 )+ 2F (x2 , y2 )+4F (x2 , y3 )+···+4F (x2 , yn−1 )+F (x2 , yn )

)

+2·hy3

(F (x3 , y0 )+4F (x3 , y1 )+ 2F (x3 , y2 )+4F (x3 , y3 )+···+4F (x3 , yn−1 )+F (x3 , yn )

)

+3·hy3

(F (x4 , y0 )+4F (x4 , y1 )+ 2F (x4 , y2 )+4F (x4 , y3 )+···+4F (x4 , yn−1 )+F (x4 , yn )

)

+3·hy3

(F (x5 , y0 )+4F (x5 , y1 )+ 2F (x5 , y2 )+4F (x5 , y3 )+···+4F (x5 , yn−1 )+F (x5 , yn )

)

+2·hy3

(F (x6 , y0 )+4F (x6 , y1 )+ 2F (x6 , y2 )+4F (x6 , y3 )+···+4F (x6 , yn−1 )+F (x6 , yn )

)

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·+3·hy

3

(F (x

n−2 , y0 )+ 4F (xn−2 , y1 )+ 2F (x

n−2 , y2) +4F (xn−2 , y3)+···+F (x

n−2 , yn ))

+3·hy3

(F (x

n−1 , y0 )+ 4F (xn−1 , y1 )+ 2F (x

n−1 , y2) +4F (xn−1 , y3)+···+F (x

n−1 , yn ))

+ hy

3

(F (xn , y0 )+4F (xn , y1 )+ 2F (xn , y2) +4F (xn , y3 )+···+4F (xn , yn−1 ) +F (xn , yn)

)]

255

Page 258: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Arrumando a casa obtemos:

I= 3hx8

·hy3

[1·(F (x0 , y0 )+ 4F (x0 , y1 )+2F (x0 , y2 )+ 4F (x0 , y3 )+ ···+4F (x0 , yn−1 )+F (x0 , yn )

)

+3·(F (x1 , y0 )+ 4F (x1 , y1)+ 2F (x1 , y2 )+ 4F (x1 , y3)+ ···+4F (x1 , yn−1) +F (x1 , yn )

)

+3·(F (x2 , y0 )+ 4F (x2 , y1)+ 2F (x2 , y2 )+ 4F (x2 , y3)+···+4F (x2 , yn−1 )+F (x2 , yn )

)

+2·(F (x3 , y0 )+ 4F (x3 , y1)+ 2F (x3 , y2 )+ 4F (x3 , y3)+···+4F (x3 , yn−1 )+F (x3 , yn)

)

+3·(F (x4 , y0 )+ 4F (x4 , y1)+ 2F (x4 , y2 )+ 4F (x4 , y3)+···+4F (x4 , yn−1 )+F (x4 , yn)

)

+3·(F (x5 , y0 )+ 4F (x5 , y1)+ 2F (x5 , y2 )+ 4F (x5 , y3)+···+4F (x5 , yn−1 )+F (x5 , yn)

)

+2·(F (x6 , y0 )+ 4F (x6 , y1)+ 2F (x6 , y2 )+ 4F (x6 , y3)+···+4F (x6 , yn−1 )+F (x6 , yn)

)

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·+3·

(F (x

n−2 , y0 )+ 4F (xn−2 , y1 )+ 2F (x

n−2 , y2 )+ 4F (xn−2 , y3)+···+F (x

n−2 , yn ))

+3·(F (x

n−1 , y0 )+ 4F (xn−1 , y1 )+ 2F (x

n−1 , y2 )+ 4F (xn−1 , y3)+···+F (x

n−1 , yn ))

+1·(F (xn , y0 )+4F (xn , y1 )+ 2F (xn , y2) +4F (xn , y3 )+···+4F (xn , yn−1) +F (xn , yn)

)]

No “quadro” acima podemos obervar, pelos ındices de yj, que temos

ny + 1 parcelas em cada linha e, pelos ındices de xi, observamos que temos

nx+ 1 linhas.

Para programar esta equacao vamos, antes, fazer um programa que cal-cule uma matriz com os valores da funcao em todos os vertices da malha departicao, digo,

(F (x

i, y

j)); (i = 0, 1, 2, . . . , nx), (j = 0, 1, 2, . . . , ny) (7.26)

Ou ainda,

F (x0 , y0) F (x0 , y1) F (x0 , y2) . . . F (x0 , yny)

F (x1 , y0) F (x1 , y1) F (x1 , y2) . . . F (x1 , yny)

. . . . . . . . . . . . . . .

F (xnx , y0) F (xnx , y1) F (xnx , y2) . . . F (xnx , yny)

Vamos tomar como exemplo o calculo da seguinte integral:

I =

∫ π/2

0

∫ 0,4

0(y2 + y) cos x dy dx,

{

0 ≤ y ≤ 0, 4

0 ≤ x ≤ π/2

Inicialmente armazenamos F (x, y) = (y2 + y) cos x, isto pode ser feitoassim:

≪→ x y p(y ∧2 + y) ∗ cos(x)p ≫

256

Page 259: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Armazene este programa na variavel FC (funcao). Pois bem, o programapara o calculo da matriz acima e dado a seguir:

≪ → a b c d nx ny

≪ −3 CF p (b− a)/nx p EVAL p hx p STO

p (d− c)/ny p EVAL p hy p STO

c d FOR y

a b FOR x

x y FC EPSX0

hx STEP nx 1 + →ARRY

hy STEP ny 1 + ROW→ TRN

≫≫

Nota: Armazene este programa na variavel FDV, pois sera referenciadopor um outro programa.

Comentarios:

a) Este programa calcula a matriz(F (x

i, y

j))para: a ≤ x ≤ b, c ≤ y ≤ d.

nx e ny e o numero de subintervalos nos intervalos [ a, b ] e [ c, d ], respecti-vamente.

b) Desativamos o sinalizador 03, pois no calculo da funcao (FC) podeda problemas. Por exemplo, se este sinalizador estiver ativado, cos π

2 =−5.1034 × 10−12 e nao 0 como deveria ser.

c) Para a funcao EPSX0, veja p. 224. TRN, na ultima linha, calcula (efe-tua) a transposta de uma matriz (p. 43).

Por exemplo, entrando no programa anterior com os seguintes dados:

→ 0 π/2 0 0.4 3 4

recebemos na saida a seguinte matriz:

0.0000 0.1100 0.2400 0.3900 0.5600

0.0000 0.0953 0.2078 0.3377 0.4850

0.0000 0.0550 0.1200 0.1950 0.2800

0.0000 0.0000 0.0000 0.0000 0.0000

com 4 casas decimais.

− Na figura a seguir plotamos (esquerda) a malha da particao e, na figurada direita, os valores f(x

i, y

j) de acordo com a matriz anterior, assim:

257

Page 260: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

00,1 0,2 0,3 0,4

y

π6

π3

π2

x

f(x, y)

r r r r r

r r r r r

r r r r r

r r r r r

y

f(x, y)

π6

π3

π2

x

r

r

r

r r r r r

Nota: Na pagina 314 mostramos como plotar o grafico da superfıcie f(x, y).

Finalmente, o programa que nos interessa e dado a seguir:

≪ → a b c d nx ny

≪ nx 1 + 1 → LIST 0 CON p V L p STO

a b c d nx ny FDV p MF p STO

nx CSRS p V x p STO

ny CPRS p V y p STO

1 nx 1 + FOR I

MF I ROW− SWAP DROP

Vy DOT V L I ROT PUTp V L p STO

NEXT V L V x DOT

3 hx ∗ 8 / hy 3 / ∗ ∗≫

Comentarios:

a) Os dados de entrada para este programa e o retangulo [ a, b ]× [ c, d ] eo numero de subretangulos, nx× ny, da particao.

b) A segunda linha do programa cria um vetor, de comprimento nx + 1,com a constante 0:

[ 0 0 0 0 . . . 0 ] (comprimento deste vetor = nx+ 1)

Este vetor e guardado na variavel VL. Observe que nx+1 e igual ao numerode linhas no “quadro” da p. 256;

c) A terceira linha do programa disponibiliza os dados da subrotina FDVque calcula a matriz

(F (x

i, y

j))e guarda-a na variavel MF;

258

Page 261: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

d) A quarta linha do programa disponibiliza os dados da subrotina CSRS(p. 247) que calcula os coeficientes da segunda regra de Simpson e os guardano vetor V x;

e) A quinta linha do programa disponibiliza os dados da subrotina CPRS(p. 246) que calcula os coeficientes da primeira regra de Simpson e os guardano vetor V y;

f) Agora o FOR-NEXT vai extrair cada uma das linhas da matriz(F (x

i, y

j))

e fazer o produto interno, de cada linha, com o vetor dos coeficientes V y,conforme “quadro” a p. 256; observe que o resultado de cada um destesprodutos internos vai sendo guardado no vetor V L que estava inicialmente“vazio”. Ao sair do laco o vetor V L guarda, em sua posicao i, a soma dalinha i do “quadro” (apenas as somas entre os dois parentesis maiores);

g) Agora calculamos o produto interno entre os vetores V L e V x e, parafinalizar, multiplicamos o resultado por 3hx

8 ·hy3 .

Por exemplo, entrando no programa anterior com os seguintes dados:

→ 0 π/2 0 0.4 3 4

recebemos de volta: 0.1014, como valor para a integral dupla da p. 256.

∗ ∗ ∗

ր

Que o meu pensamento quis

aproximar-se dos problemas do espırito

pela via de uma diversa experimentacao

de carater abstrato, especulativo, resul-

tante das conclusoes de processos logicos

da mais moderna fısico-matematica.

(Pietro Ubaldi/Ascensoes Humanas)

Se quisermos procurar “Deus” na

fısica, o vacuo e o melhor lugar onde faze-

lo. Enquanto estado basico subjacente

de tudo que existe, o vacuo tem todas as

caracterısticas do Deus imanente ou da

divindade de que falam os mısticos.

(Danah Zohar/fısica e filosofa)

(Universo)

0 0 0 = { }

1 0 00 1 0

1 1 0

0 0 1

1 0 1

0 1 11 1 1

+

Assim como um dia a explosao aconteceu e milhoes de coisas nasce-ram a partir do nada, da mesma maneira, quando a implosao acontece,formas e nomes desaparecem, e novamente o nada nasce daı. O cırculoesta completo. (Osho/Buda, p. 112)

259

Page 262: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

7.3 Equacoes Diferenciais Ordinarias

Introducao: Nesta secao implementaremos as principais regras para a reso-lucao numerica de equacoes diferenciais ordinarias− as quais constam noslivros de Calculo Numerico.

Antes, veremos alguns resultados do Calculo que serao necessarios pos-teriormente.

Regra da Cadeia Para Derivadas

Teorema 13 (Regra da Cadeia de Duas Variaveis). Se x = x(t) e y =y(t) forem diferenciaveis em t e se z = f(x, y) for diferenciavel no ponto(x, y) =

(x(t), y(t)

), entao z = f(x(t), y(t)) e diferenciavel em t e

dz

dt=

∂z

∂x

dx

dt+

∂z

∂y

dy

dt

onde as derivadas ordinarias sao calculadas em t e as derivadas parciais em(x, y).

Derivacao implıcita

Considere o caso especial em que z = f(x, y) e uma funcao de x e y ey e uma funcao diferenciavel de x. Entao a equacao anterior passa a ser:

dz

dx=

∂f

∂x

dx

dx+

∂f

∂y

dy

dx=

∂f

∂x+

∂f

∂y

dy

dx(7.27)

Polinomios e Series de Taylor e Maclaurin

Definicao 14 (Polinomio de Maclaurin). Se f puder ser diferenciada nvezes em 0, entao defini-se o enesimo polinomio de Maclaurin para fcomo sendo

pn(x) = f(0) + f ′(0)x+f ′′(0)2!

x2 +f ′′′(0)3!

x3 + · · ·+ f (n)(0)

n!xn

Este polinomio tem a propriedade de que seu valor e o de suas n primeirasderivadas coincidem com os valores de f e o de suas n primeiras derivadasem x = 0.

Os polinomios de Maclaurin aproximam uma funcao f na vizinhancade x = 0. Vamos agora considerar o caso mais geral de aproximar f nasproximidades de um ponto arbitrario x0 do domınio.

Definicao 15 (Polinomio de Taylor). Se f puder ser diferenciada n vezesem x0 , entao defini-se o enesimo polinomio de Taylor para f em tornode x = x0 como sendo

pn(x) = f(x0) + f ′(x0)(x− x0) +f ′′(x0)

2!(x− x0)

2 + · · ·+ f (n)(x0)

n!(x− x0)

n

260

Page 263: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Enesimo resto

Denotamos por Rn(x) o erro da aproximacao f(x) ∼= pn(x), que consistena diferenca entre f(x) e seu enesimo polinomio de taylor, ou seja,

Rn(x) = f(x)− pn(x) = f(x)−n∑

k=0

f (k)(x0)

k!(x− x0)

k

Ou, de modo equivalente,

f(x) = pn(x) +Rn(x) =n∑

k=0

f (k)(x0)

k!(x− x0)

k + Rn(x)

A funcao Rn(x) e denominada enesimo resto da serie de Taylor de f ea formula acima e chamada de formula de Taylor com resto.

O proximo teorema nos fornece uma cota para Rn(x) que da uma in-dicacao da precisao da aproximacao f(x) ∼= pn(x).

Teorema 14 (Teorema da Estimativa do Resto). Se a funcao f puder serderivada n+ 1 vezes num intervalo I contendo o ponto x0 , e se M for umacota superior para |f (n+1)(x)| em I, ou seja, se |f (n+1)(x)| ≤ M para todox em I, entao

|Rn(x)| ≤M

(n+ 1)!|x− x0 |n+1

para todo x em I.

Definicao 16 (Serie de Taylor e de Maclaurin). Se a funcao f possuirderivadas de todas as ordens em x0, entao dizemos que a serie

∞∑

k=0

f (k)(x0)

k!(x− x0)

k = f(x0) + f ′(x0)(x− x0) +f ′′(x0)

2!(x− x0)

2

+ · · ·+ f (k)(x0)

k!(x− x0)

k + · · ·

e a serie de Taylor para f em torno de x = x0 . No caso particular emque x0 = 0, essa serie se torna

∞∑

k=0

f (k)(0)

k!xk = f(0) + f ′(0)x+

f ′′(0)2!

x2 + · · ·+ f (k)(0)

k!xk + · · ·

caso em que e chamada serie de Maclaurin para f .

261

Page 264: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Definicao 17. Uma equacao diferencial ordinaria de ordem n e uma equacaoda seguinte forma

F(x, y(x), y′(x), y′′(x), . . . , y(n)(x)

)= 0

onde constam a funcao incognita y = y(x) e suas derivadas ate a ordem n.

Exemplos: A seguir vemos algumas equacoes diferenciais ordinarias, onde:

y′ =dy

dx, y′′ =

d2y

dx2, . . .

a)dy

dx= 2x+ 3, de ordem 1;

b) yd2y

dx2+ 3x

dy

dx= x− 2, de ordem 2;

c)d2θ

dt2+

g

Lsen θ = 0.

Esta equacao, de ordem 2, e nao linear − devido a presenca do termosen θ − modela a oscilacao de um pendulo.

d)d4y

dx4+

d3y

dx3+

d2y

dx2+

dy

dx+ y = 1, de ordem 4.

7.3.1 Problema de valor inicial (PVI)

Definicao 18. Um problema de Valor Inicial (PVI) de primeira ordemconsiste de uma equacao diferencial y′ = f(x, y), x ≥ x0 , e uma condicaoinicial y(x0) = y0 , onde y0 e um valor dado, chamado de valor inicial.

Resumimos da seguinte forma:

PV I :

{

y′ = f(x, y)

y(x0) = y0

(7.28)

Nao e possıvel, em geral, encontrar a solucao analıtica y = y(x) doPVI por manipulacao simbolica da equacao diferencial, daı a necessidadede metodos numericos como os que serao aqui desenvolvidos.

Para resolver numericamente um PVI devemos inicialmente discretizar ointervalo [ a, b ]:

{a = x0 < x1 < x2 < · · · < x

n−1 < xn = b}

Ao conjunto acima denomina-se uma particao do intevalo [ a, b ].

262

Page 265: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Para obter uma particao (regular) do intervalo [ a, b ] em N subintervalosde mesmo comprimento, fazemos h = b−a

N , no que resulta

xn = x0 + nh, n = 0, 1, 2, . . . , N.

[ ]a= x0 xn = bx1 x2 x

n−1

x. . .

h h h

Importante: Convenciona-se usar a notacao y(xn) (n = 0, 1, 2, . . .)para indicar a solucao exata do PVI nos pontos da particao, graficamente:

a= x0 xn = b

y(x)

x1 x2 xn−1

0x

f(x)

y(x0 )

y(xn )

h h h. . .

Por outro lado a notacao yn(x) e reservada para a solucao numericaaproximada do PVI.

ւ←−

a=x0 xn = b

y(x) solucao exata

yn (x) solucao aproximada

x1 x2 xn−1

0x

f(x)

y(x0 )= y0

y(xn )

. . .

A solucao numerica yn(x) e a funcao linear por partes, cujo grafico e umapoligonal com vetices nos pontos (xn , yn), onde yn sera calculado utilizando-se algum dos metodos numericos que serao dados logo mais.

263

Page 266: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Nota: E um resultado da Analise Matematica que dada qualquer funcaocontınua em um intervalo fechado [ a, b ] esta funcao pode ser aproximada −com qualquer precisao que se deseje − por uma “funcao poligonal”.

De outro modo: dada qualquer f , contınua em um intervalo [ a, b ], existeuma poligonal g arbitrariamene proxima de f no seguinte sentido:

d(f, g) = max{|f(x)− g(x)| : x ∈ [ a, b ]

}< ε

onde ε > 0 e qualquer precisao arbitrariamene fixada. d(f, g) e a distanciaentre as funcoes f e g. (p. ex., veja [12], p. 223)

Erro local: o erro local, cometido nas aproximacoes em cada ponto daparticao, e a diferenca entre o valor exato da solucao da equacao diferenciale o valor numerico aproximado, isto e:

e(xn) = y(xn) − yn , n = 0, 1, 2, . . . , N. (7.29)

Observe a “geometria do erro” no grafico anterior.

7.3.2 Metodos baseados em serie de Taylor

Vamos adaptar os resultados da serie de Taylor, vista anteriormente, aosnossos propositos. Considere f uma funcao contınua e, ademais, supon-hamos que todas as suas derivadas existam no ponto x = x0 = xn . A seriede Taylor nas vizinhancas do ponto x0 = xn e reescrita como∗

f(x) = f(xn) + f ′(xn)(x− xn) +f ′′(xn)

2!(x− xn)

2

+ · · ·+ f (k)(xn)

k!(x− xn)

k + · · ·

Vamos truncar o desenvolvimento da serie de Taylor no p-esimo termo, e,por um “abuso de notacao”, vamos continuar usando o sinal de igualdade,assim:

f(x) = f(xn) + f ′(xn)(x− xn) +f ′′(xn)

2!(x− xn)

2 + · · · + f (p)(xn)

p!(x− xn)

p

Vamos agora considerar nesta expressao x = xn+1 = xn + h, ou ainda,

x− xn = h, entao:

f(xn+1) = f(xn) + f ′(xn)h+

f ′′(xn)

2!h2 + · · ·+ f (p)(xn)

p!hp (7.30)

∗Ha um teorema do Calculo que afirma que a igualdade em questao e verdadeira emum ponto x se e somente se lim

n→+∞Rn(x) = 0. Portanto, estamos admitindo que este seja

o caso.

264

Page 267: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Vamos reconsiderar o PVI:

{

y′ = f(x, y)

y(x0) = y0

Admitindo como hipotese que a solucao y(x) do PVI tenha derivadascontınuas para todo x ∈ [ a, b ], entao substituindo em (7.30), temos

y(xn+1) = y(xn) + y′(xn)h+

y′′(xn)

2!h2 + · · ·+ y(p)(xn)

p!hp

Usando a notacao,

yn∼= y(xn), y′

n= f(xn , yn), y′′

n=

d

dxf(xn , yn), . . .

Observe, yn∼= y(xn) ⇒ y

n+1∼= y(x

n+1), entao

yn+1 = yn + y′

nh+

y′′n

2!h2 + · · · + y(p)

n

p!hp

Ou, reconfigurando a notacao:

yn+1 = yn + h y′

n+

h2

2!y′′n+ · · · + hp

p!y(p)n

(7.31)

que e o metodo de Taylor de ordem p.

7.3.3 Metodo de Euler

O metodo de Euler para a solucao aproximada do PVI consiste no desen-volvimento da serie de Taylor para p = 1:

yn+1 = yn + h y′n

(7.32)

como y′n= f(xn , yn), resulta: (Metodo de Euler)

yn+1 = yn + h f(xn , yn) , (n = 0, 1, 2, . . .)

Interpretacao Geometrica: O metodo de Euler, desenvolvido por voltade 1768, e tambem conhecido como o metodo da reta tangente.

Vamos considerar como poderıamos aproximar a solucao y = y(x) doPVI (7.28) (p. 262) proximo de x = x0 .

Sabemos que o grafico da solucao (p. 263) contem o ponto (x0 , y0) e, daequacao diferencial (do PVI), sabemos, tambem, que a inclinacao da retatangente ao grafico nesse ponto e y′ = f(x0 , y0). Sendo assim, podemos

265

Page 268: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

escrever uma equacao para a reta tangente a curva solucao em (x0 , y0), istoe:

y = y0 + f(x0 , y0)(x− x0)

x0 x10x

f(x)

y0

y(x1 )

y1

solucao exatay(x)

reta tangente - solucao aproximada: yn(x)

A reta tangente e uma boa aproximacao para a curva solucao em um in-tervalo suficientemente pequeno. Se x1 estiver suficientemente proximo dex0 , podemos aproximar y(x1) pelo valor obtido substituindo-se x = x1 naequacao da reta tangente no ponto x = x0 ; isto e,

y1 = y0 + f(x0 , y0)(x1 − x0)

Para prosseguir, podemos tentar repetir o procedimento. Infelizmente,nao conhecemos o valor y(x1) da solucao em x1 . O melhor que podemosfazer e usar o valor aproximado dado acima, y1 , em seu lugar.

Encontramos, entao, a reta passando no ponto (x1 , y1) com coeficienteangular f(x1 , y1), isto e,

y = y1 + f(x1 , y1)(x− x1)

Para aproximar y(x) no proximo ponto x2 , usamos esta ultima equacao,obtendo:

y2 = y1 + f(x1 , y1)(x2 − x1)

Continuando este processo (algoritmo), usamos o valor de y calculadoem cada etapa para determinar o coeficiente angular para a aproximacaoseguinte.

Generalizando os passos anteriores obtemos uma expressao geral parayn+1 assim:

yn+1 = yn + f(xn , yn)(xn+1 − xn)

fazendo xn+1 − xn = h, obtemos:

yn+1 = yn + h f(xn , yn) , (n = 0, 1, 2, . . .)

266

Page 269: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Algoritmo

Dado o PVI:

{

y′ = f(x, y)

y(x0) = y0

podem ser adotados os seguintes passos para sua resolucao:

1) Declare:

(i) A funcao f(x, y);

(ii) condicoes iniciais: y(x0) = y0 ;

(iii) intervalo [ a, b ], onde a = x0 ;

(iv) numero de subintervalos N e calcule h = b−aN ;

2) Para n = 0, 1, . . . , N − 1, faca:

Calcule:

inıcio

xn+1 = xn + h

yn+1 = yn + h f(xn , yn)

fim

Exemplo: Calcule, pelo metodo de Euler, a solucao aproximada do seguintePVI:

{

y′ = f(x, y) = y − x

y(x0) = y(0) = 2

para x ∈ [ a, b ] = [ 0, 1 ] e N = 4 subintervalos.

Solucao: Inicialmente temos:

h =b− a

N=

1− 0

4=

1

4= 0. 25

A discretizacao do intevalo fica: (n = 0, 1, 2, 3, 4)

p p p p px0=0 x1=

14

x2=12

x3=34

x4=1x

O metodo de Euler consiste no algoritmo:

yn+1 = yn + h f(xn , yn)

Sendo f(x, y) = y − x, temos f(xn , yn) = yn − xn , sendo assim resulta:

yn+1 = yn + 0. 25 (yn − xn) = − 0. 25xn + 1. 25 yn

267

Page 270: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Entao:

n = 0 ⇒ y1 = −0. 25x0 + 1. 25 y0 = −0. 25 · 0 + 1. 25 · 2 = 2. 5000

n = 1 ⇒ y2 = −0. 25x1 + 1. 25 y1 = −0. 25 · 0.25 + 1. 25 · 2. 5 = 3. 0625

n = 2 ⇒ y3 = −0. 25x2 + 1. 25 y2 = −0. 25 · 0.50 + 1. 25 · 3. 0625 = 3. 7031

n = 3 ⇒ y4 = −0. 25x3 + 1. 25 y3 = −0. 25 · 0.75 + 1. 25 · 3. 7031 = 4. 4414

Observe a geometria:

p p p p px0=0

y0

x1=14

y1

x2=12

y2

x3=34

y3

x4=1

y4

x

Apenas para efeitos de comparacao, a solucao analıtica (exata) da equacaodiferencial proposta e: y(x) = ex + x + 1. No grafico fica assim:

p p−1 1

1

2

4.7183

pp

p

0x

yy(x)

p p−1 1

1

2

4.7183

pp

p

0x

yy(x)

yn(x)

A tabela a seguir exibe a solucao exata − calculada nos pontos daparticao −, a solucao encontrada pelo metodo de Euler e o erro local.

n xi

Sol. exata y(xn) Sol. aprox. y

nErro= y(x

n) − y

n

0 0. 00 2. 0

1 0. 25 2. 5340

2 0. 50 3. 1487

3 0. 75 3. 8670

4 1. 00 4. 7183

2. 0

2. 5000

3. 0625

3. 7031

4. 4414

0. 0

0. 0340

0. 0862

0. 1639

0. 2769

268

Page 271: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O programa que implementa o metodo de Euler e como a seguir:

≪ → a b N yo

≪ −3 SF p(b− a)/N p EVAL ph p STO

a b FOR xi

xi

h STEP

N 1 + →ARRY px p STO

{ } N 1 + + yo CON py p STO

1 N FOR npy(n) + h ∗ f(x(n), y(n)) p EVAL py(n+ 1) p STO

NEXT y

≫≫

Comentarios:

1o ) Entramos com a, b N (no. de subintervalos) e yo (condicao inicial);

2o ) A funcao f(x, y) deve ser declarada a parte, assim:

≪ → x y py − x p ≫

armazene este programa na variavel f ;

3o ) O primeiro laco FOR gera a particao (ou malha) do intervalo [ a, b ] earmazena o resultado no vetor x ([x1 x2 . . . x

N+1]) (linha seis);

4o ) Na linha sete (segunda apos o h STEP) criamos um vetor constantecom N+1 posicoes, sendo que a constante e o valor inicial yo e armazenamoso resultado no vetor y;

5o ) No laco seguinte implementamos a formula de Euler.

Para um melhor entendimento, execute-o no DBUG.Por exemplo, entrado com os dados do exemplo anterior:

→ 0 1 4 2

recebemos de volta o seguinte vetor:

[ 2 2.5000 3.0625 3.7031 4.4414 ]

269

Page 272: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

7.3.4 Metodo de Taylor de ordem p = 2

Truncando o desenvolvimento da solucao y(xn) do PVI, em serie de Tay-lor, na ordem p = 2, obtemos um outro metodo ainda mais preciso que o deEuler: (eq. (7.31), p. 265)

yn+1 = yn + h y′

n+

h2

2!y′′n

(7.33)

No PVI,{

y′ = f(x, y)

y(x0) = y0

(7.34)

facamos a seguinte mudanca de notacao: z = y′ = f(x, y).Sendo z = f(x, y) uma funcao de x e y e y e uma funcao x, isto e,

y = y(x), podemos usar a formula (7.27): (p. 260)

dz

dx=

∂f

∂x+

∂f

∂y

dy

dx

para obter:d

dx(y′) =

∂f

∂x+

∂f

∂y

dy

dx= fx + fy y

Ou ainda:y′′n= fx(xn , yn) + fy(xn , yn) y

′n

(7.35)

Sendo que de (7.34), temos: y′n= f(xn , yn). Estes resultados em (7.33) nos

fornecem:

yn+1 = yn + h f(xn , yn) +

h2

2![ fx(xn , yn) + fy(xn , yn) f(xn , yn) ]

Exemplo: Calcule, pelo metodo de Taylor de ordem p = 2, a solucaoaproximada do seguinte PVI:

{

y′ = f(x, y) = x− y + 2

y(x0) = y(0) = 2

para x ∈ [ a, b ] = [ 0, 1 ] e N = 5 subintervalos.

Solucao: Inicialmente temos:

h =b− a

N=

1− 0

5=

1

5= 0. 2

Para f(x, y) = x− y + 2, temos: fx(x, y) = 1 e fy(x, y) = −1. Portanto:

f(x, y) = x− y + 2 ⇒ f(xn , yn) = xn − yn + 2

fx(x, y) = 1 ⇒ fx(xn , yn) = 1

fy(x, y) = −1 ⇒ fy(xn , yn) = −1

270

Page 273: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Substituindo estes resultados na equacao deduzida anteriormente, temos:

yn+1 = yn + h f(xn , yn) +

h2

2![ fx(xn , yn) + fy(xn , yn) f(xn , yn) ]

yn+1 = yn + h (xn − yn + 2) +

h2

2![ 1 + (−1) · (xn − yn + 2) ]

Substituindo o valor de h = 0.2 e simplificando, obtemos:

yn+1 = 0.18xn + 0.82 yn + 0.38

Entao, para n = 0, 1, 2, 3, 4, obtemos:

y1 = 0.18x0 + 0.82 y0 + 0.38 = 0.18 · 0 + 0.82 · 2 + 0.38 = 2.0200

y2 = 0.18x1 + 0.82 y1 + 0.38 = 0.18 · 0.2 + 0.82 · 2.0200 + 0.38 = 2.0724

y3 = 0.18x2 + 0.82 y2 + 0.38 = 0.18 · 0.4 + 0.82 · 2.0724 + 0.38 = 2.1514

y4 = 0.18x3 + 0.82 y3 + 0.38 = 0.18 · 0.6 + 0.82 · 2.1514 + 0.38 = 2.2521

y5 = 0.18x4 + 0.82 y4 + 0.38 = 0.18 · 0.8 + 0.82 · 2.2521 + 0.38 = 2.3707

O programa a seguir implementa o metodo de Taylor de ordem p = 2:

≪ p pEntre com a, b, N, f e yo p p PROMPT → a b N f yo

≪ −3 SF − 105 SF p(b− a)/N p EVAL ph p STO

a b FOR xi

xi

h STEP

N 1 + →ARRY px p STO

{ } N 1 + + yo CON py p STO

−3 CF f DERVX pfx p STO

f pY p DERIV pfy p STO

1 N FOR n

X px(n) p EVAL Y py(n) p EVAL 4 →LISTpLA p STO py(n) p EVAL h f LA | EVAL

∗ + h 2 ∧ 2 / fx LA | EVAL

fy LA | EVAL f LA | EVAL

∗ + ∗ + py(n+ 1) p STO

NEXT y

≫≫

271

Page 274: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Comentarios:

1o ) Para o PVI resolvido anteriormente entramos com os seguintes dados;

0 1 5 pX − Y + 2 p 2

Observamos que a funcao f(x, y) = x− y + 2 deve ser fornecida com asvariaveis em maiusculo, haja vista que a variavel x e utilizada no programapara armazenar o vetor discretizacao.

O programa nos devolve o seguinte vetor:

[ 2 2.0200 2.0724 2.1514 2.2521 2.3707 ]

2o ) Vamos comentar a linha

−3 CF f DERVX pfx p STO

Desativamos o sinalizador 03 pois agora vamos trabalhar simbolicamente −calcularemos as derivadas fx e fy ; para mais informacoes sobre os comandosDERVX e DERIV veja a p. 332.

3o ) Na primeira linha apos o FOR n montamos a lista

{X x(n) Y y(n) }

para posteriormente avaliarmos a funcao e suas derivadas com a utilizacaodo comando | (p. 321) Outra forma de substituicao. . .

Vamos resolver o exemplo anterior pelo metodo de Taylor de ordem p = 1(Euler), para efeitos de comparacao.

Exemplo: Calcule, pelo metodo de Taylor de ordem p = 1, a solucaoaproximada do seguinte PVI:

{

y′ = f(x, y) = x− y + 2

y(x0) = y(0) = 2

para x ∈ [ a, b ] = [ 0, 1 ] e N = 5 subintervalos.

Solucao: Utilizaremos o programa dado a p. 269. A funcao f(x, y) deveser declarada a parte, assim:

≪ → x y px− y + 2 p ≫

armazene este programa na variavel f .

Pois bem, entrando com os dados: 0 1 5 2; recebemos de volta o vetor:

[ 2 2.0000 2.0400 2.1120 2.2096 2.3277 ]

272

Page 275: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Utilizando a solucao exata, y(x) = e−x + x + 1, construimos a seguintetabela − na qual constam os erros locais de ambos os metodos.

n xi

Sol. exataSol. aprox.

( p=1 )

Sol. aprox.( p=2 )

Erro( p=1 )

Erro( p=2 )

0 0. 0 2. 0 2. 0 2. 0 0. 0 0. 0

1 0. 2 2. 0187 2. 0000 2. 0200 0. 0187 −0. 0013

2 0. 4 2. 0703 2. 0400 2. 0724 0. 0303 −0. 0021

3 0. 6 2. 1488 2. 1120 2. 1514 0. 0368 −0. 0026

4 0. 8 2. 2493 2. 2096 2. 2521 0. 0397 −0. 0028

5 1. 0 2. 3679 2. 3277 2. 3707 0. 0402 −0. 0028

Os respectivos erros foram calculados segundo a equacao (7.29) (p. 264).Como era de se esperar o metodo de Taylor de ordem p = 2 forneceu resul-tados mais precisos − que o de Euler.

Plotando as solucoes, temos:

p p−1 1

1

2

pp

0x

y

y(x)

p p−1 1

1

2

pp

0x

y

ւ p=2

տp=1

A “olho nu” as duas solucoes sao quase indistinguiveis, entretanto ospontos de uma encontram-se por sobre a curva (sol. exata) e a da outra porbaixo.

Vejamos mais um exemplo de aplicacao do programa.

Exemplo: Calcule, pelo metodo de Taylor de ordem p = 2, a solucaoaproximada do seguinte PVI:

y′ = f(x, y) =2y

x+ 1+ (x+ 1)3

y(x0) = y(0) = 3

para x ∈ [ a, b ] = [ 0, 1 ] e h = 0.2.

273

Page 276: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Solucao: Temos N = b−ah = (1− 0)/0.2 = 5. Entramos com os dados:

0 1 5 p2 ∗ Y/(X + 1) + (X + 1)∧ 3 p 3

O programa nos devolve o seguinte vetor:

[ 3.0000 4.6200 6.7779 9.5976 13.2222 17.8141 ]

A solucao exata do PVI e dada por:

y(x) =1

2[ (x+ 1)4 + 5(x+ 1)2 ]

Por exemplo, y(1) = 12 [ (1 + 1)4 + 5(1 + 1)2 ] = 18.

7.3.5 Metodos de Runge-Kutta

Se tentarmos prosseguir no metodo de taylor de ordem p (p. 265) surgemalguns incovenientes computacionais; por exemplo, deveremos tratar si-multaneamente com varias funcoes − f e suas derivadas −, o que aumentasignificativamente o espaco ocupado na memoria do computador. Apenaspara contextualizar, se, por teimosia, formos considerar a potencia seguinte(p = 3), alem da equacao (7.35) (p. 270), teremos ainda que considerar

y′′′n=

(fxx + 2fxy f + f2 fyy + fy fx + f2

yf)

(xn , yn )

que, convenhamos, ate para a HP 50g torna-se oneroso.

Estaremos agora considerando uma outra classe de metodos para a reso-lucao do PVI: Metodos de Runge-Kutta∗. Esses metodos possuem precisaoequivalentes aos metodos de Taylor com a vantagem de que evitam a neces-sidade do calculo de derivadas de ordem elevada. Entao,

Metodo de Runge-Kutta de ordem 1

O metodo de Runge-Kutta mais simples e o de primeira ordem dado por:

yn+1 = yn + hk1 , k1 = f(xn , yn)

Ora, mas este metodo nada mais e que o de Euler dado a p. 265.

Metodo de Runge-Kutta de ordem 2

Este metodo consiste no seguinte algoritmo†:

yn+1 = yn + h

2 (k1 + k2)

k1 = f(xn , yn)

k2 = f(xn + h, yn + hk1)

o qual tambem e conhecido como metodo de Euler aperfeicoado.

∗Carl David Tolme Runge (1856-1927) e Wilhelm Kutta (1867-1944).†Para a deducao (ou justificativa) deste, e dos metodos seguintes, o leitor podera

consultar alguma das obras listadas nas referencias.

274

Page 277: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O programa seguinte implementa o metodo em questao.

≪ → a b N yo

≪ −3 SF p(b− a)/N p EVAL ph p STO

a b FOR xi

xi

h STEP

N 1 + →ARRY px p STO

{ } N 1 + + yo CON py p STO

1 N FOR npf(x(n), y(n)) p EVAL pk1 p STOpf(x(n) + h, y(n) + h ∗ k1) p EVAL pk2 p STOpy(n) + h ∗ (k1 + k2)/2 p EVAL py(n+ 1) p STO

NEXT y

≫≫

Exemplo: Usando o metodo de Euler aperfeicoado, calcule a solucaodo PVI dado por:

{

y′ = f(x, y) = x− y + 2

y(x0) = y(0) = 2

para x ∈ [ a, b ] = [ 0, 1 ] e N = 5 subintervalos.

Solucao: A funcao f(x, y) e a mesma que foi declarada a p. 272.

Pois bem, entrando com os dados: 0 1 5 2; recebemos de volta o vetor:

[ 2 2.0200 2.0724 2.1514 2.2521 2.3707 ]

− Metodo de Euler modificado

Um outro metodo de Runge-Kutta tambem bastante utilizado e:

yn+1 = yn + h f

(xn + h

2 , yn + h2 k1

)

k1 = f(xn , yn)

o qual e conhecido como metodo de Euler modificado.

275

Page 278: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O programa a seguir implementa este metodo.

≪ → a b N yo

≪ −3 SF p(b− a)/N p EVAL ph p STO

a b FOR xi

xi

h STEP

N 1 + →ARRY px p STO

{ } N 1 + + yo CON py p STO

1 N FOR npf(x(n), y(n)) p EVAL pk1 p STOpy(n) + h ∗ f(x(n) + h/2, y(n) + h/2 ∗ k1) p EVAL

py(n+ 1) p STO

NEXT y

≫≫

Exemplo: Usando o metodo de Euler modificado, calcule a solucao doPVI dado por:

{

y′ = f(x, y) = x− y + 2

y(x0) = y(0) = 2

para x ∈ [ a, b ] = [ 0, 1 ] e N = 5 subintervalos.

Solucao: Entrando com os dados: 0 1 5 2; recebemos de volta o vetor:

[ 2 2.0200 2.0724 2.1514 2.2521 2.3707 ]

Utilizando a solucao exata, y(x) = e−x + x + 1, construimos a seguintetabela − comparando os diversos metodos.

n xi

Sol. exata EulerEuler

modificadoEuler

aperfeicoadoTaylor

ordem 2

0 0. 0 2. 0 2. 0 2. 0 2. 0 2. 0

1 0. 2 2. 0187 2. 0000 2. 0200 2. 0200 2. 0200

2 0. 4 2. 0703 2. 0400 2. 0724 2. 0724 2. 0724

3 0. 6 2. 1488 2. 1120 2. 1514 2. 1514 2. 1514

4 0. 8 2. 2493 2. 2096 2. 2521 2. 2521 2. 2521

5 1. 0 2. 3679 2. 3277 2. 3707 2. 3707 2. 3707

276

Page 279: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Inferimos que os metodos Euler modificado, Euler aperfeicoado e Taylorde ordem 2 nos fornecem os mesmos resultados; comparando com a solucaoexata vemos que estes tres metodos sao superiores ao de Euler (Taylor deordem 1), como era de se esperar.

Metodo de Runge-Kutta de ordem 3

Este metodo consiste no seguinte algoritmo:

yn+1 = yn + h

9 (2k1 + 3k2 + 4k3)

k1 = f(xn , yn)

k2 = f(xn + 12h, yn + 1

2hk1)

k3 = f(xn + 34h, yn + 3

4hk2)

O programa seguinte implementa o metodo em questao.

≪ → a b N yo

≪ −3 SF p(b− a)/N p EVAL ph p STO

a b FOR xi

xi

h STEP

N 1 + →ARRY px p STO

{ } N 1 + + yo CON py p STO

1 N FOR npf(x(n), y(n)) p EVAL pk1 p STO

pf(x(n) + h/2, y(n) + h/2 ∗ k1) p EVAL pk2 p STO

pf(x(n) + 3/4 ∗ h, y(n) + 3/4 ∗ h ∗ k2) p EVAL pk3 p STO

py(n) + h/9 ∗ (2 ∗ k1 + 3 ∗ k2 + 4 ∗ k3) p EVAL

py(n+ 1) p STO

NEXT y

≫≫Exemplo: Usando o metodo de Runge-Kutta de ordem 3, calcule a

solucao do PVI dado por:

{

y′ = f(x, y) = x− y + 2

y(x0) = y(0) = 2

para x ∈ [ a, b ] = [ 0, 1 ] e N = 5 subintervalos.

277

Page 280: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Solucao: Entrando com os dados: 0 1 5 2; recebemos de volta o vetor:

[ 2 2.0187 2.0702 2.1487 2.2492 2.3677 ]

Metodo de Runge-Kutta de ordem 4

Dentre os metodos de Runge-Kutta o mais popular e o de ordem 4, dadoa seguir:

yn+1 = yn + h

6 (k1 + 2k2 + 2k3 + k4)

k1 = f(xn , yn)

k2 = f(xn + 12h, yn + 1

2hk1)

k3 = f(xn + 12h, yn + 1

2hk2)

k4 = f(xn + h, yn + hk3)

Este metodo e muito difundido nas rotinas de calculo de computadores.

O programa seguinte implementa o metodo em questao.

≪ → a b N yo

≪ −3 SF p(b− a)/N p EVAL ph p STO

a b FOR xi

xi

h STEP

N 1 + →ARRY px p STO

{ } N 1 + + yo CON py p STO

1 N FOR npf(x(n), y(n)) p EVAL pk1 p STO

pf(x(n) + h/2, y(n) + h/2 ∗ k1) p EVAL pk2 p STO

pf(x(n) + 1/2 ∗ h, y(n) + 1/2 ∗ h ∗ k2) p EVAL pk3 p STO

pf(x(n) + h, y(n) + h ∗ k3) p EVAL pk4 p STOpy(n) + h/6 ∗ (k1 + 2 ∗ k2 + 2 ∗ k3 + k4) p EVAL

py(n+ 1) p STO

NEXT y

≫≫

278

Page 281: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Exemplo: Usando o metodo de Runge-Kutta de ordem 4, calcule a solucaodo PVI dado por:

{

y′ = f(x, y) = x− y + 2

y(x0) = y(0) = 2

para x ∈ [ a, b ] = [ 0, 1 ] e N = 5 subintervalos.

Solucao: Entrando com os dados: 0 1 5 2; recebemos de volta o vetor:

[ 2 2.0187 2.0703 2.1488 2.2493 2.3679 ]

Utilizando a solucao exata, y(x) = e−x + x + 1, construimos aseguinte tabela − comparando alguns metodos, incluindo os dois ultimosde Runge-Kutta.

n xi

Sol. exataEuler

modificadoRunge-Kuttaordem 3

Taylorordem 2

Runge-Kuttaordem 4

0 0. 0 2. 0 2. 0 2. 0 2. 0 2. 0

1 0. 2 2. 0187 2. 0200 2. 0200 2. 0187 2. 0187

2 0. 4 2. 0703 2. 0724 2. 0724 2. 0702 2. 0703

3 0. 6 2. 1488 2. 2514 2. 1514 2. 1487 2. 1488

4 0. 8 2. 2493 2. 2521 2. 2521 2. 2492 2. 2493

5 1. 0 2. 3679 2. 3707 2. 3707 2. 3677 2. 3679

A melhor precisao foi obtida com o Runge-Kutta de ordem 4 que coincidecom a solucao exata − com quatro casas decimais.

Vejamos mais um exemplo de aplicacao do programa.

Exemplo: Usando o metodo de Runge-Kutta de ordem 4, calcule a solucaodo PVI dado por:

y′ = f(x, y) =2y

x+ 1+ (x+ 1)3

y(x0) = y(0) = 3

para x ∈ [ a, b ] = [ 0, 1 ] e h = 0.2.

Solucao: A funcao f(x, y) deve ser declarada a parte, assim:

≪ → x y p2 ∗ y/(x+ 1) + (x+ 1)∧ 3 p ≫

Apos digitar: ENTERpf p STO

K.

Temos ainda, N = b−ah = (1− 0)/0.2 = 5. Entramos com os dados:

0 1 5 3

279

Page 282: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O programa nos devolve o seguinte vetor:

[ 3.0000 4.6365 6.8203 9.6759 13.3476 17.9984 ]

Considerando a solucao exata

y(x) =1

2[ (x+ 1)4 + 5(x+ 1)2 ]

temos:

yn(x) : [ 3.0000 4.6365 6.8203 9.6759 13.3476 17.9984 ]

y(x) : [ 3.0000 4.6368 6.8208 9.6768 13.3488 18.0000 ]

Compare com Taylor (p = 2) (que envolve derivadas): (p. 273)

yn(x) : [ 3.0000 4.6200 6.7779 9.5976 13.2222 17.8141 ]

y(x) : [ 3.0000 4.6368 6.8208 9.6768 13.3488 18.0000 ]

∗ ∗ ∗

[. . .] Com base em tais observacoes e analises matematicas, quantomais proximo das origens remontamos o universo, mais proximo chega-mos da perfeicao, a mais implicada de todas as ordens da realidade. Anatureza daquele vacuo perfeito pode conter a chave para o entendimentodo universo como um todo. Como comenta Leonard Susskind, fısico deStanford: “Qualquer um que sabe tudo sobre nada sabe tudo”.

(B. Alan Wallace/Dimensoes Escondidas, p. 147)

∗ ∗ ∗

Exegese da unidade hiperimaginaria (p. 82)

Sabemos que, dado um numero complexo z, a interpretacao geometricado produto i z e a de uma rotacao de 90o do complexo z − no sentidopositivo, isto e anti-horario.

Pretendemos saber o que acontece, geometricamente, quando multipli-camos um hipercomplexo w pela unidade hiperimaginaria j = (0, 1).

280

Page 283: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Inicialmente recordamos a formula para rotacao − de um angulo θ − deum ponto (x, y) no plano:

(x′, y′) = (x cos θ − y sen θ, x sen θ + y cos θ) (7.36)

Desta formula obtemos,

R( 90o ) = (x cos 90o − y sen 90o, x sen 90o + y cos 90o) = (−y, x)R(−90o ) = (x cos 90o + y sen 90o, −x sen 90o + y cos 90o) = (y, −x)

Seja w = (x, y) ∈ H, entao

(a, b) · (c, d) = ( a c ∓ b d, |a| d+ b |c| )(0, 1) · (x, y) =

(0 · x ∓ 1 · y, |0| · y + 1 · |x|

)

Entao,j w = (−y, |x| )

Entao,

Se x ≥ 0 ⇒ j w = (−y, x )Se x ≤ 0 ⇒ j w = (−y, −x ) = −1 · (y, −x )

Comparando estes resultados com as equacoes em R( 90o ) e R(−90o ),concluimos que pontos do lado direito do eixo y sao rotacionados de 90o nosentido anti-horario, assim:

0x

y

wjw

qq

q

e que pontos do lado esquerdo do eixo y sofrem uma rotacao de 90o nosentido horario seguida de uma reflexao em torno do eixo y, assim:

0x

y

w

jw

qqq

q

0x

y

w

jw

qqq

q

q

q

281

Page 284: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

∗ ∗ ∗

Aproveitando esta pagina, que ficaria ociosa, vamos combinar a equacaode Bernoulli com a minha formula (eq. (4.8), p. 99) para obter uma identidade.Temos:

1m + 2m + 3m + · · · + nm =

m∑

j=0

(n

j + 1

)

a(m−j)

Onde:

a(m−j)

=

j∑

k=0

(−1)k(j

k

)

(1− k + j)m

Vamos reescrever formula de Bernoulli (p. 102)

1m + 2m + 3m + · · · + nm =(n+ 1)m+1

m+ 1

+

m∑

k=1

(m

k

)B

k

m− k + 1(n+ 1)m−k+1

=

m∑

k=0

(m

k

)B

k

m− k + 1(n+ 1)m−k+1

Igualando o lado direito de ambas as equacoes, resulta:

m∑

k=0

(m

k

)B

k

m− k + 1(n+ 1)m−k+1 =

m∑

j=0

(n

j + 1

)

a(m−j)

Vamos abrir esta equacao para m = 2, por exemplo,

2∑

k=0

(2

k

)B

k

2− k + 1(n+ 1)2−k+1 =

2∑

j=0

(n

j + 1

)

a(2−j)

Os coeficientes a(2−j)

(j = 0, 1, 2) valem, 1, 3, 2, respectivamente.Entao, desenvolvendo, temos:

B0

(n+ 1)3

3+B1 (n+ 1)2 +B2 (n + 1) = n+

(n

2

)

· 3 +(n

3

)

· 2

uma identidade relacionando os tres primeiros coeficientes de Bernoulli.

282

Page 285: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Capıtulo 8TRACANDO GRAFICOS

Sois de tal modo levados a vos tomar

por tipos do Universo, que credes sem-

pre que fora do vosso mundo nao ha

mais nada. Pareceis verdadeiramente

com esses selvagens que nunca saıram de

sua ilha e creem que o mundo nao vai

mais longe. (O Livro dos Mediuns)

8.1 Grafico de funcoes

Introducao

Neste capıtulo trataremos da plotagem de graficos bidimensionais, fare-mos um estudo relativamente detalhado; mostraremos, ademais, como tra-balhar graficos dentro da estrutura de um programa, estaremos ainda tratandoda animacao de graficos e figuras− um recurso interessante que aHP 50g nosdisponibiliza.

Para acessar o ambiente de plotagem de graficos na calculadora, usamosa sequencia de teclas 2D/3D ( F4 D ):

PLOT SETUP�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Type: Function ∡RadEQ:

Indep: pX p Simult XConnect

H-Tick: 10. V-Tick: 10. XPixels

Choose type of plot

CHOOS AXES� ERASE DRAW

283

Page 286: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Atencao!: Se voce estiver usando o modo RPN estas duas teclas devem serpressionadas simultaneamente. Ou ainda: mantenha a tecla pressiona-da e, em seguida, pressione a tecla 2D/3D ( F4 D ).

− Um pixel e cada um dos pontos no visor da calculadora que pode serligado (escuro) ou desligado (claro) para produzir o texto ou graficos. Ovisor grafico da calculadora tem 131 pixels por 64 pixels.

Configuracoes:

• A marca em −Simult significa que se voce tem uma ou mais plotagens nomesmo grafico, eles serao plotados simultaneamente ao produzir o grafico.

• A marca em −Connect significa que a curva sera uma curva contınua emvez de um conjunto de pontos individuais.

• Uma marca em −Pixels significa que as marcas indicadas pelo H-Tick eV-Tick sera separadas por estes diversos pixels.

• O valor padrao para ambos por H-Tick e V-Tick e 10.

A tıtulo de ilustracao vamos plotar o grafico da funcao y = sinx. Aoentrar no ambiente grafico (como dito acima), em Type (tipo de plotagem)devemos ter Function, como no visor acima, (os tipos de plotagem estaodisponıveis na tecla virtual CHOOS ). Inicialmente certifique-se que suacalculadora esteja operando no modo angular radiano (veja o campo superiora direita do visor); apos “desca” com o botao △para EQ (‘EQ’ e a variavelque armazena o objeto que ira ser plotado, por exemplo a equacao da funcaoa ser desenhada), abra plics e digite sin(x ), em seguida pressione ENTER .

Agora vamos redimensionar a janela de plotagem, isto e, vamos escolher,por exemplo, plotar esta funcao no intervalo [ 0, 2π ]. Para isto pressione,simultaneamente, as teclas WIN ( F2 B ):

PLOT WINDOW - FUNCTION�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

H-View: -6.5 6.5

V-View: -3.9 4.Indep Low: Default High : Default

Step: Default pixel

Enter MiniMUM horizontal value

EDIT AUTO ERASE DRAW

Para o valor mınimo de x digite 0 e pressione ENTER . Para colocar 2πno extremo direito de H-View, pressione NXT

Lem seguida a tecla virtual

CALC . Delete o valor anterior (isto e, 6.5) coloque na pilha os valores 2 eπ multiplique-os e pressione OK . Para preencher os dois argumentos dafaixa vertical, V-View, voce tem duas opcoes: digita diretamente os valores,

284

Page 287: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

por exemplo,H-View : −1.0 1.0

ou digita a tecla virtual AUTO (automatico). Finalmente, pressione asteclas virtuais: ERASE DRAW , para obter um grafico similar ao seguinte:

ZOOM (X,Y) TRACE FCN EDIT CANCL

Nota: ERASE apaga algum eventual grafico que tenha sido tracadoanteriormente; enquanto DRAW traca o novo grafico.

Se o leitor quiser apagar o menu − para uma melhor visualizacao dografico − digite a sequencia de teclas:

EDIT NXTL

MENU

Plotando funcoes definidas por mais de uma sentenca

Vamos plotar, por exemplo, o grafico da funcao definida por:

f(x) =

−x, se x ≤ −1;1, se − 1 < x ≤ 1;

x2, se x > 1.

O grafico dessa funcao e como a seguir

p p p

1

2

3

4

ppp −1−2−3

pp

pp

0 1 2 3x

y=f(x)

285

Page 288: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Inicialmente convertemos a funcao em um programa, assim:

≪IF px ≤ −1pTHEN p − x p

ELSE

IF px > −1 AND x ≤ 1 p

THEN 1

ELSE px ∧ 2p

END

END

Armazene este programa na variavel EQ: pEQp STOK . Agora entre no

ambiente grafico, com:

2D/3D ( F4 D )

(Simultaneamente). Observe que o programa a ser plotado ja se encontranesta janela.

Cancele, ON , e redimensione a janela de plotagem, WIN ( F2 B ),digite os seguintes valores:

PLOT WINDOW - FUNCTION�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

H-View: -2 2

V-View: -0.5 2Indep Low: Default High : Default

Step: Default pixel

Enter MiniMUM horizontal value

EDIT AUTO ERASE DRAW

Em seguida, ERASE DRAW .

8.1.1 Gerando uma tabela de valores para uma funcao

A combinacao TBLSET ( F5 E ) pressionadas simultaneamente, seestiver no modo RPN, permite que o usuario produza uma tabela de valo-res de funcoes. Por exemplo, produziremos uma tabela da funcao dada pory = x2, no intervalo 0 ≤ x ≤ 1 seguindo estas instrucoes:

• Geraremos valores desta funcao, definidos acima para valores de x de 0ate 1, com aumentos de 0.2.

286

Page 289: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Primeiro, precisamos assegurar que o tipo de grafico esta configuradopara FUNCTION no visor PLOT SETUP( 2D/3D ( F4 D )). O campona frente da opcao Type sera ressaltado. Se este campo nao estiver aindaconfigurado para FUNCTION pressione o menu CHOSS e selecione a opcaoFUNCTION e depois pressione OK .

• Depois pressione

para ressaltar o campo na frente da opcao EQ e digitea expressao da funcao: x2 e pressione OK .

• Para aceitar as alteracoes feitas no visor PLOT SETUP pressione NXTL

OK . Voce retornara ao visor normal da calculadora.

• A proxima etapa e acessar o visor Table Setup usando a combinacao deteclas TBLSET ( F5 E ). Isto produzira um visor onde voce podeselecionar o valor de inıcio (Start) e os aumentos (Step). Insira o seguinte:

0 OK 0.2 OK 0.5 OK OK

Apos o ultimo OK voce retornara a tela normal da calculadora.

• Para ver a tabela, pressione TABLE ( F6 F ) − simultaneamente se es-tiver no modo RPN. Isto produzira uma tabela de valores de x = 0, 0.2, . . .e os valores correspondentes de f(x), listados como Y 1 por definicao. Vocepode usar as teclas com botoes prateados para mover-se ao redor na tabela.Observara que nao tivemos que indicar um valor final para a variavel inde-pendente x. Assim, a tabela continua alem do valor maximo para x sugeridoanteriomente.

Algumas opcos disponıveis enquanto a tabela estiver visıvel sao ZOOM ,

BIG e DEFN :

• A tecla DEFN quando selecionada mostra a definicao da variavel inde-pendente.

• A tecla BIG altera apenas a fonte na tabela de pequena para grande evice versa. Tente isto.

• A tecla ZOOM , quando pressionada, produz um menu com as opcoes:In, Out, Decimal, Integer e Trig. Tente os seguintes exercıcios:

• Com a opcao In ressaltada, pressione OK . A tabela e expandida paraque o aumento de x seja agora 0.1 em vez de 0.2. O que a calculadora faze apenas multiplicar o aumento original 0.2 pelo fator de zoom 0.5 paraproduzir o novo aumento de 0.1. Assim a opcao zoom in e util quando vocequer mais resolucao para os valores de x na sua tabela.

• Para recuperar o aumento x anterior pressione ZOOM △ OK paraselecionar a opcao Un-zoom.

• A opcao Decimal em ZOOM produz aumentos x de 0.10.

287

Page 290: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

• A opcao inteira em ZOOM produz aumentos x de 1.

• A opcao Trig em ZOOM produz aumentos relacionados com as fracoesde π, sendo entao uteis quando plota tabelas de funcoes trigonometricas.

• Para retornar ao visor normal da calculadora pressione ENTER .

− Para gerar tabelas de funcoes dadas na forma parametrica ou emcoordenadas polares o procedimento e o mesmo. Apenas ressaltamos queantes devemos ir ao visor PLOT SETUP( 2D/3D ( F4 D )) e configuraro tipo de plotagem, EQ, etc., conforme seja o caso.

Nota: Uma equacao parametrica deve ser digitada em EQ como

p x(t) + i ∗ y(t)p

Observamos que na notacao de numeros complexos temos

x(t) + i ∗ y(t) =(x(t), y(t)

)

8.2 Gerando plotagens com programas

Um importante recurso que a calculadora nos disponibiliza e a plotagemde graficos via programas. Antes necessitamos conhecer algumas variaveisconstantes do menu PLOT. Para acessar este menu digite a seguinte sequenciade teclas

81.01 ALPHA ALPHA MENU ENTER

81.01 e o numero do menu PLOT. Nas teclas de menus (embaixo) teremostodos os (sub)menus do menu PLOT:

PTYPE PPAR EQ ERASE DRAX DRAW

Pressione NXTL para ir a proxima pagina:

3D STAT FLAG LABEL AUTO INFO

Lembramos da seguinte combinacao PREV ( NXTL

) para retornamosa pagina anterior do menu.

A seguir vamos descrever os comandos no menu PLOT, caso persistaalguma duvida oportunamente daremos alguns exemplos para melhor es-clarecimento. Pedimos um pouco de paciencia.

Descricao do menu PLOT

O seguinte diagrama mostra os menus no PLOT.

288

Page 291: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

PLOT

PTYPE PPAR EQ ERASE DRAX DRAW

3 D STAT FLAG LABEL AUTO INFO

Vamos as descricoes:

PTYPE : Este menu contem as seguintes teclas de menu:

1 :2 :

FUNCT CONIC POLAR PARAMTRUTH DIFFE

Estas teclas correspondem aos tipos de plotagens Function, Conic, Polar,Parametric, Truth e Diff Eq. Estas opcoes sao descritas a seguir.

Function: Para as equacoes da forma y = f(x), em coordenadas carte-sianas;

Conic: para equacoes conicas de plotagem (cırculos, elipses, hiperboles eparabolas)

Polar: Para equacoes da forma r = f(θ) em coordenadas polares no plano;

Parametric: Para equacoes de plotagem da forma x = x(t), y = y(t) noplano;

Truth : Para desigualdades de plotagem no plano;

Diff Eq : Para plotagem da solucao numerica de uma equacao diferenciallinear.

Pressione NXTL

PLOT para retornar ao menu PLOT.

PPAR : O seguinte diagrama ilustra as funcoes disponıveis no menu PPAR(Parametros de Plotagem):

289

Page 292: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

PPAR

INDEP DEPND XRNG YRNG RES RESET

CENTR SCALE SCALEW SCALEH AXES ATICK

PPAR INFO

Graficos bidimensionais

Para os graficos bidimensionais gerados por funcoes, a saber, Function,Conic, Parametric, Polar, Truth e Differential Equation, use PPAR com oseguinte formato:

{ (xmin, ymin) (xmax, ymax) indep res axes ptype depend }

Com a seguinte correspondencia

Coordenadas definidas pelo usuario

(xmin

, ymax) (xmax , ymax)

(xmin

, ymin

) (xmax , ymin)

INDEP : O comando INDEP especifica a variavel independente e sua faixa deplotagem. Estas especificacoes sao armazenadas como o terceiro parametrona variavel PPAR. O valor padrao e pX p . O valor que pode ser atribuıdoas especificacoes das variaveis independentes sao:

• O nome da variavel ex. pVel p

• O nome da variavel em uma lista, ex. {Vel }• O nome da variavel e uma faixa em uma lista, ex. {Vel 0 20 }• Uma faixa sem um nome de variavel, ex. { 0 20 }

290

Page 293: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

• Dois valores representando uma faixa, ex. 0 20

Em um programa, qualquer uma destas especificacoes serao seguidas pelocomando INDEP.

DEPND : O comando DEPND especifica o nome da variavel dependente.Para o caso de plotagens TRUTH especifica tambem a faixa de plotagem;O padrao e Y. O tipo de especificacoes para a variavel DEPND e o mesmopara a variavel INDEP.

XRNG e YRNG : O comando XRNG especifica a faixa de plotagem parao eixo x enquanto o comando YRNG especifica a faixa de plotagem para oeixo y. A entrada para qualquer um destes comandos sao os dois numerosque representam os valores mınimos e maximos de x ou y. Os valores dasfaixas dos eixos x e y sao armazenados em pares ordenados (xmin, ymin)e (xmax, ymax) nos dois primeiros elementos da variavel PPAR. Os valo-res padroes para xmin e xmax sao -6.5 e 6.5, respectivamente. Os valorespadroes para ymin e ymax sao -3.1 e 3.2, respectivamente.

RES : O comando RES (resolucao) especifica o intervalo entre os valoresda variavel independente ao produzir uma plotagem especıfica. A resolucaopode ser expressa em termos de unidades de usuario como um numero realou em termos de pixels como um inteiro binario (numeros comecando com#, ex. #10). A resolucao e armazenada como o quarto item na variavelPPAR.

RESET : Este botao reajustara os parametros de plotagem para os valorespadrao.

CENTR : O comando CENTR toma como argumento um par ordenado (x,y)ou um valor de x, e ajusta os dois primeiros elementos na variavel PPAR,ex. (xmin, ymin) e (xmax, ymax), para que o centro da plotagem seja (x,y)ou (x,0), respectivamente.

SCALE : O comando SCALE determina a escala de plotagem representadapelo numero de unidades de usuario por marca selecionada. A escala padraoe 1 unidade de usuario por marca de selecao. Quando o comando SCALE forusado, toma como argumento dois numeros, xscale e yscale, representandoas novas escalas horizontal e vertical. O efeito do comando SCALE e ajus-tar os parametros (xmin, ymin) e (xmax, ymax) no PPAR para acomodara escala desejada. O centro da plotagem ee preservado.

SCALEW : Dado um fator xfactor, o comando SCALEW multiplica a escalahorizontal pelo fator. W na SCALEW significa largura (width). A execucaode SCALEW altera os valores de xmin e xmax no PPAR.

SCALEH : Dado um fator yfactor, o comando SCALEH multiplica a escala

291

Page 294: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

vertical pelo fator. H na SCALEH significa altura (height). A execucao deSCALEW altera os valores de ymin e ymax no PPAR.

ATICK : O comando ATICK (marca TICK no eixo) e usada para configuraras anotacoes de marca de selecao para os eixos. O valor de entrada para ocomando ATICK pode ser um dos seguintes:

• Um valor real x: configura ambas anotacoes de selecao do eixo x e y paraas unidades x;

• Uma lista de dois valores reais { x y }: configura as anotacoes de selecaonos eixos x e y para as unidades x e y, respectivamente;

• Um numero inteiro binario A #n: configura ambas anotacoes de selecaodo eixo x e y para os pixels #n

Uma lista de dois numeros inteiros binarios { #n #m }: configura as ano-tacoes de selecao nos eixos x e y para as unidades #n e #m, respectiva-mente.

AXES : O valor de entrada para o comando dos eixos consiste de um parordenado (x,y) ou uma lista { (x,y) atick “marca de eixo x” “marca de eixoy” }. O parametro atick significa a especificacao das anotacoes de marca deselecao conforme descrito acima no comando ATICK. Os pares ordenadosrepresentam o centro da plotagem. Se apenas o par ordenado for dado comoentrada para os AXES, apenas a origem do eixo e alterada. O argumentopara o comando AXES, se um par ordenado ou uma lista de valores, e ar-mazenado como o parametro no PPAR.

PPAR , INFO : Se no menu PLOT pressionarmos a tecla de menu PPAR

ou a tecla INFO obteremos uma lista das configuracoes PPAR atuais, porexemplo

RAD XYZ HEX R∼ pX p

{HOME GRAF.} 08:40 , 14 : JUN

1��2��

Indep X��

Depnd Y��

Xrng − 6.5 6.5��

Yrng − 3.9 4.��

Res 0.��

PPAR INFO PLOT

Voltando a arvore do menu PLOT (p. 289), continuemos com as descricoes:

EQ : O nome da variavel EQ e reservado pela calculadora para ar-mazenar a equacao atual em plotagens. A tecla do menu marcada EQ nestemenu pode ser usada como seria se tivesse seu menu de variavel, ex. sepressionar EQ listara o conteudo atual desta variavel.

292

Page 295: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

ERASE : A funcao ERASE apaga o conteudo atual da janela do grafico.Na programacao, pode ser usada para assegurar que a janela do grafico estalimpa antes de plotar um novo grafico.

DRAX : A funcao DRAX desenha os eixos na plotagem atual, se algumdeles estiver visıvel.

DRAW : A funcao DRAW desenha a plotagem definida no PPAR.

LABEL : Esta funcao LABEL e usada para marcar os eixos em uma plotagemincluindo os nomes das variaveis e os valores mınimos e maximos dos eixos.Estes nomes de variaveis sao selecionados da informacao contida na variavelPPAR.

Nota: Nao faremos a descricao completa das funcoes dentro do menu PLOT,as anteriores sao suficientes para os nossos propositos.

Antes de exemplificar como gerar graficos atraves de programas iremos− para facilitar nossa vida posteriormente − necessitar ter acesso ao menuPLOT. Dissemos anteriormente que o acesso a esse menu pode da-se pelasequencia

81.01 ALPHA ALPHA MENU ENTER

para evitar ter que digitar tudo isso vamos atribuir esse menu a uma tecla,assim:

Tecla definida pelo usuario para o menu PLOT

Insira as seguintes teclas para determinar se tem qualquer tecla definidapelo usuario ja armazenada na sua calculadora.

PRG NXTL

MODES KEYS RCLKE (8.1)

A menos que tenha algumas teclas definidas pelo usuario, sera obtido emretorno uma lista contendo um S, ex. {S}. Isto indica que o teclado padraoe a unica definicao de tecla na sua calculadora.

Para a tecla definida pelo usuario, e necessario adicionar a esta lista umcomando ou programa seguido por uma referencia para a tecla (consulte osdetalhes no Apendice − p. 316). Digite a seguinte lista na pilha

{ S ≪ 81.01 MENU ≫ 13.0 }

use a funcao STOKEYS ( PRG NXTL MODES KEYS STOKE ) para a

tecla definida pelo usuario F3 C como o acesso ao menu PLOT.Verifique se tal lista foi armazenada na calculadora usando a sequencia

dada em (8.1). Para ativar uma tecla definida pelo usuario, e necessariopressionar USER (na mesma tecla ALPHA ) antes de pressionar atecla ou combinacao de tecla de interesse.

293

Page 296: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Para ativar o menu PLOT, com a definicao de tecla usada acima,pressione: USER F3 C .

Observe que depois de pressionar USER o visor mostra a especi-ficacao 1US na segunda linha do visor.

Pois bem, voce obtera o seguinte menu

1 :2 :

PTYPE PPAR EQ ERASE DRAX DRAW( ∗ )

Pressione NXTL

para mover para a proxima pagina desse menu

1 :2 :

3D STAT FLAG LABEL AUTO INFO

Nao esqueca que pressionando o menu PTYPE (em ( ∗ )) temos acessoaos tipos de plotagem:

1 :2 :

FUNCT CONIC POLAR PARAM TRUTH DIFFE

Pressionando NXTL

PLOT retornamos ao menu PLOT.

Pressionando o menu PPAR (em ( ∗ )) temos acesso aos parametrosde plotagem:

1 :2 :

INDEP DEPND XRNG YRNG RES RESET · · ·

Pois bem, antes de iniciar a digitacao do proximo programa, reinicie omenu PLOT ( USER F3 C ).

294

Page 297: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

8.2.1 Exemplos de plotagens geradas por programas

Agora ilustraremos com alguns exemplos a utilizacao das funcoes des-critas anteriormente.

Exemplo 1 − Uma plotagem de funcao. O programa a seguir plota o graficoda funcao dada por y = sen (x):

≪ :Inicia o programa

{ PPAR EQ } PURGE :Exclue o PPAR e EQ atuais

p SIN(x) p STEQ :Armazena a funcao sin(x) no EQ

p x p INDEP :Configura a variavel independente para x

p y p DEPND :Configura a variavel dependente para y

FUNCTION :Tipo de plotagem

{ (0., 0.) { .4 .2 } p px p p p py= sen(x)p p } AXES :Intersecao dos eixos

:Marcas nos eixos

:Rotulos nos eixos

0 6.28 XRNG :Configura a faixa x

-1 1 YRNG :Configura a faixa y

ERASE DRAW DRAX LABEL :Apaga e desenha, eixos e etiquetas

PICTURE :Reativa o visor de graficos para a pilha

≫ :Finaliza o programa

Armazene esse programa na variavel PLOT1. Execute-o. Se o leitorquiser apagar o menu − para uma melhor visualizacao do grafico − digite asequencia de teclas:

EDIT NXTL

MENU

Apos o que sera mostrado:

y= sen(x)

0.

x6.28

295

Page 298: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Adendo: Algo que sempre me incomodou∗ em graficos tais como o acimafoi o “espacamento” nas marcas dos eixos x e y. No caso deste grafico eugostaria que as marcas coincidissem com os pontos de maximo e mınimo dafuncao, tipo:

0π2

π 3π2

Encontrei uma solucao para este “problema”, a qual desejo compartilharcom quem interessar possa. Antes vejamos o que seja:

Coordenadas de pixel

A figura abaixo mostra as coordenadas graficas para o visor tıpico (mınimo)de 131×64 pixels. As coordenadas de pixels sao medidas do canto esquerdosuperior do visor {#0h #0h }, que corresponde as coordendas definidaspelo usuario (xmin, ymax). As coordenadas maximas em termos de pi-xels correspondem ao canto direito inferior do visor {#83h #40h }, quenas coordenadas definidas pelo usuario e o ponto (xmax, ymin). As coorde-nadas dos outros dois cantos ambos em pixel como tambem nas coordenadasdefinidas pelo usuario sao mostradas na figura.

(xmin, ymax){#0h #0h }

(xmax , ymax){#83h #0h }

(xmin, ymin){#0h #40h }

(xmax , ymin){#83h #40h }

131×64 pixels

Os valores entre chaves (coordenadas de pixels) sao em hexadecimal (base16). Existe a seguinte correspondencia entre a base decimal e a base hexa-decimal:

D = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, . . .}

H = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, 13, . . .}∗Desde os meus primeiros tempos de HP., HP48g.

296

Page 299: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Por exemplo, 131 (largura da tela em pixels) na base 10 correspondea 83h (83 na base hexadecimal). Vejamos como obter essa conversao napropria HP. Digite a seguinte sequencia de teclas

MTH BASE

Deveremos estar numa tela semelhante a esta:

RAD XYZ HEX R∼ pX p

{HOME PLOTP} 21:34 14 : JUN

A marca deve estar aqui.

1��2��3��4��5��6��7��

HEX DEC OCT BIN� R→B B→R

Agora digite: 131 ENTER R→B , para obter # 83h.

A conversao contraria se da assim:

83h = 8 · 161 + 3 · 160 = 128 + 3 = 131d

Para obter essa conversao na HP digite: # 83 ENTER B→R , para obter 131.

Agora vejamos como redimensionar a tela de plotagem∗:

PDIM

A funcao PDIM toma como entrada um dos dois pares ordenados(xmin, ymin) ou (xmax, ymax) ou dois numeros inteiros binarios #h e#v. O efeito de PDIM e redimensionar a variavel grafica PICT†. Quando oargumento for (xmin, ymin)-(xmax, ymax), estes valores tornam-se a faixadas coordenadas definida pelo usuario no PPAR (variavel que armazenaparametros para plotagem). Quando o argumento for #h e #v, as faixasdas coordenadas definidas pelo usuario no PPAR se mantem inalteradas,porem o tamanho dos graficos sao alterados para #h×#v pixels.

Por exemplo, vamos redimensionar a tela grafica para 131 × 80 pixelsexecute (se necessario) a seguinte sequencia de teclas:

MTH BASE

Em seguida,131 R→ B 80 R→ B

∗Para unificar a minha e a sua calculadora em um mesmo tamanho de tela.†Variavel chamada PICT armazena o conteudo atual da janela dos graficos.

297

Page 300: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Agora digite PDIM e pressione ENTER . As novas dimensoes da nossatela sao:

{#0h #0h } {#83h #0h }

{#0h #50h } {#83h #50h }

131×80 pixels

A dimensao mınima de PICT e 131× 64 pixels e a maxima e 2048 pixelsna largura e sem restricao na altura. Se seu PICT for maior do que o visor,entao o grafico PICT pode ser visto como um domınio bidimensional quepode ser rolado atraves do visor da calculadora.

A tıtulo de exemplo, vamos voltar a plotar o grafico da funcao y =sen (x) − tendo em conta as instrucoes dadas a partir da pagina 283 −Entao, agora que ja fixamos as dimensoes de nossa tela de plotagem, lem-bramos que na janela PLOT SETUP (acesso 2D/3D ( F4 D )):

PLOT SETUP�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Type: Function ∡RadEQ: SIN(x)

Indep: pX p Simult XConnect

H-Tick: 10. V-Tick: 10. XPixels

Enter function(s) to plot

EDIT AXES� ERASE DRAW

o valor H-Tick: 10. significa que entre duas marcas consecutivas temos 10pixels. Entao, vamos aumentar o numero de pixels entre marcas consecuti-vas, resolvendo para tanto a seguinte regra de tres:

2π ←→ 131

π

2←→ x ⇒ x =

131

4= 32.75

298

Page 301: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Portanto, basta fazer: H-Tick: 32.75. De igual modo podemos contro-lar as marcas no eixo y. Apos o tracado deveremos ter o seguinte grafico(eliminando o menu):

Vejamos como controlar as marcas no modo de programacao. Faca asseguintes alteracoes no programa PLOT1: (p. 295)

≪ :Inicia o programa

{ PPAR EQ } PURGE :Exclue o PPAR e EQ atuais

p SIN(x) p STEQ :Armazena a funcao sin(x) no EQ

p x p INDEP :Configura a variavel independente para x

p y p DEPND :Configura a variavel dependente para y

FUNCTION :Tipo de plotagem

{ (0., 0.) p px p p p py= sen(x)p p } AXES :Intersecao dos eixos

:Rotulos nos eixos

0 6.28 XRNG :Configura a faixa x

-1 1 YRNG :Configura a faixa y-1 1 YRNG :Configura a faixa y

131 4 / R→B :Marcas (4 espacamentos) no eixo x

80 8 / R→B :Marcas (8 espacamentos) no eixo y

2 →LIST ATICK :Monta uma lista para o comando ATICK

ERASE DRAW DRAX LABEL :Apaga e desenha, eixos e etiquetas

PICTURE :Reativa o visor de graficos para a pilha

≫ :Finaliza o programa

Executando esse programa sera mostrado (apos eliminar o menu):

299

Page 302: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

y= sen(x)

0.

x6.28

Exemplo 1.1 − Modificaremos o programa anterior para plotar o graficoda funcao dada por

y = a sen (b x+ c)

onde a, b e c serao parametros de entrada. O programa nos permitiraavaliar a influencia de cada um desses parametros no grafico da funcao.

≪ p pEntre com a, b e c p p PROMPT → a b c

≪ { PPAR EQ } PURGE

p a* SIN(b* x+c) p STEQ

p x p INDEP

p y p DEPND

FUNCTION

{ (0., 0.) p px p p p pyp p } AXES

0 6.28 XRNG

-2 2 YRNG

131 4 / R→B

80 8 / R→B

2 →LIST ATICK

DRAW DRAX LABEL

PICTURE

300

Page 303: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Antes de rodar rodar esse programa − pela primeira vez − devemos apa-gar (ERASE) qualquer grafico anterior. Observe que retiramos o comandoERASE da penultima linha do programa. Devemos executa-lo algumas vezespara observar-mos a influencia dos parametros.

Pois e, o programa acima possui dois inconvenientes: Devemos, antes deroda-lo a primeira vez, apagar qualquer grafico anterior e, ademais, teremosque executa-lo (inicia-lo) varias vezes.

Estive pensando como fazer um programa que contorne esses dois pro-blemas. Encontrei a seguinte solucao: o programa anterior sera subrotinade um programa principal, para isso vamos altera-lo da seguinte forma:

≪ → a b c

≪ { PPAR EQ } PURGE

p a* SIN(b* x+c) p STEQ

p x p INDEP

p y p DEPND

FUNCTION

{ (0., 0.) p px p p p pyp p } AXES

0 6.28 XRNG

-2 2 YRNG

131 4 / R→B

80 8 / R→B

2 →LIST ATICK

DRAW DRAX LABEL

≫≫

301

Page 304: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Salve essa alteracao na variavel PLOT3. O programa principal ficaraassim:

≪ p pEntre com uma matriz Mx3 p p PROMPT → M

≪ ERASE 1 M DUP

SIZE OBJ→ DROP DROP

ROT SWAP

FOR I

1 ROW− OBJ→ DROP PLOT3

NEXT PICTURE

≫≫

Nesse programa devemos entrar com uma matriz de M Linhas por 3colunas. Em cada uma das linhas da matriz teremos os parametros a, be c para uma plotagem. Para compreender como funciona esse programaexecute-o no DBUG. Por exemplo, entrando com a matriz a seguir

1 1 01.5 1 02 1 0

observamos qual a influencia do parametro a, no grafico da funcao:

y = a sen (b x+ c)

Ele altera a amplitude do grafico, veja:

y

0.

x6.28

302

Page 305: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

A seguinte matriz

[2 1 02 2 0

]

mostra o que acontece quando dobramos o parametro b, veja:

y

0.

x6.28

o perıodo da funcao reduz-se a metade.

Exemplo 2 − Uma plotagem parametrica. O programa a seguir plota ografico da funcao dada em coordenadas parametricas por

x(t) = sen (t), y(t) = sen 2 t

≪ RAD 1 FIX

{ PPAR EQ } PURGE

p SIN(t)+ i* SIN(2* t)p STEQ

{ t 0 6.29 } INDEP

p y p DEPND

PARAMETRIC

{ (0., 0.) { .5 .5 } p px(t) p p p py(t)p p } AXES

−2 2 XRNG

−2 80 131 / * 2 80 131 / * YRNG

131 4 / R→B

80 4 / R→B

2 →LIST ATICK

ERASE DRAW DRAX LABEL

PICTURE

≫303

Page 306: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Apos rodar o programa deveremos obter algo como

y(t)1.2

-1.2

x(t)

2.0-2.0

Exemplo 3 − Uma plotagem Polar. O grafico de qualquer uma dasequacoes

r = a sen kθ ou r = a cos kθ

origina uma rosacea de N folhas, onde

N =

k se k e um inteiro ımpar;

2k se k e um inteiro par.

O programa a seguir recebe k e plota a rosacea correspondente (a estafixado no programa):

≪ → k

≪ RAD 1 FIX

{ PPAR EQ } PURGE

p 1* SIN(k* t) p STEQ

{ t 0 6.29 } INDEP

p y p DEPND

POLAR

(0., 0.) { .5 .5 } p pk = p p k + p py(t)p p 4 →LIST AXES

−2 2 XRNG

−2 80 131 / * 2 80 131 / * YRNG

131 4 / R→B

80 4 / R→B

2 →LIST ATICK

ERASE DRAW DRAX LABEL

PICTURE

≫≫

304

Page 307: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

A figura a seguir mostra o resultado para tres valores do parametro

y(t)1.2

-1.2

k=2

2.0-2.0

y(t)1.2

-1.2

k=3

2.0-2.0

y(t)1.2

-1.2

k=4

2.0-2.0

8.3 Desenhos via programacao

Veremos agora alguns comandos programaveis e que sao uteis para de-senhos:

LINE

Este comando toma como entrada dois pares ordenados (x1 , y1) (x2 , y2)ou dois pares de coordenadas de pixel {#n1 #m1 } {#n2 #m2 }. Desenhaa linha entre estas coordenadas.

TLINE

Este comando (Alterna LINHA) toma como entrada dois pares ordena-dos (x1 , y1) (x2 , y2) ou dois pares de coordenadas de pixel {#n1 #m1 }{#n2 #m2 }. Desenha a linha entre estas coordenadas, alternando o es-tado (ligando ou desligando) os pixels que estao no caminho da linha e viceversa.

BOX

Este comando toma como entrada dois pares ordenados (x1 , y1) (x2 , y2)ou dois pares de coordenadas de pixel {#n1 #m1 } {#n2 #m2 }. Desenhaa caixa cujas diagonais sao representadas pelos dois pares de coordenadasna entrada.

ARC

Este comando e usado para desenhar um arco. ARC toma como entradaos seguintes objetos:

• As coordendas do centro do arco como (x, y) nas coordenadas do usuarioou {#n, #m } em pixels.

• Raio de um arco como r (coordenadas do usuario) ou #k (pixels).

• angulos inicial θ1 e final θ2 .

PIX?, PIXON e PIXOFF

Estas funcoes tomam como entrada as coordenadas do ponto nas coor-denadas do usuario, (x, y), ou em pixels {#n, #m }.

305

Page 308: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

• PIX? Verifica se o pixel no local (x, y) ou {#n, #m } esta ligado.

• PIXOFF desliga o pixel no local (x, y) ou {#n, #m }• PIXON liga o pixel no local (x, y) ou {#n, #m }.PVIEW

Este comando toma como entrada as coordenadas de um ponto comocoordenadas do usuario (x, y) ou pixels {#n, #m } e coloca o conteudo dePICT com o canto esquerdo superior no local do ponto especificado. Vocepode usar tambem uma lista vazia como argumento quando a imagem forcentrada no visor. PVIEW nao ativa o cursor dos graficos ou o menu daimagem. Para ativar qualquer uma das caracterısticas use PICTURE.

PX→C

A funcao PX→C converte as coordenadas de pixel {#n, #m } para ascoordenadas da unidade de usuario (x, y).

C→PX

A funcao C→PX converte as coordenadas de unidade do usuario (x, y)para coordenadas de pixel {#n, #m }.

8.3.1 Exemplos de programas usando as funcoes de desenho

Como um primeiro exemplo considere o programa a seguir∗

≪ → θ

≪ DEG ERASE

131 R→B 80 R→B PDIM

−2 2 XRNG

−2 2 YRNG

(0, 0) 1 0 360 ARC

(0, 0) θ COS 0 R→C LINE

(0, 0) 0 θ SIN R→C LINE

{ } PVIEW

≫≫

1

2

3

4

5

6

7

8

9

Comentarios:

1 : O valor (angulo) que deve ser fornecido ao programa e armazenado navariavel θ;

∗Acesse θ digitando: ALPHA COS T

306

Page 309: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

2 : Fixa a calculadora no modo grau e apaga eventuais graficos plotadosanteriormente;

3 : Dimensiona a tela em 131× 80 pixels;

4 : Fixa a faixa (range) do eixo x;

5 : Fixa a faixa (range) do eixo y;

6 : Desenha um cırculo de centro na origem e raio 1;

7 : Traca uma linha da origem (0, 0) ao ponto (cos θ, 0);

8 : Traca uma linha da origem (0, 0) ao ponto (0, sen θ);

9 : Mostra a imagem final.

O programa acima recebe um angulo, em graus, e desenha o seno e ocosseno do angulo, por exemplo:

θ = 0o θ = 45o θ = 90o

Sendo o seno de 45o igual ao cosseno desse mesmo angulo, observe nafigura do centro que ha uma “distorcao”, o mesmo se verifica na figura dadireita haja vista que o seno de 90o e igual a 1 (raio do cırculo). O queestaria acontecendo?

A distorcao se deve a que no programa (linha 3 ) a dimensao da telafoi fixada em 131× 80 pixels, portanto um retangulo (e nao um quadrado).Para resolver esse problema edite a linha 5 (range do y), assim:

−2 80 131 / ∗ 2 80 131 / ∗ YRNG

Rodando novamente o programa para cada um dos valores da figura an-terior, obtemos:

θ = 0o θ = 45o θ = 90o

307

Page 310: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Rotacao de um ponto em torno da origem

Na figura a seguir

R

R

0

s(x, y)

R

R

0

s

θ

(x, y)

(x′, y′)= ?

a transformacao Fθexecuta uma rotacao de um ponto de coordenadas (x, y)

em torno da origem. θ e um angulo arbitrariamente fixado.Em livros de algebra linear prova-se que as coordenadas do ponto rota-

cionado sao dadas por :

{

x′ = x cos θ − y sen θ

y′ = x sen θ + y cos θ(8.2)

O programa a seguir rotaciona um ponto p de um um angulo θ

≪ → p θ

≪ DEG ERASE

−10 10 XRNG −10 10 YRNG

131 R→B 80 R→B PDIM

(0, 0) 131 20 / R→B

80 20 / R→B

2 →LIST 2 →LIST AXES

(0, 0) p LINE

p C→R p y p STO p x p STO

p x*COS(θ)− y*SIN(θ) p EVAL

p x*SEN(θ)+ y*COS(θ) p EVALp x*SEN(θ)+ y*COS(θ) p EVAL

R→C (0, 0) SWAP LINE

DRAX LABEL { } PVIEW

≫≫

308

Page 311: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

A figura a seguir apresenta tres simulacoes feitas com esse programa:

y10.

-10.

x

10.-10.

p= (3, 3), θ=90o p= (3, 3), θ=120o

y10.

-10.

x

10.-10.

p= (2, 5), θ=100o

y10.

-10.

x

10.-10.

No primeiro caso, por exemplo, fornecemos ao programa: (3, 3) 90.Sugerimos ao leitor que execute o programa no DBUG − para melhor com-preensao do seu funcionamento.

8.4 Animacao de Graficos e FigurasA calculadora fornece a funcao ANIMATE para animar um numero de

graficos que foram colocados na pilha. Voce pode gerar um grafico no visorde graficos usando os comandos nos menus PLOT e PICT. Para colocar ografico gerado na pilha, use PICT RCL. Quando tiver n graficos nos nıveis nate 1 da pilha, voce pode usar apenas o comando n ANIMATE para produziruma animacao dos graficos colocados na pilha.

Exemplo: Como um primeiro exemplo de animacao de figuras vamos ani-mar as figuras que nos mostram como variam o seno e o cosseno em umcırculo (veja figura a pagina 307). O programa e como a seguir:

≪ → δ

≪ DEG 1 FIX

131 R→B 80 R→B PDIM

−2 2 XRNG

−2 80 131 / ∗ 2 80 131 / ∗ YRNG

0 360 FOR θ ERASE

(0, 0) 1 0 360 ARC

(0, 0) θ COS 0 R→C LINE

(0, 0) 0 θ SIN R→C LINE

{ (0, 0) p p cos(x) p p p p sen(x)p p } AXES LABEL PICT RCL

δ STEP

DEPTH →LIST pALIST p STO

ALIST OBJ→ ANIMATE

≫≫

1

2

3

4

5

6

7

8

9

10

11

12

13

309

Page 312: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Comentarios:

1 : δ sera o incremento do angulo θ que consta no laco FOR-STEP;

2 : Coloca a calculadora no modo grau e fixa as decimais com uma casa.

3 : Dimensiona a tela em 131 × 80 pixels;

4 : Fixa a faixa (range) do eixo x;

5 : Fixa a faixa (range) do eixo y (corrigindo a “distorcao”);

6 : Inicia o laco FOR-STEP e apaga plotagens anteriores;

7 : Desenha um cırculo com centro na origem e raio 1;

8 : Traca uma linha da origem (0, 0) ao ponto (cos θ, 0);

9 : Traca uma linha da origem (0, 0) ao ponto (0, sen θ);

10 : Rotula os eixos e coloca os graficos gerados na pilha;

11 : Incrementa a variavel do laco (no caso θ);

12 : DEPTH coloca o numero de objetos na pilha; em seguida estes objetossao colocados em uma lista, essa lista e guardada numa variavel por nomeALIST;

13 : A lista com os objetos (no caso os graficos gerados) retorna a pilha,retiramos os objetos da lista e iniciamos a animacao.

Digite e execute o programa anterior pois necessitaremos da lista degraficos (ALIST) para o proximo exemplo de animacao.

Mais informaces sobre a funcao ANIMATE

A funcao ANIMATE conforme usada no exemplo anterior usou comoentrada os graficos a serem animados e o numero (quantos) destes graficos.Voce pode usar outras informacoes para produzir a animacao, tais como ointervalo de tempo entre os graficos e o numero de repeticoes. O formatogeral da funcao ANIMATE em tais caso e o seguinte:

n− graphs { n { #X #Y } delay rep } ANIMATE

n representa o numero de graficos, { #X #Y } significa para as coordenadasde pixel do canto esquerdo inferior da area a ser plotada, delay e o numerode segundos permitido entre os graficos consecutivos na animacao e rep e onumero de repeticoes da animacao.

O programa a seguir recebe o delay e o numero de repeticoes e anima alista de graficos gerados no programa anterior.

≪ → delay rep

≪ ALIST OBJ→

{#0 #0 } delay rep

4 →LIST ANIMATE

≫≫

310

Page 313: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Equacao da corda vibrante

No ramo das equacoes diferenciais parciais estuda-se o classico problemadas cordas vibrantes. O fenomeno tem lugar num plano (x, u) e supo-se quea corda vibre em torno da posicao de repouso ao longo do eixo x, assim:

u

0. Lx

Corda dedilhada

Consideremos uma corda, com extremidades fixas, posta a vibrar a partirde um deslocamento de sua posicao de equilıbrio. Suponhamos, ademais,que seu perfil inicial tenha a seguinte configuracao

a

h

f(x)

0. Lx

Sendo assim, temos

f(x) =

hx

a, para 0 ≤ x ≤ a;

hx− L

a− L, para a ≤ x ≤ L.

311

Page 314: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Nestas condicoes a equacao que nos da a posicao de um ponto arbitrario∗

x da corda em um instante t > 0 e dada por†

u(x, t) = u1(x, t) + u2(x, t) + u3(x, t) + · · · (8.3)

Onde

un(x, t) =2h

a(L− a)

L2

n2 π2sen

nπa

Lsen

nπx

Lcos

nπc t

L

O nosso objetivo sera fazer um programa para animar as vibracoes dacorda. Com esse objetivo elegeremos a seguinte configuracao

3

1

f(x)

0. 4x

Sendo assim, temos

un(x, t) =2 · 1

3 · (4− 3)

42

n2 π2sen

nπ · 34

sennπx

4cos

nπ · 1 · t4

Nota: O c que comparece na formula tem dimensao de velocidade e podeser considerada uma constante (Caso a corda seja homogenea e as vibracoestenham amplitude muito pequena).

Simplificando a equacao acima, obtemos:

un(x, t) =32

3n2 π2sen

3nπ

4sen

nπx

4cos

nπ t

4

Substituindo esse resultado em (8.3), temos

u(x, t) =

∞∑

n=1

32

3n2 π2sen

3nπ

4sen

nπx

4cos

nπ t

4

∗0 ≤ x ≤ L†Veja, por exemplo: Figueiredo, Djairo Guedes de. Analise de Fourier e equacoes

diferenciais parciais. Rio de Janeiro: IMPA, CNPq, 1977.

312

Page 315: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

O programa a seguir anima as vibracoes da corda

≪ → δ

≪ RAD

131 R→B 80 R→B PDIM

0 4 XRNG

−1.2 1.2 YRNG

131 4 / R→B 80 4 / R→B

2 →LIST ATICK

0 5 FOR t

p∑

(n = 1, 4, 32/(3 ∗ n∧ 2 ∗ π ∧ 2) ∗ SIN(3 ∗ n ∗ π/4)∗

SIN(n ∗ π ∗ x/4) ∗ COS(n ∗ π ∗ t/4) ) p

p x p INDEP p y p DEPND

FUNCTION

ERASE DRAW DRAX PICT RCL

δ STEP DEPTH →LIST pCLIST p STO

CLIST OBJ→ ANIMATE

≫≫

Truncamos a serie em n = 4. O programa a seguir recebe o delay e onumero de repeticoes

≪ → delay rep

≪ CLIST OBJ→

{#0 #0 } delay rep

4 →LIST ANIMATE

≫≫

e anima a lista de graficos gerados no programa anterior.

313

Page 316: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

8.5 Plotagem de Superfıcies

Plotagens Fast 3D sao usadas para visualizar superfıcies tridimensionaisrepresentadas por equacoes da forma z = f(x, y). Por exemplo, se quisermosvisualizar z = f(x, y) = x2 + y2 podemos usar o seguinte:

• Pressione 2D/3D simultaneamente se estiver no modo RPN paraacessar a janela PLOT SETUP.

• Altere TYPE para Fast3D. Isto pode ser feito com o auxılio das teclas

CHOOS e △.

• Pressione △e digite px ∧ 2 + y ∧ 2p OK .

• Certifique-se de que px p seja selecionado como Indep: e py p como Depnd:.

• Pressione NXTL OK para retornar ao visor normal da calculadora.

• Pressione WIN simultaneamente se estiver no modo RPN para acessara janela PLOT WINDOW.

• Mantenha as faixas da janela de plotagem padrao para ler:

X-Left:-1, XRight: 1, Y-Near:-1, Y-Far: 1, Z-Low: -1, Z-High: 1, StepIndep: 10, Depnd: 8

Nota: A etapa Indep: e Depnd: os valores representam o numero delinhas de grade usadas na plotagem. Quanto maior estes numeros mais lentoo grafico e produzido, embora o tempo utilizado para a geracao de graficoseja relativamente rapido. No presente manteremos os valores padroes de 10e 8 para data de etapa.

• Pressione ERASE DRAW para desenhar a superfıcie tridimensional. Oresultado e uma imagem aramada da superfıcie com o sistema de coordenadade referencia mostrado no canto esquerdo inferior do visor. Ao usar as teclascom seta (botoes prateados),

voce pode alterar a orientacao da superfıcie. A orientacao do sistema decoordenada de referencia sera alterada de acordo. Tente alterar a orientacaoda superfıcie sozinho.

Ao terminar, pressione EXIT .

• Pressione CANCL para retornar ao ambiente PLOT WINDOW.

• Altere para ler: Step Indep: 20 Depnd: 16

• Pressione ERASE DRAW para ver a plotagem de superfıcie.

Vamos agora plotar o grafico da superfıcie dada por

F (x, y) = (y2 + y) cos x

314

Page 317: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Entao:

• Pressione 2D/3D simultaneamente se estiver no modo RPN para aces-sar a janela PLOT SETUP.

• Altere, se necessario, TYPE para Fast3D.

• Pressione △e digite p(y ∧ 2 + y) ∗ cos(x) p OK .

• Certifique-se de que pX p seja selecionado como Indep: e pY p como Depnd:.

• Pressione NXTL OK para retornar ao visor normal da calculadora.

• Pressione WIN simultaneamente se estiver no modo RPN para aces-sar a janela PLOT WINDOW.

• Mantenha as faixas da janela de plotagem padrao para ler:

X-Left:-1, XRight: 1, Y-Near:-1, Y-Far: 1, Z-Low: -1, Z-High: 1, Step In-dep: 10, Depnd: 8

Vamos plotar esta funcao no seguinte domınio:{

0 ≤ x ≤ π/2

0 ≤ y ≤ 0, 4

Faca: X-Left:0, XRight: π/2. Para colocar π/2 em XRight pressione NXTL

em seguida a tecla virtual CALC . Delete o valor anterior, coloque na pilhaos valores π e 2 divida e pressione OK . Quanto a variavel Y, coloque:Y-Near:0, Y-Far: 0.4. Quanto a variavel Z, faca: Z-Low: -0.25, Z-High:0.8. Finalmente, pressione as teclas virtuais: ERASE DRAW .

� A funcao MAP

Apresentamos ao leitor uma importante funcao que a HP nos disponibi-liza, me refiro a funcao MAP, disponıvel atraves do catalogo de comandos( CAT )∗, essa funcao usa como argumentos uma lista de numeros euma funcao f(X) ou um programa de formulario ≪ → · · · ≫, e produzuma lista consistindo da aplicacao daquela funcao ou programa para a listade numeros. Por exemplo, coloque na pilha†:

2 : {0 1 2}1 : 1−X2

ao digitar MAP e da ENTER a calculadora nos devolve:{

1− 02 1− 12 1− 22}

Digite: XNUM ENTER, para obter,

{ 1 0 − 3 }∗Fica mais facil digitar (MAP) diretamente.†Nota: digite 1−X2 entre plics e pressione Enter.

315

Page 318: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Como mais um exemplo, coloque na pilha:

2 : {1 2 3 4 5}1 : ≪ → X pX ∧2 p ≫

ao digitar MAP e da ENTER a calculadora nos devolve:

{1 4 9 16 25}

− Calculando os cinco primeiros termos de uma progressao aritmetica.Coloque na pilha:

2 : {1 2 3 4 5}1 : ≪ → n p 2∗n− 1 p ≫

ao digitar MAP e da ENTER a calculadora nos devolve:

{1 3 5 7 9}

Apendice: Personalizando o teclado

Cada tecla no teclado pode ser identificada por dois numeros represen-tando suas linhas e colunas. Por exemplo, a tecla VAR ( VAR

J ) esta localizadana linha 3 da coluna 1 e sera mencionada como a tecla 31. Agora, dado quecada tecla tem ate dez funcoes associadas com ela, cada funcao e especificadapor dıgitos decimais entre 0 e 1, de acordo com as seguintes especificacoes:

.0 ou .1, tecla acesso direto

.2, tecla combinada com

.3, tecla combinada com

.4, tecla combinada com ALPHA

.5, tecla combinada com ALPHA

.6, tecla combinada com ALPHA

0.01 ou 0.11,nao aplicavel

.21, tecla simultanea com

.31, tecla simultanea com

.41, tecla combinada com ALPHA

.51, ALPHA tecla simultanea com

.61, ALPHA tecla simultanea com

Assim, a funcao VAR sera mencionada como a tecla 31.0 ou 31.1, en-quanto que a funcao UPDIR sera a tecla 31.2, a funcao COPY sera a tecla

316

Page 319: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

31.3, J maiusculo e a tecla 31.4 e o j minusculo e a tecla 31.5. (A tecla 31.6nao e definida). Em geral, uma tecla sera descrita pelo arranjo XY.Z, ondeX = numero de linha, Y = numero de coluna, Z = acesso.

Podemos combinar uma dada tecla com a tecla USER (left-shift asso-ciada com a tecla ALPHA ou USER ) para criar uma acao chavepersonalizada. A princıpio, o teclado inteiro pode ser redefinido para fazerum numero de operacoes personalizadas.

O submenu PRG/MODES/KEYS

Os comandos uteis em personalizar as teclas sao fornecidos pelo menuKEYS acessıvel atraves do menu PRG ( PRG ). A sequencia

PRG NXTL MODES KEYS

produz o seguinte menu virtual KEYS:

1 :2 :

ASN STOKE RCLKE DELKE MODES

As funcoes disponıveis sao:

ASN: Atribui um objeto a uma tecla especificada por XY.Z;

STOKEYS: Armazena uma lista de tecla definida pelo usuario;

RCLKEYS: Retorna na pilha a lista atual de tecla definida pelo usuario;

DELKEYS: Apaga uma ou mais teclas na lista de tecla definida pelo usuario

atual, os argumentos sao ou 0 para apagar todas as teclas definidas pelousuario ou XY.Z, para apagar a tecla XY.Z.

Retornar na pilha a lista de teclas definidas pelo usuario atual

Use o comando RCLKEYS para ver a lista atual de tecla definida pelousuario. Antes de quaisquer atribuicoes de teclas definidas pelo usuario, oresultado deve uma lista que contem a letra S, ex. {S }.Atribuir um objeto para uma tecla definida pelo usuario

Suponha que se queira acessar o menu PLOT introduzido com a cal-culadora HP serie 48G, porem atualmente nao diretamente disponıvel viateclado. O numero para este menu e 81.01. Voce pode ver este menu ativousando

81.01 ALPHA ALPHA MENU ENTER

Nas teclas de menus (embaixo) teremos todos os (sub)menus do menu PLOT:

PTYPE PPAR EQ ERASE DRAX DRAW

Pressione NXTL para ir a proxima pagina:

317

Page 320: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

3D STAT FLAG LABEL AUTO INFO

Vamos ativar rapidamente este menu do teclado, atribuindo-o para atecla GRAPH ( F3 C ) cujo numero de referencia e 13.0, ex. primeira linha,terceira coluna, funcao principal.

Digite a seguinte lista na pilha

{ S ≪ 81.01 MENU ≫ 13.0 }use a funcao STOKEYS ( PRG NXT

L MODES KEYS STOKE ) para atecla definida pelo usuario F3 C como o acesso ao menu PLOT.

Operar com as teclas definidas pelo usuario

Para operar esta tecla definida pelo usuario, insira USER antes depressionar a tecla F3 C .

Observe que depois de pressionar USER o visor mostra a especificacao1USR na segunda linha do visor. Ao pressionar USER F3 C para esteexemplo, sera ativado o menu PLOT conforme a seguir:

1 :2 :

PTYPE PPAR EQ ERASE DRAX DRAW

Se tiver mais de uma tecla definida pelo usuario e quiser operar maisde uma de cada vez, voce pode bloquear o teclado no modo USER in-serindo USER USER antes de pressionar as teclas definidas pelousuario. Com o teclado bloqueado no modo USER, a especificacao USR seramostrada na segunda linha do visor. Para desbloquear o teclado pressione

USER novamente.

Alterar a atribuicao de uma tecla definida pelo usuario

Para remover a atribuicao feita acima, use a funcao DELKEYS, conformea seguir: caso voce nao se encontre no MENU

1 :2 :

ASN STOKE RCLKE DELKE MODES

acesse-o com a seguinte sequencia

PRG NXTL MODES KEYS

Apos isto, digite13.0 DELKE

Para confirmar pressione o menu RCLKE .

318

Page 321: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Capıtulo 9CALCULO, ALGEBRA EARITMETICA

9.1 O menu ALG (Algebrico)

Funcoes no menu ALG

O menu ALG (Algebrico) esta disponıvel atraves da sequencia de teclas

4ALG

Vejamos a funcao dos submenus que nos interessam para o trato compolinomios:

− COLLECT: Fatora um polinomio (nos inteiros).

Exemplo: Entre na pilha com o polinomio: pX∧2− 4 p

Pressione o submenu COLLE , teremos na pilha: (X + 2) · (X − 2).

Nota: Os sinalizadores 02 e 03 devem estar desativados (sem a marca X).

Caso, apriori, exista algum valor armazenado na varavel X a calculadoraemitira um sonido e exibira a tela:

RAD XYZ DEC C= pX p HLT{HOME CNUM INTP} 19:23 MAY : 30

Purge current variable

YESno

X2 − 41��2��3��4��5��6��

CANCL OK

319

Page 322: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Pressione OK para apagar a variavel (i.e, seu conteudo).

− EXPAND : Expande e simplifica uma expressao algebrica.

Exemplo: Entre na pilha com a expressao algebrica: p(2X + 1)∧2 p

Pressione o submenu EXPAN , teremos na pilha: 4 ·X2 + 4 ·X + 1.

− FACTOR : Fatora um polinomio.

Exemplo: Entre na pilha com o polinomio: p1/2 ∗X∧ 2− 1 p

Pressione o submenu FACTO , teremos na pilha: (X+√2 )·(X−

√2 )

2 .

Nota: Uma diferenca entre as funcoes COLLECT e FACTOR e que aprimeira fatora apenas nos inteiros, enquanto a segunda tambem nos reais.Por exemplo, tente fatorar a expressao pX∧2− 2 p por ambas as funcoes.

A bem da verdade, FACTOR fatora inclusive nos Complexos, tente, porexemplo, pX∧2 + 1 p , ou pX∧3− 1 p .

Uma observacao importante: a apresentacao do resultado de uma fa-toracao pela calculadora vai depender do estado do sinalizador 105 na horaem que voce entra com o polinomio. Se este sinalizador estiver ativo, aoentrar na pilha com o polinomio p1/2 ∗X∧2− 1 p ele aparece na pilha como

1.

2.·X2. − 1.

onde os pontinhos indicam numeros reais e nao inteiros. (p. 345)

Desativando (desmarcando) este sinalizador e entrando novamente como polinomio p1/2 ∗X∧2− 1 p ele aparece na pilha como

1

2·X2 − 1.

(sem os pontinhos) Fatorando ( FACTO ) teremos

−((√2 +X) · (

√2−X))

2

Resumindo: o estado de um sinalizador na hora em que voce entra com osdados e importante para a apresentacao final do resultado.

Enfatizando: Se o sinalizador 105 for selecionado, os numeros inteirosserao automaticamente convertidos para numeros reais.

Devido ao seu formato de armazenamento, os numeros inteiros sempremantem precisao total nos seus calculos. Por exemplo − com o sinalizador105 desativado:

30

14⇒ 15

7(apos EVAL)

30.

14.⇒ 2.1428 . . . (apos EVAL)

320

Page 323: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

− PARTFRAC : Decomposicao em fracao parcial de uma dada fracao.

Exemplo: Entre na pilha com a fracao: p2 ∗X∧2/(X∧ 2− 1) p

Pressione o submenu PARTF , teremos na pilha: 2 + 1X−1 − 1

X+1 .

Pressionando NXTL

vamos para a proxima pagina de submenus.

− SOLVE : Resolve uma equacao polinomial (ou um conjunto de tais equacoes).

Exemplo: Entre na pilha com a equacao: pX∧4−1 = 3 p, em seguida coma variavel entre plics: pX p.

Pressione o submenu SOLVE , teremos na pilha: {X = −√2 X =

√2 }.

Isto se o sinalizador 103 de sua calculadora estiver desativado (Complex off),caso contrario, a saıda sera:

{X =√2 · i X =

√2 · −1 X = −(

√2 · i) X =

√2 }

que e a solucao nos Complexos.

− SUBST : Substitui um valor de uma variavel em uma expressao.

Exemplo: Entre na pilha com a expressao: p4 ∗ X∧ 2 + 1 p, em seguidacom o valor a ser substituido entre plics, assim: pX = 3 p.

Pressione o submenu SUBST , para obter no nıvel 1: 4 · 32 + 1, aı e sopressionar EVALN para obter: 37.

Outra forma de substituicao nas expressoes algebricas

− Uma outra alternativa para avaliarmos uma expressao obtem-se pela com-binacao de teclas

TOOLI

I |

Por exemplo, com a expressao 3 · X2 − 1 ja na pilha coloque na pilhauma lista com dois ıtens, a variavel a ser substituıda e o respectivo valor, porexemplo {X 2 }, em seguida pressione a combinacao anterior para obter nonıvel 1: 3 · 22 − 1, aı e so pressionar EVALN para obter 11. Observe que

TOOLI

I |ւ E este comando que avalia

⇐⇒ 3 ·X2 − 1X=2

Este comando pode aparecer dentro de um programa, por exemplo,

≪ → Y

≪ p 3 ∗X∧ 2− 1 p X Y

2 →LIST | EVAL≫

≫321

Page 324: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

E possıvel substituir (com a mesma sequencia de teclas) mais de uma variavelde cada vez, conforme ilustrado no exemplo a seguir

RAD XYZ DEC C= pX p HLT{HOME CNUM INTP} 22:18 MAY : 30

X2·Y+1

{X 2 Y 3 }1��

2��3��4��5��6��

VEXP DFGM

RAD XYZ DEC C= pX p HLT{HOME CNUM INTP} 22:19 MAY : 30

22·3+11��2��3��4��5��6��

VEXP DFGM

∗ ∗ ∗Daı por que dizer-se que consciencia e objeto sao binomios in-

separaveis, correlativos e complementares do que denominamos reali-dade. Real e aquilo que existe em uma (ou para uma) consciencia ede acordo com a estrutura condicionada e condicionadora dessa mesmaconsciencia. Procurar saber o que seja a realidade (o objeto de inves-tigacao) independentemente da consciencia e de nosso aparato cognitivo-sensıvel nao tem sentido, pois precisamos da consciencia para pensarnessa suposta “realidade independente”, que sera sempre, a proporcaoque a pensamos, uma realidade para “uma” consciencia, uma realidadepensada. (Marcelo Malheiros/A Potencia do Nada, p. 22)

Nota: Aplique a reflexao acima as infinitas concepcoes (humanas) de Deus.

Compare o autor anterior com o seguinte:

Todos os fenomenos [tanto perceptıveis quanto conceituais] podem serpostulados como existentes apenas em relacao a uma estrutura cognitivade referencia. (B. Alan Wallace/Dimensoes Escondidas, p. 97)

Nota: Em nosso livro “O Deus Quantico”, (p. 355), aplicamos estas pro-fundas e extraordinarias concepcoes ao estudo de Deus − Fenomeno Deus.

Mesmo que um grande numero de pessoas olhem um carro de bombeiroe o vejam como vermelho, isso nao significa que a cor exista indepen-dentemente das faculdades visuais delas.

(B. Alan Wallace/Dimensoes Escondidas, p. 100)

322

Page 325: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

9.2 O menu ARITHMETIC

Omenu ARITHMETIC contem um numero de submenus para as aplicacoesespecıficas na teoria numerica (inteiros, polinomios, etc.); como, ademais,um numero de funcoes que se aplicam as operacoes aritmeticas. O menuARITHMETIC e ativado atraves da combinacao de teclas

ARITH

1

Com o sinalizador do sistema 117 configurado assim: X 117 Soft MENU,ao pressionar ARITH, o resultado e o seguinte:

RAD XYZ DEC C= pX p HLT{HOME CNUM INTP} 23:04 JUN : 04

1��2��3��4��5��

6��7��

INTEG POLY MODUL PERM DIVIS FACTO

Omenu ARITHMETIC contem um numero de submenus para as aplicacoesespecıficas na teoria numerica (inteiros, polinomios, etc.), como tambem umnumero de funcoes que se aplicam as operacoes aritmeticas.

Vejamos a funcao de alguns submenus que nos interessam mais de perto.Vamos iniciar pela quinta tecla virtual (submenu) na tela acima:

− DIVIS : Lista dos divisores de um polinomio ou inteiro.

Exemplo: Entre na pilha com o inteiro 6:

Pressione o submenu DIVIS , teremos na pilha: { 1 2 3 6 }.Exemplo: Entre na pilha com o polinomio pX∧2− 1 p :

Pressione o submenu DIVIS , teremos na pilha: { 1 X+1 X−1 X2−1 }.− FACTORS : Retorna os fatores irredutıveis de um polinomio ou inteiro.

Exemplo: Entre na pilha com o inteiro 180:

Pressione o submenu FACTO , teremos na pilha: { 5 1. 3 2. 2 2. }.Em “outras palavras”:

180 2

90 2

45 3

15 3

5 5

1180= 51 · 32 · 22

323

Page 326: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Nota: Veja FACTOR no Menu POLYNOMIAL. (p. 325)

Exemplo: Entre na pilha com o polinomio pX∧3 +X∧2−X − 1 p :

Pressione o submenu FACTO , teremos na pilha: {X − 1 1. X + 1 2. }.Ou seja,

x3 + x2 − x − 1 = (x− 1)1 · (x+ 1)2

− LGCD : Retorna o maior denominador comum de uma lista de inteiros oupolinomios.

Exemplo: Entre na pilha com a lista: { 125 75 35 }Pressione o submenu LGCD , teremos na pilha: 5.

Exemplo: Entre na pilha com a lista de polinomios,

{ pX∧2− 2X + 1 p pX∧2− 1 p}

.

Pressione o submenu LGCD , teremos na pilha: X − 1. Confirmando:

x2 − 2x + 1 = (x− 1)2 e x2 − 1 = (x− 1) · (x+ 1)

− PROPFRAC : Separa uma fracao numa parte inteira e numa fracionaria.

Exemplo: Entre na pilha com a fracao:8

5.

Pressione o submenu PROPF , teremos na pilha: 1 +3

5.

Nota: Para entrar com uma fracao o sinalizador 03 deve estar desmarcado.

Exemplo: Entre na pilha com a fracao: p(X∧2 + 1)/X∧ 2 p.

Pressione o submenu PROPF , teremos na pilha: 1 +1

X2.

− SIMP2 : Simplifica dois polinomios pela divisao entre o maior denomi-nador comum entre eles.

Exemplo: Entre na pilha com os polinomios: pX∧3− 1 p e pX∧2− 1 p.

Pressione o submenu SIMP2 , teremos na pilha:

RAD XYZ DEC C= pX p HLT{HOME CNUM INTP} 13:28 JUN : 04

X2 +X+1

X +11��

2��3��4��5��6��

LGCD PROPFSIMP2

324

Page 327: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Observe,

x3 − 1 = (x− 1) · (x2 + x + 1)

x2 − 1 = (x− 1) · (x+ 1)

As funcoes associadas com os submenus ARITHMETIC: INTEGER,POLYNOMIAL, MODULO e PERMUTATION, sao as seguintes:

Menu INTEGER

EULER: Numero inteiros < n, co-primo com n;

IABCUV: Resolve au+ bv = c, com a, b, c = inteiros;

IBERNOULLI: n-ezimo numero Bernoulli;

ICHINREM: Residual chines para numeros inteiros;

IDIV2: Divisao euclidiana de dois numeros inteiros;

IEGCD: Retorna u, v, tal que au+ bv = gcd(a, b);

IQUOT: Quociente euclidiano de dois numeros inteiros;

IREMAINDER: Residual euclidiano de dois numeros inteiros;

ISPRIME?: Testa se um numero inteiro e primo;

NEXTPRIME: Proximo primo para um numero inteiro dado;

PA2B2: Numero primo como norma quadrada de um numero complexo;

PREVPRIME: Primo anterior para um numero inteiro dado.

Menu POLYNOMIAL

ABCUV: Equacao de polinomio Bezout (au+ bv = c);

CHINREM: Residual chines para os polinomios;

CYCLOTOMIC: polinomio ciclotomico n-ezimo;

DIV2: Divisao euclidiana de dois polinomios: (A/B)⇒ A = BQ+R;

EGCD: EGCD significa Maximo Divisor Comum.

Dados dois polinomio, A(X) eB(X), a funcao EGCD produz os polinomiosC(X), U(X) e V (X), para que C(X) = U(X) ·A(X) + V (X) · B(X).

Por exemplo, para A(X) = X2 + 1, B(X) = X2 − 1, (entre com estesdois polinomios na pilha) EGCD retorna para a pilha: 2, 1, −1. Pois,2 = 1 · (X2 + 1)− 1 · (X2 − 1).

FACTOR: Fatora um numero inteiro ou polinomio;

FCOEF: Gera as raızes, dadas a fracao e a multiplicidade;

FROOTS: Retorna as raızes e a multiplicidade, dada uma fracao;

GCD: Maior divisor comum de 2 numeros ou polinomios;

A funcao GCD (maior denominador comum) pode ser usada para obter o

325

Page 328: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

maior denominador comum de dois polinomios ou de duas listas de polinomiosdo mesmo tamanho. Os dois polinomios ou listas de polinomios serao colo-cados nos nıveis 2 e 1 da pilha antes de usar GCD. Os resultados serao umpolinomio ou uma lista representando o maior denominador comum dos doispolinomios ou de cada lista de polinomios.

Exemplo (a calculadora configurada para o modo Exact, (p. 344)):

pX∧3− 1 p ENTERpX∧2− 1 p ENTER GCD

Resulta em: X − 1.

HERMITE: Polinomio Hermite de grau n-ezimo;

A funcao HERMITE [HERMI] usa como argumento um inteiro positivon, e retorna o polinomio de Hermite de ordem n. Um polinomio de Hermite,Hn , e definido recursivamente como

H0(x) = 1, Hn(x) = (−1)n ex2 dn

dxn( e−x2

), n = 1, 2, 3, . . .

HORNER: Avaliacao Horner de um polinomio;

A funcao HORNER produz a divisao Horner ou sintetica de um polinomioP (X) pelo fator (X − a). A entrada para a funcao sao o polinomio P (X)e o numero a. A funcao retorna o polinomio para um quociente Q(X) queresulta da divisao de P (X) por (X − a), os valores de a e de P (a), nestaordem. Em outras palavras, P (X) = Q(X)(X − a) + P (a).

P (X) X − a

R(X) Q(X)

⇒ P (X) = Q(X)(X − a) +R(X)

Por exemplo, entre na pilha com os dados: pX∧ 3 + 2 ∗X∧ 2− 3 ∗X + 1 p 2Pressione o submenu HORNE , teremos na pilha:

RAD XYZ DEC C= pX p HLT{HOME CNUM INTP} 17:28 JUN : 04

X2 +4X+52

111��2��

3��4��5��6��

FCOEF FROOT GCD HERMI HORNE LAGRA

Sendo assim, temos

x3 + 2x2 − 3x + 1 = (x2 + 4x + 5)(x − 2) + 11

326

Page 329: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

LAGRANGE: Interpolacao de polinomio Lagrange;

A funcao LAGRANGE exige como entrada uma matriz com duas linhase n colunas. A matriz armazena os pontos dos dados da forma

[[x1, x2, . . . , xn] [y1, y2, . . . , yn]]

A aplicacao da funcao LAGRANGE produz o polinomio expandido de

pn−1(x) =

n∑

j=1

n∏

k=1, k 6=j

(x− xk)

n∏

k=1, k 6=j

(xj− x

k)

· yj

Por exemplo, para n = 2, escrevemos:

p1(x) =2∑

j=1

2∏

k=1, k 6=j

(x− xk)

2∏

k=1, k 6=j

(xj− x

k)

· yj=

x− x2

x1 − x2

· y1 +x− x1

x2 − x1

· y2

Por exemplo, digite na pilha a seguinte matriz: [ [ 1 2 3 ] [ 2 8 15 ] ].

Em seguida: ENTER LAGRA , para obter x2 +9·x− 62 .

LCM: Menor multiplo comum de 2 numeros ou polinomios.

A funcao LCM (menor multiplo comum) obtem o menor multiplo comumde dois polinomios ou de listas de polinomios do mesmo tamanho.

LEGENDRE: Polinomio Legendre de ordem n;

Os polinomios de Legendre sao solucoes da importante equacao diferencialde Legendre∗

(1− x2)d2 y

dx2− 2x

dy

dx+ n(n+ 1)y = 0

Para obter o polinomio Legendre de ordem n, entre com n na pilha epressione LEGEN .

Para obter o polinomio de ordem 4, por exemplo, basta colocar 4 na pilhae pressionar a tecla virtual LEGEN . Podemos facilmente plotar os polinomiosde Legendre de ordem n. Por exemplo, vamos plotar o polinomio de ordem4. Antes redimensione a janela de plotagem ( WIN ) para:

H-View: -1 1V-View: -1 1

∗Utilizada, por exemplo, na resolucao da equacao de Schroedinger da mecanica quantica− para o atomo de hidrogenio.

327

Page 330: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Armazene o seguinte programa: ≪ 4 LEGENDRE ≫ na variavel EQ,agora basta ir ao ambiente de plotagem (p. 283). Voce devera ver algo como:

ZOOM (X,Y)TRACE FCN EDIT CANCL

PARTFRAC: Decomposicao em fracao parcial de uma dada fracao;

PCOEF: Dado um vetor que contem as raızes de um polinomio, a funcaoPCOEF gera uma serie de combinacoes contendo os coeficientes do polinomiocorrespondente. Os coeficientes correspondem a ordem decrescente da variavelindependente.Por exemplo, entrando com o vetor [−2 3 ] e pressionando PCOEF , obtemos[ 1 − 1 − 6 ] que representa o polinomio x2 − x − 6.

PROOT: Dado um vetor com os coeficientes de um polinomio, na ordemdecrescente, a funcao PROOT fornece as raızes do polinomio.

Por exemplo, entrando com o vetor [ 1 −1 −6 ] e pressionando PROOT ,obtemos [−2 3 ].

PTAYL: Retorna Q(x− a) em Q(x− a) = P (x), polinomio de Taylor.

Dado um polinomio P (X) e um numero a, a funcao PTAYL e usada paraobter uma expressao Q(X−a) = P (X), ex. para desenvolver um polinomiosem potencias de (X−a). Isto e tambem conhecido como polinomio de Taylor,onde o nome da funcao, Polynomial & TAYLor e criado.

Por exemplo, entrando na pilha com os dados: pX∧ 3 − 2 ∗X + 5 p 1 epressionando PTAYL , obtemos X3 +3 ·X2 +X +4. Na verdade, voce deveinterpretar este resultado como (X − 1)3 + 3 · (X − 1)2 + (X − 1) + 4.

O leitor pode expandir esta expressao e verificar que (p. 320)

(X − 1)3 + 3 · (X − 1)2 + (X − 1) + 4 = X3 − 2X + 5

QUOT: Quociente euclidiano de dois polinomios;

RESULTANT: Determinante da matriz Sylvester de 2 polinomios;

REMAINDER: Restante Euclideano de 2 polinomios;

STURM: Sequencia de Sturm para o polinomio;

STURMAB: Sinal do limite inferior e numero de zeros entre limites.

As funcoes QUOT e REMAINDER fornecem, respectivamente, o coefi-ciente Q(X) e o resto R(X), resultante da divisao de dois polinomios, P1(X)e P2(X), assim:

328

Page 331: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

P1(X) P2(X)

R(X) Q(X)

⇒ P1(X) = P2(X) ·Q(X) +R(X)

Em outras palavras, elas fornecem os valores de Q(X) e R(X) de

P1(X)

P2(X)= Q(X) +

R(X)

P2(X)

Por exemplo, entrando na pilha com os dados: pX∧ 3 − 2 ∗ X + 2 p epX−1 p e pressionando QUOT , obtemos X2+X−1. Entrando na pilha comos dados: pX∧3− 2 ∗X +2 p e pX − 1 p e pressionando REMAI , obtemos 1.

Sendo assim, podemos escrever:

x3 − 2x+ 2

x− 1= x2 + x− 1 +

1

x− 1

Este resultado ainda pode ser obtido pela funcao PROPFRAC. (p. 324)

Menu MODULO

ADDTMOD: Adiciona dois modulos de expressoes ao modulo atual;

DIVMOD: Divide 2 modulos de polinomios pelo modulo atual;

DIV2MOD: A divisao euclidiana de 2 polinomios com coeficientes modu-lares;

EXPANDMOD: Expande/simplifica os modulos de polinomios atuais pelomodulo atual;

FACTORMOD: Fatora os modulos polinomio pelo modulo atual;

GCDMOD: GCD de 2 modulos de polinomio pelo modulo atual;

INVMOD: inversa de modulos de numero inteiro pelo modulo atual;

MOD (nenhuma entrada de dados disponıvel no mecanismo de ajuda);

MODSTO: Altera a configuracao do modulo para o valor especificado;

MULTMOD: A multiplicacao de 2 modulos de polinomios pelo moduloatual;

POWMOD: Eleva o polinomio para a potencia do modulo atual;

SUBTMOD: Subtracao de 2 modulos de polinomios pelo modulo atual.

∗ ∗ ∗

Poder-se-ia ate afirmar que a realidade subatomica, enquanto ino-bservavel, nao e constituida de objetos, mas de relacoes, e que aspartıculas individuais nao existem como entidades fısicas reais. Somentepossuem significado dentro da totalidade das relacoes que mantem comas demais entidades, sobretudo com a consciencia do observador.

(A Potencia do Nada, p. 23)

329

Page 332: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

9.3 O menu CALC (Calculo)

Aplicacoes de calculo

Neste apendice discutiremos os aplicativos das funcoes da calculadorapara as operacoes relacionadas com o calculo, ex. limites, derivadas, inte-grais, serie de potencia, etc.

O menu CALC e ativado atraves da combinacao de teclasCALC

4

Com o sinalizador do sistema 117 configurado assim: X 117 Soft MENU,ao pressionar CALC , o resultado e o seguinte:

RAD XYZ DEC C= pX p HLT{HOME CNUM INTP} 10:20 JUN : 05

1��2��3��4��5��

6��7��

DERIV LIMIT DIFF GRAPH DERVX INTVX

A primeira das quatro opcoes neste menu sao atualmente submenus quese aplicam a (1) derivadas e integrais, (2) limite e serie de potencia, (3)equacoes diferenciais e (4) graficos. As entradas 5. DERVX e 6. INTVX saoas funcoes para obter uma derivada e uma integral infinita para uma funcaoda variavel CAS padrao (geralmente ‘X’). As funcoes DERVX e INTVX saodiscutidas em detalhes posteriormente.

Vamos iniciar pelo segundo dos submenus acima.

Limite de funcao

A calculadora fornece a funcao lim para calcular os limites de algumasfuncoes. Esta funcao usa como entrada uma expressao representando umafuncao e o valor onde o limite deve ser calculado.

Para ter acesso a tecla virtual lim , pressione o submenu LIMIT .

Para calcular o limite limx→a

f(x) insira a funcao primeiro, depois a e,

finalmente, pressione lim .Exemplo: Para calcular o limite: lim

x→2(5x3−4), entre na pilha com os dados:

p5 ∗X∧3− 4 p 2 e pressione lim para obter: 36.

Exemplo: Para calcular o limite: limx→0

sen (x)

x, entre na pilha com os dados:

pSIN(X)/X p 0 e pressione lim para obter: 1.

Nota: Para evitar problemas digite X (maiusculo). A menos que a variavelindependente seja trocada, para isto consulte Configuracoes CAS (p. 343).

330

Page 333: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Advertencia: Caso, a priori, exista algum valor armazenado na variavelX isto podera resultar em problemas; se for este o caso, apague a variavel,assim: entre na arvore de diretorios com: FILES ; pressione o menu

OK , procure (assinale) a variavel X, em seguida NXTL e PURGE .

Uma outra alternativa para se entrar com um limite no modo pilha: parao limite lim

x→ 2(5x3 − 4) digite: p lim(5 ∗X∧3− 4, 2) p.

Para avalia-lo, ENTER EVAL N .Limites no infinito

Podemos tambem calcular limites com a variavel independente tendendoao infinito. O infinito e associado com as teclas:

∞0

Exemplo: Para calcular o limite: limx→+∞

1

x, entre na pilha com os dados:

p1/X p +∞ e pressione lim para obter: 0.

Limites laterais

Para calcular limites laterais, adicione +0 ou −0 ao valor para a variavel.A “+0” significa limite pela direita, enquanto que um “−0” significa limitepela esquerda. Por exemplo, vamos calcular o limite: lim

x→1+

√x− 1.

Digite na pilha: p√

(X − 1) p SPC p1+0 p ENTER e pressione lim paraobter: 0.

Derivadas

A derivada de uma funcao dada por f(x) em x = a e definida como olimite

df

dx= f ′(x) = lim

h→ 0

f(x+ h)− f(x)

h

Vejamos dois exemplos de derivadas utilizando este limite:

1o ) f(x) = x2. Entao,

f ′(x) = limh→ 0

(x+ h)2 − x2

h

Digite na pilha: p((X + h)2 −X2)/h p SPC ph = 0 p ENTER e pressionelim para obter: 2 ·X.

2o ) f(x) = ex. Entao,

f ′(x) = limh→ 0

ex+h − ex

h

Digite na pilha∗: p((EXP(X + h)− EXP(X))/h p SPC ph = 0 p ENTER

e pressione lim para obter: ex.

∗EXP(), e acessada na combinacao das teclas: yxQ

331

Page 334: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Funcoes DERIV e DERVX

A funcao DERIV e usada para obter derivadas em termos de qualquervariavel independente, enquanto a funcao DERVX obtem as derivadas emrelacao ao VX da variavel padrao CAS (tipicamente ’X’). Enquanto a funcaoDERVX esta diretamente disponıvel no menu CALC, ambas as funcoes estaodisponıveis no submenu DERIV.

A funcao DERIV requer uma funcao, digamos f(t) e uma variavel inde-pendente, digamos t, enquanto a funcao DERVX requer apenas uma funcaode VX.

Exemplos:

1o ) f(x) = 5x3 − 4x2 + 6.

Digite na pilha: p5 ∗X∧3− 4 ∗X∧2 + 6 p ENTER e pressione DERVX

para obter: (15 ·X − 8) ·X. Utilize

4ALG

EXPAN

para obter: 15 ·X2 − 8 ·X.

2o ) f(t) = t · et.Digite na pilha: pt ∗ EXP(t) p pt p ENTER e pressione, se necessario,

CALC

4 DERIV DERIV

para obter: et + t · et.Nota: O primeiro DERIV acima e o submenu para se acessar a funcaoDERIV − que realiza a derivada.

Caso se deseje simplificar a expressao acima, digite,

4ALG

COLLE

para obter: (t+ 1) · et.Calculando as derivadas com ∂

O sımbolo ∂ esta disponıvel em ( COS T ), este sımbolo pode serusado para inserir uma derivada na pilha ou no Editor de Equacao∗. Seusar o sımbolo para escrever uma derivada na pilha, siga imeditamente coma variavel independente, depois por um par de parenteses incluindo a funcaoa ser diferenciada.

Vamos nos manter fiel a nossa opcao inicial de manipulacoes atravesda pilha. O sımbolo ∂ serve tanto para efetuar derivadas ordinarias (funcoesde uma variavel) quanto derivadas parciais (funcoes de mais de uma variavel).

∗Para esta alternativa consulte o capıtulo 2 do guia do usuario (Manual).

332

Page 335: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Exemplos:

1o ) Calcule a derivada da funcao f dada por: f(x) = x · cos x.Solucao: voce deve digitar na pilha:

p ∂X(X ∗ cos(X)) p

em seguida ENTER EVAL N, para obter: COS(X) + X · −SIN(X).Para simplificar esta expressao leve-a para o editor de equacoes pres-

sionando:

Nota: Mantenha a primeira tecla pressionada e, em seguida, pressione asegunda.

A calculadora exibira a seguinte tela:

Simplifique aqui.

COS(X)+X · −SIN(X)

EDIT CURS BIG � EVAL FACTO SIMP

Em seguida pressione ENTER , para obter: COS(X)−X · SIN(X).2o ) Calcule a derivada (parcial em relacao a y) da funcao f dada por:

f(x, y) =x2 + y2

2xy

Solucao: voce deve digitar na pilha:

p ∂Y ((X∧2 + Y ∧2)/(2 ∗X ∗ Y )) p

em seguida ENTER EVAL N, para obter:2 · Y ·X · 2 · Y − (X2 + Y 2) ·X · 2

SQ(2 · Y ·X).

Simplificando, como antes, obtemos: −X2 − Y 2

2 · Y 2 ·X .

Derivadas de ordem superior

As derivadas de ordem superior podem ser calculadas aplicando umafuncao derivada diversas vezes. Por exemplo, para calcular

∂x

( ∂

∂y

(x2 + y2

2xy

))

333

Page 336: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Voce deve digitar na pilha:

p ∂X(∂Y ((X∧ 2 + Y ∧2)/(2 ∗X ∗ Y ))) p

em seguida ENTER EVAL N . Simplificando, como antes, obtemos: − X2 − Y 2

2 · Y 2 ·X2.

Aplicacoes das derivadas

As derivadas podem ser usadas para analisar os graficos de funcoes e paraotimizar as funcoes de uma variavel (ex. encontrar o maximo e mınimo).Algumas aplicacoes de derivadas sao mostradas a seguir.

Funcao DOMAIN

A funcao DOMAIN disponıvel∗ atraves do catalogo de comando ( CAT)fornece o domınio de definicao de uma funcao como uma lista de numeros eespecificacoes.

Por exemplo, entre na pilha p X p , apos ENTER e DOMAIN, para obterna pilha a seguinte lista:

{−∞ ? 0 + +∞}

que deve ser interpretada assim: entre −∞ e 0, a funcao√x nao e definida

(?), enquanto que de 0 a +∞ a funcao e definida (+).Geometricamente tudo se passa assim:

0x

y

p p p1 2 3

1

√2

√3

ppp

{−∞ ? 0 + +∞}

Como um segundo exemplo, vamos encontrar o domınio da funcao dadapor y =

√1− x2 e posteriormente confirmamos com DOMAIN.

Pois bem, devemos ter

1− x2 ≥ 0 ⇐⇒ x2 ≤ 1 ⇐⇒ −1 ≤ x ≤ 1

Por outro lado, entrando na pilha com p (1 − X∧2) p , apos ENTER eDOMAIN, obtemos na pilha a seguinte lista:

{−∞ ? − 1 + 1 ? +∞}∗Esta funcao tambem pode ser digitada diretamente no teclado, o efeito e o mesmo.

334

Page 337: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

que deve ser interpretada assim: a funcao em questao nao esta definida entre−∞ e 1 e nem entre 1 e +∞, logo o domınio da funcao e −1 ≤ x ≤ 1.Como tinhamos previsto. Geometricamente tudo se passa assim:

0x

y

p p1−1

1 p

{−∞ ? − 1 + 1 ? +∞}

Funcao TABVAL

Esta funcao e acessada atraves do catalogo de comando ou do submenuGRAPH no menu CALC. A funcao TABVAL toma como argumentos umafuncao da variavel CAS, f(X) e uma lista de dois numeros representandoum domınio de interesse para a funcao f(X). A funcao TABVAL retornaos valores de entrada mais a faixa da funcao correspondente para o domıniousado como entrada.

Por exemplo, vamos pedir a faixa (range) da funcao dada por y = 2−x2,no intervalo [ 0, 1 ]. Sendo assim, no modo pilha, digite

p2−X∧2 p ENTER { 0 1} ENTER

CALC

4 GRAPH NXTL

TABVA

A calculadora nos devolve os seguintes dados (tela da esquerda):

RAD XYZ DEC C= pX p HLT{HOME CNUM INTP} 11:26 JUN : 22

2−X2

{{ 0 1 } { 2 1 }}1��

2��3��4��5��6��

TABVATABVA CALC

RAD XYZ DEC C= pX p HLT{HOME CNUM INTP} 11:26 JUN : 22

2−X2

{{ 0 1 } { 2 1 }}1��

2��3��4��5��6��

TABVATABVA CALC

entrada

entrada

saidaTABVAL

TABVAR

No grafico, temos:

335

Page 338: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

0x

y=f(x)

p pp √2−

√2

1

2

pp

{ 0 1 }

{21}

A bem da verdade, a funcao TABVAL nao devolve a faixa (range) dafuncao f(X) correspondente ao domınio de entrada mas simplesmente de-volve a funcao calculada nos extremos deste domınio − que corresponde afaixa somente se a funcao f(X) e crescente ou decrescente no intervalo deentrada.

Por exemplo, ainda para a funcao do exemplo anterior, se entrarmos com

p2−X∧2 p ENTER { p − 2 p p 2 p } ENTER TABVA

A calculadora nos devolve seguinte lista: { {−√2√2 } { 0 0 } } .

Funcao SIGNTAB

A funcao SIGNTAB disponıvel atraves do catalogo de comando ( CAT)fornece a informacao sobre o sinal de uma funcao atraves de seu domınio.

Por exemplo, vamos pedir o sinal da funcao dada por y = 2−x2. Digite

p2−X∧2 p ALPHA ALPHA SIGNTAB ENTER

Para obter a seguinte lista: {−∞ − −√2 +

√2 − ∞}.

Ou a seguinte lista:

{−∞ − −1.41421356237 + 1.41421356237 − ∞}

Isto se a sua calculadora estiver no MODEH Number Format..... Std.

Nota: Vamos abrir uma nota aqui para enfatizar em que circunstancias alista sai no primeiro modo (simbolico) ou no segundo modo (aproximado).Para obter o modo simbolico (±

√2) desative (se necessario) o sinalizador

105. E mais: entre com a funcao p2−X∧2 p apos a desativacao do sinalizador(e nao antes), aqui a “ordem dos fatores” altera o produto. Aproveite edesative tambem o sinalizador 03.

336

Page 339: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Pois bem, vamos interpretar a lista: esta nos diz que a funcao e negativadesde −∞ ate −

√2; entre −

√2 e

√2 a funcao e positiva, a partir daı a

funcao e negativa.Veja isto graficamente:

0x

y=f(x)

p pp √2−

√2

1

2

pp

{−∞ − −√2 +

√2 − ∞}

Funcao TABVAR

Esta funcao e acessada atraves do catalogo de comando ou do submenuGRAPH no menu CALC. Usa como entrada a funcao f(V X), onde V X e avariavel CAS padrao. A funcao retorna o seguinte no modo RPN:

• Nıvel 3: a funcao f(VX)

• Nıvel 2: Duas listas, a primeira indica que a variacao da funcao (ex. ondeaumenta ou diminui) em termos da variavel independente V X, a segundaindica a variacao da funcao em termos da variavel dependente (eixo y).

• Nıvel 1: Um objeto de grafico mostra como a tabela de variacao foi com-putada.

Para o proximo exemplo certifique-se de que os sinalizadores 03 e 105estejam desativados.

Exemplo: Vamos analisar a funcao f dada por f(x) = −12 x

3 + 2xusando a funcao TABVAR. Digite no modo pilha (TABVA a direita no menu)

p − 1/2 ∗X∧3 + 2 ∗X pENTER

CALC

4 GRAPH NXTL

TABVA

Apos a execucao poderemos “passear” sobre o visor da calculadorafazendo uso dos quatro botoes prateados:

337

Page 340: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Na parte inferior do visor teremos a seguinte tabela:

Variation table:

−∞ − −2·

√3

3 + 2·√3

3 − +∞ X

+∞ ↓ −8·√3

9 ↑ 8·√3

9 ↓ −∞ F

Observacao: Caso voce tenha digitado p − 0.5 ∗X∧3+2 ∗X p , ao inves dep−1/2∗X∧3+3∗2 p, a matriz acima exibira as raızes na forma aproximada enao na forma simbolica, como acima; ademais, o infinito, na segunda linha,nao saira como acima. − Conclusao: o formato da entrada de dados tambemdita o formato da saıda (alem dos sinalizadores).

Esta tabela corresponde a uma lista (que pode ser utilizada em pro-gramacao), para ter acesso a lista pressione ON (CANCEL) e delete (CLEAR)

o nıvel 1 da pilha para descer ao nıvel 1 a seguinte lista:

{ { p −∞ p − −2·√3

3 + 2·√3

3 − p +∞ p }

{ p +∞ p ↓ −8·√3

9 ↑ 8·√3

9 ↓ p −∞ p } }Pois bem, vamos interpretar esta lista:

A funcao f(x) diminue para x no intervalo ] −∞, −2·√3

3 ], atingindo um

mınimo igual a −8·√3

9 em x = −2·√3

3 . Entao, f(x) aumenta ate x = 2·√3

3 ,

atingindo um valor maximo igual a 8·√3

9 em x = 2·√3

3 . A partir de x = 2·√3

3 ,f(x) passa a ser decrescente. Tambem, em x = ±∞ temos f(x) = ∓∞.

Veja estas conclusoes graficamente:

0x

y=f(x)

p p p p1 −2−1−2

1

2

pp

pp

8·√

39

տ2·√

33

− 8·√

39

− 2·√

33

338

Page 341: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Usando as derivadas para calcular os pontos extremos

Os “pontos extremos” e a designacao geral para os valores maximos emınimos de uma funcao em um dado intervalo. Estes pontos sao obtidosinicialmente pela resolucao da equacao: f ′(x) = 0.

Por exemplo, vamos obter os pontos extremos para a funcao do exemploanterior, f(x) = −1

2x3 + 2x. Digite no modo pilha

p − 1/2 ∗X∧3 + 2 ∗X pENTER

CALC

4 DERVX

Apos obter a derivada −(3·X2−4)2 na pilha, precisamos resolver a equacao:

f ′(x) = 0. Utilize a funcao SOLVEVX no catalogo de comandos ( CAT).

Com a derivada na pilha e pressionando esta funcao obtemos a seguintelista:

{

X = −( 2

3·√3)

X = −( 2

3·√3)}

Substituindo estes valores na funcao original obtemos os pontos extremos −veja grafico anterior.

Antiderivadas e integrais

Uma antiderivada de uma funcao f(x) e uma funcao F (x) tal que F ′(x) =f(x).

Por exemplo, dado que ddx(x

3) = 3x2, uma antiderivada de f(x) = 3x2

e F (x) = x3 + c, onde c e uma constante. Uma forma de representar umaantiderivada e como uma integral indefinida, assim:

f(x) dx = F (x) + c ⇐⇒ d

dx(F (x) + c) = f(x)

A Funcao INTVX

Dentre algumas opcoes que a calculadora oferece para o calculo de in-tegrais vamos estudar a funcao INTVX − Que comparece na tecla virtualmais a direita do menu CALC.

A funcao INTVX requer apenas a expressao da funcao para integrar emtermos de VX (variavel X).

Vejamos alguns exemplos. Vamos calcular∫(X2 +X +1) dX. Para isto

entre na pilha com: pX∧ 2 +X + 1 p, em seguida ENTER e INTVX , paraobter: 1

3 ·X3 + 12 ·X2 +X.

Nota: Se na sua calculadora houve problema no calculo desta integral ex-perimente desativar o sinalizador 105, assim: digite na pilha −105 CF e,em seguida, ENTER ; tente novamente o calculo da integral proposta.

Agora vamos calcular∫X · eX dX. Para isto entre na pilha com:

pX ∗ EXP(X) p , em seguida ENTER e INTVX , para obter: (X − 1) · eX .

Integrais definidas

Na integral definida de uma funcao, a antiderivada resultante e avaliada

339

Page 342: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

no limite superior e inferior de um intervalo (a, b) e os valores avaliadossubtraıdos.

Simbolicamente,∫ ba f(x) dx = F (b)− F (a), onde dF/dx = f(x).

Calculando as integrais definidas com∫

O sımbolo∫

esta disponıvel em ( TAN U ), este sımbolo pode serusado para inserir uma derivada na pilha ou no Editor de Equacao∗.

Se optarmos pelo sımbolo para escrever uma integral definida a sintaxe ea seguinte:

∫(a, b, f(x), x).

Exemplos:

Para calcular a integral:∫ 10 x2 dx, digite na pilha: p

∫(0, 1,X∧ 2,X) p

em seguida ENTER EVAL N , para obter: 13 .

Para calcular a integral:∫ 21 (t3 + t+ 1) dt, digite na pilha:

p∫(1, 2, t∧ 3 + t+ 1, t) p , em seguida ENTER EVAL N , para obter: 25

4 .

Na verdade, podemos usar este simbolo ate para calcular integrais in-definidas; por exemplo, para calcular a integral:

∫(x2 + x+ 1) dx, digite na

pilha: p∫(0, x, x∧ 2 + x+ 1, x) p , em seguida ENTER EVAL N , para obter: ???.

Ao tentar calcular a integral (com x minusculo), na minha calculadoraocorreu um erro. Digitei x e ENTER havia um vetor (array) armazenadonesta variavel. Tentei apagar a variavel, px p PURGE, novamente ocorreuum erro − pois a variavel nao encontrava-se no diretorio corrente. Tiveque entrar na arvore de diretorios† encontrar a pasta na qual a variavel seencontrava e apaga-la.

Ao tentar calcular novamente a integral (com x minusculo, enfatizo)o erro persistiu, verifiquei o conteudo da variavel (x e ENTER ) e la aindaencontrava-se o mesmo conteudo (o vetor), como se eu nao houvera apagado.

Decidi “apelar” , digo reiniciei a calculadora pressionando as teclas

ON F3 C

Nesta operacao a primeira tecla acima deve ser mantida pressionada e, emseguida, pressiona-se a segunda, depois solta-se ambas as teclas.

Este procedimento e chamado “Reinicio quente” − pois a memoria epreservada.

Caso voce tenha optado por esse procedimento‡ observe que a calcu-ladora retorna ao diretorio raiz (HOME). Para retornar ao diretorio de suapreferencia consulte, se necessario, a pagina 126 (CHDIR ).

Pois bem, apos este procedimento, deu certo, a calculadora devolveu paraa integral em questao: 2·x3+3·x2+6·x

6 . Com x minusculo, enfatizo.

∗Para esta alternativa consulte o capıtulo 2 do guia do usuario (Manual).†Veja Advertencia, p. 331.‡Com os erros tambem se aprende − tive oportunidade de constatar isto em diversas

ocasioes, ao escrever este capıtulo.

340

Page 343: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Apenas para complementar: caso seja necessario se reiniciar a calcu-ladora, apagando a memoria, o procedimento e o seguinte:

ON F1 A F6 F

Com a primeira tecla pressionada, em seguida pressiona-se as outras duas.Este procedimento e chamado “Reinicio frio” − pois a memoria nao e preser-vada.

Integral dupla

Vamos calcular, a tıtulo de exemplo, a seguinte integral dupla

∫ 1

0

∫ 1

0X · Y dX dY

Na pilha digite: p∫(0, 1,

∫(0, 1,X ∗ Y,X), Y ) p

Apos, ENTER EVALN para obter: 0. 25 ou 14 .

Nota: E possıvel que a sua calculadora acuse um erro. Ative o sinalizador105, assim: −105 SF. Ou, entao, pressione MODE

HFLAGS , va no sinalizador

105 e coloque a marca X.

Observe, no alto do visor, que a variavel independente mudou de X para Y.Como voltar a variavel X, veja p. 343 (Selecionar a variavel independente).

Ainda a tıtulo de exemplo, vamos calcular a seguinte integral dupla

∫ π/2

0

∫ π/4

0sen (X + Y ) dY dX

Na pilha digite: p∫(0, π/2,

∫(0, π/4,SEN(X + Y ), Y ),X) p

Ao mandar avaliar esta integral, o tempo de execucao − na minha calcu-ladora − tornou-se bastante longo, tive que interromper a execucao e tenteio seguinte, nos limites de integracao fiz as substituicoes:

π

2= 1.5708 e

π

4= 0.7854

isto e, p∫(0, 1.5708,

∫(0, 0.7854,SEN(X + Y ), Y ),X) p

O tempo de execucao agora tornou-se razoavel, obtive o resultado: 1.0000(minha calculadora fixada em 4 decimais). Calcule a integral diretamente econfirme este resultado.

341

Page 344: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

9.4 Configuracoes CAS

CAS significa sistema algebrico do computador. Este e o centro matematicoda calculadora onde as operacoes e funcoes matematicas simbolicas e funcoessao programadas. O CAS oferece um numero de configuracoes que podemser ajustados de acordo com o tipo de operacao de interesse. Para ver asconfiguracoes CAS opcionais use o seguinte:• Pressione a tecla MODE

Hpara ativar formulario de entrada CALCULA-

TOR MODES:

CALCULATOR MODES

Aqui esta.

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Operating Mode.. RPNNumber Format...Std FM,Angle Measure...RadiansCoord System....RectangularXBeep Key Click XLast Stack

Choose calculator operating Mode

FLAGS CHOOS CAS DISP CANCL OK

e depois a tecla virtual CAS . Voce obtera a seguinte tela − salvo possıveisalteracoes em alguns detalhes:

CAS MODES�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Indep var: pX p

Modulo: 13

XNumeric Approx Complex

Verbose Step/Step Incr Pow

XRigorous XSimp Non-Rational

Enter independent variable name

EDIT CANCL OK

Esta tela fornece um formulario de entrada para alterar as configuracoesCAS.• Para navegar atraves das diversas opcoes no formulario de entrada

CAS MODES, use os quatro botoes prateados:

342

Page 345: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Selecionar a variavel independente

Muitas das funcoes fornecidas pelo CAS usam uma variavel independentepredeterminada. Por definicao, tal variavel e a letra X (maiuscula) conformemostrado na caixa de entrada CAS MODES acima. Portanto, o usuariopode alterar esta variavel para qualquer outra letra ou combinacao de letrase numeros (um nome de variavel deve comecar como uma letra) editando ocampo Indep var na caixa de entrada CAS MODES.

Para alterar a variavel independente para Y, por exemplo, digite:

ALPHA Y ENTER

Atencao: caso, na sua calculadora, ja estiver armazenado algum valor navariavel Y (ou em qualquer outra candidata a variavel independente) a cal-culadora emitira uma mensagem de erro. Neste caso devemos antes apagar(PURGE) a variavel.

• A opcao Modulo da caixa de entrada CAS MODES representa um numero(valor padrao = 13) usado na aritmetica modular.

Modo CAS Numeric e Symbolic

Quando o modo CAS Numeric for selecionado, certas constantes na calcu-ladora sao exibidas no seu valor de ponto de flutuacao total. Por definicao, aopcao Numeric foi desmarcada, significando que estas constantes predefinidasserao exibidas como seu sımbolo, em vez de seus valores, no visor da calcu-ladora.

Vamos fazer uma simulacao: para marcar (ou desmarcar, dependendodo estado da sua calculadora) esta opcao − supondo que voce esteja naultima tela apresentada acima − com os botoes prateados selecione a opcaoNumeric, obtendo o seguinte resultado:

CAS MODES�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

�������

Indep var: pX p

Modulo: 13

XNumeric Approx Complex

Verbose Step/Step Incr Pow

XRigorous XSimp Non-Rational

Replace constantes by values?

Marque (ou desmarque).

EDIT XCHK CANCL OK

րAqui

Se esta opcao estiver marcada (X) ao entramos, por exemplo, com π napilha esta constante aparecera no visor com seu valo numerico: 3.1415 . . .;caso contrario, aparecera no visor o sımbolo: π.

343

Page 346: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Na verdade, observei que esta opcao do CAS nao e independente dosinalizador 02. Por exemplo, se este sinalizador estiver ativado: (p. 10)

X 02 Constant→ num

entao, a calculadora colocara na pilha o valor numerico de π, qualquer queseja a escolha feita em Numeric, no CAS.

Resumindo: para que as escolhas no CAS −no caso em discussao− sejamvalidas e necessario que o sinalizador 02 esteja desativado, assim:

02 Constant→ symb

Nota: Estes detalhes (importantes) eu tenho que ir descobrindo (“advin-hando”) por mim mesmo, uma vez que o manual da HP nao faz mencaoexplıcita − ou, pelo ao menos eu nao encontrei no meu manual.

Enfatizo: o manual afirma: (p. 846, arquivo .pdf)

“Por definicao, a opcao −Numeric foi desmarcada, significando que estasconstantes pre-definidas serao exibidas como seu sımbolo, em vez de seusvalores, no visor da calculadora”.

Observei que isto nao e verdade, pelo ao menos na minha calculadora, seo sinalizador 02 estiver ativo:

X 02 Constant→ num

No meu entendimento, o manual erra em nao mencionar a dependenciade −Numeric, no CAS, com relacao ao sinalizador 02.

Existe a seguinte correspondencia: −Numeric e o sinalizador 03 saoequivalentes. Marcar, ou desmarcar, um deles significar marcar ou des-marcar o outro.

Modo CAS Aproximado e Exato

Quando X−Approx for selecionado, as operacoes simbolicas, (ex. Integraisdefinidas, raızes quadradas, etc.), serao calculadas numericamente. Quando

−Approx for desmarcado (modo Exact e ativo), as operacoes simbolicasserao calculadas como expressoes algebricas de formato fechado, sempre quepossıvel.

Exemplo: Digamos que queiramos somar√2 com

√3.

Temos duas opcoes: ou uma soma aproximada:

1.41421356237 + 1.73205080757

Ou uma soma exata: √2 +√3

Se X−Approx for selecionado teremos a primeira soma, caso contrario asegunda. A bem da verdade, neste ultimo caso e necessario que −Numeric(discutido anteriormente) esteja desmarcado.

344

Page 347: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Observe que se −Numeric e −Approx estiverem ambos desmarcados, aose digitar, por exemplo, 2

√X R , aparecera no visor o sımbolo

√2, ao

inves de 1.41421356237.

Ao digitar π, nas condicoes anteriores, eu esperava que o sımbolo (π)fosse colocado no visor. Isto e verdade apenas se o sinalizador 02 estiverdesativado. Isto significa que se, por exemplo, quero no visor a soma

√2 +√3 + π

devo ter −Numeric e −Approx ambos desmarcados e, ademais, o sinali-zador 02 desativado.

Anteriormente notamos uma equivalencia entre −Numeric e o sinalizador03; no que diz respeito a −Approx este e equivalente ao sinalizador 105.

Numeros reais e inteiros

As operacoes CAS utilizam os numeros para manter a precisao total noscalculos. Os numeros reais armazenados no formulario tem uma mantissa eum expoente e tem precisao limitada. No modo X−Approx, portanto, sempreque inserir um numero inteiro, ele e automaticamente transformado em umnumero real. Sempre que a calculadora listar um valor inteiro seguido porum ponto decimal, isto indica que o numero inteiro foi convertido para umarepresentacao real. Isto indicara que o numero foi inserido enquanto o CASfoi definido para o modo X−Approx.

Um “incomodo” que resolvi com o uso de −Approx foi o seguinte: aocolocar na pilha, por exemplo, o polinomio pX∧2 + 4 ∗X +1 p, ao pressionar

ENTER obtenho no visor

X2. + 4. ·X + 1.

Para “extrair” os pontinhos ao lado dos numeros desmarque X−Approx paraobter

X2 + 4 ·X + 1

Recomenda-se que voce selecione o modo EXACT (−Approx) como omodo CAS padrao e altere o modo para X−Approx se solicitado pela calcu-ladora ao fazer uma operacao.

Modos CAS Real e Complexo

Um numero complexo pode ser representado por duas formas equivalentes

(a, b) ⇐⇒ a+ bi

onde a e b sao numeros reais e i e tal que i2 = −1 (ou i =√−1).

Os engenheiros eletricistas preferem usar o sımbolo j − pois i e reservadopara sımbolo da corrente eletrica.

Se a opcao X−Complex for selecionada e se uma operacao resulta em umnumero complexo, entao o resultado sera mostrado na forma a + bi ou na

345

Page 348: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

forma de um par ordenado (a, b). Por outro lado, se a opcao −ComplexCAS e desconfigurada (a opcao Real CAS esta ativada) e o resultado deuma operacao e um numero complexo, voce sera solicitado a alternar parao modo Complex. Se rejeitar, a calculadora retornara um erro.

No modo X−Complex o CAS pode fazer uma ampla gama de operacoesa mais do que no modo REAL, mas sera consideravelmente tambem maislenta. Assim, recomenda-se que voce selecione o modo REAL como o modopadrao e altere o modo para X−Complex se solicitado pela calculadora aofazer uma operacao.

Vejamos um exemplo∗: digite na pilha: p (52 − 82) p, apos ENTER EVALN ,a calculadora emitira um sonido e exibira a seguinte tela:

RAD XYZ DEC R= pX p

{HOME CNUM INTP} 08:07 Jun : 18

Complex Mode on?

YESno

√52 − 82

1��2��3��4��5��6��

CANCL OK

Caso se pressione OK − estamos alternando para o modo Complexo −o resultado sera: i ·

√39. Se o usuario decidir nao aceitar a alteracao para

o modo COMPLEX, entao obtera uma mensagem de erro. Temos

52 − 82 =√

−1 · (82 − 52) =√

−1 · (64 − 25) =√−1 · 39 = i ·

√39

Apenas a tıtulo de curiosidade observe que

√−1 · 39 6=

√−1 ·√39 = i ·

√39

Se isto fosse verdade, tambem seria verdade que

1 =√1 =

(−1) · (−1) =√

(−1) ·√

(−1) = i · i = i2 = −1

O sinalizador de numero 27 quando ativo nos permite trabalhar comos numeros complexos no formato a + bi − entretanto, e necessario que

−Numeric esteja desmarcado no CAS. Caso contrario, mesmo estando ativoo sinalizador 27 a calculadora transforma os resultados para o formato depar ordenado (a, b).

Ainda a tıtulo de curiosidade observe que nao existe raiz quadrada denumero negativo, nem nos Complexos.

Com efeito, por exemplo, −1 = (−1, 0) nao e negativo nos complexos.

∗Caso sua calculadora esteja no modo X−Complex , desmarque-o.

346

Page 349: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Modo CAS verbose e nao verbose

Quando a opcao −Verbose CAS for selecionada, certos calculos sao forneci-dos com as linhas de comentarios no visor principal. Se a opcao −VerboseCAS nao for selecionada, entao estas aplicacoes de calculos nao mostraraoas linhas de comentarios. As linhas de comentarios aparecerao momen-taneamente nas linhas do topo do visor enquanto a operacao estiver sendocalculada.

Modo CAS etapa por etapa

Quando a opcao CAS −Step/step for selecionada, certas operacoes seraomostradas passo a passo no visor. Se a opcao −Step/step CAS nao for mar-cada, entao as etapas imediatas serao mostradas.

Modo CAS - Aumento de potencia

Quando a opcao −Incr pow CAS for marcada, os polinomios serao lista-dos para que os termos sejam potencias aumentando nas variavel indepen-dente. Quando a opcao −Incr pow CAS nao for marcada (valor padrao), ospolinomios serao listados para que os termos sejam potencias diminuindo navariavel independente.

Configuracao CAS rigorosa

Quando a opcao X−Rigorous CAS for selecionada, a expressao algebrica|X| (valor absoluto de X), nao e simplificado para X. Se a opcao −RigorousCAS nao for selecionada, a expressao algebrica |X| e simplificada para X. OCAS pode resolver uma grande variedade de problemas se o modo rigorosonao for marcado. Portanto, o resultado ou o domınio no qual o resultado eaplicavel, pode ser mais limitado.

Por exemplo, digite (e mande avaliar): p ((ABS(x))∧ 2) p, nos dois modos;teremos:

|x|2 =

|x|, se X−Rigorous;

x, se −Rigorous.

Configuracao CAS - Simplificar nao racional

Quando a opcao −Simp Non-Rational CAS for marcada, as expressoesirracionais serao automaticamente simplificadas. Por outro lado, se a opcao

−Simp Non-Rational CAS nao for marcada, as expressoes irracionais naoserao automaticamente simplificadas.

347

Page 350: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

9.5 Resolucao de Equacoes

Neste apendice estudamos as funcoes que a calculadora fornece para asolucao de equacoes individuais da forma f(X) = 0. Existem dois menus defuncoes associados com a tecla 7 para solucao de tais equacoes o

Symbolic SoLVer :S.SLV

7

eNUMerical SoLVer :

NUM.SLV

7

Altere o modo CAS para Complex para os exemplos que se seguem.

Para os propositos do nosso trabalho sera suficiente considerarmos apenasalgumas das funcoes do Symbolic SoLVer. Ative este menu, como descritoacima.

As funcoes DESOLVE e LDEC sao usadas para a solucao de equacoesdiferenciais, nao serao apresentadas aqui. A funcao LINSOLVE e rela-cionada com a solucao de equacoes lineares multiplas e tambem nao seraapresentada aqui.

Funcao ISOL

A funcao ISOL (equacao e variavel) produzira solucoes para Equacaoisolando a variavel. Para os exemplos seguintes certifique-se de que os sinali-zadores 03 e 105 estejam desativados em sua calculadora. Um atalho seriano CAS fixar −Numeric −Approx (isto e, ambos desmarcados).

Exemplo: Vamos resolver a equacao at3 − bt = 0. Antes observe que

at3 − bt = (a · t2 − b)t = 0

Pois bem, para resolver a equacao para t digite:

pa ∗ t∧3− b ∗ t p ENTER t ENTER ISOL

Para obter uma lista com as raızes da equacao:

{

t = 0 t = −√a · ba

t =

√a · ba

}

O primeiro argumento no ISOL pode ser uma expressao, conforme mostradoacima ou uma equacao, como sera visto agora. Vamos resolver a seguinteequacao (para λ):

λ2 − k λ = k2

Para isto digite∗ : (λ, p. 351)

pλ∧2− k ∗ λ = k∧2 p ENTER λ ENTER ISOL

∗Obtenha o sinal de igual, =, diretamente do teclado digitando: ± W .

348

Page 351: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Para obter uma lista com as raızes da equacao:

{

λ = −(− 1 +

√5)· k

2λ =

(1 +√5)· k

2

}

Funcao SOLVEVX

A funcao SOLVEVX resolve uma equacao para a variavel CAS padraocontida no nome da variavel reservada VX. Por definicao, esta variavel econfigurada para ‘X’.

Exemplos: Para resolver a equacao: x4 − 1 = 3, digite:

pX∧4− 1 = 3

pENTER SOLVE

No campo Complexo esta equacao possui quatro solucoes, exibidas na lista:

{

X =√2 · i X = −

√2 X = −

√2 · i X =

√2}

Como um segundo exemplo, vamos resolver a equacao: aX2 + bX + c = 0.

Para isto, digite:

pa ∗X∧2 + b ∗X + c = 0 p ENTER SOLVE

Para obter uma lista com a solucao, assim:

{

X = −b+√

− ( 4 · c · a− b2 )

2 · a X = −b−√

− ( 4 · c · a− b2 )

2 · a

}

Que nada mais e do que a conhecida formula de Bhaskara.

Funcao SOLVE

A funcao SOLVE tem a mesma sintaxe da funcao ISOL, exceto queSOLVE pode ser tambem usada para resolver um conjunto de equacoes depolinomios.

Exemplo:

Vamos resolver, simultaneamente, as duas equacoes x2+1 = 0 e x2−1 = 0.Para tanto, digite:

{ pX∧2 + 1 = 0 p pX∧2− 1 = 0 p} ENTER SOLVE

para obter a seguinte lista:

{ {X = −i X = i } {X = −1 X = 1 } }

Passando para a proxima pagina do menu ( NXTL ) encontramos a funcao

ZEROS

349

Page 352: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

A funcao ZEROS encontra as solucoes de uma equacao de polinomios,sem mostrar sua multiplicidade. A funcao exige ter como entrada a ex-pressao para a equacao e o nome da variavel para a solucao.

Exemplos: Para obter os zeros da equacao: k5 − k2 = 0, digite:

pk∧5 − k ∧2 p ENTER k ENTER ZEROS

A saıda sera { 0, 1} se na parte superior do visor de sua calculadoraconsta, R, modo real; e sera a seguinte lista se consta, C, modo complexo

{

0 1 − 1 + i ·√3

2− 1− i ·

√3

2

}

∗ ∗ ∗

E se o espaco e o tempo sao, em parte, subjetivos, ou seja, sao formasde nossa consciencia perceptiva ou sensıvel, e definem a realidade perce-bida, segue-se que e a natureza especıfica da percepcao que determina aaparencia ou forma da realidade, ainda que esta tenha uma origem ob-jetiva ou exterior a consciencia.

Por isso, num certo sentido, a Fısica Moderna admite que o mundofısico e uma construcao mental, o resultado de um procedimento de cons-tituicao. O experimentador, como ja foi enfatizado, tem uma parti-cipacao determinante na criacao da realidade que observa.

(A Potencia do Nada, p. 25)

Se o mundo ou a realidade esta sempre relacionada a consciencia queo percebe, como demonstrado acima, de que modo entao e possıvel a inter-subjetividade, ou seja, o acordo de percepcoes entre os diversos sujeitos arespeito de um mesmo acontecimento?

[. . .]

a subjetividade da percepcao (dependentes das formas do tempo e do espaco)nao implica um puro subjetivismo, pois todos os seres humanos teriam umpadrao ou estrutura perceptiva comum.

(A Potencia do Nada, p. 30)

Adendo(Gentil): Todos os seres humanos pertencem a uma mesmaclasse de equivalencia, como dirıamos na matematica.

“Deus nao existe posto que e o ‘Nada’, porem o Nada existe!”(Gentil/27.10.2014)

350

Page 353: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Letras gregas

α (alfa) ALPHA F1 A

β (beta) ALPHA F2 B

δ (delta) ALPHA F4 D

ε (epsilon) ALPHA F5 E

θ (theta) ALPHA COS T

λ (lambda) ALPHA EVAL N

µ (mu) ALPHA HIST M

ρ (rho) ALPHA F6 F

σ (sigma) ALPHA SIN S

τ (tau) ALPHA TAN U

ω (omega) ALPHA EEX V

∆ (delta maiusculo) ALPHA F3 C

Π (pi maiusculo) ALPHA SYMB P

CAS

−Numeric ⇐⇒ Sinalizador 03 :{02 Constant→ symb︸ ︷︷ ︸

(Flags) Desativado

−Approx ⇐⇒ Sinalizador 105

−Numeric

X−Numeric: 3.14159. . . ; 2 = 1.41421 . . . (Numerico)√

√−Numeric: π ; 2 =

√2 (Simbolico)

−Approx

X−Approx : 1 2 ÷ = .5 ; p1/2 p = 1.2. (Indep.

−Numeric)

(∼R )

×

−Approx : 1 2 ÷ = 12 ; p2/4 p = 2

4 (−Numeric )

(=R )

Para, por exemplo, adicionar algebricamente duas letras (A + B), p.ex., sao necessarias duas condicoes: 1) −Numeric (desmarcado) 2) Nasvariaveis (A e B, p. ex.) nao devem ter valores armazenados.

Para limpar (apagar) uma variavel existem duas opcoes: PURGE; seesta nao funcionar, reinicie a calculadora “a quente”. (p. 340)

351

Page 354: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Na sequencia temos as capas dos livros por mim publicados ate o mo-mento. Para mais informacoes acesse nosso site: www.profgentil.com

ISBN: 85-7062-200-X/Thesaurus Editora de Brasılia/2000

ISBN: 978-85-7785-096-9/Letra Capital Editora/2011

352

Page 355: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

A seguir temos a capa da primeira edicao deste livro.

ISBN: 978-85-7785-107-2/Letra Capital Editora/2011

ISBN: 978-85-8113-054-5/Editora KIRON/2012

353

Page 356: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

AQUISIC~AO:

[email protected]: Este livro (628 p.) traz varias construcoes

ineditas na Teoria dos Espacos Metricos.

ISBN: 978-85-8113-054-5/Editora KIRON/2012

354

Page 357: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

ISBN: 978-85-99122-40-2/Grafisa Grafica e Editora/2014

355

Page 358: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

QUEIMAO DE LIVROS

“Acho que muita gente vai se beneficiar com este livro.

E claro e com muitos exemplos e aplicacoes interessantes.

Parabens por ver seu grande esforco coroado.”

(Ubiratan D’Ambrosio/USP)

“Obras colocadas no ‘ındex’ pela UFRR.”

“Um Sacrifıcio no Altar da Estupidez.”

“Ok, ...A Estupidez Venceu!”(UFRR/13.05.2014/Prof. Gentil, o iconoclasta)

356

Page 359: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Prova de que a matriz (4.20) calcula combinacoes

Agora envidaremos esforcos para provar que a matriz (4.20) (p. 109) presta-se ao calculo de combinacoes. Na verdade a prova sera indireta porquantomostraremos primeiro que a matriz (4.21) (p. 110) e que serve para tal e,depois, mostraremos a identidade (4.20)=(4.21).

Para a consecucao do nosso intento iremos precisar de alguns resultados:

Lema 1. Seja A = {a1 , a2 , . . . , an} um conjunto com n elementos, e sejaA′ = A ∪ {a

n+1}. Entao o numero de subconjuntos de A′ e o dobro donumero de subconjuntos de A; e mais: seus subconjuntos sao precisamenteos mesmos de A juntamente com cada um destes unido com {a

n+1}.

Prova: Temos pela transitividade da inclusao que todo subconjuto Bde A o e de A′ (isto e, B ⊂ A,A ⊂ A′ ⇒ B ⊂ A′). Ainda: dado B ⊂ A ⇒B ∪ {a

n+1} ⊂ A′. Agora vamos mostrar que todo subconjunto de A′ e daforma acima, isto e:

“Dado D ⊂ A′ entao D ⊂ A ou D = B ∪ {an+1}, para algum B ⊂ A”.

De fato, se D = ∅ e obvio. Suponha que ∅ 6= D ⊂ A′ e D 6⊂ A eD 6= B ∪ {a

n+1},∀B ⊂ A. Entao existe x ∈ D tal que x ∈ A′ e x 6∈ A;logo so pode ser x = a

n+1 . Sendo D 6= B ∪ {an+1} (∀B ⊂ A), temos duas

possibilidades:

(i) existe y ∈ D tal que y 6∈ B ∪ {an+1},∀B ⊂ A. Absurdo, tome B = A.

(ii) ∀B ⊂ A existe z ∈ B ∪ {an+1} tal que z 6∈ D. Absurdo, tome B = ∅.

Usando demonstracao por inducao sobre n, decorre trivialmente do lemaanterior o seguinte:

Corolario 1. Dado um conjunto com n elementos, o numero de seus sub-conjuntos e 2n.

Prova: n = 1: A = {a1} ⇒ P(A) = {∅, {a1}}.Admitamos a validade da proposicao para n = p. Isto e, seA = {a1 , a1 , . . . , ap} ⇒

#P(A) = 2p. Mostremos que a proposicao ainda e verdadeira para n = p+1.Isto e, se A = {a1 , a1 , . . . , ap , ap+1} implica que #P(A) = 2p+1.Mas isto e imediato pelo lema anterior. �

Vamos agora apresentar uma importante propriedade da matriz (4.21)

Lema 2 (Propriedade do DNA). Seja n ≥ 2 um natural arbitrariamentefixado e j = 1, . . . , n−1. Sob estas condicoes e valida a seguinte identidade:

aij= a

(i+2n−1)j

357

Page 360: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Prova:

a(i+2n−1)j

= (−1 )

⌊ (i+ 2n−1)− 1

2j−1

= (−1 )

⌊ i− 1

2j−1 +2n−1

2j−1

Sendo 2n−1/2j−1 = 2n−j; e tendo em conta que o maior valor assumidopor j − dentro das nossas hipoteses − e n−1; o menor valor neste expoentesera n−(n−1) = 1, do que podemos inferir tratar-se sempre de uma potenciade dois. Portanto,

a(i+2n−1)j

= (−1 )

⌊ i− 1

2j−1

+2n−1

2j−1

= aij

Vamos concretizar a propriedade anterior: Observe

i: 1 2 . . . 2n−1

i+2n−1: 2n−1+1 2n−1+2 . . . 2·2n−1

o que significa que a identidade aij= a

(i+2n−1)jnos assegura que havera uma

copia da metade superior para a metade inferior da matriz binaria (isto soate a coluna n− 1, bem entendido).

Observe os exemplos abaixo, para n = 2, n = 3 e n = 4:

1 1

-1 1

1 -1

-1 -1

1 1 1

-1 1 1

1 -1 1

-1 -1 1

1 1 -1

-1 1 -1

1 -1 -1

-1 -1 -1

1 1 1 1

-1 1 1 1

1 -1 1 1

-1 -1 1 1

1 1 -1 1

-1 1 -1 1

1 -1 -1 1

-1 -1 -1 1

1 1 1 -1

-1 1 1 -1

1 -1 1 -1

-1 -1 1 -1

1 1 -1 -1

-1 1 -1 -1

1 -1 -1 -1

-1 -1 -1 -1

Observe que se tomarmos j = n na demonstracao anterior obtemosaij= −a

(i+2n−1)j; o que explica a ultima coluna nas matrizes acima.

Na verdade a identidade em questao nos conta mais que esta inter-pretacao; mas, para o proposito que temos em mente, isto ja e suficiente.

358

Page 361: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Teorema 15 (Gentil/1997). Dado um conjunto A = {a1 , a2 , . . . , an} comn elementos, a matriz abaixo

aij= (−1 )

i−1

2j−1

nos fornece todos os seus subconjuntos, para i = 1, 2, . . . , 2n e j = 1, 2, . . . , n;de acordo com a convencao feita anteriormente.

Prova: Inducao sobre o numero n de elementos de A.

(i) n = 1 ( A = {a1} ) ⇒ j = 1 e i = 1, 2.

1

−1

a1 {ai}

{a1}∅

⇒ P(A) ={∅, {a1}

}.

(ii) Suponhamos a validade da formula para n = p elementos.Por hipotese a matriz ( a

ij) nos fornece os 2

p

subconjuntos de A ={a1 , a2 , . . . , ap}.

(iii) Mostremos que a formula e valida para n = p + 1 elementos. Istoe, que a formula nos fornece todos os 2p+1 subconjuntos de A′ ={a1 , a2 , . . . , ap , ap+1}.

De fato, tendo em conta os dois lemas anteriores, e suficiente mostrar que

ai(p+1)

=

1, se i = 1, 2, . . . , 2p;

−1, se i = 2p

+ 1, . . . , 2p+1

.

temos,

i = 1, 2, . . . , 2p ⇔ 0 ≤ i− 1 < 2p ⇔ 0 ≤ i− 1

2p < 1⇔⌊ i− 1

2p

= 0

⇒ ai(p+1)

= 1.

Por outro lado,

i = 2p + 1, . . . , 2p+1 ⇔ 2p ≤ i− 1 < 2p+1 ⇔ 1 ≤ i− 1

2p < 2

⇔⌊ i− 1

2p

= 1 ⇒ ai(p+1)

= −1.

359

Page 362: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Para melhor entendimento

da demonstracao anterior

veja a figura ao lado:

Hipotese

de

Inducao

Propriedade

do

DNA

1

1...1

−1

−1...−1

1

2...

2p

2p+1

2p+2...

2p+1

a1 a2 ··· ap ap+1

Iremos necessitar do seguite teorema e respectivo corolario:Edouard Lucas

Sejam n, r ∈ N e p um primo. Escrevendo n e r na base p, temos:

n = n0 + n1 · p+ n2 · p2 + · · ·+ nk· pk,

r = r0 + r1 · p+ r2 · p2 + · · ·+ rk· pk,

onde k e um inteiro nao negativo e ni, r

i∈ { 0, 1, . . . , p− 1 }.

Teorema 16 (Lucas/1878). Considerando os desenvolvimentosp-narios de n e r, e valida a seguinte identidade

(n

r

)

≡(n0

r0

)(n1

r1

)

· · ·(n

k

rk

)

(mod p) (♥ )

Em particular, tomando p = 2, escrevemos n e r na base binaria, n =(n0n1n2 . . . nk

)2 , r = (r0r1r2 . . . rk)2 , resultando no seguinte criterio:

Corolario 2. Nas condicoes do teorema, temos

(n

r

)

e ımpar ⇐⇒ ni≥ r

i, ∀ i = 0, 1, . . . , k.

Voltando ao nosso objetivo principal, pelo corolario 2 temos

anm = (−1)(n−1

2m−1)

= (−1 )µn−1

2m−1

Portanto∗,

(−1)(

n−1

2m−1)

= (−1)⌊

n−1

2m−1

−2

n−1

2m

= (−1)⌊

n−1

2m−1

.

∗Em nosso trabalho [5], provamos a seguinte identidade µn−1

2m−1 =

n−1

2m−1

− 2⌊

n−12m

.

360

Page 363: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Referencias Bibliograficas

[1] HEWLETT PACKARD. Guia do Usuario da HP 50g .

[2] Iezzi, G.; Hazzan, S.; Degenszajn, D. Fundamentos de matematica ele-mentar, 11 : matematica comercial, matematica financeira, estatısticadescritiva. Sao Paulo−SP: Saraiva S.A. Livreiros Editores, 2009.

[3] Veras, Lilia Ladeira. Matematica financeira. 6. ed. Sao Paulo : Atlas,2009.

[4] Silva, Gentil Lopes. Novas Sequencias Aritmeticas e Geometricas.Brasılia - DF: THESAURUS EDITORA, 2000.

[5] Silva, Gentil Lopes. Sequencias Aritmeticas e Geometricas Multidimen-sionais (www.dmat.ufrr.br/∼gentil), 2008.

[6] Silva, Gentil Lopes. Progressoes Aritmeticas e Geometricas de ordem m(www.dmat.ufrr.br/∼gentil), 2006.

[7] Silva, Gentil Lopes. Limite da funcao quadratica(www.dmat.ufrr.br/∼gentil), 2008. (Menu Alunos).

[8] Barroso, Leonidas C. et alii. Calculo Numerico (com aplicacoes), 2a

edicao. Sao Paulo: editora HARBRA ltda, 1987.

[9] Ruggiero, Marcia A. Gomes & Lopes, Vera Lucia da Rocha. CalculoNumerico: aspectos teoricos e computacionais, 2a edicao. Sao Paulo:Pearson Makron Books, 1996.

[10] Arenales, Selma & Darezzo, Artur. Calculo Numerico: Aprendizagemcom Apoio de Software. Sao Paulo: Thomson Learning, 2008.

[11] Claudio, Dalcıdio Moraes & Marins, Jussara Maria. Calculo NumericoComputacional: teoria e pratica, 2a edicao. Sao Paulo: Atlas, 1994.

[12] Silva, Gentil Lopes. Espacos Metricos (com aplicacoes). Taguatinga -DF: Editora Kiron, 2013.

[13] Silva, Ermes Medeiros da. et alii. Estatıstica para os cursos de Econo-mia, Administracao e Ciencias Contabeis., 4a edicao. Sao Paulo: EditoraAtlas, 2010.

361

Page 364: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

Indice Remissivo

A funcao EPSX0, 224A funcao MAP, 315Animacao de figuras, 309Apresentacao de complexos, 346Avaliar uma expressao, 321AXL, AXM, 46

Bernoulli, formula, 102Binomio de Newton, 140

Calculo de Combinacoes, 110Calculo de matrizes com elementos

algebricos, 45Carro bombeiro, 322CAS Aproximado e Exato, 344CAS e sinalizadores (Resumo), 351CAS Numeric e Symbolic, 343Catalogo de comandos, 46Coeficiente binomial, 146Configuracoes CAS, 84, 342

D.Q., Gentil, 355DBUG, 21Derivadas, 331Desafio - I , 184Desafio - II, 193Desafio da Decada, 106Desafio do Seculo, 87Desenvolvimento binario, 112Diferenca dividida, 227Diferenca Finita, 233

E.D.O.Metodo de Euler, 265

Metodos de Runge-Kutta, 274PVI, 262

Taylor p = 2, 270Edouard Lucas, 360

Email Ubi, 117

Engenhari Eletrica, 48Espinoza

Deus nao ama, 12

Estrutura da Memoria, 29

Funcao DOMAIN, 334

Funcao Max, 19Funcao Min, 19

Funcao SIGNTAB, 336

Funcao TABVAL, 335Funcao TABVAR, 337

Gentil

Capas livros, 352Deus, 350

Deus Quantico, 355Grau, minuto, segundo, 34

Integracao

Dupla, 254Primeira regra de Simpson, 245

Quadratura gaussiana, 248

Regra dos trapezios, 241Segunda regra de Simpson, 246

Integrais, 339Integrais dupla, 341

Interpolacao

De Gregory-Newton, 233

362

Page 365: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)

De Lagrange, 220De Newton, 227Formula de Gregory-Newton, 237

Formula de Newton, 231polinomial, 216

Legendre, Polinomios, 327Letras gregas, 351Listas, 35

Marcelo Malheiros, 199Construcao mental, 350

Para uma consciencia, 322Partıculas nao existem, 329

Marcelo, Wallace, 322Matrizes, 38Menu

Algebrico, 319ARITHMETIC, 323

CALC, 330Menus

Definicao, 12

MTH/LIST, 38Numeros reais, 13Pilha operacional, 14

Norbert Wiener, 101

Outra forma de substituicao, 321

Polinomios na forma crescente ou de-crescente., 224

PRICE, Tabela, 166

Primeira Programacao simbolica, 91Primos

E primo?, 325

Proximo primo, 325Primo anterior, 325

Produto dos termos de uma P.A., 114Programacao de Formulas, 15

Reais e inteiros na HP, 320Regra da Cadeia, 260Reinicio frio, 341

Reinicio quente, 340

Resolucao de Equacoes, 348Runge-Kutta, 274

Serie binomial, 147Series de Taylor e Maclaurin, 260Sinalizadores, 10Sir Arthur Eddington

A pegada e nossa, 51Subrotinas, 56

Ubaldi, Zohar, Osho, 259

Vetor → polinomio, 153

Wallace, 215, 221, 280, 322Wallace, Marcelo, 322Wallace, Susskind, 280

Zeros, 349

363

Page 366: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)
Page 367: Gentil Lopes - PROGRAMANDO a HP 50 G (2ª Edição Revisada e Ampliada 2015)