You are on page 1of 360

PROGRAMANDO A HP Prime

(COM APLICAÇÕES)

Gentil, o iconoclasta

Boa Vista-RR
Edição do autor
2018
c 2018 Gentil Lopes da Silva
Copyright
Todos os direitos reservados ao autor

Site do autor → docente.ufrr.br/gentil.silva


email → gentil.iconoclasta@gmail.com

Editoração eletrônica e Diagramação:


Gentil Lopes da Silva
Capa: Adriano J. P. Nascimento

Ficha Catalográfica

S586d Silva, Gentil Lopes da


Programando a HP Prime : com aplicaç~
oes

Gentil Lopes da Silva.-


Manaus/Boa Vista: Editora Uirapuru/Autor, 2018.
x, 357 p. il. 16x23 cm [e-book]
[Pseud^onimo: Gentil, o iconoclasta]
ISBN 978-85-63979-17-9
1. Computaç~ ao. 2. Matemática. 3. Programaç~
ao.
4. Gentil, o iconoclasta. I. Tı́tulo.

CDU: 519.682
(Ficha catalográfica elaborada por Bibliotecária Zina Pinheiro CRB 11/611)

2
Prefácio
“A motivação para escrever o presente livro foi tripla. Em 1996 eu me
encontrava na UFSC quando fui solicitado, pelos alunos da fı́sica e engenha-
ria, a ministrar um curso de programação da HP ; quando, na ocasião, tive a
oportunidade de escrever uma apostila ‘Programando a HP 48’ para condu-
zir o curso. Em 2009 encontro-me na UFRR ministrando a disciplina Cálculo
Numérico, na qual decidi adotar a HP 50g . Reescrevi a apostila adaptando-a
para a HP 50g e postei uma versão em minha homepage. Num perı́odo de dois
anos aproximadamente recebi email’s de várias partes do Brasil de usuários
do meu trabalho − devo admitir que a apostila fez bastante sucesso. Isto me
motivou a transformar o referido trabalho no presente livro. Este trabalho
foi escrito tomando por base ‘a velha apostila’, sua adaptação e o Guia do
Usuário-HP.
No que diz respeito à eficiência da maioria dos alunos em utilizar os re-
cursos disponı́veis na calculadora − pelo que tenho observado − é a mesma
de um proprietário de uma possante ferrari que, no entanto, se desloca em
um monociclo.” (Extraı́do do prefácio do livro “Programando a HP 50g ”)

De todas as calculadoras da famı́lia HP a HP Prime é a de programação


mais fácil; depois de mais de 20 anos trabalhando com estas calculadoras
ainda hoje fico pasmo com a potência de cálculo destes − por assim dizer
− computadores de bolso, agora incluindo-se a computação algébrica. Ape-
nas para exemplificar, fórmulas não muito simples de serem manipuladas na
mão, aqui são programadas em um única linha!, por exemplo esta

7→ m  
X m
∆m f (n) = (−1)k f (n − k + m)
k
k=0

Muitos dos programas que constam neste livro ocupam no máximo uma
tela da HP Prime , como esta acima.
Para aqueles que desejam “apenas” aprender a programar a HP Prime o
capı́tulo 1 deste livro é mais do que suficiente; no capı́tulo 2 temos alguns
temas matemáticos inéditos − por mim desenvolvidos (sou “compositor”) −
e mais programação; o capı́tulo 3 é para os alunos do Cálculo Numérico.
É com grata satisfação que deixo aqui consignado meus agradecimentos
ao meu (ex-) aluno Adriano J. P. Nascimento que com grande competên-
cia, boa vontade e desprendimento produziu as capas da maioria dos meus
livros, e ainda se incumbiu da divulgação dos mesmos, a ele minha gratidão!.
Gentil, o iconoclasta/Boa Vista-RR, 02.03.2018

3
Foto-Ariovaldo(p. 109)
Caro prof. Gentil, boa tarde.
Sou professor do curso de engenharia elétrica da Universidade São Fran-
cisco, Campinas/SP.
Gostaria de pedir a sua autorização para usar, como base para um curso
de programação de calculadoras cientı́ficas HP, a sua apostila.
Desde já, independentemente da sua autorização, agradeço a sua atenção
e faço elogios a sua apostila e site.
Abraço fraterno.
Luiz Carlos de Freitas Júnior
Professor do Curso de Engenharia Elétrica/Campus Campinas
Professor Gentil,
Chamo-me Cleber e sou acadêmico do Curso de Engenharia Quı́mica da
Universidade Federal do Paraná. Estou escrevendo para parabenizá-lo pela
sua obra “Programando a HP 50g ”. Esse livro é fantástico! Tem me ajudado
muito. [. . . ] O seu livro fez toda a diferença no caminho que percorri para
adentrar no fantástico mundo da programação. [. . . ] (p. 110)
Cleber Pertel
Olá,
Sou Ângelo Polloto aluno de Engenharia Eletrônica da UTFPR (Univ.
Tecnológica Federal do Paraná)− Campos Toledo.
Li uma parte do seu trabalho ensinando a programar na HP 50g .
Sou muito grato por você tê-lo publicado já que o mesmo me ajudou, e
ajudará muito, durante a minha graduação. Peço-lhe gentilmente se posso
recomendá-lo para amigos da Universidade.
Grato pela atenção

4
Sumário

1 Programando a HP Prime 7
1.1 Introdução à programação da HP Prime . . . . . . . . . . . . 8
1.1.1 Programação numérica . . . . . . . . . . . . . . . . . . 10
1.1.2 Como executar um programa . . . . . . . . . . . . . . 15
1.1.3 Programação algébrica . . . . . . . . . . . . . . . . . . 20
1.2 Expressões e Funções . . . . . . . . . . . . . . . . . . . . . . . 25
1.3 Listas e Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.3.1 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.3.2 O comando MAKELIST . . . . . . . . . . . . . . . . . . 36
1.3.3 Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.3.4 O comando MAKEMAT . . . . . . . . . . . . . . . . . . . 44
1.3.5 Comandos úteis para matrizes . . . . . . . . . . . . . 46
1.4 Somatórios e produtórios . . . . . . . . . . . . . . . . . . . . 52
1.5 Álgebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
 Subrotinas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
1.6 Estruturas de Programação . . . . . . . . . . . . . . . . . . . 63
1.6.1 Estruturas cı́clicas . . . . . . . . . . . . . . . . . . . . 64
1.6.2 Estruturas condicionais . . . . . . . . . . . . . . . . . 74
• Traçando gráficos . . . . . . . . . . . . . . . . . . . . 77
1.7 Operadores lógicos relacionais . . . . . . . . . . . . . . . . . . 79
1.8 Algumas funções especiais . . . . . . . . . . . . . . . . . . . . 83
1.8.1 A função apply . . . . . . . . . . . . . . . . . . . . . . 83
1.8.2 A função REPLACE . . . . . . . . . . . . . . . . . . . 84
1.8.3 A função Map . . . . . . . . . . . . . . . . . . . . . . 88
1.8.4 A função Zip . . . . . . . . . . . . . . . . . . . . . . . 89
1.8.5 A função remove . . . . . . . . . . . . . . . . . . . . . 90
1.8.6 A função solve . . . . . . . . . . . . . . . . . . . . . . 91
• Tabela-Resumo . . . . . . . . . . . . . . . . . . . . . . . . 93
1.9 Polinômios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
1.10 Número inteiro . . . . . . . . . . . . . . . . . . . . . . . . . . 103

5
2 Aplicações - Mix 111
2.1 Cálculo de combinações . . . . . . . . . . . . . . . . . . . . . 112
2.2 Desenvolvimento N -ário . . . . . . . . . . . . . . . . . . . . . 115
2.3 Progressão aritmética bidimensional . . . . . . . . . . . . . . 119
2.3.1 Fórmula do termo geral de uma PA-2D . . . . . . . . 123
2.3.2 Soma dos termos de uma PA-2D . . . . . . . . . . . . 128
2.3.3 Linearização de sequências duplas . . . . . . . . . . . 132
2.4 Progressão aritmética tridimensional . . . . . . . . . . . . . . 146
2.4.1 Fórmula do termo geral de uma PA-3D . . . . . . . . 152
2.4.2 Soma dos termos de uma PA-3D . . . . . . . . . . . . 161
2.4.3 Linearização de sequências triplas . . . . . . . . . . . 163
2.5 Progressão aritmética de ordem m . . . . . . . . . . . . . . . 169
2.5.1 Fórmula do termo geral de uma P.A.m . . . . . . . . 171
2.5.2 Soma dos termos de uma P.A.m . . . . . . . . . . . . 182
2.5.3 Diferenças de ordem m . . . . . . . . . . . . . . . . . 186
2.6 Progressão geométrica de ordem m . . . . . . . . . . . . . . . 191
2.6.1 Fórmula do termo geral de uma P.G.m . . . . . . . . 192
2.6.2 Produto dos termos de uma P.G.m . . . . . . . . . . . 200
2.6.3 Quocientes de ordem m . . . . . . . . . . . . . . . . . 201
2.6.4 Uma aplicação das P.G.m : Cálculo de combinações . 208
2.7 Um pequeno interregno cultural . . . . . . . . . . . . . . . . . 212
2.8 A Curva de Peano e o Cubo Hipermágico . . . . . . . . . . . 218
2.8.1 A curva de Peano no cubo . . . . . . . . . . . . . . . . 242
2.8.2 O cubo hipermágico . . . . . . . . . . . . . . . . . . . 246
2.9 Cálculo da taxa de juros . . . . . . . . . . . . . . . . . . . . . 250

3 Aplicações ao Cálculo Numérico 269


3.1 Interpolação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
3.1.1 Interpolação de Lagrange . . . . . . . . . . . . . . . . 275
3.1.2 Interpolação de Newton . . . . . . . . . . . . . . . . . 283
3.1.3 Interpolação de Gregory-Newton . . . . . . . . . . . . 291
3.2 Integração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
3.2.1 Regra dos trapézios generalizada . . . . . . . . . . . . 302
3.2.2 Primeira regra de Simpson . . . . . . . . . . . . . . . 305
3.2.3 Segunda regra de Simpson . . . . . . . . . . . . . . . . 307
3.2.4 Quadratura gaussiana . . . . . . . . . . . . . . . . . . 309
3.2.5 Integral dupla . . . . . . . . . . . . . . . . . . . . . . . 321
3.3 Equações Diferenciais Ordinárias . . . . . . . . . . . . . . . . 328
• Fórmula de Taylor . . . . . . . . . . . . . . . . . . . . 329
3.3.1 Problema de valor inicial (PVI) . . . . . . . . . . . . . 338
3.3.2 Método de Euler . . . . . . . . . . . . . . . . . . . . . 341
3.3.3 Método de Taylor de ordem p = 2 . . . . . . . . . . . 346
3.3.4 Métodos de Runge-Kutta . . . . . . . . . . . . . . . . 348

6
Capı́tulo 1
Programando a HP Prime
A despeito da crı́tica de Laplace, a visão de Leibniz,
pela qual o mundo é criado a partir dos 0’s e 1’s, recusa-se
a sair de cena. De fato, ela começou a inspirar alguns fı́-
sicos contemporâneos, que provavelmente nunca ouviram
falar de Leibniz.

(Gregory Chaitin/Metamat!)

Introdução: Uma diferença (evoluç~


ao) abissal!
Como eu conheço − apenas parcialmente, observo − o poder de cálculo
numérico e algébrico da HP Prime gostaria apenas de registrar nesta in-
trodução que fico deveras embasbacado (pasmo, estupefato) com o seguinte
aspecto da evolução computacional humana:

Leibnitz (1646-1716) Pascal (1623-1662) − HP Prime


(2013)

7
1.1 Introdução à programação da HP Prime

A calculadora gráfica HP Prime é uma potente e sofisticada ferramenta


computacional, não apenas numérica como, ademais, algébrica − e também
gráfica. A seguir a legenda do teclado∗

A calculadora é um universo praticamente inesgotável, apresentaremos


aqui material suficiente para iniciar o leitor no fascinante universo da pro-
gramação, daremos os primeiros passos na programaç~ ao numérica e algé-
brica; muitos outros programas são apresentados no desenvolver do presente
livro − do capı́tulo 1 em diante. A HP Prime utiliza uma linguagem de pro-
gramação própria conhecida como “linguagem de programação da HP
Prime ”: Uma potente e sofisticada linguagem de programação.
A base da calculadora é a vista de Inı́cio ( ), aqui podemos realizar
todos os cálculos numéricos. Os cálculos simbólicos (ou algébricos)
são realizados na vista do CAS ( ), a ser exemplificado oportunamente.
Escrevi um livro sobre programação da calculadora HP 50g no qual adotei o
modo pilha (RPN− Reverse Polish Notation), na HP Prime o modo RPN
foi praticamente banido, já que não podemos utilizá-lo em programação,
sendo assim adotaremos em todo este livro o modo algébrico.

Retirado do manual “Guia de consulta rápida”.

8
Inicialmente, coloque sua calculadora no modo de entrada algébrico

7−→

Nota: Enfatizamos que do inı́cio ao fim deste livro a calculadora estará


fixada (configurada) no modo de entrada algébrico.

Pois bem, voltando à Vista de Inı́cio ( ) destacamos


Linha de entrada Linha de entrada

A linha de entrada (de dados) no modo algébrico é “unidimensional”


(em uma linha); após pressionar teremos a tela da direita.

9
1.1.1 Programação numérica
Programar a calculadora significa introduzir em sua memória (RAM−
Random Access Memory − memória de acesso aleatório) uma série de ins-
truções e comandos para que ela os execute sequêncialmente, cumprindo
alguma tarefa especı́fica. Por exemplo, resolver uma equação, multiplicar
ou dividir polinômios, imprimir textos, elaborar um gráfico, construir tabe-
las trigonométricas, etc.
Para tanto é necessário que as instruções e os comandos sejam digitados
no padrão sintático da linguagem da calculadora e dispostos sequêncialmente
na ordem em que devem ser executados. A fim de que a execução seja per-
feita e apresente os resultados objetivados com precisão, não basta atender
estes requisitos. É preciso que o programa não contenha erros de lógica,
cuja detecção não é feita pela calculadora, que está preparada para apontar
somente erros de sintaxe.
Os recursos de programação postos à nossa disposição pela calculadora
HP Prime são excepcionalmente valiosos e variados e a melhor forma de
conhecê-los, entender sua finalidade e alcance e fixá-los em nossa memória é
através da prática.
Embora mencionada como uma calculadora por causa de seu formato
compacto similar aos dispositivos de cálculo manuais tı́picos, a HP Prime
deve ser vista como um sofisticado computador programável/gráfico.
Antes de se iniciar a programação de determinado problema é importante
que se tenha bem claro em mente quais são os dados de entrada e quais são
os dados de saı́da; por exemplo:

1o ) Resolver a equação quadrática ax2 + bx + c = 0.



−b ± b2 − 4ac
x=
2a
Temos:

a
r1
b REQ
r2
c

Onde:
− Dados de entrada: a, b e c.
− Dados de saı́da: r1 e r2 (são as raı́zes).
− REQ: Variável que irá armazenar o programa (e que será referenciada
sempre que o programa for executado).

10
Observação: o nome REQ é apenas um exemplo, o nome poderia ser um
outro, a seu critério. A bem da verdade existem algumas restrições na esco-
lha do nome de uma variável. O modo mais prático é tentar um nome, caso
a calculadora reclame (erro) mude-o.

2o ) Calcular o n−ésimo termo de uma progressão aritmética:

an = a1 + (n − 1)r

Temos

a1
r PA an
n

Onde:
− Dados de entrada: O primeiro termo a1 ; a razão r da P.A. e a posição n
do termo que desejamos encontrar.
− Dados de saı́da: O n−ésimo termo an .
− PA: Variável que irá armazenar o programa (e que será referenciada sem-
pre que o programa for executado).

3o ) Obter uma fórmula para a soma dos n primeiros termos de uma pro-
gressão aritmética:
n(n − 1) r
S n = n a1 +
2
Temos

a1
n(n−1) r
FSPA S(n) = n a1 + 2
r

Onde:
− Dados de entrada: O primeiro termo a1 e a razão r da P.A..
− Dados de saı́da: A função soma dos termos, S(n).
− FSPA: Variável que irá armazenar o programa (e que será referenciada
sempre que o programa for executado).

11
Nosso primeiro programa
Inicialmente vamos fazer um programa para calcular as raı́zes de uma
equação do 2 o grau
√ √
−b + b2 − 4 a c −b − b2 − 4 a c
r1 = e r2 =
2a 2a
Entre na área de programação digitando as teclas

A calculadora exibirá a seguinte tela (esquerda):

Estamos no Catálogo de programas. Pressione a tecla virtual New, para


um novo programa. A tela do centro será exibida. Escolha um nome para o
programa − No caso escolhemos o nome REQ (Resolução Equação Quadrática).
Pressione OK, a tela da direita será exibida.
Nota: Na programação numérica não marcamos a caixa CAS.
Pressionando OK novamente, a seguinte tela será exibida

↓Aqui

EXPORT (exportar), a variável (programa) que estamos criando na Vista de


Inı́cio é automaticamente definida como uma variável global (ver p. se-
guinte). Dentro dos parenteses digite os dados de entrada do programa,
separados por vı́rgula − como na tela do centro. Pois bem, após digite a
primeira raiz, como na tela da direita.

12
Adendo: Declaramos as variáveis r1 e r2 como sendo locais, são variá-
veis utilizadas exclusivamente numa determinada função. A utilização de
variáveis locais permite-lhe declarar e utilizar variáveis que não irão afetar o
resto da calculadora. Ao contrário, uma variável dita global, é globalmente
visı́vel − visı́vel onde quer que se esteja na calculadora.
O comando
:=
é de atribuição. Atribui um valor a uma variável.
Ademais, existe uma outra forma de se armazenar (Sto) um valor em
uma variável, por exemplo, 3 ◮ a. A sintaxe é Value◮Var; ou seja, o valor
à esquerda é armazenado na variável à direita. Este operador pode ser
acessado na tecla

As linhas em um programa na HP Prime são separadas por ponto e vı́r-


gula; ou ainda, ao término de uma instrução, e ao iniciar a digitação da
seguinte, separe-as por ;
Por oportuno, vamos copiar o que já foi digitado na tela a seguir


−b + b2 − 4 a c
r1 = 2a


−b − b2 − 4 a c
r2 = 2a

para digitar a segunda raiz. Posicione o cursor no inı́cio da linha a ser


copiada, assim:

7→

após digite a sequência de teclas do centro, acima. A tela da direita será


exibida.

13
Posicione o cursor no final da linha a ser copiada, assim:

↑ ↑
Ao clicar na tecla virtual End a linha a ser copiada é marcada, como na
tela do centro. Após clique na tecla virtual Copy. Na tela da direita já
posicionamos o cursor onde a linha será copiada, faça isto.
Pois bem, estando na tela a seguir

digite a sequência de teclas do centro (Colar). A tela da direita será exibida,


com a linha a ser copiada marcada. Após clique na tecla virtual Ok, a tela
a seguir será exibida


Faça as alterações constantes na tela do centro. Após concluir a digitação
clique na tecla virtual Check para verificar se há algum erro de sintaxe.
Pressione em seguida OK e para retornar ao catálogo de programas,
onde consta o programa que acabamos de construir.

14
1.1.2 Como executar um programa
Temos mais de uma alternativa para executar um programa, iremos apre-
sentar apenas a que utilizaremos até o final deste livro. Executaremos o
programa diretamente da vista de inı́cio, primando a tecla

estamos na vista de inı́cio, tela do centro. Nota: quando eu esqueço o nome


do programa, os dados de entrada e a ordem destes dados, costumo tirar um
print da tela, como na tela da direita acima. Pois bem, vamos executar o
programa para a seguinte equação do 2 o grau

x2 − 7 x + 10 = 0

Digite na linha de entrada o nome do programa e, entre parenteses, os


dados requeridos pelo programa − observe a ordem −, como na tela a seguir

7−→

Após, pressione e teremos a tela da direita, com o resultado


desejado. A seguir fazemos mais uma simulação

x2 + 1 = 0
a = 1, b = 0, c = 1

∆ = b2 − 4 a c ←−

∆ = −4 < 0

Observe a configuração na Vista de Inı́cio, tela à direita.

15
Vejamos mais um exemplo de programação numérica. Vamos fazer um
programa para calcular o n-ésimo termo de uma progressão aritmética, a
partir da fórmula do termo geral

an = a1 + (n − 1) r

Entre novamente na área de programação

Pedindo um novo programa, agora escolhemos o nome PA. Após pressionar


OK estamos na tela a seguir

completamos como na tela do centro. Na tela da direita executamos o pro-


grama − a partir da vista de inı́cio −, para a progressão aritmética a seguir

1 3 5 7 9 11 13
|{z} 15 17 ...
n=7

Confira na fórmula

an = a1 + (n − 1) r

a7 = 1 + (7 − 1) · 2 = 13

Como nosso último exemplo de programação numérica, vamos programar


a fórmula
n(n − 1) r
S n = n a1 +
2
da soma dos n primeiros termos de uma P.A.

16
Entre novamente na área de programação

Vamos fazer diferente, ao invés de pedir um novo programa, vamos pegar


um “atalho”, salvaremos o programa anterior (PA) com um novo nome.
Clicando na tecla virtual assinalada (More) temos a tela da direita.
Clicando em Save estaremos na tela a seguir, onde salvamos o programa
PA com o novo nome de STPA

Ao clicar OK estaremos na tela do centro. Fazemos as alterações conforme


tela da direita.
Na tela a seguir executamos o programa para a mesma P.A. do exemplo
anterior.

n(n−1) r
Sn = n a1 + 2

6 (6−1)·2
S6 = 6 · 1 + 2 = 36

Portanto, a soma dos seis primeiros termos da P.A. é 36, confira

1| 3 5 {z 7 9 11} 13 15 17 ...
S6 = 36

17
As duas fórmulas seguintes são bastante úteis em Análise Real.
Exemplo: O maior de dois números. A seguinte fórmula matemática

a + b + |a − b|
max{ a, b } =
2
nos fornece o maior de dois números. Por exemplo

2 + 5 + |2 − 5|
max{ 2, 5 } = =5
2
Exemplo: O menor de dois números. A seguinte fórmula matemática

a + b − |a − b|
min{ a, b } =
2
nos fornece o menor de dois números. Por exemplo

−1 + 0 − | − 1 − 0|
min{ −1, 0 } = = −1
2
Nas duas primeiras telas a seguir programamos estas fórmulas

Na tela da direita temos algumas simulações (exemplos).

∗ ∗ ∗
Algumas funções para números reais (p. 38)

18
Adendo
Para mais detalhes sobre algumas funções para números proceda assim:
assinale a função desejada − por exemplo, Floor (ch~
ao, piso):

Após assinalar a função de interesse pressione a tecla Help, na tela do


centro temos uma explanação e exemplos da função. Se necessário configure
sua calculadora no idioma português.
Vejamos mais um exemplo, desta vez no menu Aritmética:


Ademais, peça para ver a outra página do menu, como indicado pela seta.
Por oportuno, a tela a seguir mostra como podemos acessar vários carac-
teres úteis

Por exemplo, na tela do centro assinalamos o cavalo do xadrez, após pressi-


onar OK o caracter aparece na linha de entrada, e pode ser manipulado como
uma variável (apenas na Vista do CAS, como veremos logo mais).

19
1.1.3 Programação algébrica
Na programação algébrica, que será bastante utilizada ao longo de todo
este livro, além de números podemos ter fórmulas na saı́da de um programa.
Estes programas pertencem à vista do CAS − Computer Algebra System
(Sistema de Álgebra Computacional).

Modo CAS Aproximado e Exato


No modo CAS existe uma importante configuração, acesse assim

←− Ademais, peça isto


Aqui

Se Exact estiver marcado as operações simbólicas serão calculadas como


expressões algébricas, caso contrário como numéricas. Ou ainda, com Exact
ativo (marcado) as constantes serão tratadas simbolicamente, caso contrário,
numericamente (i.e., aproximadas por seus valores numéricos). Por exemplo,
na tela a seguir

entramos com as respectivas constantes com Exact ativo, na tela do centro


desativamos Exact e entramos novamente com as mesmas constantes.
Pois bem, vamos iniciar a programação algébrica por um programa bem
simples. Antes, volte a tivar Exact.

20
Nosso primeiro programa algébrico
Como motivação para o nosso primeiro programa algébrico reconsidere o
programa REQ visto na página 15, o qual resolve a equação a x2 + b x + c = 0.
Nas duas telas a seguir resolvemos duas equações quadráticas

3
x2 − x − 4 =0 x2 − 2 = 0

Gostariamos que no primeiro caso o programa nos devolvesse as raı́zes


na forma de fração e, na tela da direita, o valor exato, e não aproximado.
Esta é uma tarefa para a programação algébrica.
Entre na área de programação digitando as teclas , a calcu-
ladora exibirá a seguinte tela

pressione a tecla virtual New, para um novo programa. Na tela do centro


nomeamos nosso novo programa, REQ E, e marcamos a caixa CAS; após
pressionar OK teremos a tela direita. O programa é como na tela a seguir

Este programa será executado a partir da Vista do CAS. Pressione a tecla


. Na tela do centro resolvemos as duas equações do inı́cio desta página.
Na tela da direita, acima, mostramos como acessar alguns caracteres
úteis, incluindo algumas letras gregas.

21
Exemplo: Considere a fórmula do termo geral de uma P.A.:

an = a1 + (n − 1) r
Faremos um programa onde entraremos com o primeiro termo a1 e a razão r
e na saı́da teremos a fórmula do termo geral − e não um termo em particular,
como anteriormente. O programa é como na tela a seguir

7→

Na tela da direita executamos o programa para a seguinte progressão arit-


mética

1 3 5 7 9 11 13 15 17 ...

onde, a1 = 1 e r = 2. Confira

an = a1 + (n − 1) r

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

Nota: Caso seu programa não tenha saido com o resultado desejado é
possı́vel que tenha algum valor previamente armazenado na variável n; por
exemplo, na tela a seguir armazenamos 2 nesta variável


ao executar novamente o programa obtivemos um número e não uma expres-


são algébrica. Para saber se existe um valor armazenado em uma variável
basta digitá-la na linha de entrada e dá Enter, como na tela da direita (no
caso da variável ser n, evidentemente). Caso exista algum número armaze-
nado na variável este será mostrado.
Na página seguinte mostramos como resolver este − eventual − problema.

22
Como resetar uma variável

Adendo:
Para resetar (deletar) uma variável CAS, acesse a memória da calcula-
dora a partir das teclas:

Em seguida selecione CAS Vars

7−→
7−→

7−→

peça para ver as variáveis do CAS; selecione a que deseja deletar, clique na
tecla virtual Delete.

A bem da verdade, existe um método alternativo para se resetar algumas


variáveis: Escreva o comando purge com a variável entre parenteses. Por
exemplo, na tela a seguir

armazenamos um valor na variável n, para deletar este valor escreva na


linha de entrada como na tela do centro. Ao dá Enter, na tela da direita
a calculadora mostra o valor que se encontrava armazenado na variável n,
esta encontra-se agora resetada. Por exemplo, ao digitar n na linha de
entrada e dá Enter esta aparecerá “limpa”. Podemos resetar várias variáveis
simultaneamente, separe-as por vı́rgula no comando purge.

23
Exemplo: Vamos ver mais um exemplo de programação algébrica. A partir
da fórmula
n(n − 1) r
S n = n a1 + (1.1)
2
da soma dos n primeiros termos de uma P.A. vamos elaborar um programa
que sairá com esta fórmula para uma dada P.A..
Entre novamente na área de programação

Pressionando New escolhemos o nome FSPA, digitamos como na tela da


direita. Após Check, o programa não contém erros. Vamos executá-lo, a
partir da vista do CAS, para a P.A.

1 3 5 7 9 11 13 15 17 ...

onde, a1 = 1 e r = 2. Pressione a tecla

na linha de entrada digite o nome do programa e, entre parenteses, os dados


requeridos pelo programa. Após, pressione e teremos a tela da
direita (acima).
Da tela à direita temos que Sn = n2 é a fórmula para a soma dos n primeiros
termos da P.A. do exemplo dado. Vamos confirmar a saı́da do programa, a
partir da fórmula (1.1)

n(n − 1) 2
Sn = n · 1 + = n2
2

24
1.2 Expressões e Funções
Na HP Prime existe uma importante distinção a ser feita: expressão e
função. Para os exemplos seguintes antes execute purge(x, y). Na tela a
seguir criamos uma expressão e mostramos como avaliá-la para um dado
valor da variável

Na tela do centro criamos uma expressão de duas variáveis e a avaliamos


para x = 1 e y = −1.
O comando subst substitui uma variável (ou mais) em uma expressão
por um dado valor. Na tela da direita mostramos outra alternativa para se
avaliar uma expressão: atribua antes os valores das variáveis, depois entre
com a expressão.
Uma função para a HP Prime possui um ou mais argumentos entre pa-
renteses, separados por vı́rgula. A tela a seguir mostra como definimos a
função f (x) = x2 + 2 x + 1

Após Enter teremos a tela do centro; à direita avaliamos esta função para
x = 1. A propósito, um programa é visto como sendo uma função.
A seguir definimos a função de duas variáveis f (x, y) = 2 x3 + 4 y − 1

Após Enter teremos a tela do centro; à direita avaliamos esta função para
x = 1 e y = −1.

25
Um pequeno interregno cultural
Pergunte ao seu professor de matemática quanto vale “o quadrado de uma
torre do xadrez mais três vezes um telefone adicionados à raiz quadrada da
torre dividida pelo telefone”. − quanto vale esta singela operação?
Se por acaso ele não souber a HP Prime sabe; senão vejamos, inicialmente
definimos a seguinte função de duas variáveis

ao dá Enter teremos a tela do centro, acima. Na tela da direita temos uma
das (infinitas) respostas possı́veis para o desafio proposto!

. . . e George Boole tinha toda razão


“Mais importante até que sua lógica matemática era a concepção que Bo-
ole tinha da própria matemática. Na Introdução a sua Análise Matemática
da Lógica o autor faz objeções à concepção então corrente da matemática
como ciência da grandeza e do número (definição ainda adotada em alguns
dicionários inferiores). Defendendo uma visão mais ampla, Boole escrevia:
Poderı́amos com justiça tomar como caracterı́stica definitiva de um
verdadeiro Cálculo, que é um método que se apóia no uso de Sı́mbolos,
cujas leis de combinação são conhecidas e gerais, e cujos resultados ad-
mitem uma interpretação consistente . . . É com base nesse princı́pio geral
que eu pretendo estabelecer o Cálculo da Lógica, e que reinvindico para
ele um lugar entre as formas reconhecidas da Análise Matemática.
A Álgebra de Peacock de 1830 tinha sugerido que os sı́mbolos para ob-
jetos na álgebra não precisam indicar números, e De Morgan argüia que as
interpretações dos sı́mbolos para operações eram também arbitrárias; Boole
levou o formalismo à sua conclusão. A matemática já não estava limitada a
questões de número e grandeza contı́nua. Aqui pela primeira vez está clara-
mente expressa a idéia de que a caracterı́stica essencial da matemática é não
tanto seu conteúdo quanto sua forma. Se qualquer tópico é apresentado de
tal modo que consiste de sı́mbolos e regras precisas de operação sobre esses
sı́mbolos, sujeitas apenas à exigência de consistência interna, tal tópico é
parte da matemática.”
(Carl B. Boyer/História da Matemática)

26
Adendo
Matemática: Esta “ciência vazia” que − espantosamente − se aplica a
todas as contingências fenomenológicas, apesar de ser um puro formalis-
mo reflexivo.
O objetivo deste adendo é exemplificar o sentido da seguinte afirmação:
“A Álgebra de Peacock de 1830 tinha sugerido que os sı́mbolos para ob-
jetos na álgebra não precisam indicar números, e De Morgan argüia que as
interpretações dos sı́mbolos para operações eram também arbitrárias.”
Com efeito, consideremos a seguinte expressão simbólica:
“Uma torre mais duas vezes um cavalo menos três vezes uma tesoura”
como vemos em destaque na tela a seguir

Esta expressão, por si só, não faz o menor sentido, ou ainda, é vazia de
significado e, por isto mesmo, ela é potencialmente infinita, isto é, pode
comportar infinitas interpretações. Por exemplo na tela da direita atribui-
mos o número 4 à torre, o número 5 ao cavalo e o número 8 à tesoura; nestas
condições a expressão torna-se igual ao número −10.
Mas podemos fazer diferente, vamos atribuir matrizes a estes três objetos,
como na tela a seguir

as operações agora também são diferentes, o resultado é uma matriz. Ve-


jamos ainda uma terceira alternativa; na tela da direita os objetos agora
são polinômios, de igual modo, agora as operações são entre polinômios, o
resultado da expressão é um polinômio.
Em resumo: somos nós mesmos que escolhemos o que a expressão deve
significar; podemos generalizar e afirmar: “assim se dá com os infinitos sig-
nificados que atribuimos ao mundo”.

27
Da natureza da matemática
“A caracterı́stica essencial da matemática é não tanto seu conteúdo
quanto sua forma. Se qualquer tópico é apresentado de tal modo que
consiste de sı́mbolos e regras precisas de operação sobre esses sı́mbolos,
sujeitas apenas à exigência de consistência interna, tal tópico é parte da
matemática.” (Carl B. Boyer/História da Matemática)

Por exemplo, na tela a seguir consideramos um conjunto G com quatro


sı́mbolos arbitrários

Na tela do centro escolhemos um sı́mbolo − também arbitrário − para


uma operação que denominaremos de “multiplicação”. Na tela da direita
temos como definimos a tábua de multiplicação.
Na tela a seguir mostramos o produto da estrela multiplicada pela tesoura

Esta operação possui elemento neutro, a torre. Cada elemento possui um


inverso multiplicativo, por exemplo, o inverso da estrela é a tesoura.
Ademais, a nossa multiplicação é associativa, veja um exemplo:

Isto é matemática!
(G, ⋆) = grupo

28
Progressão aritmética periódica
Nosso objetivo agora é mostrar que é mais prático − do ponto de vista
operacional − sair com uma função, ao invés de uma expressão.
O que estamos chamando de uma progressão aritmética periódica (PAP)
é uma sequência do tipo:
a1 a2 a1 + r a2 + r a1 + 2r a2 + 2r a1 + 3r a2 + 3r ...
onde são dados a1 , a2 e r. A fórmula do termo geral destas sequências é

 a1 + n−1
2 r, n ı́mpar;
an =
a2 + n−2

2 r, n par.
Se quisermos a equação acima em apenas uma sentença fica assim:

1 − (−1)n 1 + (−1)n 2n − 3 − (−1)n


an = a1 + a2 + r
2 2 4

Exemplo: Encontre uma fórmula para o n-ésimo termo da sequência


3 3 6 6 9 9 12 12 15 15 ...
Solução: Trata-se de uma PAP na qual a1 = a2 = 3 e r = 3. Substituindo
estes valores na equação acima temos
1 − (−1)n 1 + (−1)n 2n − 3 − (−1)n
an = ·3+ ·3+ ·3
2 2 4
simplificando

3 2n − (−1)n + 1
an = (1.2)
4
Na tela a seguir programamos a fórmula do termo geral de uma PAP

←−

na tela do centro resolvemos o exemplo dado, ou seja, entrando com


a1 = a2 = r = 3
a calculadora nos devolve a fórmula do termo geral da respectiva PAP.

29
Na tela a seguir calculamos esta função para quatro valores de n

Confira na sequência

3 3 6 6 9 9 12 12 15 15 ...

Mais uma vez observe que não precisamos “tomar nota da fórmula”.
Exemplo: Encontre uma fórmula para o n-ésimo termo da sequência

2 −1 2 −1 2 −1 2 −1 ...

Solução: Trata-se de uma PAP na qual a1 = 2, a2 = −1 e r = 0. Substi-


tuindo estes valores no programa temos

1 − 3 · (−1)n
a(n) =
2

Na tela da direita calculamos an para quatro valores de n.


A fórmula para a soma dos termos de uma PAP é esta

2 n − (−1)n + 1 2 n + (−1)n − 1 2 n2 − 4 n − (−1)n + 1


Sn = a 1 + a2 + r
22 22 23

30
Na tela a seguir programamos esta fórmula

na tela da direita executamos o programa para a seguinte PAP


3 3 6 6 9 9 12 12 15 15 ...
Em seguida observei que o resultado não estava de acordo com o esperado.
No programa existe um erro; neste caso é fácil detectá-lo, no entanto decidi
deixar assim mesmo para ter a oportunidade de ensinar uma alternativa
para se detectar um erro no caso de uma eventual expressão algébrica mais
complicada. Pois bem, copie (Copy) toda a expressão, como na tela a seguir

após, no CAS Settings peça nenhuma simplificação, após vá para a Vista do
CAS e cole (Paste) na linha de entrada a expressão copiada, como na tela da
direita, acima. Após Enter estaremos na tela a seguir

Clique na primeira expressão e peça para ver (Show); comparando com


a fórmula original
2 n − (−1)n + 1 2 n + (−1)n − 1 2 n2 − 4 n − (−1)n + 1
Sn = a 1 + a 2 + r
22 22 23

31
nos damos conta de que o erro encontra-se na terceira parcela








aqui

corrigimos conforme tela do centro. Voltando a configuração do CAS para


simplificação máxima, executando novamente o programa obtivemos a tela
da direita, acima.
Na tela a seguir calculamos a função de saida para dois valores de n

6 n2 + 12 n − 3 (−1)n + 3
S(n) =
8

Confira:

3
| 3 {z 6 6} 9 9 12 12 15 15 ...
S(4)=18

3
| 3 6 6 {z 9 9 12 12} 15 15 ...
S(8)=60

32
Exemplo: Quantos termos devem ser somados, a partir do primeiro termo,
na seguinte PAP para que a soma seja 15?

2 −1 2 −1 2 −1 2 −1 ...

Na tela a seguir encontramos a fórmula para a soma dos termos desta


sequência

2 n − 3 (−1)n + 3
S(n) = = 15
4

Por enquanto, deixamos este problema como exercı́cio ao leitor, oportu-


namente vamos ver como resolver equações como esta pela HP Prime .
Desafio: Por oportuno, vamos deixar um outro desafio ao leitor: Considere
novamente a sequência

3 3 6 6 9 9 12 12 15 15 ...

queremos, por exemplo, encontrar a posição ocupada pelo termo 12 nesta


sequência. Considerando a fórmula (1.2) deduzida anteriormente (p. 29),
resolva a seguinte equação

6 n − 3 (−1)n + 3
= 12
4
Claro, por simples inspeção o conjunto solução desta equação é { 7, 8 }; mas,
e se pedirmos, por exemplo, a posição de um outro termo?. Digo, se já estiver
ao seu alcance faça um programa que recebe um termo e se caso o termo
esteja na sequência o programa sai com a sua posição, caso contrário ele diz
que o termo não encontra-se na sequência.
Um outro desafio é: com respeito a sequência

2 −1 2 −1 2 −1 2 −1 ...

faça um programa que recebe um dado valor da soma (dos termos desta
sequência) e o programa nos devolve n, isto é, quantos termos devem ser
somados para que se obtenha a soma dada; caso exista solução, se não o
programa deve avisar que um tal valor da soma é “espúrio”.

33
1.3 Listas e Matrizes
Com o objetivo de aumentar ainda mais nosso poder (potência) de pro-
gramação é que incluimos nesta secção dois importantes recursos para pro-
gramação: listas e matrizes.

1.3.1 Listas
Uma lista é constituida de objetos (números, letras, matrizes, etc.) entre
chaves e separados por vı́rgula. Uma lista é o que comumente conhecemos
por conjunto, na matemática. Exemplo de lista:

{ 1, 5, a, { b, c } }
Lista é um recurso muito importante para manipulação de objetos.
Criando listas
As listas podem ser criadas a partir da linha de entrada, veja:

Nota: Antes de digitar


a lista: purge(a,b,c)

Após, pressione para obter a tela da direita.


Importante: Estamos na vista do CAS; para que a letra a, por exemplo,
apareça como elemento da lista nesta letra não deve constar nenhum valor
previamente armazenado, deve estar resetada. Veja adendo, página 23. A
mesma observação vale para as demais letras, obviamente.
As listas podem ser armazenadas (guardadas) em uma variável. Por
exemplo, escreva L1:= na linha de entrada, clique sobre a lista, como na
tela a seguir

agora clique em Copy para obter uma cópia; após Enter teremos a tela da
direita, agora a lista encontra-se armazenada na variável L1.

34
Acessando os elementos de uma lista
Podemos ter acesso aos elementos de uma lista digitando o nome da lista
e a posição do elemento entre parenteses. Por exemplo, considere a lista
anterior (tela esquerda a seguir)

na tela da direita acessamos cada um dos elementos da lista.

Pedindo o comprimento e a dimensão de uma lista


Existem dois comandos, SIZE e DIM, que nos dão o comprimento e a
dimensão de uma lista, respectivamente. Por exemplo, na tela a seguir
criamos uma lista e a guardamos na variável L2

na tela do centro pedimos o comprimento da lista (número de elementos,


como na matemática) e na tela da direita sua dimensão.
Nas telas a seguir

mostramos como acessar os dados desta lista.

35
1.3.2 O comando MAKELIST
Um importante comando em programação é MAKELIST, cuja sintaxe é
vista a seguir

MAKELIST (expressão, variável, inicio, fim, incremento)


Cria uma lista a partir da expressão à medida que a variável assume valores
do inı́cio ao fim, tendo em conta o incremento.
Exemplo: Nas telas a seguir vemos três exemplos

Nota: Na vista do CAS digite o comando MAKELIST − na linha de entrada


− em letras maiúsculas, caso contrário pode dar problemas.

Partição de um intervalo
Para obter uma partição (regular) do intervalo numérico [ a, b ] em N
subintervalos de mesmo comprimento h, fazemos h = b−a N , no que resulta

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

[ ] x
a = x0 x1 x2 ... xn−1 xn = b
h h h

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

b−a 1−0 1
h= = = = 0. 25
N 4 4
A discretização do intevalo fica: (n = 0, 1, 2, 3, 4)

p p p p p x
x0 = 0 1 1 3 x4 = 1
x1 = 4
x2 = 2
x3 = 4

36
Utilizando o comando MAKELIST vamos elaborar um programa que recebe
a, b e N , e sai com uma lista contendo a partição do intervalo [ a, b ]. O
programa é como a seguir

Na tela da direita temos uma simulação, confira geometricamente


p p p p p x
x0 = 0 1 1 3 x4 = 1
x1 = 4
x2 = 2
x3 = 4

Amostragem de uma função nos pontos de uma partição

f
yn s
p

..
.
y1 s
p

y0 s
p

p p p p x
0 ···
x0 = a x1 x2 xn = b

O programa a seguir usa o comando MAKELIST para amostrar uma função


nos pontos de uma partição do intervalo [ a, b ]

−1 0 1

Na tela do centro amostramos a função f (x) = x2 + 1 no intervalo [ 0, 1 ],


com h = (1 − 0)/4 = 0.25.

37
O menu Math/List
Menus Toolbox
Os menus Toolbox ( ) (Caixa de ferramentas) são uma co-
leção de menus que oferecem funções e comandos úteis em matemática e
programação. Na figura a seguir vemos os menus

De momento o que nos interessa é o (sub)menu List, para isto prima a


tecla “caixa de ferramentas”. Digite a tecla virtual assinalada acima (Math).
Em seguida desça até o item 6 (List), como na tela a seguir

Selecionando este item comparecem vários comandos para se operar com


listas, veja tela da direita.

Os menus Matemática, CAS e Catálogo (Catlg) oferecem mais de 400


funções e comandos.

∗ ∗ ∗

38
Nas telas a seguir, temos algumas simulações

MAKELIST gera uma lista, como já vimos; SORT classifica os elementos de
uma lista na ordem crescente; REVERSE reverte a ordem da lista; CONCAT
concatena duas listas; POS nos dá a posição de um elemento que está numa
lista. Na tela a seguir

SIZE nos dá o comprimento de uma lista, como já vimos; ∆LIST cria uma
nova lista composta pelas primeiras diferenças de uma lista; isto é, as dife-
renças entre elementos consecutivos
P na lista. A nova lista tem um elemento
a menos queQa lista original; LIST calcula a soma de todos os elementos
numa lista; LIST calcula o produto de todos os elementos numa lista.
Na tela da direita DIFFERENCE apresenta a lista de elementos não comuns
de duas listas; UNION apresenta a união das listas como um vetor; INTER-
SECT apresenta a intersecção de duas listas como um vetor∗ . Observei que
na vista de inı́cio, ( ), a união e a intersecção de duas listas é uma lista,
como deve ser.
∗ ∗ ∗


Logo mais veremos o que é um vetor para a HP Prime .

39
Um Belo Desafio! − A quem interessar possa.

Introdução: Considere a sequência dos quadrados dos naturais


12 22 32 42 52 62 72 ...
No diagrama a seguir
1 4 9 16 25 36 49 ...
3 5 7 9 11 13 ...
2 2 2 2 2 ...
produzimos duas diferenças entre os termos da sequência dos quadrados
dos naturais. Considere a sequência dos cubos dos números naturais
13 23 33 43 53 63 73 ...
No diagrama a seguir
1 8 27 64 125 216 343 ...
7 19 37 61 91 127 ...
12 18 24 30 36 ...
6 6 6 6 ...
produzimos três diferenças entre os termos da sequência dos cubos dos
números naturais. A calculadora HP Prime possui uma função ∆List que
produz a diferença entre os termos de uma lista

Desafio: Considere a sequência dos naturais à m-ésima potência:


1m 2m 3m 4m 5m 6m 7m ...
prove que m diferenças entre os termos desta sequência resulta sempre numa
constante igual a m! .

Gentil, o iconoclasta Boa vista-RR/06.08.2016


gentil.iconoclasta@gmail.com

40
1.3.3 Matrizes
Uma das potências da HP Prime é o trato com matrizes, tanto numéricas
quanto simbólicas. Por exemplo, veja

Podemos até multiplicar duas matrizes simbólicas, como aparece na tela


da direita.
Reiteramos: Estamos na vista do CAS; para que a letra a, por exemplo,
apareça como elemento da matriz nesta letra não deve constar nenhum valor
previamente armazenado, deve estar resetada. Veja adendo, página 23.
Criando matrizes
As matrizes podem ser criadas a partir da linha de entrada, veja como
criamos as telas anteriores, respectivamente

Em cada caso após primar teremos as (respectivas) matrizes


expostas no inı́cio.
Um computador foi apenas programado, ele não sabe o que diz!

Assim acontece com muitos seres humanos! − foram apenas programa-


dos; seus discursos podem até envolver alguma “lógica”, mas no final não sig-
nificam nada!. Eva mordeu uma maçã . . . por isso toda a humanidade se fer-
rou! Este discurso não faz mais sentido que a operação . . . pasmém!.

41
Da mesma forma que fizemos com as listas, podemos guardar uma matriz
em uma variável. Por exemplo, considere a matriz na tela esquerda a seguir

escreva o nome da matriz na linha de entrada e clique na matriz (tela do


centro), peça uma cópia (Copy), após Enter teremos a tela da direita, com
a matriz já armazenada na variável MT1.

Acessando os elementos de uma matriz


Podemos ter acesso aos elementos de uma matriz digitando o nome da
matriz e a posição do elemento entre parenteses − exatamente como na
matemática. Por exemplo, considere a matriz anterior, na tela a seguir
pedimos alguns elementos

na tela do centro pedimos a soma dos elementos da segunda linha, na tela


da direita pedimos o produto dos elementos da terceira coluna.

∗ ∗ ∗

42
Cálculo de Matrizes com Elementos Algébricos
Um estudante de engenharia civil (Liercio Feital) me escreveu com a
seguinte dúvida∗ : 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 a


matriz resultante”: " #
60 25
40 50

Antes do programa vejamos como resolver este problema diretamente na


vista do CAS, na tela a seguir

criamos uma variável − na verdade uma função − de dois parâmetros (E e


L), após teremos a tela da direita. MLF pode ser vista como uma
função de duas variáveis. Na tela a seguir

fazemos uma simulação, isto é, digitamos na linha de entrada MLF(10,2),


após teremos o resultado. Na tela da direita, temos o programa
equivalente.


Ainda na HP 50g .

43
Pedindo as dimensões de uma matriz
Um importante comando em programação é DIM, que nos devolve o ta-
manho de uma matriz, na tela a seguir

temos uma matriz de ordem {2, 3}; na tela da direita armazenamos uma
matriz na variável MTZ, depois pedimos a dimensão da matriz.

1.3.4 O comando MAKEMAT


Um importante comando em programação é MAKEMAT, cuja sintaxe é vista
a seguir
MAKEMAT (expressão, linhas, colunas)
Cria uma matriz com a dimensão linhas × colunas, utilizando a expressão
para calcular cada elemento. Se a expressão contém as variáveis I e J, então,
o cálculo para cada elemento substitui o número de linha atual para I e o
número da coluna atual para J. A seguir vemos dois exemplos

na tela da esquerda construimos uma matriz 2 × 2 com termo geral dado


por aij = j − i2 ; na tela da direita construimos uma matriz 3 × 4 com termo
geral dado por aij = i − 2 j. Devemos usar letras maiúsculas na expressão
da matriz, o i minúsculo é reservado para a unidade complexa.
Nota: Na vista do CAS (a que estamos trabalhando) digite o comando − na
linha de entrada − em letras maiúsculas: MAKEMAT.

44
A propósito, vejamos um exemplo um pouco mais sofisticado. A matriz
a seguir

 
i−1
j−1
2
aij = ( −1 )

serve para o cálculo de combinações, como pode ser visto na referência [6].
O sı́mbolo ⌊ x ⌋ representa a função máximo inteiro (que não supera x), ou
função piso. Na HP Prime é denotada por FLOOR, na tela a seguir vemos
alguns exemplos

Na tela da direita construimos a matriz aij , 4 × 2, dada pela equação acima.


Na tela a seguir usando a equação aij construimos uma função de duas
variáveis (programa): m, número de linhas e n, número de colunas.

Nas telas do centro e direita temos duas simulações.


Observe que os programas na HP Prime resultam bastante compactos −
simples, enxutos, estéticos. Perguntamos se em outras linguagens de pro-
gramação obterı́amos este mesmo nı́vel de simplificação (?).

45
1.3.5 Comandos úteis para matrizes
Veremos alguns comandos que podem ser úteis no trato com matrizes.
ADDCOL
Sintaxe:
ADDCOL(matrixname, vector, column number)
Este comando insere os valores no vector numa nova coluna, inserida
antes de column number na matriz especificada. O número de valores no
vetor deve ser igual ao número de linhas na matriz. Exemplos

ADDROW
Sintaxe:
ADDROW(matrixname, vector, row number)
Este comando insere os valores no vector numa nova linha, inserida antes
de row number na matriz especificada. O número de valores no vetor deve
ser igual ao número de colunas na matriz. Exemplos

DELCOL
Sintaxe:
DELCOL(name, column number)
Elimina a coluna column number do nome da matriz. Exemplos

46
DELROW
Sintaxe:
DELROW(name, row number)
Elimina a linha row number do nome da matriz. Exemplos

REDIM
Sintaxe:
REDIM(name, tamanho)
Redimensiona a matriz (nome) ou vetor especificados de acordo com o
tamanho. Para uma matriz, o tamanho é uma lista de dois números inteiros
{ n1, n2 }. Para um vetor, o tamanho é um número inteiro n. Os valores
existentes na matriz são conservados. Os valores de preenchimento serão 0.

SCALE
Sintaxe:
SCALE(name, value, row number)
Multiplica a linha row number especificada da matriz especificada pelo
value. Exemplos

47
SCALEADD
Sintaxe:
SCALEADD(name, value, row1, row2)
Multiplica a row1 especificada da matriz (name) pelo value e, em seguida,
adiciona este resultado à segunda row2 especificada da matriz (name) e
substitui row1 pelo resultado.
Para exemplificar este comando iniciemos com a matriz
 
1 2 0
 
 1 1 −1 
1 4 2

A seguir aplicamos as seguintes operações nas linhas desta matriz

     
1 2 0 1 2 0 1 2 0
     
 1 1 −1  L2 −L1  0 −1 −1   0 −1 −1 
1 4 2 L3 −L1 0 2 2 0 0 0
L3 + 2L2

A sequência na HP é como a seguir

48
SUB
Sintaxe:
SUB(name1,name2, start, end)
Extrai um sub-objeto − parte de uma lista, de uma matriz ou de um
gráfico (name2) − e guarda-o em nome1. Inı́cio e fim são, cada um, especifi-
cados através de uma lista com dois números para uma matriz, um número
para um vetor ou lista ou um par ordenado (X, Y ) para gráficos. Exemplos

REPLACE
Sintaxe:
REPLACE(nome, inı́cio, objeto)
Substitui parte de uma matriz ou vetor guardados em nome por um objeto
a partir da posição inı́cio. Inı́cio para uma matriz é uma lista que contém
dois números. Para um vetor, é um único número. REPLACE também
funciona com listas, gráficos e strings. Exemplos

Nota: O exemplo da tela da direita funcionou apenas na Vista de inı́cio.

49
SWAPCOL
Sintaxe:
SWAPCOL(name, column1, column2)
Troca a coluna1 e a coluna2 da matriz especificada (nome).

SWAPROW
Sintaxe:
SWAPROW(name, row1, row2)
Troca a linha1 e a linha2 na matriz especificada (nome).

50
Vetores
Vetor na HP Prime é uma matriz unidimensional (uma linha), por exem-
plo
[ −1, 2, 5, 7 ]
É importante fazer distinção entre um vetor e uma matriz de uma única
linha na hora de acessar um elemento. Por exemplo, na tela a seguir

criamos uma matriz unidimensional e um vetor, com os mesmos elementos.


Na tela do centro tentamos acessar o quarto elemento da matriz com apenas
um ı́ndice, veja no que deu. Na tela da direita acessamos corretamente o
quarto elemento da matriz; ademais, tentamos acessar o quarto elemento
do vetor a partir de dois ı́ndices, a calculadora não reclamou (erro), no en-
tanto, forneceu o valor errado!, em seguida acessamos corretamente o quarto
elemento do vetor.

∗ ∗ ∗
Importante: Há de se observar que um mesmo comando devolve objetos
distintos, na vista de Inı́cio e na vista do CAS, por exemplo:

m:=SIZE([2, 1, 1, −1, 3]) ⇒ m := { 5 }, Na vista de Inı́cio.

m:=SIZE([2, 1, 1, −1, 3]) ⇒ m := 5, Na vista do CAS.

Do ponto de vista cognitivo, a evolução também avança no chama-


mento ou na criação de “sentido”, de significação, ou, em outras pala-
vras, de novos conceitos e novas formas de inteligibilidade. Criar, por-
tanto, não é apenas produzir novas formas, mas sobretudo criar compre-
ensão e entendimento. Novas figuras mentais, conceituais; novas formas
e maneiras de existir, de expressar-se, de perceber e perceber-se, de sentir
e de sentir-se. (A Potência do Nada, p. 178)

51
1.4 Somatórios e produtórios
Somatórios
Um outro importante recurso para programação é o somatório. Acesse o
somatório primando a tecla

A sintaxe do somatório é
X
(expressão, variável, inı́cio, fim)

Por exemplo, observe a equivalência

X 5
X
(expressão, variável, inı́cio, fim) ⇐⇒ k2
k=1

Ou ainda

X 5
X
(k ∧ 2, k, 1, 5) ⇐⇒ k2
| {z } k=1
na HP Prime

Por exemplo, digitando na linha de entrada

pressionando teremos o resultado na tela da direita. Isto é


5
X
k2 = 12 + 22 + 32 + 42 + 52 = 55
k=1

52
Somatório e resultados algébricos
Nota: Para os exemplos que se seguem, certifique-se de que a variável n
está resetada − adendo, p. 23.
O somatório produz até resultados algébricos, digitando na linha de en-
trada k variando de 1 a n

pressionando teremos o resultado na tela da direita. Portanto


n
X 2n3 + 3n2 + n
k2 =
6
k=1

Caso se queira o resultado fatorado, escreva factor() na linha de en-


trada, clique na expressão e peça uma cópia

pressionando teremos o resultado na tela da direita. Portanto


n
X n (n + 1) (2 n + 1)
k2 =
6
k=1

53
Podemos até criar funções envolvendo somatórios; por exemplo, digi-
tando na linha de entrada
X
f (m, n) := (k ∧ m, k, 1, n)

temos uma função de duas variáveis

1
|1 21 31 {z 41 51 61}
6
X
f (1, 6)= k1 = 21
k=1

2
|1 22 3{z2 42 5}2 62
5
X
f (2, 5)= k2 = 55
k=1

Na tela vemos duas simulações.

Somatório e séries
Podemos até somar algumas séries, por exemplo, considere a progressão
geométrica infinita
1 1 1 1
, , , , ...
2 4 8 16
na tela a seguir digitamos a soma dos termos desta P.G.

na tela do centro temos o resultado, portanto



1 1 1 1 X 1
+ + + + ... = = 1
2 4 8 16 2k
k=1

54
Produtórios
O produtório é acessado de modo semelhante ao somatório, ver tela na
página 52; a sintaxe é a mesma.
Aqui vamos tão somente ilustrar como podemos explorar a computação
algébrica (CAS) para obter fórmulas que não encontram-se nos livros didáti-
cos de matemática. Por exemplo, os livros sobre progressão aritmética não
trazem uma fórmula para o produto dos seus termos. A partir da fórmula
do termo geral
an = a1 + (n − 1) r
vamos encontrar uma fórmula para o produto dos n primeiros termos
n
Y n
Y 
Pn = a1 · a2 · a3 · . . . · an = ak = a1 + (k − 1) r
k=1 k=1

Como dissemos nenhum autor de livro didático nos apresenta uma tal
fórmula, a HP Prime poderá nos fornecer uma, veja como é fácil: digitando
como na tela da esquerda

←−

dando Enter a fórmula é como na tela do centro!.


Nota: Reset todas as variáveis envolvidas.
Observe que podemos até nos dá ao luxo de não anotar nada, para isto
basta criar uma função produto, Pt(a1 , r); assim, escreva na linha de entrada
Pt(a1 , r) e clique sobre a expressão, como na tela a seguir

peça uma cópia (Copy), ao dá Enter na tela da direita já temos a função!.
Nota: Poderiamos ter criado uma função de três variáveis, incluindo n,
preferimos assim para ilustrar como a partir desta fórmula podemos deduzir
várias outras como corolário.

55
Exemplo: Encontre uma fórmula para o produto a seguir
1 · 2 · 3 · ··· · n
Solução: Aqui temos o produto dos n primeiros termos da P.A. em que
a1 = 1 e r = 1; substituindo na fórmula Pt(a1 , r), resulta

1 · 2 · 3 · · · · · n = n!

Exemplo: Encontre uma fórmula para o produto a seguir


2 · 4 · 6 · ... · 2n
Solução: Aqui temos o produto dos n primeiros termos da P.A. em que
a1 = 2 e r = 2; substituindo na fórmula Pt(a1 , r), resulta

2 · 4 · 6 · . . . · 2 n = 2n · n!

Exemplo: Encontre uma fórmula para o produto dos n primeiros ı́mpares


1 · 3 · 5 · ... · 2n − 1
Solução: Aqui temos o produto dos n primeiros termos da P.A. em que
a1 = 1 e r = 2; substituindo na fórmula Pt(a1 , r), resulta

Na tela do centro criamos uma nova função, FPI(n), na tela da direita


fazemos alguns testes . . . tudo isto contribuindo para a preservação do meio
ambiente!, digo, sem usar um único lápis para anotações!.

56
A seguir reescrevemos a fórmula para o produto dos termos de uma P.A.
  h
a1 + (n − 1) r a1 − r  i−1 n
Pn = !· ! ·r
r r

Para o produto dos ı́mpares, temos


2n  2 n − 1 
1 · 3 · 5 · ... · 2n − 1 = √ !
π 2

Ao calcularmos, por exemplo, P (1) pela fórmula acima, temos

2n  2 n − 1 
P (n) = √ !
π 2

21  2 · 1 − 1  2 1
P (1) = √ != √ !
π 2 π 2

A função Gamma
A função gama − denotadad por Γ − é uma função matemática que
generaliza o fatorial de um número natural. A HP Prime disponibiliza esta
função

Γ(x)

Exemplos:

Vale a seguinte identidade

x! = Γ(x + 1)

57
1.5 Álgebra
Menu CAS
Nas telas a seguir mostramos como acessar alguns comandos para mani-
pulações algébricas.

Vejamos alguns comandos.


1) Simplificar
Apresenta uma expressão simplificada.

simplify(Expr)

2) Colecionar
Recolhe termos semelhantes numa expressão polinomial (ou numa lista de
expressões polinomiais). Decompõe os resultados, consoante as definições
CAS.

collect(Poly) ou collect({Poly1, Poly2,..., Polyn})

Exemplos:

58
3) Expandir
Apresenta uma expressão expandida.

expand(Expr)

4) Decompor
Apresenta um polinômio decomposto (fatorado).

factor(Poly)

Exemplos:

Nota: Para estes exemplos a configuração CAS da sua calculadora deve ser
como na tela da direita.
5) Substitue
Substitui um valor por uma variável numa expressão.

subst(Expr,Var=valor)

6) Fração parcial
Realiza a decomposição de uma fração em frações parciais.

partfrac(RatFrac)

Exemplos:

59
Mudando a configuração da Vista de Inı́cio e do CAS como nas telas a
seguir

aqui
−→

na tela da direita repetimos os dois exemplos anteriores, ou seja, agora temos


a decomposição sobre os Complexos.

Extração
7) Numerador
Numerador simplificado. Para os números inteiros a e b, apresenta o nume-
rador da fração a/b após a simplificação.

numer(a/b)

8) Denominador
Denominador simplificado. Para os números inteiros a e b, apresenta o
denominador da fração a/b após a simplificação.

denom(a/b)

Exemplos:

60
9) Lado esquerdo
Apresenta o lado esquerdo de uma equação ou a extremidade esquerda de
um intervalo.

left(Expr1=Expr2) ou left(Real1..Real2)

10) Lado direito


Apresenta o lado direito de uma equação ou a extremidade direita de um
intervalo.

right(Expr1=Expr2) ou right(Real1..Real2)

Exemplos:

Uma aplicação interessante destes comandos é que podemos extrair a


base e o expoente em uma potência de expoente fracionário, como na tela
da direita. Funciona até mesmo com potências algébricas, veja:

Na tela da direita mostramos como fatorar o expoente do numerador da


seguinte fração
2
2x −1
x3 − 1
Então 2
2x −1 2(x−1)(x+1)
=
x3 − 1 x3 − 1

61
 Subrotinas
Um recurso (ou técnica) bastante utilizado em programação é o que se
chama de subrotina, que consiste na possibilidade de um programa ser aces-
sado por um outro.
Uma situação em que é recomendável o uso de subrotina é quando te-
mos um conjunto de instruções que é utilizado em diversas partes de um
programa e para que não seja reescrito diversas vezes, é colocado em um
programa à parte onde o primeiro programa (podemos chamá-lo de prin-
cipal) acessa o segundo (subrotina). Podemos resumir a ideia no seguinte
diagrama:

P.P.

Subrotina

Atenção!: Os dados requeridos pelo programa subrotina são passados pelo


programa principal.
Oportunamente estaremos exemplificando este conceito.

62
1.6 Estruturas de Programação
Introdução
Uma estrutura de programação permite a um programa tomar uma
decisão sobre como ele deve ser executado, dependendo das condições dadas
ou dos valores de argumentos em particular. Um uso cuidadoso e inteligente
destas estruturas torna possı́vel a criação de programas com extraordinária
flexibilidade.
Diriamos que a programação propriamente dita começa aqui com estru-
turas de programação, pois o que fizemos anteriormente foi praticamente a
programação de fórmulas apenas.
Estas estruturas que iremos estudar são comuns a várias linguagens de
programação, como por exemplo, PASCAL, FORTRAN, C++ , MATLAB,
etc. Quero dizer: você entendendo-as neste contexto, também estará apto a
executá-las em qualquer outra linguagem em que estas se façam presentes;
daı́ a importância de entendê-las nesta aqui, isto é, na HP Prime .

Estruturas de programação
As estruturas que iremos estudar são as seguintes:



 FOR


• Estruturas cı́clicas : FOR - STEP




WHILE - REPEAT - END


 IF - THEN - END
• Estruturas condicionais :
 IF - THEN - ELSE - END

Existem outras estruturas, mas estas são suficientes para os nossos pro-
pósitos.

63
1.6.1 Estruturas cı́clicas

FOR
Apenas para exemplificar o uso desta estrutura vamos construir um pro-
grama para calcular a soma dos N primeiros números Naturais. Isto é,
queremos o valor de:
N
X
i = 1 + 2 + 3 + ··· + N
i=1

Devemos fornecer ao programa o valor de N (até onde queremos que o


mesmo some) e este deve nos devolver o valor da soma correspondente.
Vamos iniciar o programa de acordo com a tela a seguir

Nota: Via de regra iniciamos a variável que vai acumular a soma com o
valor 0.
Para inserir a estrutura FOR no programa pressione a tecla virtual assi-
nalada (Tmplt); desça até o item 3Loop; vá para a direita. Estamos na tela
da direita acima. Agora pressione ; após, teremos a tela a seguir

complete o programa conforme tela da direita. Ademais, por uma questão


de legibilidade coloque o END na mesma vertical do FOR, é o que chamamos
de identação.
Podemos executar o programa diretamente da vista do CAS.

64
Estando na vista do CAS digite o nome do programa e, entre parenteses, os
dados requeridos pelo programa; como, por exemplo, na tela a seguir

Isto significa que


5
X
I = 1 + 2 + 3 + 4 + 5 = 15
I =1

Como funciona a estrutura FOR



 FOR contador FROM inı́cio TO fim DO

Loop cláusula cı́clica



END

Esta estrutura executa uma porção do programa por um número definido


de vezes usando o conteúdo de uma variável local como contador, a qual
pode ser usada dentro do loop para cálculos ou outros propósitos. No final
do loop o contador é testado se já atingiu o fim, caso não o contador é
incrementado de uma unidade e a claúsula cı́clica é executada mais uma
vez; este processo se repete até que o contador atinja o fim, quando então o
loop é abandonado.

No programa ao lado temos:


I: contador,
1: inı́cio do contador,
N: fim do contador,
S:= S+I: cláusula cı́clica.
Neste caso o contador está sendo uti-
lizado dentro do loop.

No caso deste programa a variável S é inicializada com 0, e, a cada ciclo,


S é atualizada adicionando-se o valor de I ao seu valor anterior.

65
FOR-STEP
Esta estrutura funciona de modo semelhante a anterior (FOR) exceto
que a variável de controle pode ser incrementada de um valor diferente da
unidade.

FOR - END’s concatenados


O que chamamos de concatenação de FOR - END’s é o mesmo que encaixe
(ou aninhamento) de FOR - END’s que, dependendo do programa, pode
tomar diversas configurações. Por exemplo, assim:

FOR FOR FOR


FOR FOR FOR
FOR
a) b) c) END
FOR
END
END END
END
END END END

Dentre muitas outras aplicações a concatenação é útil para se trabalhar


com matrizes. Vejamos o seguinte exemplo:
(U.E.LONDRINA - 84) Dada a matriz A = ( amn )2×2 onde amn = 2n−m , a
soma de todos os elementos que compõe a matriz A2 é igual a:

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

Motivados pelo desafio acima vamos fazer um programa para construir


uma matriz (quadrada de ordem N ) e que, em particular (N = 2) tenhamos
a matriz do problema anterior. O programa consta da tela a seguir

na tela da direita temos duas simulações. Observe que o programa foi ela-
borado na vista de inı́cio − e não na vista do CAS.
Observe que temos uma concatenação tipo a ). O primeiro FOR (ou ainda,
o primeiro laço) fixa a linha e o segundo varia as colunas, de modo que a
matriz vai sendo construida linha a linha e de cima para baixo.
Para obter a resposta da questão do vestibular, clique na primeira matriz
(tela anterior), peça uma cópia para a linha de entrada, eleve ao quadrado
e some os elementos.

66
O programa anterior foi feito apenas para ilustrar a concatenação de
FOR - END’s, no entanto, na tela da esquerda a seguir criamos − na vista
do CAS − um programa equivalente

Na tela da direita temos uma simulação para N = 3.


Digamos que você queira os elementos da matriz não na forma de fração,
mas aproximados (approx) com três decimais; o caminho é este

Aqui

Executamos novamente o programa, como na tela da direita.

67
Exercı́cios
Nota: Alguns dos exercı́cio a seguir devem, preferencialmente, ser imple-
mentados com a estrutura “FOR”.
1) Faça um programa para sair com os N primeiros termos de uma P.A.
(progressão aritmética), de dois modos distintos:
( a ) em uma lista ( b ) em um vetor.
2) Faça um programa para calcular o produto dos N primeiros termos de
uma P.A.
3) Faça um programa para calcular a soma dos N primeiros termos de uma
P.G.
n
X
4) Faça um programa para calcular o seguinte somatório: i2 .
i=1
5) Seja a sequência

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

cuja fórmula do termo geral e do produto são, respectivamente


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

Faça um programa para sair com um vetor contendo os N primeiros


termos desta sequência e mais ainda o produto destes N primeiros termos.
Xn
6) Faça um programa para calcular o somatório: im ; onde m e n são
i=1
valores arbitrários que devem ser fornecidos ao programa.
7) Faça um programa para calcular a soma,

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

8) Faça um programa para calcular o produto interno canônico de dois ve-


tors, assim:

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

9) Faça um programa para sair com um vetor contendo os N primeiros


termos de uma P.A., usando a fórmula de recorrência (definição) de uma
P.A.: 
 a1 = a
a
n = an−1 + r, n ≥ 2.

68
10) Faça um programa para sair com um vetor contendo os N primeiros
termos de uma P.G., usando a fórmula de recorrência (definição) de uma
P.G.: 
 a1 = a
a
n = an−1 · q, n ≥ 2.

11) Faça um programa para sair (em lista ou vetor) com os N primeiros
termos das seguintes sequências :
( i ) a1 = 4; an = (−1)n · an−1 .
( ii ) a1 = −2; an = (an−1 )2 .
12) (U.F.CE -81) Os termos da sucessão a1 , a2 , . . . , an , estão relacionados
pela fórmula an+1 = 1 + 2 · an , onde n = 1, 2, 3, . . .. Se a1 = 0, então a6 é:

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

13) (PUC-SP - 81) Na sequência (a1 , a2 , . . .) tem-se:

2 + a2n
a1 = 1 e an+1 =
2an

Qual dos números abaixo está mais próximo de a3 ?


√ √ √
a)1 b)2 c) 2 d) 3 e) 5

Nota: Lembramos que nestes exercı́cios queremos que você faça um pouco
mais do que o exercı́cio pede. Queremos que você faça um programa para
listar os n primeiros termos das sequências dadas.
14) (U.F.BA. - 81) sejam as sequências
 
 a1 =4 b1 =5
e
a
n+1 = 1 + a2 b
n+1 = 1
1+bn
n

Se P = an · bn , tem-se:

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

15) (U.F.PR. - 80) Seja f uma função tal que f (1) = 2 e f (x+1) = f (x)−1,
para todo valor real de x. Então f (100) é igual a:

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

Nota: Aqui o leitor deverá fazer um programa para fornecer f (N ) onde


N > 1 é um um número natural.

69
16) (PUC - SP - 85) Na sequência (a0 , a1 , a2 , . . .) onde a0 = 1 e an+1 =
an + n, para todo n ∈ N, a soma dos 7 primeiros termos é

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

Nota: O leitor deverá sempre resolver os problemas de forma generalizada.


Por exemplo, aqui faça um programa para calcular a soma dos N primeiros
termos da sequência .
17) (PUC - SP - 70) Sendo f : R → R definida por f (x) = 2x + 3, então
f (1) + f (2) + f (3) + · · · + f (25) é igual a:

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

18) No cálculo numérico de integrais


Z b
I= f (x) dx
a

A primeira regra de Simpson generalizada estabelece que,


Rx
n
x0
f (x) dx ∼
= h
3
[ f (x0 ) + 4f (x1 ) + 2f (x2 ) + 4f (x3 ) + ··· +2f (xn−2 ) + 4f (xn−1 ) + f (xn ) ]

Faça um programa que calcule a seguinte integral


Z 1
I= x2 dx
0

O programa deve receber n. Depois calcule o valor exato da integral e


compare com os resultados do programa para alguns valores de n.
Sugest~ao: Inicialmente determine uma fórmula para gerar os coeficientes
numéricos em destaque na expressão:

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

19) Programe a fórmula para o produto dos termos de uma P.A. de primeiro
termo a1 e razão r

1

n (a1 + n r) r !
Pn = a1 r · a1 
(a1 + n r) r !

70
WHILE - REPEAT - END
Esta é uma outra estrutura cı́clica bastante utilizada. Para exemplificar
o uso desta estrutura vamos resolver o seguinte problema:
(UNESP - 84) Seja Sn = 211 + 212 + · · · + 21n , n um número natural diferente
de zero. O menor número n tal que Sn > 0, 99 é:

a) 5 b) 6 c) 7 d) 8 e) 9
1
A ideia aqui é variar n (a partir de 1) e ir somando os termos 2n até que
o resultado da soma seja maior que 0, 99. Veja alguns exemplos,
n Sn
1
1 2 = 0, 5
1 1
2 2 + 22 = 0, 75
1 1 1
3 2 + 22
+ 23
= 0, 875
... ........................
Vamos fazer melhor: o programa vai receber como entrada um número
L (0 < L < 1) que, em particular, pode ser L = 0, 99.
Vamos iniciar o programa de acordo com a tela a seguir (Vista de inı́cio)

Para inserir a estrutura WHILE, vá para a tela da direita acima. Agora
pressione ; após, complete como na tela a seguir

Na tela da direita temos duas simulações do programa.

71
Exemplo: Digitando na linha de entrada (vista do CAS)
P
SUN(n) := (1/2 ∧ k, k, 1, n)

criamos uma função de n, esta


1 1 1
Sn = 1
+ 2 + ··· + n
2 2 2
As telas a seguir

mostram Sn para alguns valores de n.


Para os valores aparecerem como na tela acima em a caixa Exact
deve estar desmarcada (tela da direita).

Como funciona a estrutura WHILE



 WHILE




 claúsula de teste
Loop DO




 comandos


END

Esta estrutura executa uma porção do programa (comandos) enquanto


a claúsula de teste for verdadeira.

No programa ao lado temos:


claúsula de teste: S ≤ L.
comandos: n:=n+1; S:=S+1/2 ∧ n.
O loop só é abandonado quando S for
tal que S>L.

72
Exercı́cios
Pn
20) Determine n tal que i=1 2i = 4088.
21) Resolva o problema anterior utilizando a fórmula para a soma dos ter-
a ·q n −a
mos de uma P.G.: Sn = 1 q−1 1 .
22) Resolva a questão da UNESP (p. 71) utilizando a fórmula para a soma
dos termos de uma P.G.
23) Elabore um programa onde entramos com o primeiro termo e a razão
de uma P.A., e ainda com um número L (maior ou igual ao primeiro termo),
e o programa saia com n, a quantidade máxima de termos que podemos
somar para que a soma não ulrapasse L.
24) Encontre o valor de k de modo que:
k X
X 30
(−2i + 3j) = 300
j=1 i=1

25) Quantos termos devem ser somados na sequência ,

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 .
26) Quantos termos devem ser somados na sequência ,

−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.
27) Faça um programa que que recebe n e sai com o n-ésimo termo da
sequência

0 1 2 0 1 2 0 1 2 ...

28) Faça um programa que que recebe n e sai com a soma dos n primeiros
termos da sequência do exercı́cio anterior.
29) A soma dos dos n primeiros termos da sequência

3 3 6 6 9 9 12 12 15 15 ...


6n2 + 12n − 3(−1)n + 3
Sn =
8
Inicialmente resolva a equação S(n) = 60, na mão mesmo. Faça um pro-
grama onde dado um inteiro m > 0 ele resolva a equação S(n) = m, caso
não haja solução o programa deve dizer.

73
1.6.2 Estruturas condicionais
IF - THEN - END
Para exemplificar o uso desta estrutura vamos construir um programa
que nos diz se um dado número é par ou não. Faremos este programa de
dois modos distintos, para ilustrar dois comandos da HP Prime : FP e MOD.
O comando FP nos devolve a parte fracionária de um número, na tela
a seguir temos alguns exemplos (desmarque a caixa Exact)

Nota: O duplo sinal = = é de comparação.


Na tela do centro temos o programa. Na tela da direita como acessamos a
estrutura IF - THEN - END.
A estrutura IF - THEN - END executa uma sequência de comandos so-
mente se o teste é verdadeiro. A palavra IF inicia a cláusula-de-teste, a qual
deixa o resultado do teste (0 ou 1). THEN remove este resultado. Se o
valor é 1, a cláusula verdadeira é executada. Caso contrário, a execução do
programa prossegue com a instrução seguinte a END.
O comando MOD nos devolve o resto da divisão de um número inteiro a
por um número inteiro b. A seguir temos dois exemplos

5 2 20 6
1 2 2 3
տ տ
5 MOD 2 20 MOD 6

Na tela a seguir temos os dois exemplos acima; o segundo programa


consta na tela do centro a seguir

Na tela da direita temos duas simulações deste programa.

74
IF - THEN - ELSE - END
Esta estrutura condicional é bem mais interessante e útil que a anterior.
Para exemplificá-la faremos um programa para sair com os N primeiros ter-
mos da sequência
n
 ,
 se n é par;
 2

an =

 n + 1 , se n é ı́mpar.


2

Inicie o programa como a seguir (Vista de Inı́cio)

complete-o como na tela do centro. Na tela da direita temos duas simulações


do programa. Vejamos mais um exemplo de aplicação desta estrutura.
(PUC- SP - 76) Se A é uma matriz 3 por 2 definida pela lei

1, se i = j;
aij =
2
6 j.
i , se i =
Então A se escreve:
     
  1 1 1 1   1 1
1 4 9 1 1 9
a) b)  4 1  c)  1 4  d) e)  4 1 
1 1 9 1 4 9
9 9 9 9 6 6
Vamos resolver este problema para uma matriz de dimensão genérica
M × N . O programa é como a seguir

na tela da direita temos três simulações.

75
Como funciona a estrutura IF - THEN - ELSE - END



 IF




 claúsula-de-teste


 THEN


Estrutura claúsula-verdadeira




 ELSE




 claúsula-falsa


END

Esta estrutura executa uma sequência de comandos se o teste resultar


verdadeiro e outra, caso seja falso.
A palavra IF inicia a cláusula-de-teste, a qual sai com o resultado (0 ou
1). THEN verifica este resultado. Se o valor é 1, a cláusula-verdadeira é
executada; caso contrário, a cláusula-falsa é executada. Após ter executado
a cláusula apropriada, o programa prossegue com a instrução seguinte à
END.

No programa ao lado temos:


claúsula de teste: FP(n/2)==0
claúsula verdadeira: TS(n):=n/2
claúsula falsa: TS(n):=(n+1)/2

76
Traçando gráficos com IF - THEN - ELSE - END
Vamos exemplificar como esta estrutura pode ser utilizada para construir
gráficos de funções definidas por várias sentenças.
Inicialmente considere a função f : R → R dada por

 −x,
 se x < −1;
f (x) =

 x2 − 1, se x ≥ −1.

Na tela a seguir programamos esta função

na tela da direita simulamos alguns exemplos. Ao atribuir o nome f ao


programa caso esta variável esteja ocupada então purge(f ) é uma sugestão.
Pois bem, nosso objetivo agora é plotar o gráfico desta função. Inicial-
mente prima a tecla o que vai nos levar para a seguinte tela

em seguida clique no aplicativo assinalado (Function), o que nos leva para


a tela da direita. Clique na tecla virtual Edit

77
escreva na linha de entrada f (X) (este X deve ser maiúsculo); após clicar
em OK estaremos na tela da direita


Agora vamos dimensionar os eixos para plotagem, para isto clique em

vamos para a seguinte tela (configuração na minha calculadora)

configurando como na tela do centro, após clique em teremos a tela


da direita. Como mais um exemplo, para o gráfico da função dada por


 −x − π2 , se x < − π2 ;



g(x) = | cos 2 x |, se − π2 ≤ x < π2 ;




x − π2 , se x ≥ π2 .

o programa fica assim

78
1.7 Operadores lógicos relacionais
Um outro recurso − não menos importante − que a programação nos
oferece são os operadores lógicos booleanos: OR, AND, XOR, NOT,
etc., estes operadores estão definidos pelas respectivas tabelas-verdade:

p q p OR q p q p AND q p q p XOR q p p̄

V V V V V V V V F V F
V F V V F F V F V F V
F V V F V F F V V
F F F F F F F F F

Ou ainda, na forma em que a HP Prime entende e opera:

p q p OR q p q p AND q p q p XOR q p p̄

1 1 1 1 1 1 1 1 0 1 0
1 0 1 1 0 0 1 0 1 0 1
0 1 1 0 1 0 0 1 1
0 0 0 0 0 0 0 0 0

Estes operadores booleanos são acessados assim:

Na tela da direita mostramos como acessar outros sı́mbolos úteis, como, por
exemplo, as letras gregas. A seguir fazemos um exemplo.

79
Vejamos um exemplo de aplicação destes operadores:
(CESGRANRIO - 76) Seja H o conjunto

{ n ∈ N : 2 ≤ n ≤ 40 },

n múltiplo de 2, n não múltiplo de 3. O número de elementos de H é:

a ) 12 b ) 14 c) 7 d ) 13 e) 6

Observe, na definição do conjunto em questão: n é múltiplo de 2 e n não


é múltiplo de 3. Aqui temos uma tarefa para o operador lógico AND.
Vamos fazer melhor, faremos um programa que recebe dois números na-
turais M e N (N < M ) e devolve todos os múltiplos de 2, e não de 3, entre
N e M ; na tela a seguir temos o programa:

Na tela da direita temos a solução da questão do vestibular.


O programa seguinte sai com os múltiplos de 2 ou 3 entre N e M .

Na tela da direita uma simulação, aqui reproduzida:

[ 2, 3, 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 26, 27, 28, 30, 32, 33, 34, 36, 38, 39, 40 ]

80
Exercı́cios
30) (F. SANTANA - 83) Dadas as matrizes A = ( aij )2 , tal que

1 + i, se i = j;
aij =

0, se i 6= j.

e B = ( Bij )2 , tal que bij = 2i − 3j, então A + B é igual a:

         
−1 4 1 −4 −1 4 1 −4 1 4
a) b) c) d) e)
−1 −2 −1 −2 1 2 1 2 1 2
31) Fazer um programa para sair com a matriz identidade de ordem N :

1, se i = j;
aij =

6 j.
0, se i =

32) (U. MACK. - 80) Dada a matriz A = ( aij )2 tal que



sen π2 j, se i = j;
aij =

cos πj, se i 6= j.

Então A2 é a matriz:

         
−1 −1 0 −1 −1 1 0 1 0 1
a) b) c) d) e)
1 0 1 1 0 1 −1 1 −1 −1

33) (UFRS - 83) A = ( aij ) é uma matriz de ordem 2 × 2 com aij = 2−i se
i = j e aij = 0 se i 6= j. A inversa de A é:
" 1 # " 1 #  
0 − 0

2 0
 
−2 0
 2 0
2 2
a) b) c) d) e)  1

0 4 1
0 −4 1 0 4 0 −4 0 22

34) (FCM STA CASA - 81) Seja a matriz A = ( aij ), de ordem 3, tal que


 1 se i < j;


aij = k se i = j e k ∈ R;




−1 se i > j.
Se o determinante de A é igual a zero, então 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 }

81
35) (U. MACK - 80 ) Seja a função f : R → R definida por

|x| + 3 se |x| ≤ 2;

f (x) =
|x − 3| se |x| > 2

O valor de f (f (f (. . . f (0) . . .))),

a ) é 0 b ) pode ser 1 c ) é 3 d ) pode ser 3 e ) é impossı́vel de calcular.

Neste exercı́cio faça um programa onde entra-se com N e o mesmo sai


com uma lista com as N composições de f em 0. Exemplo,

Se N = 1 então f (f (0))

Se N = 2 então f (f (f (0))), etc.

36) (PUC CAMP. - 80) Considerando N = { 0, 1, 2, 3, . . .} e, ainda,


24
A = { x ∈ N/ = n, x ∈ N }
x
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.
37) (ITA - 66) Quantos números inteiros existem, de 1000 a 10000, não
divisı́veis nem por cinco nem por sete?
38) (UFRN - 84) O número de múltiplos de sete entre 50 e 150 é:

a)9 b ) 12 c ) 14 d ) 16 e ) 23

39) (CESCEA - 75) Quantos números ı́mpares há entre 14 e 192?

a ) 88 b ) 89 c ) 87 d ) 86 e ) 90

40) (FGV - 81) A soma dos números naturais não superiores a 1000, não
divisı́veis por 7, é:

a ) 429429 b ) 500500 c ) 500500/7 d ) 999999/7 e ) n.d.a.

41) (CESGRANRIO - 84) A soma dos números naturais menores que 100 e
que divididos por 5 deixam resto 2 é:

a ) 996 b ) 976 c ) 990 d ) 991 e ) 998

82
1.8 Algumas funções especiais
Neste tópico vamos arrolar mais algumas funções da HP Prime que jul-
gamos relevantes no contexto da programação.

1.8.1 A função apply


Aplica um vetor (ou lista) − do domı́nio de uma função − no cálculo dos
valores da função
Sintaxe
apply ( Var → f(Var), vetor)
Por exemplo

Na tela da direita mostramos como acessar a setinha − ver p. 79.


No lugar do vetor pode ser uma lista. Nas telas a seguir utilizamos esta
função para calcular duas “tabelas trigonométricas”, do seno e do cosseno:

Nota: Sua calculadora deve estar fixada no modo Exact, p. 20.


As tabelas trigonométricas constantes nos livros não trazem alguns “arcos-
π
metade”, como, por exemplo, 15o = 12 , na HP Prime é fácil, veja:

83
1.8.2 A função REPLACE
Esta é uma função importantı́ssima, será utilizada em diversos programas
até o final deste livro.
REPLACE Substitui parte de uma matriz ou vetor guardados em nome por
um objeto a partir da posição inı́cio. Inı́cio para uma matriz é uma lista
que contém dois números. Para um vetor, é um único número. REPLACE
também funciona com listas, gráficos e strings.
Sintaxe
REPLACE(nome, inı́cio, objeto)

Nas telas a seguir, vemos dois exemplos.


Lembrete: Não esqueça de resetar as letras, se necessário.

Observe mais duas substituições

84
Tabela trigonométrica
Como mais uma aplicação da função REPLACE vamos montar uma tabela
trigonométrica do seno. Considere novamente a tela a seguir

à direita criamos uma matriz, que vai ser a tabela ao final.


A seguir, criamos uma matriz que contém os valores do domı́nio

à direita calculamos o seno para esta matriz.


A seguir, crie uma variável VC, clique em cima do último vetor (matriz)
e guarde uma cópia nesta variável

na tela da direita substituimos a primeira coluna da matriz MTR pelo trans-


posto do vetor VD.

85
Este último resultado salvamos em MTR

na tela da direita substituimos em MTR o transposto do vetor VC.


A seguir salvamos esta última matriz em MTR

na tela da direita colocamos uma “legenda” na tabela. Opcionalmente, po-


demos ver a tabela na horizontal, tomando o transposto, assim

Clique em cima da tabela e peça para ver (Show)

86
Vamos encimar a tabela com grau, no lugar de radiano. Para isto sal-
vamos a tabela em uma nova variável. Digite na linha de entrada como a
seguir

Apenas a tı́tulo de curiosidade, veja como nos “tempos primitivos” calculava-


π
se, por exemplo, o seno de 15o = 12 . Vamos partir da fórmula
a r
1 − cos a
sen =
2 2
Substituindo nesta fórmula a = 30o , obtemos
 30o  r 1 − cos 30o
sen =
2 2
Então s √
3
 1−
sen 15o = 2
2
Simplificando
√ p
o 2− 3

sen 15 =
2
Na tela a seguir, pedimos para a HP Prime calcular o seno de 15o


mude sua calculadora para grau (Degrees) na tela da direita pedimos para
simplificar o resultado obtido pela fórmula − para efeito de comparação.

87
1.8.3 A função Map
Segundo o manual (da HP Prime ):
Existem duas utilizações para esta função, nas quais o segundo argu-
mento é sempre um mapeamento de uma variável para uma expressão. Se a
expressão for uma função da variável, a função é aplicada a cada elemento
do vetor ou matriz (o primeiro argumento) e é apresentado o vetor ou matriz
resultante. Se a expressão for um teste booleano, cada elemento do vetor ou
matriz é testado e os resultados são apresentados como um vetor ou matriz.
Cada teste apresenta 0 (falha) ou 1 (aprovação).
Sintaxe
map ( Matrix, Var → Funç~
ao)
Ou
map ( Matrix, Var → Teste)

Em seguida o manual fornece os dois exemplos seguintes

Na tela da direita acrescentei mais um exemplo. O manual não fornece


nenhum exemplo de um caso onde o primeiro argumento da map seja uma
matriz; fiz algumas tentativas, no entanto, pelas respostas, não encontrei
uma “lógica”, um padrão. Por exemplo, na tela a seguir

apliquei a função x → 2 x à matriz de entrada, o resultado foi o esperado:


cada elemento da matriz é multiplicado por 2. Quando apliquei a função

88
x → x−1, eu esperava que cada elemento da matriz fosse subtraido de 1, isto
aconteceu apenas com os elementos da terceira coluna. Na matriz da direita
temos duas outras simulações, apenas a segunda me é inteligı́vel; de formas
que a explicação do manual para mim ficou um tanto quanto nebulosa;
cansado de tentar encontrar uma lógica decidi criar a minha própria função
“map”, isto é, uma que atenda ao enunciado “Se a expressão for uma função
da variável, a função é aplicada a cada elemento da matriz (o primeiro
argumento) e é apresentado a matriz resultante.”
A função que criei tem a seguinte:
Sintaxe
mapii ( Matrix, Var → express~
ao)
ei-la:

à direita temos duas simulações.

1.8.4 A função Zip


Aplica uma função bivariada aos elementos de duas listas ou vetores e
apresenta os resultados num vetor. Sem o valor predefinido, o comprimento
do vetor é o mı́nimo dos comprimentos das duas listas. Com o valor prede-
finido, a lista mais curta é preenchida com o valor predefinido.
Sintaxe: zip(‘function’ , List1, List2, Default)

89
1.8.5 A função remove
Dado um vetor ou lista, remove as ocorrências de Valor ou remove os
valores que tornam o Teste verdadeiro e apresenta o vetor ou lista resultante.
Sintaxe:
remove(Value, List) ou remove(Test, List)
Veja os dois exemplos seguintes

Aqui cabe uma pergunta: e se quisermos eliminar na lista do exemplo os


x tais que x ≤ −2 e x ≥ 2 ?. Basta concatenar remove, assim:

90
1.8.6 A função solve
A função solve − e outras que nos interessam − pode ser acessada na
caixa de ferramentas, assim:

Ademais, escolha a configuração da tela à direita.


Solve: Apresenta uma lista das soluções (reais e complexas) de uma equação
polinomial ou de um conjunto de equações polinomiais.
Sintaxe:

solve(Eq,[Var]) ou solve(Eq1, Eq2,. . . , [Var])

Nas telas a seguir, temos alguns exemplos

Como um outro exemplo, na tela a seguir pedimos para resolver a


equação quadrática, a x2 + b x + c = 0

Na tela da direita criamos uma função (programa) para resolver uma equação
quadrática, vemos uma simulação.

91
Aplicações da função Solve
Na página 33, propomos a resolução da seguinte equação

2 n − 3 (−1)n + 3
S(n) = = 15
4

Ao tentar resolver esta equação com a aplicação solve, a calculadora não


consegue. Superamos este obstáculo criando uma nova função (programa) a
qual denominamos gsolve, como na tela a seguir:

Na tela do centro resolvemos a equação proposta. Na tela da direita resol-


vemos o problema proposto na página 33 para encontrar a posição do termo
12 na seguinte sequência
3 3 6 6 9 9 12 12 15 15 ...
que consiste em resolver a equação
6 n − 3 (−1)n + 3
= 12
4
Na tela a seguir temos um programa que recebe um termo k, caso ele esteja
na sequência acima o programa nos devolve sua posição, caso contrário ele
avisa que não encontra-se

Nas telas do centro e direita temos algumas simulações.

92
Tabela-Resumo

Comando Sintaxe p.
MAKELIST MAKELIST (expressão, variável, inicio, fim, incremento) 36
MAKEMAT MAKEMAT (expressão, linhas, colunas) 44
P
Somatório (expressão, variável, inı́cio, fim) 52
FOR contador FROM inı́cio TO fim DO
FOR claúsula cı́clica 65
END
FOR variavel FROM inı́cio TO fim STEP h DO
FOR-STEP claúsula cı́clica 66
END
WHILE WHILE claúsula de teste DO comandos END 72
IF-THEN IF claúsula de teste THEN comandos END 74
IF-THEN- IF claúsula de teste THEN claúsula verdadeira
ELSE-END ELSE claúsula falsa 76
END
apply apply ( Var → f(Var), vetor) 83
map map ( Matrix, Var → Funç~
ao) 88
REPLACE REPLACE(nome, inı́cio, objeto) 84
Zip zip(‘function’ , List1, List2, Default) 89
remove remove(Test, List) 90
solve solve(Eq, Var) 91

93
Um Belo Desafio! - II − A quem interessar possa.

Introdução: Considere a sequência dos quadrados dos naturais


12 22 32 42 52 62 72 ...
No diagrama a seguir
1 4 9 16 25 36 49 ...
3 5 7 9 11 13 ...
2 2 2 2 2 ...
produzimos duas diferenças entre os termos da primeira sequência. Con-
sidere a sequência dos cubos dos números naturais
13 23 33 43 53 63 73 ...
No diagrama a seguir
1 8 27 64 125 216 343 ...
7 19 37 61 91 127 ...
12 18 24 30 36 ...
6 6 6 6 ...
produzimos três diferenças entre os termos da primeira sequência.

Desafio: Considere a sequência dos naturais à m-ésima potência: a(n) =


nm , onde m é um natural arbitrariamente fixado. Faça um programa onde
entramos com m e j e o mesmo saia com uma fórmula para a sequência que
corresponde à diferença de ordem j da sequência a(n) = nm .

Nota: Resolvemos este Desafio na HP Prime . Na tela da esquerda fazemos


duas simulações para o primeiro diagrama acima, a(n) = n2 . Na tela do
centro fazemos duas simulações para o segundo diagrama acima, a(n) = n3 .
Na tela da direita, a partir da fórmula dada geramos os 10 primeiros termos
das respectivas sequências.

Gentil, o iconoclasta Boa vista-RR/07.08.2016


gentil.iconoclasta@gmail.com

94
1.9 Polinômios

Coeficientes
Dado um polinômio em x, apresenta um vetor que contém os coeficientes.
Se o polinômio estiver numa variável que não x, então, declare a variável
como o segundo argumento. Com um número inteiro como terceiro argu-
mento opcional, apresenta o coeficiente do polinômio cujo grau coincide com
o número inteiro.
Sintaxe:
coeff(Poly, [Var], [Integer])
Exemplos:

p(x) = x2 + 0 x − 2 p(y) = y 2 + 0 y − 2

Divisores
Dado um polinômio, apresenta um vetor que contém os divisores do po-
linômio.
Sintaxe:
divis(Poli) ou divis(Poli1, Poli2,...)
Exemplos:

95
Lista de fatores
Apresenta um vetor com os fatores primos de um polinômio ou uma lista
de polinômios, com cada fator seguido pela respectiva multiplicidade.
Sintaxe:

factors(Poly) ou factors(Poly1, Poly2,...)

Exemplos:

MDC
Apresenta o máximo divisor comum a dois ou mais polinómios.
Sintaxe:
gcd(Poli1,Poli2...)
Exemplos:

MMC
Apresenta o mı́nimo múltiplo comum a dois ou mais polinômios.
Sintaxe:
lcm(Poli1, Poli2,...)
Exemplos:

96
Polinômio – Criar
Poli. → Coef.
Dado um polinômio, apresenta um vetor que contém os coeficientes do
polinômio. Com uma variável como segundo argumento, apresenta os coefi-
cientes de um polinômio relativamente à variável. Com uma lista de variáveis
como segundo argumento, apresenta o formato interno do polinômio.
Sintaxe:

symb2poly(Expr,[Var]) ou symb2poly(Expr, Var1, Var2,...)

Exemplos:

Coef. → Poli.
Com um vetor como argumento, apresenta um polinômio em x com co-
eficientes (por ordem descendente) obtidos a partir do vetor do argumento.
Com uma variável como segundo argumento, apresenta um polinômio seme-
lhante nessa variável.
Sintaxe:
poly2symb(Vetor, [Var])
Exemplos:

97
Raı́zes → Coef.
Apresenta um vetor que contém os coeficientes (por ordem decrescente)
do polinômio de uma única variável, cujas raı́zes são especificadas no vetor
do argumento.
Sintaxe:
pcoeff(Lista)
Exemplos:

p(x) = x2 − 1 p(x) = x2 − 2

Na última linha da tela da direita observamos que podemos concatenar


(compor) estes comandos.

Raı́zes → Poli.
Assume um vetor como argumento. O vetor contém cada raiz ou polo
de uma função racional. Cada raiz ou polo é seguido pela respetiva ordem,
tendo os polos uma ordem negativa. Apresenta a função racional em x que
possui as raı́zes e polos (com as respetivas ordens) especificados no vetor do
argumento.
Sintaxe:
fcoeff(Vetor)
em que em que Vetor tem a forma [Root1, Order1, Root2, Order2...]).
Exemplo:

98
Incluimos a tela da direita para facilitar o entendimento deste comando.
Calculamos as raı́zes do numerador (da função racional) e o fatoramos. No
vetor do argumento,
[1, 2, 0, 1, 3, −1]
temos que 1 é raı́z do numerador, com multiplicidade 2; 0 é raı́z do numera-
dor, com multiplicidade 1 e, como é fácil ver, 3 é raı́z do denominador (por
isto chama-se pólo da função racional) com multiplicidade 1.

Polinômio – Álgebra
Quociente.
Apresenta um vetor que contém os coeficientes do quociente euclidiano
de dois polinómios. Os polinómios podem ser escritos como uma lista de
coeficientes ou em forma simbólica.
Sintaxe:

quo(List1, List2, [Var]) ou quo(Poli1, Poli2, [Var])

Resto.
Apresenta um vetor que contém os coeficientes do resto do quociente
euclidiano de dois polinômios. Os polinômios podem ser escritos como uma
lista de coeficientes ou em forma simbólica.
Sintaxe:

rem(List1, List2, [Var]) ou rem(Poli1, Poli2, [Var])

Antes de exemplificar na Calculadora, vejamos um exemplo, “na mão”; va-


mos dividir os dois polinômios a seguir,

x4 + 2x3 + 3x2 + 4x e − x2 + 2x

Veja como fica,

x4 + 2x3 + 3x2 + 4x −x2 + 2x


−x2 − 4x − 11 ← (quociente)
−x4 + 2x2
+ : 4x3 + 3x2 + 4x
−4x3 + 8x2
+ : 11x2 + 4x
−11x2 + 22x
+ : 26x ← (resto)

99
Na HP Prime fica assim

Na tela da direita temos um outro exemplo.


Grau.
Apresenta o grau de um polinômio.
Sintaxe:
degree(Poli)
Exemplos:

Coef. MDC.
Apresenta o máximo divisor comum (MDC) dos coeficientes de um poli-
nómio.
Sintaxe:
content(Poli,[Var])
Exemplos:

100
ratnormal
Reescreve uma expressão como uma fração racional irredutı́vel.
Sintaxe:
ratnormal(Expr)
Fração parcial
Realiza a decomposição de uma fração em frações parciais.
Sintaxe:
partfrac(RatFrac)
Exemplos:

Adendo
polar− point
Dados o raio e o ângulo de um ponto na forma polar, apresenta o ponto
com as coordenadas retangulares na forma complexa.
Sintaxe:
polar− point(Radius, Angle)
rectangular− coordinate
Dado um vetor que contém as coordenadas polares de um ponto, apre-
senta um vetor que contém as coordenadas retangulares do ponto.
Sintaxe:
retangular− coordinate(vector)
Exemplos:

101
Zeros
Com uma expressão como argumento, apresenta os zeros da expressão,
ou seja, as soluções quando a expressão é definida como igual a zero.

Resolver complexa
Apresenta uma lista das soluções complexas de uma equação polinomial
ou de um conjunto de equações polinomiais. Independentemente da confi-
guração do CAS.

Zeros de complexa
Com uma expressão como argumento, apresenta um vetor que contém os
zeros de complexa da expressão, ou seja, as soluções quando a expressão é
definida como igual a zero.

Nota: Esteja atento para a diferença entre equação e expressão.

102
1.10 Número inteiro

Divisores
Apresenta a lista de divisores de um número inteiro ou uma lista de
números inteiros.
Sintaxe:

idivis(Integer) ou idivis({Intgr1, Intgr2,...})

Exemplos:

Fatores
Apresenta a decomposição dos fatores primos de um número inteiro.
Sintaxe:
ifactor(Integer)
Exemplos:

103
Nota: Em alguns casos, ifactor pode falhar. Nestes casos, irá dar o pro-
duto de -1 e o oposto da entrada. O-1 indica que a decomposição falhou.
Lista de fatores
Apresenta um vetor com os fatores primos de um número inteiro ou uma
lista de números inteiros, com cada fator seguido pela respetiva multiplici-
dade.
Sintaxe:

ifactors(Integer) ou ifactors({Intei1, Intei2,...})

Exemplo:

MDC
Apresenta o máximo divisor comum a dois ou mais números inteiros.
Sintaxe:
gcd(Intei1, Intei2,...)
Exemplo:

104
MMC
Apresenta o mı́nimo múltiplo comum a dois ou mais números inteiros.
Sintaxe:
lcm(Intei1, Intei2,...)
Exemplo:

Número inteiro – Primo


Testa se é Primo
Testa se um determinado número inteiro é ou não um número primo.
Sintaxe:
isPrime(Integer)
Exemplos:

N-ésimo Primo
Apresenta o n-ésimo número primo.
Sintaxe:
isPrime(Integer)
Exemplo:

105
Primo seguinte
Apresenta o primo ou pseudo-primo seguinte após um número inteiro.
Sintaxe:
nextprime(Integer)
Exemplo:

Primo anterior
Apresenta o número primo ou pseudo-primo mais próximo de, mas infe-
rior a, um número inteiro.
Sintaxe:
prevprime(Integer)
Exemplo:

106
Número-Divisão
Quociente
Apresenta o quociente inteiro da divisão euclidiana de dois números in-
teiros.
Sintaxe:
iquo(Intei1, Intei2)
Exemplo:

63 23

17 2 ← (quociente)

Resto
Apresenta o resto inteiro da divisão euclidiana de dois números inteiros.
Sintaxe:
irem(Intei1, Intei2)
Exemplo:

63 23

17 2 ← (quociente)
տ
(resto)

107
an MOD p
Para os três números inteiros a, n e p, apresenta an módulo p em [0, p−1].
Sintaxe:
powmod(a, n, p,[Expr],[Var])
Exemplo:

52 13 42 3

12 1 ← (quociente) 1 5 ← (quociente)
տ տ
(resto) (resto)

Resto chinês
Teorema do Resto Chinês de números inteiros para duas equações. Pega
em dois vetores de números inteiros, [a, p] e [b, q], e apresenta um vetor de
dois números inteiros, [r, n], de modo que x ≡ r mod n. Neste caso, x é tal
que x ≡ a mod p e x ≡ b mod q; também n = p ∗ q.
Sintaxe:
ichinrem([a,p],[b,q])
Exemplo:

108
∗ ∗ ∗

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


Aproveitei esses feriados estendidos em SP e li bem seu livro. Pratiquei
todos os exercı́cios propostos e pratiquei todos os programas. Foi muito bom
mesmo. Aprendi muito! [. . .]
Não sou matemático, sou engenheiro mecânico formado em 1975. Na minha
época de faculdade, não havia calculadoras ainda. Tudo era feito na régua
de cálculo ou no lápis e borracha. A minha Aristo tenho até hoje. [. . .]
Apesar de eu já me encontrar no fim da linha (fim de carreira - 60 anos),
ainda tenho disposição para aprender.
Pedir ao Ariovaldo (Siqueira) para que me enviasse uma foto da sua régua
para que eu pudesse mostrá-la aos meus alunos. Ele respondeu:
Em anexo encontra-se para sua apreciação o seu pedido. Tenho duas réguas
de cálculo, a Aristo e a Sterling Slide Rule. Na época eu fazia tudo com
elas em engenharia, ambas eu comprei em 1970 e as usei até 1978. Depois
aposentei as duas e comprei minha primeira Texas.

Foto-Ariovaldo

109
Gentil Lopes <gentil.silva@gmail.com>

Livro HP50g
1 mensagem

Cleber Pertel <cleber.pertel@uol.com.br> 9 de maio de 2013 22:11


Para: gentil.silva@gmail.com
Professor Gentil,
Chamo-me Cleber e sou acadêmico do curso de Engenharia Quı́mica
da Universidade Federal do Paraná. Estou escrevendo para o senhor para
parabenizá-lo pela sua obra “Programando a HP - 50g”. Esse livro é fantás-
tico! Tem me ajudado muito. Confesso que quando necessitei comprar
a referida calculadora, senti-me extremamente ignorante. Tinha a ferrari,
mas me sentia andando num monociclo. O seu livro fez toda a diferença no
caminho que percorri para adentrar no fantástico mundo da programação.
Embora meus passos ainda sejam modéstos, tornaram-se firmes graças à sua
preciosa ajuda. Embora não seja seu aluno fisicamente, sinto-me tal e qual,
pois o senhor, através do seu livro, tornou-se indispensável em minha vida
acadêmica, da mesma forma que os mestres que possuo na universidade.
Infelizmente não estamos próximos, pois eu gostaria muito de um autógrafo
seu, mas, de qualquer forma, receba com estas palavras meu carinho e grati-
dão por uma obra tão rica que, humildemente, fala aos iniciantes (categoria
na qual estou incluı́do) e, mais do que isso, nos abre as portas do interesse e
da curiosidade para adentrar nesse mundo ı́mpar que o seu livro conduz-nos
os primeiros passos, quando estes ainda são vacilantes.
Que Deus o abençoe!
Um forte abraço, com votos de paz,
Cleber Pertel

110
Capı́tulo 2
Aplicações - Mix
Até então a ciência se caracterizara por duas abordagens. “Aqueles
que trataram de ciência foram ou homens de experimento ou homens de
dogma. Os homens de experimento são como a formiga; apenas colhem e
usam; os raciocinadores assemelham-se a aranhas, que fazem teias com
sua própria substância. Mas a abelha adota o meio-termo; colhe seu ma-
terial das flores do jardim e do campo, mas o transforma e digere por
um poder que lhe é próprio.” ( Paul Strathern/“O sonho de Mendeleiev”)

Introdução
Como se sabe, no universo da música existem os compositores e os in-
térpretes, na ciência, e em particular na matemática, acontece o mesmo; na
matemática sou intérprete e compositor, já perdi as contas do número de
fórmulas que demonstrei (construi) na matemática, dentre elas uma que os
matemáticos tentaram por muito tempo (p. 184) − fórmulas brotam da mi-
nha mente aos borbotões!.
Neste capı́tulo veremos algumas fórmulas de minha lavra, concomitante-
mente com mais aplicações para a HP Prime . O leitor eventualmente inte-
ressado nas demonstrações matemáticas deverá consultar nosso livro citado
na referência [6].
Apenas a tı́tulo de informação, trabalho com a famı́lia de calculadoras
HP há muitos anos (há mais de 20), escrevi um livro sobre programação da
HP 50g e até hoje ainda me surpreendo com a potência de cálculo destes
computadores de bolso; a potência se refere não apenas a cálculos numéri-
cos mas, sobretudo, algébricos. Pois bem, desta vez fiquei pasmo por ter
resolvido um desafio matemático que comparece na seção 2.3 “sem pegar
no lápis”, apenas via manipulações algébricas na própria calculadora (sem
“anotar nada”, reitero); com o objetivo de provar que a HP Prime supera
muitas das outras linguagens de programação − como creio − deixo aqui
o desafio aos estudantes de Ciência da Computação, ou a quem interessar
possa, que o resolvam (p. 139) na linguagem de suas preferências!.

111
2.1 Cálculo de combinações
Introdução:
A conhecida fórmula da análise combinatória
 
n n!
=
r (n − r)! r!

nos fornece o número de combinações dos n elementos de um conjunto,


tomados r a r. Mas esta fórmula não nos fornece as tais combinações. O
nosso objetivo nesta seção é exibir uma fórmula que tem precisamente esta
finalidade.
A matriz a seguir nos fornece todas as combinações possı́veis para um
conjunto com quatro elementos

{ a1 , a2 , a3 , a4 }
0 0 0 0 { }
1 0 0 0 { a1 }
0 1 0 0 { a2 }
1 1 0 0 { a1 , a2 }
0 0 1 0 { a3 }
1 0 1 0 { a1 , a3 }
0 1 1 0 { a2 , a3 }
1 1 1 0 { a1 , a2 , a3 }
0 0 0 1 { a4 }
1 0 0 1 { a1 , a4 }
0 1 0 1 { a2 , a4 }
1 1 0 1 { a1 , a2 , a4 }
0 0 1 1 { a3 , a4 }
1 0 1 1 { a1 , a3 , a4 }
0 1 1 1 { a2 , a3 , a4 }
1 1 1 1 { a1 , a2 , a3 , a4 }

Onde convencionamos que onde ocorre 1 o elemento entra na combinação,


onde ocorre 0 o elemento não entra na combinação.
Esta matriz pode facilmente ser generalizada para um conjunto com um
número arbitrário de elementos, digamos n.
Lembramos que o sı́mbolo ⌊ x ⌋ representa a função máximo inteiro (que
não supera x), ou função piso. Na HP Prime é denotada por FLOOR.

112
Uma fórmula para a matriz de combinações
Em nosso livro citado na referência [6] demonstramos a seguinte fórmula
para a matriz de combinações

 j k
i−1


 0, se j−1 é par;
2
aij = j k

 i−1
 1, se j−1 é ı́mpar.
2

Na tela a seguir programamos esta matriz, entramos com n e o programa


sai com a respectiva matriz de combinações

nas duas outras telas temos duas simulações.


Nas telas a seguir temos um (único) programa que recebe um conjunto e
sai com o conjunto das partes (conjunto de todos os subconjuntos)

Nota: Lembramos que um conjunto com n elementos possui 2n subconjun-


tos.

113
Nas telas a seguir

temos duas simulações do programa; na tela da esquerda entramos com o


conjunto { a, b, c } e na tela da direita com o conjunto { a1 , a2 , a3 , a4 } .
Nota: Não esquecer de resetar as letras (p. 23) − se necessário. Ademais,
evite incluir a letra e em um conjunto, esta letra é reservada para a base do
logaritmo neperiano.
Nas telas a seguir

entramos com um conjunto e r, o programa sai com todas as combinações


dos elementos do conjunto tomados r a r. Observe que o programa ante-
rior (MTXC1) é utilizado. Na tela da direita vemos uma simulação para o
conjunto { a1 , a2 , a3 , a4 } e r = 3.

114
2.2 Desenvolvimento N -ário
Matriz Binária
Sabe-se que dados dois inteiros a e N , com a ≥ 0 e N > 1, existem (e
são únicos) inteiros c0 , c1 , . . . , cn ; de tal modo que

a = c0 + c1 · N + c2 · N 2 + · · · + cn · N n

com 0 ≤ ci < a (i = 0, 1, . . . , n). A expressão anterior é chamada expansão


N -ária do inteiro a.
O sistema de numeração de base 2 obtém-se escolhendo um conjunto com
dois sı́mbolos: S = { 0, 1 }. Na matriz seguinte temos a expansão binária
dos inteiros 0, 1, 2, . . . , 15.

20 21 22 23 20 21 22 23
0 0 0 0 0 = 0·20 + 0·21 + 0·22 + 0·23
1 0 0 0 1 = 1·20 + 0·21 + 0·22 + 0·23
0 1 0 0 2 = 0·20 + 1·21 + 0·22 + 0·23
1 1 0 0 3 = 1·20 + 1·21 + 0·22 + 0·23
0 0 1 0 4 = 0·20 + 0·21 + 1·22 + 0·23
1 0 1 0 5 = 1·20 + 0·21 + 1·22 + 0·23
0 1 1 0 6 = 0·20 + 1·21 + 1·22 + 0·23
1 1 1 0 7 = 1·20 + 1·21 + 1·22 + 0·23
=⇒ 0 0 0 1 8 = 0·20 + 0·21 + 0·22 + 1·23
1 0 0 1 9 = 1·20 + 0·21 + 0·22 + 1·23
0 1 0 1 10 = 0·20 + 1·21 + 0·22 + 1·23
1 1 0 1 11 = 1·20 + 1·21 + 0·22 + 1·23
0 0 1 1 12 = 0·20 + 0·21 + 1·22 + 1·23
1 0 1 1 13 = 1·20 + 0·21 + 1·22 + 1·23
0 1 1 1 14 = 0·20 + 1·21 + 1·22 + 1·23
1 1 1 1 15 = 1·20 + 1·21 + 1·22 + 1·23

Em nosso livro [6] demonstramos a seguinte fórmula

j n k j n k
anj = j − 2 j+1
2 2

que nos fornece o desenvolvimento binário de um inteiro positivo n.

115
Para programar a matriz binária necessitaremos da variação de j. Ob-
serve que se
n 1 n n
j < 1 ⇒ · j = j+1 < 1 ⇒ anj = 0.
2 2 2 2
Portanto, devemos considerar apenas os valores de j, satifazendo a desigual-
dade
n j
j ≥ 1 ⇐⇒ 2 ≤ n. Isto é, j = 0, 1, 2, . . . , ⌊log2n ⌋.
2
Exemplo: Encontre a expansão binária de 20.
Solução: ⌊log20
2
⌋ = 4. Para j = 0, 1, 2, 3, 4; obtemos

j=0 ⇒ a20,0 = ⌊ 200 ⌋ − 2⌊ 20


⌋ = 20 − 2 · 10 = 0
2 20+1

j=1 ⇒ a20,1 = ⌊ 201 ⌋ − 2⌊ 20


⌋ = 10 − 2 · 5 =0
2 21+1

j=2 ⇒ a20,2 = ⌊ 202 ⌋ − 2⌊ 20


⌋=5−2·2 =1
2 22+1

j=3 ⇒ a20,3 = ⌊ 203 ⌋ − 2⌊ 20


⌋=2−2·1 =0
2 23+1

j=4 ⇒ a20,4 = ⌊ 204 ⌋ − 2⌊ 20


⌋=1−2·0 = 1.
2 24+1

Logo, 20 = (0 0 1 0 1)2 . Ou ainda

20 = 0 · 20 + 0 · 21 + 1 · 22 + 0 · 23 + 1 · 24

Na tela a seguir programamos a matriz binária

na tela da direita temos algumas simulações.

116
Matriz Ternária
O sistema de numeração de base 3 obtém-se escolhendo um conjunto
com três sı́mbolos: S = { 0, 1, 2 }. Na matriz seguinte temos a expansão
dos inteiros 0, 1, 2, . . . , 26, na base 3.

30 31 32
0 0 0 0 0 = 0 · 30 + 0 · 31 + 0 · 32
1 1 0 0 1 = 1 · 30 + 0 · 31 + 0 · 32
2 2 0 0 2 = 2 · 30 + 0 · 31 + 0 · 32
3 0 1 0 3 = 0 · 30 + 1 · 31 + 0 · 32
4 1 1 0 4 = 1 · 30 + 1 · 31 + 0 · 32
5 2 1 0 5 = 2 · 30 + 1 · 31 + 0 · 32
6 0 2 0 6 = 0 · 30 + 2 · 31 + 0 · 32
7 1 2 0 7 = 1 · 30 + 2 · 31 + 0 · 32
8 2 2 0 8 = 2 · 30 + 2 · 31 + 0 · 32
9 0 0 1 9 = 0 · 30 + 0 · 31 + 1 · 32
10 1 0 1 10 = 1 · 30 + 0 · 31 + 1 · 32
11 2 0 1 11 = 2 · 30 + 0 · 31 + 1 · 32
12 0 1 1 12 = 0 · 30 + 1 · 31 + 1 · 32
13 1 1 1 13 = 1 · 30 + 1 · 31 + 1 · 32
14 2 1 1 14 = 2 · 30 + 1 · 31 + 1 · 32
15 0 2 1 15 = 0 · 30 + 2 · 31 + 1 · 32
16 1 2 1 16 = 1 · 30 + 2 · 31 + 1 · 32
17 2 2 1 17 = 2 · 30 + 2 · 31 + 1 · 32
18 0 0 2 18 = 0 · 30 + 0 · 31 + 2 · 32
19 1 0 2 19 = 1 · 30 + 0 · 31 + 2 · 32
20 2 0 2 20 = 2 · 30 + 0 · 31 + 2 · 32
21 0 1 2 21 = 0 · 30 + 1 · 31 + 2 · 32
22 1 1 2 22 = 1 · 30 + 1 · 31 + 2 · 32
23 2 1 2 23 = 2 · 30 + 1 · 31 + 2 · 32
24 0 2 2 24 = 0 · 30 + 2 · 31 + 2 · 32
25 1 2 2 25 = 1 · 30 + 2 · 31 + 2 · 32
26 2 2 2 26 = 2 · 30 + 2 · 31 + 2 · 32

Uma fórmula para a matriz ternária é dada a seguir

j n k j n k
anj = − 3
3j 3j+1

117
O sistema de numeração de base N > 1 obtém-se escolhendo um con-
junto com N sı́mbolos: S = { s0 , s1 , . . . , sN−1 }. No sistema de base 10
usualmente toma-se S = { 0, 1, 2, . . . , 9 }. Se N ≤ 10, utilizam-se os sı́m-
bolos 0, 1, 2, . . . , 9 e se N > 10 utilizam-se os sı́mbolos 0, 1, 2, . . . , 9 e se
introduzem sı́mbolos adicionais para representar 10, . . . , N − 1. Por exem-
plo, o sistema de numeração hexadecimal (base 16), largamente utilizado em
eletrônica digital, usa 16 sı́mbolos:
S = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F }
A fórmula a seguir generaliza as matrizes binária e ternária para uma
base N qualquer
j n k j n k
anj = − N
Nj N j+1

Onde (fixado n), j = 0, 1, 2, . . . , ⌊logNn ⌋.


Exemplo: Obter o desenvolvimento de 538 na base hexadecimal.
Solução: Para N = 16, temos ⌊log16538 ⌋ = 2. Então,
j 538 k j 538 k
a538, j = − 16 , j = 0, 1, 2.
16j 16j+1
Temos
j = 0 ⇒ a538, 0 = ⌊ 5380 ⌋ − 16⌊ 538
⌋ = 538 − 16 · 33 = 10
16 160+1

j = 1 ⇒ a538, 1 = ⌊ 5381 ⌋ − 16⌊ 538


⌋ = 33 − 16 · 2 =1
16 161+1

j = 2 ⇒ a538, 2 = ⌊ 5382 ⌋ − 16⌊ 538


⌋ = 2 − 16 · 0 =2
16 162+1

Como 10 ≡ A, resulta, 538 = (A 1 2)16 .


Na tela a seguir programamos a matriz N -ária

na tela da direita algumas simulações na base N = 3 e N = 16.


Nota: Deduzi a matriz N -ária em abril/1999 (Ver [6]).

118
2.3 Progressão aritmética bidimensional
Nesta seção estudaremos as Progressões Aritméticas Bidimensionais −
uma generalização das progressões aritméticas − que nos possibilitará algu-
mas aplicações interessantes, bem como novas aplicações na HP Prime .
Adotaremos
N = { 1, 2, 3, . . . }

Noções iniciais: sequências duplas


Uma sequência dupla é uma aplicação do tipo:

a(m, n) : N × N → R

Em uma sequência dupla qualquer, cada elemento é indicado por aij . O


ı́ndice i indica a linha e o ı́ndice j a coluna às quais o elemento pertence.
Com a convenção de que as linhas sejam numeradas de cima para baixo e
as colunas da esquerda para a direita, temos:

a11 a12 a13 a14 ...


a21 a22 a23 a24 ...
a31 a32 a33 a34 ...
a41 a42 a43 a44 ...
............................

Exemplos de sequências duplas:


a) Seja a sequência a : N × N → R dada por aij = (−1)i+j . Segundo a
convenção feita, temos:

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 ...
..................................

119
b) Seja a sequência a : N × N → R dada por


 1, se i − j = 1;


aij = −1, se i − j = −1;




0, nos demais casos.

segundo a convenção feita, temos:

0 −1 0 0 0 ...
1 0 −1 0 0 ...
0 1 0 −1 0 ...
0 0 1 0 −1 ...
0 0 0 1 0 ...
.................................

− Uma sequência dupla limitada em linhas é a que possui um número finito


M de linhas; uma sequência dupla limitada em colunas é a que possui um
número finito N de colunas; uma sequência dupla limitada em linhas e
colunas − ou simplesmente limitada − é a que possui M linhas e N colunas,
assim:

a11 a12 a13 ... a1N


a21 a22 a23 ... a2N
a31 a32 a33 ... a3N
...............................
aM 1 aM 2 aM 3 ... aM N

− Uma sequência dupla quadrada de ordem N é aquela em que M = N ,


isto é, uma sequência com igual número de linhas e colunas.

120
Vamos agora definir um tipo especial de sequência dupla:

Definição 1. Chama-se progressão aritmética bidimensional ( PA-2D) uma


sequência dupla dada pela seguinte fórmula de recorrência:


 a11 = a


a1j = a1(j−1) + r1 , j ≥ 2;




aij = a(i−1)j + r2 , i ≥ 2, j ≥ 1.

Onde: a11 = a, r1 e r2 são constantes dadas.


Vejamos a ideia que está por trás desta definição. Inicialmente são dados:

a11 r1

r2

Agora construimos a progressão aritmética da linha 1, assim:

a11 r1
• • • • • ...

r2

Agora podemos descer com “com passos de r2 ” por qualquer coluna, assim:

a11 r1
• • • • • ...

• • • • • ...

• • • • • ...

r2
• • • • • ...
··························· · ·

121
Exemplos:
(a) a11 = 1, r1 = 2 e r2 = 1. Temos a seguinte PA-2D:

1 3 5 7 9 ...
2 4 6 8 10 ...
3 5 7 9 11 ...
4 6 8 10 12 ...
5 7 11 13 14 ...
.............................

(b) a11 = 5, r1 = −1 e r2 = 1. Temos a seguinte PA-2D:

5 4 3 2 1 ...
6 5 4 3 2 ...
7 6 5 4 3 ...
8 7 6 5 4 ...
9 8 7 6 5 ...
..........................

Notação: Adotaremos a seguinte simbologia para uma PA-2D:

a11 r1

r2

As PA-2D dos dois exemplos anteriores são representadas por

1 2 5 −1

1 1

122
2.3.1 Fórmula do termo geral de uma PA-2D
Não seria razoável − nem mesmo sensato − recorrermos à definição para
encontrar um termo qualquer de uma PA-2D. A seguir damos uma fórmula
que nos dá acesso direto a qualquer termo de uma PA-2D.

Teorema 1 (Fórmula do termo geral de uma PA-2D). Na PA-2D em que


o primeiro termo é a11 , a razão das linhas é r1 e a razão das colunas é r2
o (i, j)-termo é:

aij = a11 + (j − 1) r1 + (i − 1) r2

Exemplo: Calcule os termos a41 , a14 e a33 da seguinte PA-2D:

5 6 7 8 9 ...
4 5 6 7 8 ...
3 4 5 6 7 ...
2 3 4 5 6 ...
1 2 3 4 5 ...
..........................

Solução: Do diagrama tiramos: a11 = 5, r1 = 1 e r2 = −1. Então

aij = a11 + (j − 1) r1 + (i − 1) r2

= 5 + (j − 1) 1 + (i − 1) (−1)

= −i + j + 5

Logo

a41 = −4 + 1 + 5 = 2,

a14 = −1 + 4 + 5 = 8,

a33 = −3 + 3 + 5 = 5.

123
Fórmula do termo geral na HP Prime
O que me faz entusiasta da calculadora HP Prime − além da computação
algébrica − é a possibilidade de se fazer programas extremamente compac-
tos, veja por exemplo a fórmula do termo geral de uma PA-2D em apenas
uma única linha!:
aij = a11 + (j − 1) r1 + (i − 1) r2

Neste programa entramos com a11 r1 e r2 e obtemos a PA-2D de ordem


6 × 6. Na tela da direita temos a PA-2D do exemplo anterior.

Propriedades numa PA-2D


Decorrem da fórmula do termo geral de uma PA-2D

aij = a11 + (j − 1) r1 + (i − 1) r2

as seguintes propriedades: (Exercı́cio)

P1) Qualquer linha ou coluna em uma PA-2D resulta em progressão arit-


mética.
P2) Dado qualquer “retângulo” em uma PA-2D a soma de dois vértices
opostos é igual à soma dos outros dois vértices:

ai + ai = ai + ai
1 j1 2 j2 1 j2 2 j1

Veja um exemplo:

5 6 7 8 9 ... a22 a24


4 5 6 7 8 ... 5 6 7
3 4 5 6 7 ... 4 5 6
a32 a34
2 3 4 5 6 ...
1 2 3 4 5 ... a22 + a34 = a24 + a32
..........................
124
Duas consequências imediatas desta propriedade são:
1a ) Em qualquer PA-2D , qualquer termo é a soma do primeiro termo de
sua linha com o primeiro termo de sua coluna menos o primeiro termo da
PA-2D .

aij = ai1 + a1j − a11

Exemplo:

5 6 7 8 9 ...
4 5 6 7 8 ... a34 = a31 + a14 − a11
3 4 5 6 7 ... 6= 3 + 8 − 5
2 3 4 5 6 ...
1 2 3 4 5 ...
..........................

2 a ) Em uma PA-2D vale ainda:

aij = a(i−1)j + ai(j−1) − a(i−1)(j−1)

Exemplo:

5 6 7 8 9 ...
4 5 6 7 8 ... a34 = a(3−1)4 + a3(4−1) − a(3−1)(4−1)

3 4 5 6 7 ...
a34 = a24 + a33 − a23
2 3 4 5 6 ...
1 2 3 4 5 ... 6= 7 + 5 − 6
..........................

125
Observe o mês de janeiro de 2017:

1 1

temos na matriz acima uma PA-2D onde a11 = 1, r1 = 1 e r2 = 7. Confira


as propriedades anteriores.
Nos telefones de teclas, e também ha HP Prime, podemos discernir uma
PA-2D:

A propósito, em projeto de computadores existe a necessidade de se


conhecer o valor de uma tecla em função de sua posição no teclado.

aij = 3i + j − 3

126
P3) Os elementos da diagonal principal de uma PA-2D quadrada estão
em P.A. de primeiro termo a11 e razão r1 + r2 .

Confira esta propriedade nas seguintes PA-2D:

−1 1 3 5 7 ...
1 3 5 7 9 ...
3 5 7 9 11 ...
5 7 9 11 13 ...
7 9 11 13 15 ...
...............................

P4) Os elementos da diagonal secundária de uma PA-2D quadrada de


ordem N estão em P.A. de primeiro termo a1N e razão r2 − r1 .

Confira esta propriedade nas seguintes PA-2D:

N = 3, a13 = 9
−1 1 3 5 7
N = 3, a13 = 3
ւ
1 3 5 7 9
3 5 7 9 11
5 7 9 11 13
7 9 11 13 15

127
2.3.2 Soma dos termos de uma PA-2D
Vamos exibir uma fórmula para calcular a soma Si×j dos i×j “primeiros”
termos de uma PA-2D.

Teorema 2 (Soma dos termos de uma PA-2D). Em uma PA-2D a soma


Si×j dos i × j termos iniciais vale

[ 2a11 + (j − 1) r1 + (i − 1) r2 ] i × j
Si×j =
2

Corolário 1. Em toda PA-2D tem-se:

(a11 + aij ) i × j
Si×j =
2

Exemplos:
(a) Calcule S2×3 para a PA-2D:

5 6 7 8 9 ...
4 5 6 7 8 ... 5 1

3 4 5 6 7 ...
2 3 4 5 6 ... −1
1 2 3 4 5 ...
..........................

Solução: Basta substituir os dados da PA-2D na fórmula acima:

[ 2 · 5 + (3 − 1) 1 + (2 − 1) (−1) ] 2 × 3
S2×3 = = 33
2

128
Utilizando a propriedade P2: (p. 124)

ai + ai = ai + ai
1 j1 2 j2 1 j2 2 j1

a11 + aij = a1j + ai1

e a equação
(a11 + aij ) i × j
Si×j =
2
podemos escrever:
(ai1 + a1j ) i × j
Si×j =
2

Isto é, em uma PA-2D , a soma dos números dentro de um “retângulo” de


dimenões i × j, é o semiproduto da soma dos números de quaisquer dois
vértices opostos pela “área do retângulo”.
Observe isto nas PA-2D seguintes:

(1 + 6) 2 × 3 (7 + 2) 3 × 2 (1 + 13) 2 × 6
S2×3 = = 21 S3×2 = = 27 S2×6 = = 84
2 2 2

(4 + 3) 2 × 3 (1 + 8) 3 × 2 (8 + 6) 2 × 6
S2×3 = = 21 S3×2 = = 27 S2×6 = = 84
2 2 2

Observe que como as linhas e as colunas em


uma PA-2D estão em P.A., nas “propriedades da
soma” não é necessário que o vértice superior es-
querdo do retângulo esteja fixo em a11 . Por exem-
plo, na figura ao lado,
(4 + 9) 2×3
S2×3 = 2 = 39

129
Exemplo: Calcule o somatório duplo abaixo:
10 X
X 5
(3 i + 2 j − 1)
j=1 i=1

Solução: Façamos aij = 3 i + 2 j − 1. Vamos usar a equação

(a11 + aij ) i × j
Si×j =
2
Então,
a11 = 3 · 1 + 2 · 1 − 1 = 4
e
a5, 10 = 3 · 5 + 2 · 10 − 1 = 34
Logo,
(4 + 34) 5 × 10
S5×10 = = 950
2
Portanto,
10 X
X 5
(3 i + 2 j − 1) = 950
j=1 i=1

Generalizando este exemplo, temos:


m
n X
X [ (m + 1) a + (n + 1) b + 2 c ] m × n
(a i + b j + c) =
2
j=1 i=1

(c) Determine a soma de todos os inteiros que figuram na tabela abaixo:

1 2 3 ... n

2 3 4 ... n+1

3 4 5 ... n+2

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

n n+1 n+2 ... n + (n − 1)

Solução: O leitor não terá dificuldades em perceber que a soma pedida é


equivalente à soma dos n × n termos da seguinte PA-2D: a11 = 1, r1 = 1 e
r2 = 1. Então:

[ 2 · 1 + (n − 1) 1 + (n − 1) 1 ] n × n
Sn×n = = n3
2

130
Uma outra propriedade de uma PA-2D está na seguinte proposição:

Proposição 1. Considere uma PA-2D em que a11 , r1 e r2 são inteiros.


Se i e j são ambos ı́mpares, então a11 + aij = ai1 + a1j é par.

Veja dois exemplos:

5 6 7 8 9 ... 5 6 7 8 9 ...
4 5 6 7 8 ... 4 5 6 7 8 ...
3 4 5 6 7 ... 3 4 5 6 7 ...
2 3 4 5 6 ... 2 3 4 5 6 ...
1 2 3 4 5 ... 1 2 3 4 5 ...
.......................... ..........................

Observe que a contrapositiva da proposição acima é:

Se a11 + aij = ai1 + a1j é ı́mpar então i ou j é par.

Exemplos:

5 6 7 8 9 ... 5 6 7 8 9 ...
4 5 6 7 8 ... 4 5 6 7 8 ...
3 4 5 6 7 ... 3 4 5 6 7 ...
2 3 4 5 6 ... 2 3 4 5 6 ...
1 2 3 4 5 ... 1 2 3 4 5 ...
.......................... ..........................

Observe que esta propriedade é menos trivial − menos imediata − que


as anteriores.

131
2.3.3 Linearização de sequências duplas
Nesta seção exibiremos o conceito de linearização de uma sequência
dupla, o qual aumentará substancialmente o espectro de aplicações das pro-
gressões aritméticas 2D.
O que chamaremos de linearização de uma sequência dupla − limitada
em colunas − é o procedimento de transformá-la em uma sequência simples
(an ), colocando as linhas uma após a outra.
Nota: Sempre que falarmos em linearização de uma sequência dupla, fica
subentendido que a mesma tem N colunas.
Exemplo: Linearizar a sequência dupla abaixo:

a11 a12 a13


a21 a22 a23
a31 a32 a33
................

Solução: Basta escrever uma linha após a outra, assim:

a11 a12 a13 a21 a22 a23 a31 a32 a33 ...

Equações de linearização
No estudo da linearização de uma sequência dupla surgem dois problemas
a serem resolvidos:
1 o ) Dada a posição (i, j) de um termo qualquer na sequência dupla , deter-
minar sua posição n na sequência linearizada; e, inversamente:
2 o ) Dada a posição n de um termo na sequência linearizada, determinar
sua localização (i, j) na sequência dupla .
Para a solução do primeiro problema temos

n = aij = N (i − 1) + j

Para a solução do segundo problema temos

  n−1 
i= N +1

 j = n − N  n−1 

N

132
Exemplo: Linearizando-se uma sequência dupla com cinco colunas, qual a
nova posição ocupada pelos termos a32 , a24 , a35 e a21 ?

Solução: Para N = 5, utilizando a fórmula

n = aij = N (i − 1) + j

temos: n = 5(i − 1) + j, logo

a32 ⇒ n = 5(3 − 1) + 2 = 12

a24 ⇒ n = 5(2 − 1) + 4 = 9

a35 ⇒ n = 5(3 − 1) + 5 = 15

a21 ⇒ n = 5(2 − 1) + 1 = 6

Confira

a11 a12 a13 a14 a15


a21 a22 a23 a24 a25
a31 a32 a33 a34 a35
a41 a42 a43 a44 a45
..................................

O programa seguinte recebe uma matriz e utiliza a fórmula

n = aij = N (i − 1) + j
para transferı́-la para um vetor

Na tela da direita vemos um exemplo de aplicação do programa.

133
Exemplo: Para a PA-2D seguinte

1 1

−1

calcular os termos a7 , a11 e a14 (sequência linearizada), com N = 5.


Solução: Com N = 5, temos:
  n−1 
i=
 5 +1

 j = n − 5 n−1 

5

Então
 7−1   
n=7 ⇒ i= 5 + 1 = 2, j = 7 − 5 7−1
5 =2

 11−1   
n = 11 ⇒ i= 5 + 1 = 3, j = 11 − 5 11−1
5 =1

 14−1   
n = 14 ⇒ i= 5 + 1 = 3, j = 14 − 5 14−1
5 =4

Na fórmula do termo geral, temos

aij = a11 + (j − 1) r1 + (i − 1) r2

= 1 + (j − 1) 1 + (i − 1) (−1) = −i + j + 1

Portanto
a22 = −2 + 2 + 1 = 1
a31 = −3 + 1 + 1 = −1
a34 = −3 + 4 + 1 = 2
Confira

1 2 3 4 5

0 1 2 3 4

−1 0 1 2 3

−2 −1 0 1 2
.............................
134
Soma em uma sequência linearizada
Agora vamos exibir uma fórmula para a soma Sn dos n termos iniciais
de uma sequência linearizada, conhecidos a1 , r1 , r2 e N .

[ 2a1 + (N −1) r1 + (i−2) r2 ] (i−1)×N j(j−1) r1


Sn = 2 + j(a1 + (i − 1) r2 ) + 2

Exemplo: Calcule a soma dos n primeiros termos da sequência

1 1 2 2 3 3 4 4 ...

Solução: A sequência em questão pode ser vista como a linearização da


seguinte PA-2D:

1 1 a11 = 1 r1 = 0

2 2
3 3 N =2

4 4 r2 = 1
......

Sendo assim, temos:

[ 2a1 + (N −1) r1 + (i−2) r2 ] (i−1)×N j(j−1) r1


Sn = 2 + j(a1 + (i − 1) r2 ) + 2

[ 2·1 + (2−1) 0 + (i−2) 1 ] (i−1)×2 j(j−1) 0


Sn = 2 + j(1 + (i − 1) 1) + 2

Simplificando
Sn = i (i − 1) + j i
Substituindo
 
 j = n − N (i − 1)  j = n − 2(i − 1)

 i =  n−1  + 1  i =  n−1  + 1
N 2

e simplificando, chegamos a
n−1  n − 1 2
Sn = (n − 1) − +n
2 2

135
Na tela a seguir programamos a equação

[ 2a1 + (N −1) r1 + (i−2) r2 ] (i−1)×N j(j−1) r1


Sn = 2 + j(a1 + (i − 1) r2 ) + 2

Na tela da direita temos o exemplo anterior.

Como valorizar seus conhecimentos matemáticos


Exemplo: Calcule a soma dos n primeiros termos da sequência dos naturais

1 2 3 4 5 6 7 8 ...

Solução: Escolhendo um N arbitrário, digamos N = 3, a sequência em


questão pode ser vista como a linearização da seguinte PA-2D:

1 2 3 a11 = 1 r1 = 1

4 5 6
7 8 9 N =3

10 11 12 r2 = 3
..............

Portanto, a soma dos n primeiros números naturais − via linearização


de sequências duplas − vale

n (n + 1)
Sn =
2

136
Exemplo: Encontre as fórmulas do termo geral e da Soma para a sequência

0 1 2 0 1 2 0 1 2 ...

Solução: A sequência em questão pode ser vista como a linearização da


seguinte PA-2D:

0 1 2 a11 = 0 r1 = 1

0 1 2
0 1 2 N =3

0 1 2 r2 = 0
..........

Temos:

a(n) = aij = a11 + (j − 1) r1 + (i − 1) r2

= 0 + (j − 1) 1 + (i − 1) 0 = j − 1

Substituindo
 
 j = n − N (i − 1)  j = n − 3(i − 1)

 i =  n−1  + 1  i =  n−1  + 1
N 3

temos
n−1
a(n) = n − 3(i − 1) − 1 = n − 3 −1
3
Portanto
 n−1 
a(n) = n − 1 − 3
3
Na tela a seguir programamos este exemplo, confira na tela do centro

137
Na última tela acima obtemos a soma dos termos da sequência, vale
 n−1   2
3 (9 − 6n) + 9 n−1
3 + n2 − n
Sn =
2
Na tela a seguir fizemos uma ligeira alteração no programa da fórmula
do termo geral

Agora o programa sai com a função e não com a expressão do termo geral,
na tela da direita usamos o comando MAKELIST para, a partir da fórmula do
termo geral, gerar os termos da sequência do exemplo, confira

0 1 2 0 1 2 0 1 2 ...
Na tela a seguir fizemos uma ligeira alteração no programa da soma

Agora o programa sai com a função e não com a expressão da soma, na tela
da direita calculamos alguns exemplos de soma dos n primeiros termos da
sequência acima.
Observamos na tela direita que ST(3) = 3 e ST(9) = 9, o que nos sugere
elaborar o seguinte desafio ao leitor:
Desafio: Para que valores de n teremos Sn = n para a sequência (?):
0 1 2 0 1 2 0 1 2 ...
Ou melhor, para a sequência acima teremos
Sn = n ⇐⇒ n =?
Prove matematicamente sua conclusão!

138
Um Singelo Desafio

Condidere a seguinte sequência:

0 1 2 0 1 2 0 1 2 ...

ou seja, a tripla 0, 1, 2 se repete indefinidamente. Considere a sequência


Sn da soma dos termos desta sequência, por exemplo:

S1 = 0, S2 = 1, S3 = 3, S4 = 3, S5 = 4, S6 = 6, S7 = 6.

como é fácil ver.

Desafio: Para que valores de n teremos Sn = n para a sequência em ques-


tão?. Ou melhor, para a sequência acima teremos

Sn = n ⇐⇒ n =?
Prove matematicamente sua solução, não aceitamos “argumen-
tos heurı́sticos”.

Nota: Resolvi este desafio com o auxı́lio da calculadora HP Prime; desconfio


que a HP Prime é superior a muitas das outras linguagens de programação,
para confirmar (ou não) minha suspeita deixo este desafio aos estudantes de
Ciência da Computação, que podem pedir auxı́lio de qualquer linguagem de
suas preferências. Ademais, observe a dupla seta ⇐⇒ .

Boa Sorte!

Boa Vista-RR/23.02.2018
gentil.iconoclasta@gmail.com

139
Exemplo: Considere a sequência dos números naturais. Retire desta sequên-
cia todos os múltiplos de p (p ≥ 2, natural arbitrariamente fixado). Encontre
para a sequência resultante:
(a) Uma fórmula para o termo geral;
(b) Uma fórmula para a soma dos n primeiros termos.
Solução: Inicialmente temos

N: 1 2 3 4 5 6 7 8 ...

Se p = 2 teremos a sequência dos ı́mpares. Consideremos p > 2. Neste


caso, temos:

1 2 ... p −1 p p+1 p + 2 . . . 2p − 1 2p 2p + 1 . . .

Claramente esta sequência pode ser arranjada no seguinte quadro:

1 2 ... p−1

p+1 p+2 ... 2p − 1

2p + 1 2p + 2 ... 3p − 1
.............................................

que nada mais é que a seguinte PA-2D limitada em colunas:

a11 = 1 r1 = 1

N =p−1
r2 = p

Logo

a(n) = aij = a11 + (j − 1) r1 + (i − 1) r2

= 1 + (j − 1) 1 + (i − 1) p

= j + (i − 1) p

140
Substituindo
     
 i = n−1
N +1  i = n−1
p−1 + 1

 j = n − N (i − 1)  j = n − (p − 1)(i − 1)

simplificando, chegamos a

j k
n−1
an = n + p−1

←−assim

Pois bem, para a soma dos termos, temos:

[ 2a1 + (N −1) r1 + (i−2) r2 ] (i−1)×N j(j−1) r1


Sn = 2 + j(a1 + (i − 1) r2 ) + 2
[ 2·1 + ((p−1)−1) 1 + (i−2) p ] (i−1)×(p−1) j(j−1) 1
Sn = 2 + j (1 + (i − 1) p) + 2
Simplificando, temos:
j n − 1 k2 p(p − 1) jn−1 k j(j + 1)
Sn = + pj +
p−1 2 p−1 2
 n−1 
Substituindo j = n − (p − 1) p−1 , obtemos:
n(n + 1) p − 1 − 2n j n − 1 k p − 1 j n − 1 k2
Sn = − −
2 2 p−1 2 p−1

Não parece crı́vel, mas podemos encontrar Sn pela calculadora, veja:

j k j k2 j k j k2 j k
n−1 n−1 n−1 n−1 n−1
n2 + 2n p−1 +n−p p−1 −p p−1 + p−1 + p−1
2
Até por inspeção direta vemos que os dois resultados são equivalentes.

141
Apêndice:
Para não perder de vista, deixamos registrado aqui como resolvemos o
desafio da página 139. Pois bem, tendo em conta que para a sequência

0 1 2 0 1 2 0 1 2 ...

temos
 n−1   2
3 (9 − 6n) + 9 n−1
3 + n2 − n
Sn =
2
desejamos resolver a equação Sn = n, ou ainda
n−1  n − 1 2
(9 − 6n) + 9 + n2 − 3 n = 0
3 3
Vamos necessitar do seguinte conceito:

Partição dos naturais


Para os seguintes subconjuntos de N:

N1 = {1, 3, 5, 7, . . .}, n = 2k − 1, k = 1, 2, 3, . . .
N2 = {2, 4, 6, 8, . . .}, n = 2k, k = 1, 2, 3, . . .

temos
N1 ∪ N2 = N e N1 ∩ N2 = ∅.
Por esta razão dizemos que os conjuntos N1 e N2 formam uma partição
de N. Isto é, todo natural pertence a um e somente um destes conjuntos.
Os três seguintes subconjuntos de N:

N1 = { 1, 4, 7, 10, . . .}, n = 3k − 2, k = 1, 2, 3, . . .
N2 = { 2, 5, 8, 11, . . .}, n = 3k − 1, k = 1, 2, 3, . . .
N3 = { 3, 6, 9, 12, . . .}, n = 3k, k = 1, 2, 3, . . .

formam uma outra partição de N.


Para resolver o desafio utilizaremos esta última partição; ademais, pode-
riamos fazê-lo “na mão”, no entanto, utilizaremos os recursos da calculadora,
a tı́tulo de exemplo. Antes

142
Listaremos agora algumas propriedades da função maior inteiro:
Proposição 2. Se x e y são números reais, então:
(i) ⌊x⌋ ≤ x < ⌊x⌋ + 1.

(ii) x ≤ y ⇒ ⌊x⌋ ≤ ⌊y⌋.

(iii) ⌊x + m⌋ = ⌊x⌋ + m, para todo m ∈ Z.

(iv) ⌊x⌋ + ⌊y⌋ ≤ ⌊x + y⌋ ≤ ⌊x⌋ + ⌊y⌋ + 1.


  x
(v) ⌊x⌋
m = m , para todo m ∈ Z.
 
(vi) 0 ≤ ⌊x⌋ − 2 x2 ≤ 1.
Pois bem, iniciamos digitando a expressão correspondente ao lado es-
querdo da equação
n−1  n − 1 2
(9 − 6n) + 9 + n2 − 3 n = 0
3 3
isto é feito na tela a seguir

salvamos a expressão na variável SD, para efeitos de manipulação algébrica.


Considerando a partição a seguir

N1 = { 1, 4, 7, 10, . . .}, n = 3k − 2, k = 1, 2, 3, . . .
N2 = { 2, 5, 8, 11, . . .}, n = 3k − 1, k = 1, 2, 3, . . .
N3 = { 3, 6, 9, 12, . . .}, n = 3k, k = 1, 2, 3, . . .
na tela do centro pedimos para substuituir na expressão SD n = 3k − 2. Na
tela da direita temos o resultado. Observe que a calculadora não simplifica
− e com razão − a expressão

⌊−1 + k⌋ = FLOOR(−1 + k)

mas nós sabemos tratar-se de um número inteiro. Utilizaremos a propriedade

⌊x + m⌋ = ⌊x⌋ + m, para todo m∈Z

143
Vamos colaborar com a calculadora na simplificação da expressão da
última tela acima, para isto pediremos que ela faça a seguinte substituição

FLOOR(−1 + k) = −1 + k

Observe a linha de entrada na tela a seguir

com o cursor posicionado antes da vı́rgula pedimos uma cópia da expressão,


o resultado é a tela da direita. Isto significa que o valor da expressão
n−1   n − 1 2
(9 − 6n) + 9 + n2 − 3 n
3 3
para
n = 3k − 2 (k = 1, 2, 3, . . .) N1 = { 1, 4, 7, 10, . . .}
é −2. Portanto, para todos os naturais do conjunto N1 , temos
n−1   n − 1 2
(9 − 6n) + 9 + n2 − 3 n = −2 6= 0
3 3
Vejamos as duas outras possibilidades. Na tela a seguir vamos substituir
n = 3k − 2 por n = 3k − 1

a segunda das possibilidades em

N1 = { 1, 4, 7, 10, . . .}, n = 3k − 2, k = 1, 2, 3, . . .
N2 = { 2, 5, 8, 11, . . .}, n = 3k − 1, k = 1, 2, 3, . . .
N3 = { 3, 6, 9, 12, . . .}, n = 3k, k = 1, 2, 3, . . .

144
O resultado é a tela do centro acima. Vamos colaborar com a calculadora
na simplificação da expressão da última tela acima, para isto pediremos que
ela faça a seguinte substituição
 3k − 2  3k − 2 
= FLOOR =k
3 3
O resultado é como na tela a seguir

Portanto, para todos os naturais do conjunto N2 , temos


n−1   n − 1 2
(9 − 6n) + 9 + n2 − 3 n = 4 6= 0
3 3
Na tela do centro e da direita temos o mesmo procedimento para a
terceira alternativa a seguir
N1 = { 1, 4, 7, 10, . . .}, n = 3k − 2, k = 1, 2, 3, . . .
N2 = { 2, 5, 8, 11, . . .}, n = 3k − 1, k = 1, 2, 3, . . .
N3 = { 3, 6, 9, 12, . . .}, n = 3k, k = 1, 2, 3, . . .
Portanto, para todos os naturais do conjunto N3 , temos
n−1  n − 1 2
(9 − 6n) + 9 + n2 − 3 n = 0
3 3
Esta é a solução do desafio: n é múltiplo de 3.
Na tela a seguir executamos novamente o programa da soma

na tela da direita listamos os 20 primeiros valores da soma, obtendo


{ 0, 1, |{z}
3 , 3, 4, |{z} 12 , 12, 13, 15, 15, 16, 18, 18, 19 }
9 , 9, 10, |{z}
6 , 6, 7, |{z}
S3 S6 S9 S12

145
2.4 Progressão aritmética tridimensional
Uma sequência tripla é uma aplicação do tipo:

a(m, n, p) : N × N × N → R

Em uma sequência tripla qualquer, cada elemento é indicado por aijk . O


ı́ndice i indica a linha, o ı́ndice j a coluna e o ı́ndice k a cota (altura) às quais
o elemento pertence. Com a convenção de que as linhas sejam numeradas de
cima para baixo, as colunas da esquerda para a direita e as cotas de baixo
para cima, temos:

a113 a123 a133

a213 a223 a233


a112 a122 a132

a313 a323 a333


a212 a222 a232
a111 a121 a131

k
a312 a322 a332
a211 a221 a231
j

i
a311 a321 a331

Veja esta figura de uma outra perspectiva:

a113 a123 a133

a213 a223 a233

a313 a323 a333

a112 a122 a132

a212 a222 a232

a312 a322 a332

a111 a121 a131

a211 a221 a231

a311 a321 a331

146
Em uma sequência tripla temos alguns planos a definir:
• Plano-linha: é todo plano em que i = m (m ∈ N fixado);
• Plano-coluna: é todo plano em que j = n (n ∈ N fixado);
• Plano-cota: é todo plano em que k = p (p ∈ N fixado).

− Plano-linha − Plano-coluna − Plano-cota

Em uma sequência tripla de base quadrada definimos:


• Plano-diagonal principal (P.D.P.): é o plano em que i = j;
• Plano-diagonal secundário (P.D.S.): é o plano em que i + j = N + 1.

− Plano P.D.P. − Plano P.D.S.

147
Vamos agora definir um tipo especial de sequência tripla:

Definição 2. Chama-se progressão aritmética tridimensional (PA-3D) uma


sequência tripla dada pela seguinte fórmula de recorrência:


 a111 = a




 a1j1 = a
1(j−1)1
+ r1 , j ≥ 2;



 aij1 = a(i−1)j1 + r2 , i ≥ 2, j ≥ 1.



aijk = aij(k−1) + r3 , i ≥ 1, j ≥ 1, k ≥ 2.

Onde: a111 = a, r1 , r2 e r3 são constantes dadas.

a113 a123 a133

a213 a223 a233


a112 a122 a132

a313 a323 a333


a212 a222 a232
a111 a121 a131

z
a312 a322 a332
a211 a221 a231
y

x
a311 a321 a331

Observe como se dá a dinâmica desta construção,

k r3 aijk = aij(k−1) + r3

a111
j r1 a1j1 = a1(j−1)1 + r1
i r2 aij1 = a(i−1)j1 + r2

148
Vejamos a ideia que está por trás desta definição. Inicialmente são dados:

r3

r1

a111
r2

Agora construimos a progressão aritmética da linha 1, assim:

r3 k

r1
• j a1j1 = a1(j−1)1 + r1
a111
i
r2

Isto é,
r1
a111 a121 a131
...

a partir daqui podemos construir qualquer coluna, assim:

r1
a111 a121 a131
...

a211 ...

a311 ...
aij1 = a(i−1)j1 + r2
...
r2 . . . .
.. .. .. ..

a partir daqui podemos construir qualquer cota, assim:

.. .. .. ..
. . . .
..
.
..
.
..
. r3
r1
...
a111 a121 a131
a211 ...

a311 ...
aijk = aij(k−1) + r3
...
r2 . . . .
.. .. .. ..

149
Exemplos:
(a) A seguir temos uma PA-3D em que a111 = 4, r1 = 2, r2 = 3 e r3 = 1.

6 8 10

9 11 13
5 7 9

12 14 16
8 10 12
4 6 8

11 13 15
7 9 11

10 12 14

(b) A seguir temos uma PA-3D com a111 = −1, r1 = 1, r2 = 3 e r3 = 2.

5 6 7 8

8 9 10 11

11 12 13 14

14 15 16 17

3 4 5 6

6 7 8 9

9 10 11 12
12 13 14 15

1 2 3 4

4 5 6 7
r3 = 2
7 8 9 10
10 11 12 13
−1
−1 0 1 2
r1 = 1

2 3 4 5
r2 = 3

5 6 7 8

8 9 10 11

150
Por uma questão de curiosidade observe que todos os planos (plano-linha,
plano-coluna ou plano-cota) resultam em em uma PA-2D. Por exemplo, para
o plano k = 1, temos

aij1 = a11 + (j − 1) r1 + (i − 1) r2

= −1 + (j − 1) 1 + (i − 1) 3

Isto é, a fórmula do termo geral do plano k = 1 é aij1 = 3i + j − 5.


Para o plano k = 2, temos

aij2 = a11 + (j − 1) r1 + (i − 1) r2

= 1 + (j − 1) 1 + (i − 1) 3

Isto é, a fórmula do termo geral do plano k = 2 é aij2 = 3i + j − 3. Veja

1 2 3 4
aij2 = 3i + j − 3

4 5 6 7

7 8 9 10

10 11 12 13

−1 0 1 2 aij1 = 3i + j − 5

2 3 4 5

5 6 7 8

8 9 10 11

Isto pode ser provado (Exercı́cio).

151
2.4.1 Fórmula do termo geral de uma PA-3D
Teorema 3 (Fórmula do termo geral de uma PA-3D). Na PA-3D em que
o primeiro termo é a111 , a razão das linhas é r1 , a razão das colunas é r2
e a razão das cotas é r3 o (i, j, k)-termo é:

aijk = a111 + (j − 1) r1 + (i − 1) r2 + (k − 1) r3

Exemplo: Calcule os termos a222 , a323 e a343 da PA-3D em que a111 = −1,
r1 = 1, r2 = 3 e r3 = 2.
Solução: Substituindo os dados na fórmula do termo geral, temos

aijk = −1 + (j − 1) 1 + (i − 1) 3 + (k − 1) 2

Simplificando
aijk = 3i + j + 2k − 7
Sendo assim, temos

a222 = 5, a323 = 10, a344 = 14

Confira no diagrama a seguir

5 6 7 8

8 9 10 11


11 12 13 14

14 15 16 17

3 4 5 6

6 7 8 9

9 10 11 12
12 13 14 15

1 2 3 4

4 5 6 7
r3 = 2
7 8 9 10
10 11 12 13
−1
−1 0 1 2
r1 = 1

2 3 4 5
r2 = 3

5 6 7 8

8 9 10 11
152
Exemplo: Obter a PA-3D em que a131 = 3, a123 = 8, a234 = 14, e
a333 = 13.
Solução: Para obter a PA-3D é necessário encontrar a111 , r1 , r2 e r3 .
Então

a131 = 3 ⇒ a111 + (3 − 1) r1 + (1 − 1) r2 + (1 − 1) r3 = 3
a123 = 8 ⇒ a111 + (2 − 1) r1 + (1 − 1) r2 + (3 − 1) r3 = 8
a234 = 14 ⇒ a111 + (3 − 1) r1 + (2 − 1) r2 + (4 − 1) r3 = 14
a333 = 13 ⇒ a111 + (3 − 1) r1 + (3 − 1) r2 + (3 − 1) r3 = 13

Simplificando temos o seguinte sistema linear


    
1 2 0 0 a111 3
 1 1 0 2  r   8 
  1   
  = 
 1 2 1 3   r2   14 
1 2 2 2 r3 13

Resolvendo este sistema, encontramos

10 11 12 13


12 13 14 15

14 15 16 17

16 17 18 19
ւ
7 8 9 10

9 10 11 12

11 12 13 14
13 14 15 16

4 5 6 7

6 7 8 9
r3 = 3
8 9 10 11
10 11 12 13 ↓ 1
1 2 3 4
r1 = 1

3 4 5 6
r2 = 2

5 6 7 8

7 8 9 10

153
(FUVEST-SP) Os números inteiros positivos são dispostos em “quadra-
dos” da seguinte maneira:
1 2 3 10 11 12 19 ·· ··
4 5 6 13 14 15 ·· ·· ·· ···
7 8 9 16 17 18 ·· ·· ··
O número 500 se encontra em um desses “quadrados”. A “linha” e a “coluna”
em que o número 500 se encontra são, respectivamente:
a) 2 e 2 b) 3 e 3 c) 2 e 3 d) 3 e 2 e) 3 e 1
Solução: Podemos considerar os quadrados como planos em uma PA-3D:

19 20 21

22 23 24

25 26 27

10 11 12

13 14 15

16 17 18 r3 = 9

1 2 3 1
r1 = 1
4 5 6 r2 = 3

7 8 9

Neste caso, temos


aijk = a111 + (j − 1) r1 + (i − 1) r2 + (k − 1) r3

= 1 + (j − 1) 1 + (i − 1) 3 + (k − 1) 9
Logo, aijk = 3i + j + 9k − 12. Fazendo
512 − (3i + j)
3i + j + 9k − 12 = 500 ⇒ k=
9
Observe que 1 ≤ i ≤ 3 e 1 ≤ j ≤ 3. A única combinação de i e j que
produz k inteiro é i = j = 2. Para estes valores descobrimos ainda que o
número 500 se encontra no “quadrado” (plano) de número k = 56.

154
Concatenação da função map
Vamos considerar a função map vista na página 88. O interessante é que
“concatenando” esta função podemos trabalhar com funções de duas ou mais
variáveis.
Exemplo: Consideremos a seguinte PA-2D

5 6 7 8 9 ...
4 5 6 7 8 ...
3 4 5 6 7 ...
2 3 4 5 6 ...
1 2 3 4 5 ...
..........................

cuja fórmula do termo geral é, aij = −i + j + 5. Digitando a tela a seguir

dando Enter teremos a tela do centro. Aplicamos novamente a função map


ao resultado anterior, só que agora j varia, como na tela da direita.
Dando Enter teremos a tela a seguir

agora basta tomar a transposta (comando transpose) da matriz anterior e


teremos a tela da direita, que é a PA-2D acima.

155
Concatenando duas vezes a função map podemos obter uma matriz 3D;
por exemplo, considerando o programa seguinte (duas primeiras telas)

aijk = a111 + (j − 1) r1 + (i − 1) r2 + (k − 1) r3

Na tela da direita temos uma simulação para a PA-3D da questão da


FUVEST (p. 154).
Nota: duplicamos os ı́ndices no programa por que estava dando problema.

19 20 21

22 23 24

25 26 27

10 11 12

13 14 15

16 17 18

1 2 3

4 5 6

7 8 9 aijk = 3i + j + 9k − 12

Na primeira tela acima salvamos a matriz 3D na variável FUV, na tela


abaixo mostramos como podemos acessar individualmente os elementos desta
matriz, ou então, cada linha e cada plano da matriz.

156
Na figura seguinte adaptamos o programa anterior para sair com quatro
planos de uma PA-3D

5 6 7 8

8 9 10 11

11 12 13 14

14 15 16 17

3 4 5 6

6 7 8 9

9 10 11 12
12 13 14 15

1 2 3 4

4 5 6 7

7 8 9 10
10 11 12 13

−1 0 1 2

2 3 4 5

5 6 7 8

8 9 10 11

Na tela da direita fizemos uma simulação para a PA-3D da esquerda.


Caso se queira ver a PA-3D plano a plano basta digitar o plano desejado,
por exemplo, veja:

Ainda conseguimos introduzir uma melhoria no programa anterior.

157
O programa seguinte

10 11 12 13

12 13 14 15

14 15 16 17

16 17 18 19

7 8 9 10

9 10 11 12

11 12 13 14
13 14 15 16

4 5 6 7

6 7 8 9

8 9 10 11
10 11 12 13

1 2 3 4

3 4 5 6

5 6 7 8

7 8 9 10

sai com uma PA-3D plano a plano, em uma lista.

Propriedades numa PA-3D


Decorrem da fórmula do termo geral de uma PA-3D

aijk = a111 + (j − 1) r1 + (i − 1) r2 + (k − 1) r3

as seguintes propriedades: (exercı́cio)

P1) Qualquer plano (linha, coluna ou plano cota) em uma PA-3D resulta
em progressão aritmética plana.

− Plano-linha − Plano-coluna − Plano-cota

158
P2) Em uma PA-3D o plano cota k = p está em PA-2D de primeiro
termo a11p e razões r1 e r2 .

10 11 12 13

12 13 14 15

14 15 16 17

16 17 18 19

7 8 9 10

9 10 11 12

11 12 13 14 a11p r1
13 14 15 16
r2
4 5 6 7

6 7 8 9

8 9 10 11
10 11 12 13

1 2 3 4

3 4 5 6

5 6 7 8
− Plano-cota
7 8 9 10

P3) Em uma PA-3D de base quadrada o plano diagonal principal está em


PA-2D de primeiro termo a111 e razões r1 + r2 e r3 .

r3

a111
r1
+
r2

− Plano P.D.P.

159
P4) Em uma PA-3D de base quadrada o plano diagonal secundário está
em PA-2D de primeiro termo a1N1 e razões r2 − r1 e r3 .

r3

a1N1
r1
r2 −

− Plano P.D.S.

P5) Dado qualquer “paralelepı́pedo” em uma PA-3D, a soma dos termos


das arestas verticais opostas de um dos planos diagonais é igual a soma dos
termos das arestas verticais opostas do outro plano diagonal.
Veja um exemplo:

6 8 10
11 13


9 11 13
5 7 9 14 16
10 12

12 14 16
8 10 12
4 6 8 13 15
9 11

11 13 15
7 9 11
↑12 14

10 12 14

No paralelepı́pedo em destaque na figura da direita, temos:

(11 + 16) + (10 + 15) + (9 + 14) = (12 + 11) + (13 + 12) + (14 + 13)

Esta propriedade é decorrência da propriedade P2 das PA-2D (p. 124)


e do fato de que todo plano-cota é uma PA-2D.

160
2.4.2 Soma dos termos de uma PA-3D
Vamos exibir uma fórmula para calcular a soma Si×j×k dos i × j × k
“primeiros” termos de uma PA-3D.
Teorema 4 (Soma dos termos de uma PA-3D). Em uma PA-3D a soma
Si×j×k dos i × j × k termos iniciais vale

[ 2a111 + (j − 1) r1 + (i − 1) r2 + (k − 1) r3 ] i × j × k
Si×j××k =
2

Corolário 2. Em toda PA-3D tem-se:

(a111 + aijk ) i × j × k
Si×j×k =
2

Exemplo: Calcule o somatório triplo abaixo:


X 3
2 X
2 X
(3 i + j + 9 k − 12)
k=1 j =1 i=1

Solução: Façamos aijk = 3 i + j + 9 k − 12. Vamos usar a equação

(a111 + aijk ) i × j × k
Si×j×k =
2
Então

a111 = 3 · 1 + 1 + 9 · 1 − 12 = 1

e
a322 = 3 · 3 + 2 + 9 · 2 − 12 = 17
Logo
(1 + 17) 3 × 2 × 2
S3×2×2 = = 108
2
Generalizando o resultado anterior, para:
p X
X m
n X
S = (a i + b j + c k + d)
k=1 j =1 i=1

temos
[ (m + 1) a + (n + 1) b + (p + 1) c + 2d ] m × n × n × p
S =
2

161
Exemplo: Calcule S2×2×3 para a PA-3D dada por a111 = 4, r1 = 2, r2 = 3
e r3 = 1.
Solução: Calcularemos de dois modos, temos:

[ 2a111 + (j − 1) r1 + (i − 1) r2 + (k − 1) r3 ] i × j × k
Si×j×k =
2

[ 2 · 4 + (2 − 1) 2 + (2 − 1) 3 + (3 − 1) 1 ] 2 × 2 × 3
S2×2×3 = = 90
2
Na outra alternativa, temos:

(a111 + aijk ) i × j × k
Si×j×k =
2

(4 + a223 ) 2 × 2 × 3
S2×2×3 =
2
Na fórmula do termo geral temos

aijk = a111 + (j − 1) r1 + (i − 1) r2 + (k − 1) r3

a223 = 4 + (2 − 1) 2 + (2 − 1) 3 + (3 − 1) 1 = 11

Substituindo, obtemos S2×2×3 = 90.


Ao calcularmos S2×2×3 estamos somando, simultaneamente, todos os
números dentro do “volume” 2 × 2 × 3. No caso do exemplo em questão,
observe geometricamente:

6 8 10

S2×2×3
9 11 13
6 8
5 7 9

9 11
12 14 16
8 10 12 5 7
4 6 8

11 13 15 8 10
7 9 11 4 6

10 12 14 7 9

162
2.4.3 Linearização de sequências triplas
A exemplo do que foi feito para as sequências duplas, também é de inte-
resse linearizar uma sequência tripla.
O que chamamos de linearização de uma sequência tripla, limitada em
linhas e colunas, é o procedimento de transformá-la em uma sequência sim-
ples (an ), colocando as linhas plano a plano, uma após a outra.
Nota: Sempre que falarmos em linearização de uma sequência tripla fica
subentendido que a mesma tem M linhas e N colunas (ordem M × N × ∞).
Exemplo: Linearizar a sequência tripla abaixo (M = N = 3):

a113 a123 a133

a213 a223 a233


a112 a122 a132

a313 a323 a333


a212 a222 a232
a111 a121 a131

a312 a322 a332


a211 a221 a231

a311 a321 a331

Solução: Basta escrever uma linha após a outra, assim:

a111 a121 a131 a211 a221 a231 a311 a321 a331 ...

a112 a122 a132 a212 a222 a232 a312 a322 a332 ...

a113 a123 a133 a213 a223 a233 a313 a323 a333 ...

Observe o leitor que a segunda linha no diagrama acima vem logo após
a primeira, e a terceira logo após a segunda.

163
Equações de linearização
No estudo da linearização de uma sequência tripla surgem dois problemas
a serem resolvidos:
1 o ) Dada a posição (i, j, k) de um termo qualquer na sequência tripla de-
terminar sua posição n na sequência linearizada; e, inversamente:
2 o ) Dada a posição n de um termo na sequência linearizada, determinar
sua localização (i, j, k) na sequência tripla.
A solução do primeiro problema acima é:

n = aijk = N (i − 1) + j + M N (k − 1)

A solução para o segundo problema é:

 j k
n−1


 k = MN +1



 j k
P −1
 i = N + 1, onde P = n − M N (k − 1)





 j = P − N (i − 1)

164
Exemplo: Linearizando-se uma sequência tripla de ordem 4 × 4 × ∞, qual
a nova posição ocupada pelos termos a222 , a323 e a344 ?.
Solução: Para M = N = 4, temos

n = N (i − 1) + j + M N (k − 1)

= 4(i − 1) + j + 4 · 4 (k − 1)

Simplificando

n = 4 i + j + 16 k − 20

Logo
a222 ⇒ n = 4 · 2 + 2 + 16 · 2 − 20 = 22
a323 ⇒ n = 4 · 3 + 2 + 16 · 3 − 20 = 42
a344 ⇒ n = 4 · 3 + 4 + 16 · 4 − 20 = 60

Interprete estes resultados para a sequência tripla a seguir:

5 6 7 8

8 9 10 11


11 12 13 14

14 15 16 17

3 4 5 6

6 7 8 9

9 10 11 12
12 13 14 15

1 2 3 4

4 5 6 7
r3 = 2
7 8 9 10
10 11 12 13
−1
−1 0 1 2
r1 = 1

2 3 4 5
r2 = 3

5 6 7 8

8 9 10 11

165
Exemplo: Considere a sequência dos números ı́mpares
1 3 5 7 9 11 13 15 17 ...
armazenando esta sequência em uma PA-3D de ordem 3 × 3 × ∞ encontre
a nova posição ocupada pelos ı́mpares 13, 27 e 51.
Solução: Substituindo M = N = 3 nas equações da linearização, temos:
 j k
n−1


 k = 3·3 +1



 j k
 i = P 3−1 + 1, onde P = n − 3 · 3(k − 1)





 j = P − 3(i − 1)

Necessitamos encontrar a posição n de cada um dos termos na sequência


dada por an = 2n − 1. Então
13 ⇒ 13 = 2n − 1 ⇒ n = 7;

27 ⇒ 27 = 2n − 1 ⇒ n = 14;

51 ⇒ 51 = 2n − 1 ⇒ n = 26
Sendo assim, temos
 j k
7−1


 k = 9 +1 


 
 k=1
 j k 
n=7 ⇒ P −1 ⇒ i=3
 i = 3 + 1, onde P = 7 − 9(k − 1) 

 



 j=1
 j = P − 3(i − 1)

 j k
14−1


 k = 9 +1 


 
 k=2
 j k 
n = 14 ⇒ P −1 ⇒ i=2
 i = 3 + 1, onde P = 14 − 9(k − 1) 

 



 j=2
 j = P − 3(i − 1)

 j k
26−1


 k = 9 +1 


 
 k=3
 j k 
n = 26 ⇒ P −1 ⇒ i=3
 i = 3 + 1, onde P = 26 − 9(k − 1) 

 



 j=2
 j = P − 3(i − 1)

166
Então, os ı́mpares 13, 27 e 51 ocuparão na PA-3D as seguintes posições
(i, j, k) = (3, 1, 1); (i, j, k) = (2, 2, 2); (i, j, k) = (3, 2, 3)

37 39 41

43 45 47

49 51 53

19 21 23

25 27 29

31 33 35

1 3 5

7 9 11

13 15 17

Aproveitamos o espaço sobrando na figura acima para fornecer um pro-
grama que implementa as equações da linearização; na tela inferior resolve-
mos o exemplo em questão.
Exemplo: Como mais um exemplo de aplicação das equações de lineariza-
ção, podemos resolver a questão da FUVEST-SP, p. 154. Naquela questão
temos: M = N = 3 e n = 500.
 j k
n−1


 k = MN +1



 j k
P −1
 i = N + 1, onde P = n − M N (k − 1)





 j = P − N (i − 1)

Então
 j k
500−1


 k = 3·3 + 1 = 56



 j k
5−1
 i = 3 + 1 = 2, onde P = 500 − 3 · 3(56 − 1) = 5





 j = 5 − 3(2 − 1) = 2

167
Soma em uma sequência linearizada
Agora exibiremos uma fórmula para a soma Sn dos n termos iniciais de
uma sequência linearizada (oriunda de uma PA-3D), conhecidos a1 , r1 , r2 ,
r3 , M e N .

← plano k
r3

r1
a1
r2 M

Temos

 [ 2a111 + (N −1) r1 + (M −1) r2 + (k−2) r3 ] M ×N ×(k−1)




 SM ×N×(k−1) = 2




[ 2a11k + (N −1) r1 + (i−2) r2 ] (i−1)×N
S(i−1)×N k = 2






 j(j−1) r1
Sijk = jai1k + 2

Sendo
S(n) = SM ×N×(k−1) + S(i−1)×Nk + Sijk

Fórmula esta facilmente programável.


Nota: Na referência [6] mostramos mais aplicações deste tema.

168
2.5 Progressão aritmética de ordem m
Este foi mais um dos temas que desenvolvemos. Aqui comparecem várias
fórmulas inéditas.
Existem pelo ao menos duas formas de se definir o que são progressões
aritméticas de ordem m, aqui nesta seção vamos optar por uma delas.
Inicialmente consideremos a sequência dos cubos dos números naturais:

13 23 33 43 53 63 ...

Ou ainda

1 8 27 64 125 216 ...

Façamos sucessivas diferenças entre os termos consecutivos desta sequên-


cia para obter a seguinte sequência:

7 19 37 61 91 ...

Procedamos da mesma forma em relação a sequência acima, para obter:

12 18 24 30 ...

E ainda mais uma última diferença:

6 6 6 ...

Obtivemos uma sequência constante. Vamos resumir isto em um só 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 - ésima diferença da sequência an .

169
Agora estamos em condições de estabelecer a seguinte:

Definição 3 (Progressão aritmética de ordem m). Uma sequência (an ) é


uma progressão aritmética de ordem m se e somente se

∆m an = constante 6= 0

Usaremos da seguinte notação:

P.A.m
para uma progressão aritmética de ordem m (m = 0, 1, 2, . . .).
Uma P.A.0 é qualquer sequência constante, com a exigência de que esta
constante seja diferente de 0.
Observe as duas primeiras diferenças dos quadrado dos números naturais

1 4 9 16 25 ... P.A.2
3 5 7 9 ... P.A.1
2 2 2 ... P.A.0

Ou ainda
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

Observe que a rigor − isto é, matematicamente falando − os diagramas


acima não provam que a sequência an = n2 dos quadrados dos naturais, ou
a sequência an = n3 dos cubos dos naturais são progressões aritméticas de
ordem 2 ou 3, respectivamente. Oportunamente veremos como através da
HP Prime podemos provar isto!

170
2.5.1 Fórmula do termo geral de uma P.A.m
A fórmula do termo geral de uma progressão aritmética vale

an = a1 + (n − 1) r

Vamos exibir uma fórmula que generaliza a fórmula acima para uma P.A.
de ordem m qualquer. Antes faremos uma convenção: necessitaremos de dois
ı́ndices para localizar um termo qualquer nestas sequências, um que se refira
ao próprio termo e, outro, que se refira à ordem da sequência. Sendo assim,
convencionamos:

anm = n - ésimo termo da P.A. de ordem m.


Por exemplo, observe a disposição 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

Nota: Em toda esta seção consideraremos

n ∈ N = { 1, 2, 3, . . . } e m ∈ N ∪ { 0 },

a menos que o contrário seja explicitado.

Teorema 5 (Fórmula do termo geral de uma P.A.m ). Em uma P.A.m o


n − ésimo termo vale

m  
X n−1
anm = a1(m−j)
j
j=0

171
Observe na fórmula do termo geral
m  
X n−1
anm = a1(m−j)
j
j =0

que para calcular o n-ésimo termo de uma P.A.m necessitaremos conhecer,


a priori, o primeiro termo de todas as sequências anteriores, é o que nos diz
o coeficiente
a1(m−j) (j = 0, 1, . . . , m)
No caso particular de uma P.A.3 , por exemplo, isto implica em que para
conhecermos qualquer termo do retângulo 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


na equação de an3 , veja:

(n − 1)(n − 2) (n − 1)(n − 2)(n − 3)


an3 = a13 + (n − 1) a12 + a11 + a10
2 6

Algoritmo
Vamos sugerir um algoritmo para se obter os termos

a1(m−j) , para j = 0, 1, . . . , m.

Dada a P.A.m (m ≥ 1) fazemos diferenças sucessivas entre termos con-


secutivos das P.A.s de ordem m, m − 1, . . . , 1 e tomamos o primeiro termo
de cada uma destas diferenças.
Oportunamente faremos um programa para implementar tal algoritmo.
Nota: Oportunamente faremos com que a HP Prime nos forneça a fórmula
do termo geral de uma P.A. de ordem qualquer − mas antes faremos na
mão, para exemplificar os detalhes.

172
Exemplo:
(a) Encontre a fórmula do termo geral da seguinte P.A.2 :

1 3 6 10 15 21 ...

Solução: Substituindo m = 2 na fórmula do termo geral, obtemos:


2  
X n−1
an2 = a1(2−j)
j
j=0

     
n−1 n−1 n−1
= a1(2−0) + a1(2−1) + a1(2−2)
0 1 2

Simplificando, obtemos:

(n − 1)(n − 2)
an2 = a12 + (n − 1)a11 + a10 (2.1)
2
Esta é a fórmula do termo geral de uma P.A.2 . Para encontrar os
coeficientes a11 e a10 aplicamos o algoritmo, assim:

1 3 6 10 15 ...
− −
2 3 4 5 ...

1 1 1 ...

Ou ainda

a12 → 1 3 6 10 15 ...
a11 → 2 3 4 5 ...
a10 → 1 1 1 ...

Substituindo estes resultados na equação (2.1) e simplificando, obtemos:

n(n + 1)
an2 =
2

173
(UFRGS 04) Considere a disposição de números abaixo.

1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
·····································

O primeiro elemento da quadragésima linha é


a) 777 b) 778 c) 779
d) 780 e) 781

Solução: Vamos obter a fórmula do termo geral da sequência

1 2 4 7 11 16 ...

Aplicando o algoritmo, resulta

a12 → 1 2 4 7 11 16 ...
a11 → 1 2 3 4 5 ...
a10 → 1 1 1 1 ...

A sequência em questão é uma P.A.2 ; logo, substituindo estes dados na


equação
(n − 1)(n − 2)
an2 = a12 + (n − 1)a11 + a10
2
temos
(n − 1)(n − 2)
an2 = 1 + (n − 1) 1 + 1
2
Simplificando
n2 − n + 2
an2 =
2
Então
402 − 40 + 2
a40,2 = = 781
2

174
Um dos teoremas mais importantes é dado a seguir.

Teorema 6 (Teorema da Unificação). A fórmula do termo geral de uma


P.A.m é um polinômio de grau m e, reciprocamente.

Observe que o “reciprocamente” do teorema significa que toda sequên-


cia que tem como fórmula do termo geral um polinômio de grau m é uma
P.A.m − daı́ o nome de teorema da unificação.
Perceba que isto não é pouco; por exemplo, a sequência (an ) dada por
an = nm (m natural arbitrariamente fixado) é uma P.A.m e, por conta
disto, oportunamente obteremos uma fórmula geral e não recursiva para a
soma de potências dos n primeiros números naturais. Esta será uma fórmula
inédita.

P.A.m em função dos seus próprios termos


Observe a fórmula do termo geral de uma P.A.m ,

m  
X n−1
anm = a1(m−j)
j | {z }
j=0

o termo assinalado nos diz que para se obter um termo qualquer da P.A.m
deveremos conhecer o primeiro termo das progressões de ordens inferiores −
como já haviamos mencionado antes (p. 172). Em nosso entendimento isto
é um incômodo, por exemplo, se quisermos escrever um programa compu-
tacional para encontrar este n-ésimo termo − com resultado numérico ou
simbólico.
A fórmula seguinte resolve nosso problema:

Teorema 7 (Gentil). Em uma P.A.m é válida a seguinte identidade:

j  
X j
a1(m−j) = (−1)k a(1−k+j)m
k
k=0

a1(m−j) , para j = 0, 1, . . . , m.

175
Exemplo: Escrever a P.A.2 em função dos seus próprios termos.
Solução: Substituindo m = 2 na equação
j  
X j
a1(m−j) = (−1)k a(1−k+j)m
k
k=0

temos
j  
X jk
a1(2−j) = (−1) a(1−k+j)2 , j = 1, 2.
k
k=0

Então
1  
X 1
j=1 ⇒ a11 = (−1)k a(1−k+1)2 = 1 · a22 − 1 · a12
k
k=0

e
2  
X 2
k
j=2 ⇒ a10 = (−1) a(1−k+2)2 = 1 · a32 − 2 · a22 + a12
k
k=0

Portanto
(n − 1)(n − 2)
an2 = a12 + (n − 1) a11 + a10
2
(n − 1)(n − 2)
= a12 + (n − 1)(a22 − a12 ) + (a32 − 2 · a22 + a12 )
2

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
···································· · ·

• Tri^
angulo Aritmético de Pascal
176
P.A.m em função dos seus próprios termos na HP Prime

Na tela a seguir (REPLACE, p. 84)

temos o programa que implementa a fórmula


j  
X
k j
a1(m−j) = (−1) a(1−k+j)m
k
k=0

Neste programa entramos com os m + 1 primeiros termos de uma P.A.m


e na saida teremos

a1(m−j) , para j = 0, 1, . . . , m.

que são os termos apontados na fórmula do termo geral a seguir

m  
X n−1
anm = a1(m−j)
j | {z }
j=0

Na tela da direita (acima) exemplificamos para a sequência dos cubos

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

177
A fórmula do termo geral na HP Prime
Com o programa anterior temos condições de construir um programa para
implementar a fórmula do termo geral de uma P.A.m
m  
X n−1
anm = a1(m−j)
j
j =0

isto é, desejamos construir um programa no qual entramos com os termos

a1(m−j) , para j = 0, 1, . . . , m.

e na saida teremos a fórmula algébrica da P.A.m correspondente.


Antes, vejamos alguns detalhes; por exemplo, considere a fórmula do
termo geral de uma P.A.2

(n − 1)(n − 2)
an2 = a12 + (n − 1)a11 + a10
2
Considere a seguinte P.A.2

a12 → 1 4 9 16 25 ...
a11 → 3 5 7 9 ...
a10 → 2 2 2 ...

Substituindo na fórmula acima, temos

(n − 1)(n − 2)
an2 = 1 + (n − 1) 3 + 2
2
↑ ↑ ↑
j=0 j=1 j=2

Quando j = 0 deveremos usar o terceiro termo do vetor [2, 3, 1], quando


j = 1 deveremos usar o segundo termo e quando j = 2 deveremos usar o
primeiro termo. Tendo esta observação em conta o programa fica assim

178
Na tela a seguir assinalamos a fórmula de saida

e montamos uma lista com os 10 primeiros termos da sequência do exemplo.


Vejamos mais um exemplo de aplicação do programa, vamos obter a
fórmula do termo geral da P.A.2 seguinte

a12 → 1 3 6 10 15 ...
a11 → 2 3 4 5 ...
a10 → 1 1 1 ...

Entrando com os dados no programa obtemos a tela seguinte

Confira com a solução dada na página 173.


A propósito, com este programa podemos obter uma fórmula polinomial
para quantos números primos desejarmos, por exemplo para os cinco pri-
meiros

a14 → 2 3 5 7 11
a13 → 1 2 2 4
a12 → 1 0 2
a11 → −1 2
a10 → 3

179
Propriedade fundamental de uma P.A.m
Em uma progressão aritmética a diferença entre dois termos consecutivos
quaisquer é constante e igual à própria razão, isto é

an+1 − an = r

Este fato é uma decorrência imediata da própria definição. Pois bem, per-
guntamos se existiria uma relação equivalente para uma P.A.m (?).
A resposta encontra-se no seguinte

Teorema 8 (Propriedade Fundamental das P.A.m ). m + 1 termos conse-


cutivos de uma P.A.m estão relacionados pela seguinte identidade:

m  
X m
(−1)k a(n−k+m)m = a10
k
k=0

Nota: A relação acima se aplica a toda sequência (an ) que tem como fórmula
do termo geral um polinômio de grau m.
Exercı́cio: Mostre que
a10 = m! am
onde am é o coeficiente de nm no polinômio p(n) de grau m.
Exemplo:
(a) Três termos consecutivos de uma P.A.2 satisfazem
2  
X
k2
(−1) a(n−k+2)2 = a10
k
k=0

Isto é
     
2
0 1 2 2 2
(−1) a(n−0+2)2 + (−1) a(n−1+2)2 + (−1) a(n−2+2)2 = a10
0 1 2
Simplificando
1 a(n+2)2 − 2 a(n+1)2 + 1 an2 = a10
Ou ainda, abandonando o segundo ı́ndice

1 an+2 − 2 an+1 + 1 an = a10

180
Exemplo: Seja a sequência (an ) dada por an = n3 . Mostre que a seguinte
identidade se verifica:
3  
X
k 3
(−1) a(n−k+3) = 3!
k
k=0

Solução: Temos
3      
X 3k 0 3 1 3
(−1) a(n−k+3) = (−1) a(n−0+3) + (−1) a(n−1+3)
k 0 1
k=0

   
2 3 3 3
+ (−1) a(n−2+3) + (−1) a(n−3+3)
2 3

Simplificando a expressão à direita obtemos


3  
X 3k
(−1) a(n−k+3) = 1 (n + 3)3 − 3 (n + 2)3 + 3 (n + 1)3 − 1 n3 = 6
k
k=0

Apenas a tı́tulo de curiosidade, veja que interessante, na calculadora HP


Prime

3  
X 3k
(−1) (n − k + 3)3
k
|k = 0 {z }

Digitando esta expressão

primando esta tecla

obtemos este resultado

purge(n)

181
2.5.2 Soma dos termos de uma P.A.m
Para uma progressão aritmética temos a seguinte fórmula para a soma
dos seus n primeiros termos
n(n − 1) r
S n = n a1 +
2
Esta fórmula é generalizada no seguinte

Teorema 9 (Soma dos termos de uma P.A.m ). Em uma P.A.m a soma


Snm dos n termos iniciais vale

m  
X n
Snm = a
j + 1 1(m−j)
j=0

Exemplo: Considere a sequência dada por an = n2 , dos quadrados dos


naturais. Encontre uma fórmula para a soma dos seus n primeiros termos.
Solução: Pelo teorema da unificação (p. 175), a sequência dada é uma P.A.2
Então
2        
X n n n n
Sn2 = a1(2−j) = a12 + a11 + a10
j+1 1 2 3
j=0

Do diagrama seguinte (Algoritmo, p. 172)

a12 → 1 4 9
a11 → 3 5
a10 → 2

Obtemos      
n n n
Sn2 = 1+ 3+ 2
1 2 3
Simplificando, obtemos
n(2n + 1)(n + 1)
12 + 22 + 32 + · · · + n2 =
6
Resultado este já conhecido por outros métodos.

182
A fórmula da soma na HP Prime
Comparando a fórmula da soma
m  
X n
Snm = a
j + 1 1(m−j)
j=0
com a fórmula do termo geral
m  
X n−1
anm = a1(m−j)
j
j=0

modificamos o programa a seguir

como na tela do centro. Na tela da direita simulamos o exemplo anterior.


Exemplo: Os números triangulares
n(n + 1)
1 3 6 10 15 ... ...
2
estão em P.A.2 . Encontre uma fórmula para a soma de seus termos.
Solução: Temos
2        
X n n n n
Sn2 = a1(2−j) = a12 + a11 + a10
j+1 1 2 3
j =0

Do diagrama seguinte

a12 → 1 3 6
a11 → 2 3
a10 → 1

Obtemos      
n n n
Sn2 = 1+ 2+ 1
1 2 3
Simplificando, obtemos
n(n + 1)(n + 2)
Sn =
6

183
Uma fórmula inédita
“Gostei da sua fórmula”
Carlos Gustavo T. de A. Moreira (Gugu/IMPA)

Durante muitos anos − possivelmente séculos − os matemáticos esti-


veram à procura de uma fórmula para a soma de potências dos números
naturais, ninguém teve êxito, coube a mim materializar esta aspiração.

Teorema 10 (Gentil/1997). Sendo m um número natural arbitrariamente


fixado, é válida a seguinte identidade:

m  
m m m m
X n
1 +2 +3 + ··· + n = a(m−j)
j+1
j=0

Onde:
j  
X
k j
a(m−j) = (−1) (1 − k + j)m
k
k=0

Prova: Ver referência [6]. 


Vejamos um exemplo de aplicação desta fórmula (m = 3):
3  
X n
13 + 23 + 33 + · · · + n3 = a
j + 1 (3−j)
j=0
       
n n n n
= a3 + a2 + a1 + a
1 2 3 4 0

Onde:
j  
X
kj 3
a(3−j) = (−1) (1 − k + j) ; ( j = 0, 1, 2, 3. )
k
k=0

Substituindo e simplificando chegamos a

n2 (n + 1)2
13 + 23 + 33 + · · · + n3 =
4
Nota: Com o uso da HP Prime a manipulação − numérica ou algébrica −
desta fórmula fica extremamente simplificada.

184
− A fórmula inédita na HP Prime

Nas telas a seguir

m  
X n
1m + 2m + 3m + ··· + nm = a(m−j)
j+1
j=0
j  
X j
a(m−j) = (−1)k (1 − k + j)m
k
k=0

temos os programas que implementam a fórmula da direita. O segundo


programa, CFI, é subrotina do primeiro e calcula a(m−j) , repassando para
FINED, que sai com a soma

1m + 2m + 3m + · · · + nm

na forma algébrica, isto é, como função de n. Nas telas a seguir temos dois
exemplos de simulação do programa (purge(n))

7−→

Jacques Bernoulli − e nenhum seu contemporâneo − jamais sonhou com


esta possibilidade (desenvolvimento).
A bem da verdade, não precisamos ir muito longe, mesmo após deduzir
esta fórmula − por volta do ano de 1991 − jamais sonhei que isto um dia
seria possı́vel.

185
2.5.3 Diferenças de ordem m
A noção de operador
Operador é um sı́mbolo que, anteposto a funções, indica abreviadamente
as transformações que devem sofrer essas funções. Usando a terminologia de
sistema um operador pode ser entendido como uma caixa. No lado esquerdo,
a seta representa a função que entra na caixa, e no lado direito, a seta
representa a função correspondente que sai da caixa, após ter sido operada
ou transformada, segundo uma lei matemática. Representando um operador
genérico por T , temos a seguinte figura

f Tf
T

Desde já enfatizamos a importância de se ter bem claro que f e T f são


as funções de entrada e saı́da, respectivamente; enquanto que f (x) e T f (x)
são valores numéricos destas funções.
O caso em que estaremos interessados no presente contexto é aquele em
que o domı́nio e o contradomı́nio de um operador é o conjunto

R∞ = (a1 , a2 , a3 , . . . , an , . . .) : ai ∈ R

de sequências de números reais. Isto é, definiremos operadores que transfor-


mam sequências de números reais em sequências de números reais.

Definição 4. Dada uma sequência f : N → R definimos a Diferença de


ordem m de f pela seguinte fórmula de recorrência:

 ∆0 f (n) = f (n),

∆m f (n) = ∆m−1 f (n + 1) − ∆m−1 f (n), m ≥ 1, n ≥ 1.

Observe que ∆m é um operador de R∞ em R∞ . Por exemplo, para


m = 1, temos

f ∆f

Onde
∆1 f (n) = ∆1−1 f (n + 1) − ∆1−1 f (n)

186
Ou ainda
∆ f (n) = ∆0 f (n + 1) − ∆0 f (n)
Isto é
∆ f (n) = f (n + 1) − f (n) (2.2)
Para m = 2, temos

f ∆2 f
∆2

Temos

∆2 f (n) = ∆ f (n + 1) − ∆ f (n)

Utilizando a equação (2.2), resulta

∆2 f (n) = ∆ f (n + 1) − ∆ f (n)

= [ f (n + 2) − f (n + 1) ] − [ f (n + 1) − f (n) ]

= f (n + 2) − 2 f (n + 1) + f (n)

Exemplo: Mostre que a diferença de ordem 1 (ou Primeira Diferença) de


uma P.A.1 resulta em uma P.A.0 . Isto é, mostre a seguinte identidade

∆ an1 = an0

Solução: Temos, an1 = a11 + (n − 1)a10 . Então:

∆ an1 = a(n+1)1 − an1



= [ a11 + (n + 1) − 1 a10 ] − [ a11 + (n − 1)a10 ]

= a10 = an0

187
Exemplo: Mostre que a diferença de ordem 1 de uma P.A.2 resulta em
uma P.A.1 e que a diferença de ordem 2 resulta em uma P.A.0 . Isto é,
mostre as seguintes identidades

(i) ∆ an2 = an1 (ii) ∆2 an2 = an0

Solução: (i) Temos

(n − 1)(n − 2)
an2 = a12 + (n − 1)a11 + a10
2
Então:

∆ an2 = a(n+1)2 − an2



h  (n + 1) − 1 (n + 1) − 2) i
= a12 + (n + 1) − 1 a11 + a10
2
h (n − 1)(n − 2) i
− a12 + (n − 1)a11 + a10
2
= a11 + (n − 1)a10 = an1

(ii) Temos

∆2 an2 = a(n+2)2 − 2 a(n+1)2 + an2

= a10 = an0

Os cálculos ficam por conta do leitor.


A fórmula seguinte

j  
X j
an(m−j) = ∆j anm = (−1)k a(n−k+j)m
k
k=0

nos fornece a P.A. de ordem m − j (j = 1, 2, . . . , m) a partir da P.A.m .


Recorrer à definição 4 (p. 186) para o cálculo da m-ésima diferença é
enfadonho. A fórmula seguinte nos fornece a m-ésima diferença sem recur-
sividade.

188

Teorema 11 (m-ésima Diferença). Dada uma sequência f (n) para todo
número m, natural arbitrariamente fixado, a seguinte identidade se verifica:

m  
X m
∆m f (n) = (−1)k f (n − k + m)
k
k=0

Exemplos:
(a) Para m = 1, a primeira diferença resulta:
1  
1
X
k1
∆ f (n) = (−1) f (n − k + 1)
k
k=0

   
1 0 1 1
= (−1) f (n − 0 + 1) + (−1) f (n − 1 + 1)
0 1

= f (n + 1) − f (n)

(b) Para m = 2, a segunda diferença resulta:


2  
X 2
∆2 f (n) = (−1)k f (n − k + 2)
k
k=0

2 2 2
= (−1)0 0 f (n − 0 + 2) + (−1)1 1 f (n − 1 + 2) + (−1)2 2 f (n − 2 + 2)

= 1 · f (n + 2) − 2 · f (n + 1) + 1 · f (n)

Na tela a seguir programamos a fórmula para ∆m f (n)

←−

purge(f, n)

189
Considermos a definição de uma P.A.m dada na página 170

Definição (Progressão aritmética de ordem m)


Uma sequência (an ) é uma progressão aritmética de ordem m se e somente
se
∆m an = constante 6= 0

Reconsideremos o diagrama dos cubos dos naturais que consta na p. 170

1 8 27 64 125 216 ... ∆0


7 19 37 61 91 ... ∆1
12 18 24 30 ... ∆2
6 6 6 ... ∆3

naquela ocasião afirmamos que, a rigor, este diagrama não prova − pela
definição − que a sequência dada por an = n3 é uma P.A.3 . Vejamos
como efetivar esta prova utilizando a HP Prime , faremos isto através dum
programa ultra curto. O programa que consta na tela a seguir recebe a
expressão de uma função f (n) e a ordem m da diferença desejada

a prova encontra-se na tela do centro . . . Pasmém!. Na tela da direita fazemos


mais algumas simulações do programa.
Observe que a prova “feita na mão” foi aquela do exemplo que consta na
página 181, cujo resumo é dado a seguir

3  
X 3k
(−1) a(n−k+3) = 1 (n + 3)3 − 3 (n + 2)3 + 3 (n + 1)3 − 1 n3 = 6
k
k=0

190
2.6 Progressão geométrica de ordem m
Antes de definir as progressões geométricas de ordem m vamos, a tı́tulo
de esclarecimento, dar dois exemplos de tais sequências , deixando a prova
para momento oportuno.
Qualquer progressão geométrica serve como exemplo de uma progressão
geométrica de ordem um;
Um exemplo de uma progressão geométrica de ordem dois é dado pela
sequência a seguir:

1 1 −1 −1 1 1 −1 −1 ...

Um outro exemplo é dado pela sequência seguinte:

1 22 43 84 165 ... 2n(n−1) ...

O que estas sequências têm em comum é o fato de os quocientes suces-


sivos entre seus termos consecutivos resultar em uma sequência 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

Estamos convencionando:

∆m an = m − ésimo quociente da sequência an

191
Agora estamos em condições de estabelecer a seguinte:

Definição 5 (Progressão Geométrica de ordem m). Uma sequência (an ) é


uma progressão geométrica de ordem m, se, e somente se

∆m an = constante 6= 1

Usaremos da seguinte notação:

P.G.m
para uma progressão geométrica de ordem m (m = 0, 1, 2, . . .).
Uma P.G.0 é qualquer sequência constante, com a exigência de que esta
constante seja diferente de 1.

2.6.1 Fórmula do termo geral de uma P.G.m


A fórmula do termo geral de uma progressão geométrica vale

an = a1 · q n−1

Vamos exibir uma fórmula que generaliza a fórmula acima para uma P.G.
de ordem m qualquer. Antes necessitaremos de uma convenção: necessitare-
mos de dois ı́ndices para localizar um termo qualquer nestas sequências, um
que se refira ao próprio termo e, outro, que se refira à ordem da sequência.
Sendo assim, convencionamos:

anm = n - ésimo termo da P.A. de ordem m.


Por exemplo, observe a disposição dos ı́ndices no diagrama a seguir

a13 a23 a33 a43 a53 a63 ... P.G.3


a12 a22 a32 a42 a52 ... P.G.2
a11 a21 a31 a41 ... P.G.1
a10 a20 a30 ... P.G.0

192
Teorema 12 (Fórmula do termo geral de uma P.G.m ). Em uma P.G.m o
n − ésimo termo vale:

m
Y ( n−1
j )
anm = a1(m−j)
j=0

Observe que para calcular o n-ésimo termo de uma P.G.m necessitaremos


conhecer, a priori, o primeiro termo de todas as sequências anteriores, é o
que nos diz o coeficiente

a1(m−j) (j = 0, 1, . . . , m)

Algoritmo
Vamos sugerir um algoritmo para se obter os termos

a1(m−j) , para j = 0, 1, . . . , m.

Dada a P.G.m (m ≥ 1) fazemos sucessivos quocientes entre termos


consecutivos das P.G.s de ordem m, m − 1, . . . , 1 e tomamos o primeiro
termo de cada um destes quocientes.
Exemplo: Encontre a fórmula do termo geral da seguinte∗ P.G.2 :

1 1 −1 −1 1 1 −1 −1 ...

Solução: Substituindo m = 2 na fórmula do termo geral, obtemos:


2
Y ( n−1
j )
an2 = a1(2−j)
j=0

Simplificando, obtemos:

( n−1
0 ) ( n−1
1 ) ( n−1
2 )
an2 = a12 × a11 × a10

Para encontrar os coeficientes a11 e a10 aplicamos o algoritmo, assim:

1 1 −1 −1 1 ...
÷ ÷
1 −1 1 −1 ...
÷
−1 −1 −1 ...

No momento oportuno provaremos que de fato trata-se de uma P.G.2 .

193
Ou ainda

a12 → 1 1 −1 −1 1 ... P.G.2


a11 → 1 −1 1 −1 ... P.G.1
a10 → −1 −1 −1 ... P.G.0

Substituindo estes resultados na equação

( n−1
0 ) ( n−1
1 ) ( n−1
2 )
an2 = a12 × a11 × a10

e simplificando, obtemos:

( n−1
2 )
an2 = (−1)

P.G.m em função dos seus próprios termos


Na determinação do n-ésimo termo de uma P.G.m existe um certo incô-
modo em ter que recorrer ao primeiro termo das progressões de ordens ante-
riores; além do que, se quisermos escrever um programa computacional para
encontrar este n-ésimo termo isto será uma complicação adicional.
A fórmula seguinte nos permite obter uma P.G.m em função apenas de
seus próprios termos.

Teorema 13. Em uma P.G.m é válida a seguinte identidade:

j
Y (−1)k ( kj )
a1(m−j) = a(1−k+j)m
k=0

a1(m−j) , para j = 0, 1, . . . , m.

194
P.G.m em função dos seus próprios termos na HP Prime

Na tela a seguir (REPLACE, p. 84)

temos o programa que implementa a fórmula


j j
Y (−1)k ( )
k
a1(m−j) = a(1−k+j)m
k=0

Neste programa entramos com os m + 1 primeiros termos de uma P.G.m


e na saida teremos

a1(m−j) , para j = 0, 1, . . . , m.

que são os termos apontados na fórmula do termo geral a seguir

m ( n−1
Y j )
anm = a1(m−j)
j=0 | {z }

Na tela da direita (acima) exemplificamos para a sequência

a12 → 1 1 −1 −1 1 ... P.G.2


a11 → 1 −1 1 −1 ... P.G.1
a10 → −1 −1 −1 ... P.G.0

195
Vejamos mais uma simulação do programa, para a sequência a seguir

1 22 43 84 165 326 ... ∆0

22 24 26 28 210 ... ∆1

22 22 22 22 ... ∆2

obtemos

A fórmula do termo geral na HP Prime


Com o programa anterior temos condições de construir um programa para
implementar a fórmula do termo geral de uma P.G.m

m
Y ( n−1
j )
anm = a1(m−j)
j=0

Observe que os nosso programas são extremamente compactos, estética-


mente agradáveis, procuramos − sempre que possı́vel − ocupar uma única
tela!

196
O programa fica assim

Na tela da direita simulamos a sequência

a12 → 1 1 −1 −1 1 ... P.G.2


a11 → 1 −1 1 −1 ... P.G.1
a10 → −1 −1 −1 ... P.G.0
Na tela a seguir assinalamos a fórmula de saida

e montamos uma lista com os 10 primeiros termos da sequência do exemplo.


Vamos tentar simplificar o expoente na fórmula do termo geral, considere
a tela a seguir

após assinalar a fórmula escreva right na linha de entrada (p. 61), peça
uma cópia da fórmula, o expoente nos é devolvido já na forma simplificada,

197
continuamos nas três telas a seguir, onde montamos uma função, a2(n), a
partir do expoente simplificado

na tela da direita listamos os 10 primeiros termos da P.G.2 .


Vejamos mais um exemplo de aplicação do programa, vamos obter a
fórmula do termo geral da P.G.2 seguinte

1 22 43 84 165 326 ... P.G.2

22 24 26 28 210 ... P.G.1

22 22 22 22 ... P.G.0

Entrando com os dados no programa obtemos a tela seguinte

na tela do centro simplificamos o expoente, na tela da direita montamos


uma fórmula do termo geral

n2 −n
a(n) = 4 2

e listamos os 6 primeiros termos da P.G.2 .

198
Propriedade fundamental de uma P.G.m
Em uma progressão geométrica o quociente entre dois termos consecuti-
vos quaisquer é constante e igual à própria razão, isto é

an+1 / an = q

Este fato é uma decorrência imediata da própria definição. Pois bem, per-
guntamos se existiria uma relação equivalente para uma P.G.m (?).
A resposta encontra-se no seguinte

Teorema 14 (Propriedade Fundamental das P.G.m ). m + 1 termos con-


secutivos de uma P.G.m , (anm ), estão relacionados pela seguinte identidade:

m
Y (−1)k ( mk )
a(n−k+m)m = a10
k=0

Exemplo: Três termos consecutivos de uma P.G.2 satisfazem a seguinte


relação

2
Y (−1)k ( k2 )
a(n−k+2)2 = a10
k=0
Isto é

(−1)0 ( 2
0) (−1)1 ( 2
1) (−1)2 ( 2
2)
a(n−0+2)2 · a(n−1+2)2 · a(n−2+2)2 = a10

Simplificando
1 −2 1
a(n+2)2 · a(n+1)2 · an2 = a10

Ou ainda, abandonando o segundo ı́ndice


−2
an+2 · an+1 · an = a10 = q

199
2.6.2 Produto dos termos de uma P.G.m
Para uma progressão geométrica temos a seguinte fórmula para o produto
dos seus n primeiros termos
n(n−1)
Pn = an1 · q 2

Este resultado é generalizado no seguinte:


Teorema 15 (Produto dos termos de uma P.G.m ). Em uma P.G.m o pro-
duto Pnm dos n termos iniciais vale

m n
Y ( j+1 )
Pnm = a1(m−j)
j=0

Exemplo: Encontre o produto dos n termos iniciais da seguinte P.G.2 :

1 1 −1 −1 1 1 −1 −1 ...

Solução: Substituindo m = 2 na fórmula acima, obtemos:


2 n
Y ( j+1 )
Pn2 = a1(2−j)
j =0

Simplificando, obtemos:
( n1 ) ( n2 ) ( n3 )
Pn2 = a12 · a11 · a10

Do algoritmo retiramos os coeficientes, assim:

a12 → 1 1 −1 −1 1 ... P.G.2


a11 → 1 −1 1 −1 ... P.G.1
a10 → −1 −1 −1 ... P.G.0

Substituindo estes resultados na equação precedente e simplificando:


( n3 )
Pn2 = (−1)

Deixamos como exercı́cio a programação da fórmula do produto.

200
2.6.3 Quocientes de ordem m
Aqui estaremos definindo um novo operador, podemos dizer que é o dual
do operador ∆m definido na página 186, dentre outras utilidades este opera-
dor nos permitirá demonstrar se uma dada sequência é (ou não) uma P.G.m

Definição 6 (Quociente de ordem m). Dada uma sequência f : N → R


(f (n) 6= 0, ∀ n ∈ N) definimos o Quociente de ordem m de f pela se-
guinte fórmula de recorrência:

 ∆0 f (n) = f (n),

∆m f (n) = ∆m−1 f (n + 1) / ∆m−1 f (n), m ≥ 1, n ≥ 1.

Observe que ∆m é um operador de R∞ ∞


∗ em R∗ . Por exemplo, para
m = 1, temos

f ∆f

Onde
∆1 f (n) = ∆1−1 f (n + 1) / ∆1−1 f (n)
Ou ainda
∆ f (n) = ∆0 f (n + 1) / ∆0 f (n)
Isto é
∆ f (n) = f (n + 1) / f (n)
Para m = 2, temos

f ∆2 f
∆2

Onde

∆2 f (n) = ∆ f (n + 1) / ∆ f (n)
.
= [ f (n + 2) / f (n + 1) ] [ f (n + 1) / f (n) ]
−2
= f (n + 2) × f (n + 1) × f (n)

201
Exemplos:
(a) Mostre que o Quociente de ordem 1 (ou Primeiro Quociente) de uma
P.G.1 resulta em uma P.G.0 . Isto é, mostre a seguinte identidade

∆ an1 = an0
n−1
Solução: Temos, an1 = a11 × a10 . Então:

∆ an1 = a(n+1)1 / an1


(n+1)−1
. n−1
= [ a11 × a10 ] [ a11 × a10 ]

= a10 = an0

(b) Mostre que o Primeiro Quociente de uma P.G.2 resulta em uma P.G.1 e
que o Segundo Quociente resulta em uma P.G.0 . Isto é, mostre as seguintes
identidades

(i) ∆ an2 = an1 (ii) ∆2 an2 = an0

Solução: (i) Temos


(n−1)(n−2)
n−1 2
an2 = a12 × a11 × a10

Então:

∆ an2 = a(n+1)2 / an2

Isto é
((n+1)−1)((n+1)−2) . (n−1)(n−2)
(n+1)−1 2 n−1 2
∆ an2 = a12 × a11 × a10 a12 × a11 × a10

Fazendo as devidas simplificações, obtemos:


n−1
∆ an2 = a11 × a10

(ii) Temos,

−2
∆2 an2 = a(n+2)2 × a(n+1)2 × an2

= a10 = an0

Os cálculos ficam por conta do leitor.


Recorrer à definição 6 (p. 201) para o cálculo do m-ésimo Quociente é
um tanto quanto enfadonho. A fórmula seguinte nos fornece o m-ésimo
Quociente sem recursividade.

202
Teorema 16 (m-ésimo Quociente). Para todo número m, natural arbitraria-
mente fixado, a seguinte identidade se verifica:

m
Y (−1)k ( mk )
∆m f (n) = f(n−k+m)
k=0

Exemplo: O Terceiro Quociente vale:


3 3
Y (−1)k ( k )
∆3 f (n) = f(n−k+3)
k=0

Desenvolvendo, temos
(−1)0 ( 3
0) (−1)1 ( 3
1) (−1)2 ( 3
2) (−1)3 ( 3
3)
∆3 f (n) = f(n−0+3) × f(n−1+3) × f(n−2+3) × f(n−3+3)

Ou ainda

∆3 f (n) = [ f (n + 3) ]1 · [ f (n + 2) ]−3 · [ f (n + 1) ]3 · [ f (n) ]−1

De outro modo

f (n + 3) [ f (n + 1) ]3
∆3 f (n) =
[ f (n + 2) ]3 f (n)

Apenas a tı́tulo de curiosidade, observe que os coeficientes 1, 3, 3, 1


encontram-se na terceira linha do tri^
angulo aritmético de Pascal, veja:

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
···································· · ·

203
Quocientes de ordem m na HP Prime
Na tela a seguir

m
Y (−1)k ( mk )
∆m f (n) = f(n−k+m)
k=0

temos um programa que expande a fórmula da direita. Por exemplo, na tela

purge(f, n)

rodamos o programa para m = 3.

Considermos a definição de uma P.G.m dada na página 192

(Progressão Geométrica de ordem m:) Uma sequência (an ) é uma


progressão geométrica de ordem m, se, e somente se
∆m an = constante 6= 1

Reconsideremos o diagrama a seguir dado, na página 198

1 22 43 84 165 326 ... P.G.2

22 24 26 28 210 ... P.G.1

22 22 22 22 ... P.G.0

A rigor, este diagrama não prova que a sequência a seguir é uma P.G.2
n2 −n
a(n) = 4 2

204
O programa a seguir, dentre outras utilidades, nos permite provar se
uma dada sequência é (ou não) uma P.G.m

Este programa calcula ∆m f (n). Na tela do centro calculamos o primeiro


quociente da sequência
n2 −n
a(n) = 4 2

na tela da direita encontramos o segundo quociente, o que prova − pela


definição − que a(n) é uma P.G.2 .
Vejamos mais um exemplo de aplicação do programa anterior com o in-
tuito de evidenciar uma situação bizarra apresentada pela calculadora. Re-
considere o diagrama que comparece na página 194

a12 → 1 1 −1 −1 1 ... P.G.2


a11 → 1 −1 1 −1 ... P.G.1
a10 → −1 −1 −1 ... P.G.0

onde
( n−1
2 )
an2 = (−1)
nas telas a seguir temos o primeiro e o segundo quocientes desta sequência

O que sucedeu? O que acontece é que a resposta envolve números comple-


xos, provavelmente devido a que i2 = −1. Não obstante, não devemos nos
intimidar com isto, ainda aqui devemos confiar na calculadora.

205
Ainda assim podemos trabalhar com estas bizarras criaturas sem precisar
pegar no lápis para anotá-las, por exemplo, na tela a seguir

geramos uma lista a partir da expressão assinalada, de igual modo na tela


da direita geramos uma outra lista a partir da expressão assinalada, o que
concorda como o diagrama

a12 → 1 1 −1 −1 1 ... P.G.2


a11 → 1 −1 1 −1 ... P.G.1
a10 → −1 −1 −1 ... P.G.0

pelo ao menos até aonde a vista alcança!


A fórmula seguinte
j
Y (−1)k ( kj )
an(m−j) = ∆j anm = a(n−k+j)m
k=0

nos fornece a P.G. de ordem m − j (j = 1, 2, . . . , m) a partir da P.G.m .


Exemplo: Obter an1 a partir da sequência
( n−1
2 )
an2 = (−1)
Solução: (m = 2, j = 1). Temos:
1 1
Y (−1)k ( k )
an(2−1) = a(n−k+1)2
k=0

Então
(−1)0 ( 1
0) (−1)1 ( 1
1)
an1 = a(n−0+1)2 × a(n−1+1)2
Isto é
1 −1
an1 = a(n+1)2 × an2
Portanto
1 ( (n+1)−1
2 ) −1 ( n−1
2 ) n−1
an1 = (−1) × (−1) = (−1)

206
Resumo comparativo de fórmulas das P.A.m e P.G.m

m   m
X n−1 Y ( n−1
j )
anm = a1(m−j) anm = a1(m−j) pp. 171, 193.
j
j=0 j =0

j   j j
X j Y (−1)k ( )
a1(m−j) = (−1)k
k
a(1−k+j)m a1(m−j) =
k
a(1−k+j)m pp. 175, 194.
k=0 k=0

m   m
X m Y (−1)k ( m
k )
(−1)k a(n−k+m)m = a10 a(n−k+m)m = a10 pp. 180, 199.
k
k=0 k=0

m   m n
X n Y ( j+1 )
Snm = a Pnm = a1(m−j) pp. 182, 200.
j + 1 1(m−j)
j=0 j=0

m   m m
X m Y (−1)k ( k )
∆m f (n) = (−1)k f (n − k + m) ∆m f (n) = f(n−k+m) pp. 189, 203.
k
k=0 k=0

j   j j
X j Y (−1)k ( k )
an(m−j) = ∆j anm = (−1)k
k
a(n−k+j)m an(m−j) = ∆j anm = a(n−k+j)m pp. 188, 206.
k=0 k=0

m  
X n
1m + 2m + 3m + · · · + nm = a(m−j)
j+1
j =0
p. 184.
j  
X j
a(m−j) = (−1)k (1 − k + j)m , j = 0, 1, . . . , m.
k
k=0

207
2.6.4 Uma aplicação das P.G.m : Cálculo de combinações
Introdução:
A conhecida fórmula da análise combinatória
 
n n!
=
r (n − r)! r!

nos fornece o número de combinações dos n elementos de um conjunto,


tomados r a r. Mas esta fórmula não nos fornece as tais combinações. O
nosso objetivo nesta seção é estabelecer uma fórmula que tem precisamente
esta finalidade.
Certa feita, desenvolvendo um trabalho de matemática deparei-me com
a necessidade de calcular algumas combinações, teria que desenvolver um
programa computacional com esta finalidade.
Por onde começar? Do meu curso de eletrônica digital sabia que tabelas
como, por exemplo, esta a seguir

A B C D
1 1 1 1
0 1 1 1
1 0 1 1
0 0 1 1 → Ā B̄ C D
1 1 0 1
0 1 0 1 → Ā B C̄ D
1 0 0 1
0 0 0 1
1 1 1 0
0 1 1 0
1 0 1 0
0 0 1 0
1 1 0 0
0 1 0 0
1 0 0 0
0 0 0 0

se prestam para encontrarmos todas as combinações possı́veis de variáveis


(digitais). Fiz algumas tentativas para encontrar uma fórmula que gerasse
estas tabelas, todas fracassaram.
Foi quando me veio a ideia de substituir 0 por −1, assim:

208
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

Até então eu já contava com o desenvolvimento das progressões geométri-


cas de ordem m. Pois bem, observe que os termos da coluna um (j = 1)
estão em P.G.1 , onde an1 = (−1)n−1 . Os termos da coluna dois (j = 2),
( n−1
2 )
estão em P.G.2 , onde an2 = (−1) . Vamos mostrar que os termos da
coluna três (j = 3) estão em P.G.4 , assim:

1 1 1 1 −1 −1 −1 ... ∆0

1 1 1 −1 1 1 ... ∆1

1 1 −1 −1 1 ... ∆2

1 −1 1 −1 ... ∆3

−1 −1 −1 ... ∆4

Deste diagrama, tiramos (primeira coluna de cima para baixo):

a14 = 1, a13 = 1, a12 = 1, a11 = 1, a10 = −1.

Substituindo em
4
Y ( n−1
j )
an4 = a1(4−j)
j=0

209
Ou ainda, em
( n−1
0 ) ( n−1
1 ) ( n−1
2 ) ( n−1
3 ) ( n−1
4 )
an4 = a14 × a13 × a12 × a11 × a10
Obtemos para a sequência da coluna j = 3,
( n−1
4 )
an4 = (−1)
Visando a uma generalização, escrevemos:
− Coluna j = 1, temos:
n−1
n−1 ( n−1
1 ) ( 1−1 )
an1 = (−1) = (−1) = (−1) 2
− Coluna j = 2, temos:
n−1
( n−1
2 ) ( 2−1 )
an2 = (−1) = (−1) 2
− Coluna j = 3, temos:
n−1
( n−1
4 ) ( 3−1 )
an3 = (−1) = (−1) 2
Agora fica fácil generalizar: o n-ésimo termo na sequência é o i-ésimo
termo na matriz. Sendo assim, temos:

i−1
( j−1 )
aij = (−1) 2

Onde, para j = 1, 2, . . . , n e i = 1, 2, . . . , 2n , teremos a matriz (ta-


bela) da página 209.
Claro que tudo isto não passa de uma dedução empı́rica − indução vulgar
−, contudo na referência [6] damos uma prova de nossas afirmações.
Deixamos como exercı́cio, a quem interessar possa, provar que os termos
j−1
da coluna j da matriz aij acima estão em P.G.2
A propósito, terminamos por encontrar uma fórmula que gera a matriz
digital da página 208, esta:

 i−1 
 1,
 se 2j−1
é par;
aij =

 0, i−1 
se 2
j−1 é ı́mpar.

210
Nota: A bem da verdade, para obter a matriz que comparece em eletrônica
digital precisamos “inverter” a matriz da esquerda a seguir

A B C D A B C D
1 1 1 1 0 0 0 0
0 1 1 1 0 0 0 1
1 0 1 1 0 0 1 0
0 0 1 1 0 0 1 1
1 1 0 1 0 1 0 0
0 1 0 1 0 1 0 1
1 0 0 1 0 1 1 0
0 0 0 1 0 1 1 1
1 1 1 0 1 0 0 0
0 1 1 0 1 0 0 1
1 0 1 0 1 0 1 0
0 0 1 0 1 0 1 1
1 1 0 0 1 1 0 0
0 1 0 0 1 1 0 1
1 0 0 0 1 1 1 0
0 0 0 0 1 1 1 1

obtendo a matriz da direita. A fórmula para gerar a matriz digital é:

 i−1 
 1,
 se 2
N−j é par;
aij =

 0, i−1 
se 2
N−j é ı́mpar.

onde N é o número de variáveis lógicas. Para N = 4 teremos a matriz da


direita, acima.
A propósito, a quem interessar possa, deixamos um outro desafio: provar
que a sequência a seguir

 n−1

j−1
2
an = ( −1 )

j−1
é uma P.G. de ordem 2 , para todo j arbitrariamente fixado.

211
2.7 Um pequeno interregno cultural
Abaixo Euclides!
Só se ouve falar das revoluções causadas na fı́sica pela teoria da relativi-
dade de Einstein e pela fı́sica quântica

no entanto, os leigos desconhecem que na matemática também houve uma


revolução de igual magnitude e importância, falamos do advento das geo-
metrias não euclidianas no século XIX

A propósito foi de uma destas novas geometrias (não euclidianas) que


Einstein se utilizou para levantar o edifı́cio teórico de sua relatividade geral.
Além da importância em si destas geometrias elas deram uma grande
contribuição à filosofia da matemática (e não matemática), à compreensão
da natureza da matemática.
De fato, a crença de milênios de que a matemática oferece verdades
eternas foi esmagada. Essa inesperada rebelião intelectual foi causada
pela emergência de novos tipos de geometrias, atualmente conhecidas
como geometrias n~ ao euclidianas. [. . . ]
O ilustre filósofo alemão Immanuel Kant (1724-1804) nem sempre
concordou com Hume, mas também exaltava a geometria euclidiana a
um status de certeza absoluta e validade inquestionável.
(Mario Livio/Deus é Matemático?)

212
Distâncias não euclidianas

Quando o espı́rito se apresenta à cul-


tura cientı́fica, nunca é jovem. Aliás
é bem velho, porque tem a idade de
seus preconceitos. Aceder à ciência é
rejuvenescer espiritualmente, é aceitar
uma brusca mutação que contradiz
o passado.
(Gaston Bachelard/grifo nosso)

No bojo das geometrias não euclidianas sugiram as assim denominadas


distâncias não euclidianas. Aqui estaremos exibindo uma delas e mostrando
que quase nada está imune à programação na HP Prime .

Medindo distâncias
Dados dois pontos em um plano, como a seguir

A

B

a matemática admite não apenas uma mas várias maneiras de se medir a


distância entre estes dois pontos.
Apenas para contextualizar tentaremos convencer o leitor de que surgem
de maneira natural diferentes modos de se medir a distância entre estes
pontos. De outro modo: em matemática (e também na fı́sica) não existe
uma única maneira de se medir distâncias. Em outras palavras, a régua
vendida em nossas livrarias, ou as trenas vendidas em nosso comércio, não
são os únicos instrumentos de medida.
Vejamos um exemplo trivial do nosso dia a dia: o táxi. Suponhamos
que alguém queira se deslocar (em um táxi) do ponto A ao ponto B −
separados por uma esquina − e que o ponto B esteja a uma distância de
quatro unidades para a direita e três unidades abaixo do ponto A, assim:

A A 4
• •

5 3

•B •B

213
Pois bem, existem duas distâncias entre os pontos A e B: a que é seguida
pelo taxista, 4 + 3 = 7; e a que seria mais econômica para o passageiro (“em
linha reta”): 5.
Se o leitor refletir um pouco se dará conta de que vez ou outra, mesmo
numa simples caminhada, teremos que optar (por uma questão de conve-
niência) por uma ou outra destas duas distâncias − como por exemplo, ao
“cortar caminho”.
Resumindo, entre os pontos A e B no plano a seguir

A A

B B

− Distância usual (euclidiana) − Distância do táxi

mostramos dois modos de medir a distância entre os mesmos. Na verdade,


podemos ter muitas alternativas para medir a distância entre dois pontos
em um conjunto qualquer.

A distância quântica
Considere o intervalo unitário [ 0, 1 [ e a seguinte aplicação

d : [ 0, 1 [ × [ 0, 1 [ −→ R

definida por


d(x, y) = min |x − y|, 1 − |x − y|

min signfica mı́nimo, min{ a, b } significa o menor dos números a e b; na tela


a seguir mostramos como acessar esta função na HP Prime

Na tela do centro mostramos como definir a função distância quântica,


dando Enter teremos a tela da direita.

214
Como funciona a distância quântica? Funciona de modo bem simples,
não é necessário nenhum manual de instrução, veja: dados dois pontos x e y,
ambos no intervalo [ 0, 1 [, entre chaves obteremos dois valores, escolhemos
o menor deles como sendo a distância entre os pontos x e y. Por exemplo
 
d(0; 0, 4) = min |0 − 0, 4|, 1 − |0 − 0, 4| = min 0, 4; 0, 6 = 0, 4
 
d(0; 0, 6) = min |0 − 0, 6|, 1 − |0 − 0, 6| = min 0, 6; 0, 4 = 0, 4
 
d(0; 0, 8) = min |0 − 0, 8|, 1 − |0 − 0, 8| = min 0, 8; 0, 2 = 0, 2

(Nota: distância ou métrica, dá no mesmo). Na HP Prime fica assim

Observe a localização geométrica destes pontos:

t t t
0, 4 q1 0, 6 0, 8 1
0 2

Por oportuno, observe que

d (0; 0, 4) = d (0; 0, 6) > d (0; 0, 8).

É isto mesmo que o leitor testemunha!: os dois primeiros pontos (0, 4 e 0, 6)


estão a uma mesma distância da origem, e, como se não bastasse, o terceiro
ponto (0, 8) está mais próximo da origem que os dois primeiros . . . pasmém!
Poderı́amos, com inteira razão, chamá-la de “métrica maluca” ou até,
quem sabe, “métrica hipermaluca”. No entanto, vejamos o que o eminente
filósofo tem a nos dizer a este respeito:

Tudo isso, que à pri-


meira vista parece excesso de ir-
razão, na verdade é o efeito da
finura e da extensão do espı́rito
humano e o método para encon-
trar verdades até então desco-
nhecidas. (Voltaire)

215
A régua quântica
A partir da fórmula que define a distância quântica

d(x, y) = min |x − y|, 1 − |x − y|
derivamos a equação

 x, se 0 ≤ x ≤ 21 ;
d (x, 0) =
 1
1 − x, se 2 ≤ x < 1.

que nos dá a distância de um ponto x ∈ [ 0, 1 [ à origem

d (x, 0)

a partir da qual construı́mos a régua quântica, assim:

0 0,1 0,2 0,3 0,4 0,5 0,4 0,3 0,2 0,1 0

Esta régua serve para medir a distância entre um ponto qualquer do in-
tervalo numérico [ 0, 1 [ para a origem. Veja dois exemplos

0 p p p✉ p p p p✉ p p 1
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9
↓ 1 ↓
2
0 p 1
ր
Origem
0 0,1 0,2 0,3 0,4 0,5 0,4 0,3 0,2 0,1 0

216
Na figura a seguir colocamos as duas réguas − usual (ou euclidiana) e
quântica − lado a lado para efeitos de comparação, veja:

0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1


Usual
antica

0 0,1 0,2 0,3 0,4 0,5 0,4 0,3 0,2 0,1 0


Qu^

Observe que a régua quântica coincide com a régua usual só até a metade,
a partir daı́ as duas diferem radicalmente.
Na página 215 mostramos as seguintes relações:
d (0; 0, 4) = d (0; 0, 6) > d (0; 0, 8).
Vejamos isto diretamente na régua quântica:

0 p p p p p p p p p 1
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9
1
A 2 B C
0 t p t t 1
ր
Origem
0 0,1 0,2 0,3 0,4 0,5 0,4 0,3 0,2 0,1 0

Temos
dA = 0, 4 , dB = 0, 4 e dC = 0, 2.
De outro modo
dA = 0, 4 = dB e dC = 0, 2 < dA
Em palavras: Contrariando a régua euclidiana, a régua quântica nos diz
que os pontos A e B, na figura acima, estão a uma mesma distância da
origem, e, “o que é pior”, ela nos diz que o ponto C está mais próximo da
origem que o ponto A . . . pasmém!
Nota: Um estudo mais detalhado e rigoroso deste tema − a quem interessar
possa − encontra-se em nosso livro [7], onde mostramos algumas aplicações
da régua quântica à fı́sica quântica.

217
2.8 A Curva de Peano e o Cubo Hipermágico
A curva de Peano
O século XIX se iniciou com a descoberta de que curvas e funções não
precisavam ser do tipo bem comportado − o que até então se acreditava.
Peano∗ em 1890 mostrou até que ponto a matemática podia insultar o senso
comum quando publica a sua famosa e bizarra curva cobrindo totalmente a
superfı́cie de um quadrado.
A curva de Peano hoje possui aplicações em compressão de imagens digi-
tais. Para o que segue consideramos I = [ 0, 1 ] o intervalo numérico unitário.
M = I × I, quadrado unitário, d a distância euclidiana.

Definição 7 (Curva de Peano). Chama-se curva de Peano num  espaço


métrico (M, d) a uma aplicação contı́nua χ : I → M tal que χ I = M .

Uma sobrejeção contı́nua. Existem na literatura várias formas de se cons-


truir uma curva de Peano, a que apresentaremos aqui é inédita − foi o que
denominamos “Curva de Peano simplificada”. Pois bem, iremos construir a
seguinte curva de Peano:

1 1

z s 2 s
p

3
1
χ
p

2
1
p

0 p p
0 1 2 1
3 3

A bem da verdade, aqui neste livro iremos deixar de lado os aspectos


topológicos† da curva, o leitor interessado na construção completa deverá
consultar a referência [7]. Ademais, são duas − ou melhor três − as razões
para que eu decidisse incluir este tópico neste livro sobre programação da HP
Prime. Primeira, para exemplificar como funciona a curva de Peano utili-
zamos muita programação na HP Prime; segunda, aproveito para divulgar
um trabalho meu, já que deliberadamente não escrevo artigos de divulgação
(escrevo livros); terceira, todo este conteúdo já encontrava-se pronto em um
outro livro meu, só fiz as devidas adaptações.

Giuseppe Peano (1858 − 1932), natural de Cuneo, Itália, foi professor da Academia
Militar de Turin, com grandes contribuições à Matemática. Seu nome é lembrado hoje
em conexão com os axiomas de Peano dos quais dependem tantas construções rigorosas
da álgebra e da análise.

São os aspectos que envolvem a noção de distância e continuidade.

218
Nosso objetivo agora será construir a aplicação χ

1 1

z s 2 s

p
3
1 χ
p

2
1

p
3

0 p p
0 1 2 1
3 3

Perguntamos: como transferir um ponto do intervalo para o quadrado?

Pré-requisitos
Desenvolvimento binário
Iremos necessitar do desenvolvimento na base binária de um número real
do intervalo [ 0, 1 ]. Se 0 ≤ x ≤ 1, a expressão x = 0, x1 x2 . . . xn . . . de x na
base 2 significa que
x1 x x
x= + 22 + · · · + nn + · · ·
2 2 2
por exemplo
3 0 1 1 0 0 0
= 1 + 2 + 3 + 4 + 5 + 6 + ···
8 2 2 2 2 2 2
Desde já evidenciaremos um importante detalhe: do ponto de vista de
convergência de séries, também temos

3 0 1 0 1 1 1
= 1 + 2 + 3 + 4 + 5 + 6 + ···
8 2 2 2 2 2 2

Deveremos fazer uma escolha: que sequência binária será a repre-


sentação binária∗ da fração 38 ? Esolheremos a primeira sequência, a qual
chamaremos de Verdadeira codificação; em função desta escolha a segunda
sequência, isto é, 0 1 0 1 1 1 . . ., será chamada de Falsa codificação, ou pseudo
codificação da fração 83 .


Representação binária ou codificação binária, gosto mais deste último termo.

219
Algoritmo
Como obter a representação binária de x ∈ [ 0, 1 ]? Iremos fornecer um
algoritmo. Inicialmente vejamos um exemplo: Obter o desenvolvimento
binário de x = 1/3 com uma precisão ε = 0, 01.
Solução: Inicialmente calculamos n0 e depois m, assim
 1 
n0 = log2ε , m = ⌊2n0 · x⌋
Nota: ⌊ x ⌋ é o maior inteiro que não supera x. Função piso.
Então  
1
 0,01
1 6
n0 = log =6 ⇒ m= 2 ·2 = 21.
3
Agora desenvolvemos o inteiro m = 21 na base binária:
21 = 1 · 24 + 0 · 23 + 1 · 22 + 0 · 21 + 1 · 20
Dividindo a equação anterior por q = 2n0 = 26 , temos
21 1 0 1 0 1
6 = 2 + 3 + 4 + 5 +
2 2 2 2 2 26
0 1 0 1 0 1
= 1 + 2 + 3 + 4 + 5 + 6
2 2 2 2 2 2
Conclusão: (010101)2 é o desenvolvimento binário de x = 1/3 com erro
menor que um centésimo.
Observe que 21 1

6 − = 0, 005208 . . . < ε.
2 3
Para que possamos “automatizar” todo o processo anterior fornecemos a
seguinte fórmula:

  
m
 1,
 se n −n
2 0
é ı́mpar;
xn =   (n = 1, 2, . . . , n0 )

 0, m
se n0 − n é par.
2

Exemplo:
Considere o exemplo anterior em que n0 = 6 e m = 21. Então:
 m   21 
n=1 ⇒ n0 − n = 6−1 = 0 ⇒ x1 = 0
2 2
 m
  21

n=2 ⇒ = =1 ⇒ x2 = 1
26−2
n −n
2 0
..................................................
 m   21 
n=6 ⇒ n0 − n = 6−6 = 21 ⇒ x6 = 1
2 2

220
Alternativamente, podemos escrever a fórmula anterior sob a seguinte
notação:

j m k 
xn = mod n0 − n ,2 (n = 1, 2, . . . , n0 )
2

Leia-se: j k
m
xn = resto da divisão de n0 − n por 2.
2

O programa a seguir

nos devolve a representação binária de um x ∈ [ 0, 1 [ com uma precisão ε.


Na tela do centro temos os desenvolvimentos binários de
1
x= , ε = 0.01 e ε = 0.001
3
e na tela da direita temos os desenvolvimentos binários de
1
x= √ , ε = 0.01 e ε = 0.001
2

221
Demultiplexação e Multiplexação
Estas são duas operações com sequêcias binárias, muito utilizadas em
informática, vejamos do que se trata.

Demultiplexação
Dada uma sequência de digitos

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 . . .

a operação de demultiplexação consiste em separá-la nas subsequências


de ı́ndices ı́mpares e pares, assim:

x1 x3 x5 x7 x9 . . .
x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 . . .
x2 x4 x6 x8 x10 . . .

Apenas a tı́tulo de informação, na


eletrônica digital existe um circuito ele-
trônico (Chip) que realiza a demultiple-
xação de uma sequência binária.

Na tela a seguir

mostramos um programa que realiza a demultiplexação de uma sequência;


na tela do centro temos um exemplo; na tela da direita obtivemos o desen-
volvimento binário da fração 53 e após sua demultiplexação.
Nota: A sequência a ser demultiplexada deve ser fornecida em uma lista, a
saı́da é uma matriz de duas linhas.

222
Multiplexação
Dadas duas sequências (xn ) e (yn )

x = x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 . . .

y = y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 . . .

a operação de multiplexação consiste em entrelaçá-las, assim:

x1 x2 x3 x4 x5 x6 x7 x8 . . .
x1 y 1 x2 y 2 x3 y 3 x4 y 4 . . .
y1 y2 y3 y4 y5 y6 y7 y8 . . .

Apenas a tı́tulo de informação, na


eletrônica digital existe um circuito ele-
trônico (Chip) que realiza as duas ope-
rações: multiplexação e demultiplexação
de sequências binárias.

Na tela ao lado mostramos um pro-


grama que realiza a multiplexação de
duas sequências.

A seguir vemos uma simulação do programa:

101010 ...
10011100...
011000 ...

Nota: As sequências a serem multiplexadas devem devem constar em duas


linhas de uma matriz, a sequência resultante é fornecida em uma lista.

223
Pois bem, vamos retomar a construção da curva de peano χ

1 1

z s 2 s

p
3
1 p χ
2
1

p
3

0 p p
0 1 2 1
3 3

A curva de Peano se resume no quadro a seguir (ver p. 225)

1 B { 0, 1 }N
η ξ 1
Ψ
s s(x, y)
z s η2 s

0 0 1
η1 { 0, 1 }N

• Curva de Peano simplificada

A composição destas várias transformações é a transformação procurada.


Resumindo, temos

1 1

z s 2 s
p

3
1 χ
p

2
1
p

0 p p
0 1 2 1
3 3

onde
χ : I −→ I × I
z 7−→ (x, y)
é tal que
   
χ = ξ ◦ η ◦ Ψ ⇒ χ(z) = ξ ◦ η ◦ Ψ (z) = ξ ◦ η Ψ(z) = ξ η(Ψ(z))

224
Ψ η

Os programas acima implementam as respectivas funções.

1 B { 0, 1 }N
η ξ 1
Ψ
s s(x, y)
z s η2 s

0 0 1
η1 { 0, 1 }N

• Curva de Peano simplificada

Vejamos qual o papel de cada uma destas transformações:


• Ψ recebe um ponto do intervalo [ 0, 1 ] e nos devolve sua representação
binária:

B
1
r(xn )
Ψ : [ 0, 1 ] −→ B Ψ
xr
x 7−→ (xn )
0

O seguinte produto cartesiano:

{ 0, 1 }N = { 0, 1 } × { 0, 1 } × { 0, 1 } × · · ·

é o conjunto das sequências infinitas de 0 s e 1 s. B (conjunto das codifica-


ções) é o subconjunto de {0, 1}N cujos elementos não têm todos os termos
iguais a 1, a partir de alguma posição∗ . Por exemplo:

0101010101... ∈ B e 1 0 1 0 1 0 0 1 1 1 1 1 . . . 6∈ B

Com a única exceção feita para a sequência 1 1 1 1 . . . a qual incluimos neste conjunto.

225
• A aplicação (η) é definida assim:

B {0, 1}N
η
N N

η: B {0, 1} × {0, 1} q (η
1 ,η2 )

(xn ) η1 (xn ), η2 (xn ) (xn ) q

N
{0, 1}

Onde ηi : B −→ {0, 1}N (i = 1, 2) são dadas por



η1 (xn ) = η1 (x1 x2 x3 . . .) = x1 x3 x5 . . .


η2 (xn ) = η2 (x1 x2 x3 . . .) = x2 x4 x6 . . .

Isto é, η1 toma de xn sua subsequência de ı́ndices ı́mpares e η2 toma de
xn sua subsequência
 de ı́ndices pares, ou seja, a aplicação η demultiplexa
a sequência xn .
• A aplicação ξ é definida assim:
N N
ξ : {0, 1} × {0, 1} I×I

(xn ), (yn ) (x, y)

onde

X ∞
x n
X y  n
(x, y) = n , n
n=1
2 n=1
2

N
{0, 1} ξ
1 (1,1)
r (x, y)

(yn ) r

(xn ) {0, 1}N 0 1

Ou seja, a aplicação ξ toma um par de sequências binárias e converte para


sua representação decimal.
Informamos ao leitor que esta contrução da curva de Peano é uma das
mais simples; ademais, estamos deixando de fora os aspectos topológicos.
A seguir damos alguns exemplos com o objetivo de clarear o que vimos
anteriormente.

226
Exemplo:
1) Calcule a imagem, por χ, de z = 0.8.

1 B { 0, 1 }N
η ξ 1
Ψ
s s(x, y)
zs η2 s

0 0 1
η1 { 0, 1 }N

Solução: Desenvolvendo 0.8 na base 2, temos

0.8 = 1 1 0 0 1 1 0 0 1 1 0 0 1 1 . . .

então Ψ(0.8) = 1 1 0 0 1 1 0 0 1 1 0 0 1 1 . . .. Aplicamos η à sequência anterior:

↓Ψ
η1 1 0 1 0 1 0 1 01 . . .
11001100110011...
η2
101010101...

η
 
Temos η1 , η2 ∈ {0, 1}N × {0, 1}N . Agora aplicamos ξ ao ponto η1 , η2 :
ξ (η1 , η2 ) = (x, y), onde

1 0 1 0 2
x=y= 1 + 2 + 3 + 4 + ··· =
2 2 2 2 3
2 2

Portanto χ(0.8) = 3, 3 . A geometria do exemplo fica

1 1

0.8 s
2 s ξ
p

3
1
χ
p

2
1
p

0 p p
0 1 2 1
3 3

227
1 1

Exemplo: Quais pontos do intervalo chegam no ponto 4, 2 ?
Solução: Iniciamos com a curva de Peano,

1 B { 0, 1 }N
η ξ 1
Ψ
s s(x, y)
zs η2 s

0 0 1
η1 { 0, 1 }N

da figura a seguir

1
4
{ 0, 1 }N (a, b)
s 1
2
s
( 41 , 12 )

{ 0, 1 }N

concluimos que a e b são sequências que devem convergir para 1/4 e 1/2,
respectivamente. Tendo em conta que
1 1
2 = 10000... 4 = 01000...

1 1
2 = 01111... 4 = 00111...

Interregno: Estas igualdades devem ser entendidas no sentido de conver-


gência e não de codificação (representações). Se bem que as duas primeiras
são também codificações − por pertencerem a B.
Nota: Consulte em nosso livro [7] o item
“O Mito das Ambiguidades nas Representações Decimais”.

228
Pois bem, temos as seguintes possibilidades para o par (a, b):
1 1
4 2
↓ ↓
(0 1 0 0 0 . . . , 1 0 0 0 0 . . .)
(0 1 0 0 0 . . . , 0 1 1 1 1 . . .)
(0 0 1 1 1 . . . , 1 0 0 0 0 . . .)
(0 0 1 1 1 . . . , 0 1 1 1 1 . . .) (Multiplexa duas sequ^
encias)

Multiplexando cada um destes pares de sequências, obtemos:

010000 ...
01100000...
100000 ...

010000 ...
00110101...
011111 ...

001111 ...
01001010...
100000 ...

001111 ...
00011111...
011111 ...
6∈ B

A última sequência não pertence ao conjunto das codificações − pode


ser ignorada. Convertendo as outras três para decimal, obtemos:
3 10 7
01100000... = , 00110101... = , 01001010... =
8 48 24
Portanto estes são os três pontos do intervalo que serão guardados na
posição 14 , 12 do quadrado. Isto é,
3  10   7  1 1
χ =χ =χ = ,
8 48 24 4 2
Ou ainda, uniformizando os denominadores
 18   10   14  1 1
χ =χ =χ = ,
48 48 48 4 2

229
Imaginando o intervalo como sendo uma das arestas do quadrado, temos

χ( 10
48
)=χ( 14
48
)=χ( 18
48
)=( 14 , 21 )
s( 1 , 1 )
4 2
χ
sss

Observe que um outro modo de interpretar χ é que ela transfere os


pontos da aresta do quadrado, para o próprio quadrado, de modo que toda
a superfı́cie do quadrado é coberta e, como se não bastasse, podemos ter até
três pontos da aresta transferidos para uma mesma posição do quadrado.

∗ ∗ ∗

χ( 10
48
)=χ( 14
48
)=χ( 18
48
)=( 14 , 21 )
s( 1 , 1 )
4 2
χ
sss
10
= 5
= 0.208 . . . 10 ր ↑ տ 18
48 24 48 48
14
48
14 7
48 = 24 = 0.292 . . .

18 3
48 = 8 = 0.375

230

Encontrar os pontos do intervalo que são levados no ponto 21 , 34 .
Solução: Da experiência adquirida no exemplo anterior, podemos escrever:


 VV : (1 0 0 0 0 . . . , 1 1 0 0 0 . . .) −→ 1 1 0 1 0 0 0 0 0 . . .



    VF : (1 0 0 0 0 . . . , 1 0 1 1 1 . . .) −→ 1 1 0 0 0 1 0 1 0 . . .
1 3
,
2 4 →


 FV : (0 1 1 1 1 . . . , 1 1 0 0 0 . . .) −→ 0 1 1 1 1 0 1 0 1 . . .




FF : (0 1 1 1 1 . . . , 1 0 1 1 1 . . .) −→ 0 1 1 0 1 1 1 1 1 . . . 6∈ B
Onde: V significa a verdadeira codificação (da fração) em binário e F a
falsa (apenas no sentido de convergência).
As sequências após cada seta foram obtidas pela multiplexação das sequên-
cias em cada par ordenado.
Sendo assim temos:
{ 0, 1 }N
1 B

ր 1 1 0 1 0 0 0 0 0... ( 21 , 34 )
39
48 (1 0 0 0 0..., 1 1 0 0 0...)

0
Ψ η { 0, 1 }N ξ

39
 1 3

concluimos que λ 48 = 2, 4 . Da alternativa seguinte
{ 0, 1 }N
1 B
1 1 0 0 0 1 0 1 0... ( 21 , 34 )
37 ր
48 (1 0 0 0 0..., 1 0 1 1 1...)

0
Ψ η { 0, 1 }N ξ

37
 1 3

concluimos que λ 48 = 2, 4 . Da alternativa seguinte

{ 0, 1 }N
1 B
0 1 1 1 1 0 1 0 1... ( 21 , 34 )
23 (0 1 1 1 1..., 1 1 0 0 0...)
48

0
Ψ η { 0, 1 }N ξ

23
 1 3

concluimos que λ 48 = 2, 4 .

231
A multiplexação na última alternativa ( FF ) não resulta em B, portanto
não é considerada. Resumindo, temos

(1 3
2, 4)
s
λ( 23
48
)=λ( 37
48
)=λ( 39
48
)=( 21 , 43 )
χ

s ss

Seja (x, y) um ponto do quadrado. Com um pouco de reflexão o leitor


chegará às seguintes conclusões:
1a ) Se ambas as coordenadas, x e y, forem frações diádicas∗ então, neste
ponto são colocados três pontos da aresta do quadrado. De outro modo: a
curva passa três vezes por pontos com ambas as coordenadas frações diádi-
cas;
2a ) Se ambas as coordenadas, x e y, não forem frações diádicas então, neste
ponto é colocado apenas um ponto da aresta do quadrado. De outro modo:
a curva passa uma única vez em pontos com ambas as coordenadas não diá-
dicas;
3a ) Se apenas uma das coordenadas, x ou y, é uma fração diádica então,
neste ponto é colocado dois pontos da aresta do quadrado. De outro modo:
a curva passa duas vezes em pontos com apenas uma coordenada fração
diádica;
Uma quarta propriedade, menos evidente, é a que segue
4a ) O conjunto dos pontos duplos e triplos é infinito enumerável e denso no
quadrado.
Infinito enumerável significa que podemos “contá-los ”, assim como con-
tamos os Naturais:

N : 1, 2, 3, 4, 5, . . .

Denso significa que: fixado qualquer ponto no quadrado; arbitrariamente


próximo − ou tão próximo quanto se queira − deste ponto fixado existirá
um ponto duplo ou triplo.


Uma fração diádica é aquela cujo numerador é um número inteiro e cujo denominador
é uma potência de 2.

232
O quadrado hipermágico
O exorcismo do fantasma das ambiguidades ([7]) nos permitiu definir e
construir uma espécie de “volta” da curva de Peano.

Definição 8 (Quadrado hipermágico).


 Chama-se quadrado hipermágico
num espaço métrico M, d uma aplicação ϕ : M → I contı́nua e injetiva.

A curva de Peano é uma aplicação χ : I → M contı́nua, sobrejetora e


não injetora; o quadrado hipermágico é uma aplicação ϕ : M → I contı́nua,
injetora e não sobrejetora.
O que há de paradoxal no quadrado hipermágico é que conseguimos guar-
dar (armazenar) injetivamente todos os pontos do quadrado no intervalo
unitário e ainda sobra espaço. Imaginando o intervalo como sendo uma das
arestas do quadrado, ϕ guarda o quadrado em uma de suas arestas, sem
sobrepor um ponto a outro e, “o que é pior”, ainda sobra espaço na aresta!.
− como estaremos mostrando oportunamente.
Pois bem, o quadrado hipermágico resume-se na composição das aplica-
ções mostradas na figura a seguir:

B
B
ν
1
(1,1) r 1
µ r σ rz
y s

0 0
x 1 B

• Quadrado hipermágico

µ ν σ

233
• µ é a seguinte aplicação

µ : I × I −→ B × B

(x, y) 7−→ (xn ), (yn )

B
B ν
1
(1,1) r 1
µ r σ rz
y s

0 0
x 1 B

• A aplicação ν executa uma multiplexagem das sequências (xn ) e (yn ).


• Definimos a aplicação σ como σ = Ψ−1 . (p. 225)

Resumindo o quadrado hipermágico temos

1 (1,1) 1

r ϕ rz

0 1 0

onde

ϕ : I × I −→ I
(x, y) 7−→ z
é tal que

ϕ = σ ◦ ν ◦ µ ⇒ ϕ(x, y) = σ ◦ ν ◦ µ (x, y)

= (σ ◦ ν) µ(x, y)

= σ ν µ(x, y)

Vejamos agora, através de exemplos, como essa transformação atua.

234
Exemplos:
1) Como um primeiro exemplo, vamos transferir o centro do quadrado
 para
1 1
o intervalo. O centro do quadrado é dado pelo par ordenado 2 , 2 .

B
B ν
1
(1,1) r 1
µ r σ rz
y s

0 0
x 1 B

Solução:
A transformação µ obtém a representação binária de um ponto do qua-
drado (codifica-o), ou seja
1 1
µ , = (1 0 0 0 0 0 . . . , 1 0 0 0 0 0 . . .)
2 2
A transformação ν faz uma multiplexação destas duas sequências, veja:

100000 ...
ν 11000000...
100000 ...

A transformação σ converte esta última sequência em um número do


intervalo (decodifica), assim:
1 1 0 0 0 3
σ(1 1 0 0 0 0 0 0 . . .) = 1 + 2 + 3 + 4 + 5 + · · · =
2 2 2 2 2 4
1 1
 3
Finalmente, ϕ 2 , 2 = 4 . Vamos resumir o que aconteceu:

B
B s 11000...
1 1
µ 1000... s ν s3
σ 4
y s1
( 1
2, 2 )

0 1 0
x 1000... B

235
1 1

2) Como mais um exemplo, vamos transferir o ponto 3, 3 para o intervalo.

B
B ν
1
(1,1) r 1
µ r σ rz
y s

0 0
x 1 B

Solução: Aplicando a transformação µ a este ponto obtemos


1 1
µ , = (0 1 0 1 0 1 0 1 0 . . . , 0 1 0 1 0 1 0 1 0 . . .)
3 3
Aplicando ν a este ponto obtemos:

010101010...
ν 001100110011...
010101010...

Entregando esta última sequência a σ, obtemos

0 0 1 1 0 0 1 1
σ(0 0 1 1 0 0 1 1 0 0 1 1 . . .) = 1 + 2 + 3 + 4 + 5 + 6 + 7 + + ···
2 2 2 2 2 2 2 28
   
1 1 1 1 1 1
= + 7 + 11 + · · · + + 8 + 12 + · · ·
23 2 2 24 2 2
2 1 1
= + =
15 15 5

1 1

Portanto ϕ 3, 3 = 51 . Geometricamente, temos

B
B s 00110011...
1 1
0101... s ν
µ σ
y
s
( 31 , 13 ) s1
5
0 1 0
x 0101... B

236
Imagem real e imagem virtual
Dentro do contexto de desenvolvimento do quadrado hipermágico surgiu
a necessidade de considerarmos o que vamos chamar de “imagem virtual de
um ponto” − que são pontos do intervalo que não são imagens por ϕ de
pontos do quadrado, mas que, no entanto, são “geradas” por estes, num
sentido a ser exemplificado a seguir.
Inicialmente consideremos, por exemplo, a sequência a(k) dada assim

a(k) = 0 0 1 0 1 0 1 0 1 0 1 0 . . .

Essa sequência pertence a B. A multiplexagem a seguir

0111111...
001010101010... ∈ B
0000000...

mostra que a sequência a(k) não é imagem, por ν, de nenhum ponto do


espaço B × B, observe

B
B 00101010...
sa(k) 1
1
01111... 6∈ B
µ ν σ
1
σ(a(k)) = 6
00000...
1 0
0 B

Logo, nenhum ponto de B × B chega na sequência a(k).


Isso implica dizer que a imagem, por σ,de a(k), não será ocupada por
nenhum ponto do quadrado. Digo, σ a(k) , não será imagem, por ϕ, de
nenhum ponto do quadrado. Este é um exemplo do que vamos definir logo
mais como sendo uma “imagem virtual”. Para encontrá-la, calculamos:
0 0 1 0 1 0 1 0
σ(0 0 1 0 1 0 1 0 1 0 1 0 . . .) = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + ···
2 2 2 2 2 2 2 2

1 1 1 1
= 3 + 5 + 7 + ··· =
2 2 2 6

237
A partir do quadrado hipermágico a seguir

B
B ν
1
(1,1) r 1
µ r σ rz
y s

0 0
x












1 B
bijeção

definimos:

Definição 9 (Imagem real e imagem virtual). As imagens de pontos de B,


por σ, dividem-se em reais e virtuais; um ponto de B gera uma imagem
real se ele ao ser demultiplexado suas sequências componentes pertencem a
B × B, caso contrário dizemos que este ponto gera uma imagem virtual.

238
1 1

Exemplo: Vamos considerar o ponto 4, 2 , do quadrado.
Como visto anteriormente, temos
1 1
4 2
↓ ↓
V V : (0 1 0 0 0 . . . , 1 0 0 0 0 . . .)
V F : (0 1 0 0 0 . . . , 0 1 1 1 1 . . .)
F V : (0 0 1 1 1 . . . , 1 0 0 0 0 . . .)
F F : (0 0 1 1 1 . . . , 0 1 1 1 1 . . .)

Multiplexando cada um destes pares de sequências, obtemos:

V : 010000 ...
01100000... ֌ gera imagem real
V : 100000 ...

V : 010000 ...
00110101... ֌ gera imagem virtual
F : 011111 ...

F : 001111 ...
01001010... ֌ gera imagem virtual
V : 100000 ...

F : 001111 ...
00011111... 6∈ B
F : 011111 ...

Volvendo ao exemplo dado na página 228:


3 10 7
01100000... = , 00110101... = , 01001010... =
8 48 24
Então
1 1 3
ϕ , =
4 2 8

os outros dois pontos são imagens virtuais.

239
Imaginando o intervalo como sendo uma das arestas do quadrado, temos,

ϕ( 14 , 21 )= 38 = 48
18
֌ ponto
10
48
֌ buraco s( 1 , 1 )
4 2
ϕ
14
48
֌ buraco s

Nota:
Aqui estamos usando buraco como sinônimo de imagem virtual (“vazio”).
Observe que um outro modo de interpretar ϕ é que ela transfere todos
os pontos do quadrado para uma de suas arestas, sem sobrepor um ponto a
outro e, “o que é pior”, ainda sobram lugares vazios na aresta . . . Pasmém!.

∗ ∗ ∗
Repetimos aqui − para efeito de comparação − a figura da página 230:

χ( 10
48
)=χ( 14
48
)=χ( 18
48
)=( 14 , 21 )
s( 1 , 1 )
4 2
χ
sss
10
= 5
= 0.208 . . . 10 ր ↑ տ 18
48 24 48 48
14
48
14 7
48 = 24 = 0.292 . . .

18 3
48 = 8 = 0.375

240
De uma outra perspectiva:

s( 1 , 1 ) s( 1 , 1 )
4 2 4 2

χ ϕ
sss s

χ
1 B { 0, 1 }N
η ξ 1
Ψ
s s(x, y)
z s η2 s

0 0 1
η1 { 0, 1 }N

B
B ν
1
(1,1) r 1
µ r σ rz
y s

0 0
x 1 B

ϕ
A pergunta que colocamos é: ao guardarmos um ponto do quadrado na
aresta, teremos como recuperar este ponto? Ou ainda

ϕ χ ?s
s sz
(x, y) (x, y)

A resposta é pela afirmativa, observe que σ = Ψ−1 e que, ao demultiple-


xarmos uma sequência de B obtemos uma sequência de B × B e, ademais, µ
é uma bijeção. Para um exemplo, veja a figura no topo desta página.

241
2.8.1 A curva de Peano no cubo
De modo inteiramente análogo, podemos construir uma curva de Peano
χ entre o intervalo unitário e o cubo unitário [ 0, 1 ]3 , assim:

{ 0, 1 }N 1
η3
B
1 ξ
s
Ψ s η
η2 0 1
p s
{ 0, 1 }N
η1
0 { 0, 1 }N 1

• Curva de Peano no Cubo


Nesta figura η faz uma demultiplexagem
 de uma sequência xn ∈ B.
Isto é, η toma uma sequência xn e a separa em três subsequências,
 
η (xn ) = η1 (xn ), η2 (xn ), η3 (xn )

Então podemos tomar:

η1 ( x1 x2 x3 . . . ) = x1 x4 x7 x10 . . .

η2 ( x1 x2 x3 . . . ) = x2 x5 x8 x11 . . .

η3 ( x1 x2 x3 . . . ) = x3 x6 x9 x12 . . .

Veja,
x1 x4 x7 x10 . . .
x1 x2 x3 x4 x5 . . . x2 x5 x8 x11 . . .
x3 x6 x9 x12 . . .

Ψ η

Os programas acima implementam as respectivas funções.

242
Exemplos:
1) Calcule a imagem, por χ, de p = 0.5.

{ 0, 1 }N 1
η3
B
1 ξ
s
Ψ s η
η2 0 1
p s
{ 0, 1 }N
η1
0 { 0, 1 }N 1

Solução: Desenvolvendo 0.5 na base 2, temos 1 0 0 0 0 . . . = 12 .


Então Ψ(0.5) = 1 0 0 0 0 0 0 . . .. Agora aplicamos η à sequência anterior:

η1 (1 0 0 0 0 0 0 0 0 . . .) = 1 0 0 0 0 0 0 . . .
η2 (1 0 0 0 0 0 0 0 0 . . .) = 0 0 0 0 0 0 0 . . .
η
η3 (1 0 0 0 0 0 0 0 0 . . .) = 0 0 0 0 0 0 0 . . .
 
Agora aplicamos
 ξ ao ponto η1 , η2 , η3 , então ξ (η1 , η2 , η3 ) = (x, y, z),
obtendo λ 12 = 21 , 0, 0 .

2) Calcule a imagem, por χ, de p = 2/3.


2
Solução: Desenvolvendo 2/3 na base 2, obtemos 3 = 1 0 1 0 1 0 1 0 1 0 . . ..
Então Ψ(2/3) = 1 0 1 0 1 0 1 0 1 0 . . .. Aplicamos η à sequência anterior:

η1 (1 0 1 0 1 0 1 0 1 . . .) = 1 0 1 0 1 0 1 . . .
η2 (1 0 1 0 1 0 1 0 1 . . .) = 0 1 0 1 0 1 0 . . .
η
η3 (1 0 1 0 1 0 1 0 1 . . .) = 1 0 1 0 1 0 1 . . .
 
Agora aplicamos
 ξ ao ponto η1 , η2 , η3 , então, ξ (η1 , η2 , η3 ) = (x, y, z),
obtendo χ 23 = 23 , 13 , 23 . Graficamente, temos

1
z

1
s χ
s
2
1 y
x
0

243
3) Encontre todos os pontos do intervalo que são transferidos, por χ, para
o centro do cubo. Isto é, resolva, para p, a equação χ(p) = 21 , 12 , 12 .
Solução: Temos as seguintes alternativas:


49
 VVV : (1 0 0 0..., 1 0 0 0..., 1 0 0 0...)→ 1 1 1 0 0 0 0 0 0... = 56



 43

 VVF : (1 0 0 0..., 1 0 0 0..., 0 1 1 1... )→ 1 1 0 0 0 1 0 0 1... = 56



 VFV : (1 0 0 0..., 0 1 1 1..., 1 0 0 0... )→ 1 0 1 0 1 0 0 1 0... = 37

 56


 31
 VFF : (1 0 0 0..., 0 1 1 1..., 0 1 1 1... )→ 1 0 0 0 1 1 0 1 1... = 56
1 1 1
2, 2, 2 → 25

 FVV : (0 1 1 1..., 1 0 0 0..., 1 0 0 0... )→ 0 1 1 1 0 0 1 0 0... = 56



 FVF : (0 1 1 1..., 1 0 0 0..., 0 1 1 1... )→ 0 1 0 1 0 1 1 0 1... = 19

 56


 13

 FFV : (0 1 1 1..., 0 1 1 1..., 1 0 0 0... )→ 0 0 1 1 1 0 1 1 0... = 56


 FFF : (0 1 1 1..., 0 1 1 1..., 0 1 1 1... )→ 0 0 0 1 1 1 1 1 1... = 7
56

Nota: As sequências após a seta foram obtidas via multiplexação das três
sequências à esquerda. Os digitos na cor vermelha, em cada sequência,
representam o perı́odo; isto é, são os três digitos que se repetem em seguida.
Para ilustrar a finalidade do diagrama acima consideremos, por exemplo,
a segunda das combinações (VVF), assim:

{ 0, 1 }N 1
η3
B
1 ξ
s
43
56
s Ψ s η
η2 0 1

1 1 0 0 0 1 0 0 1... { 0, 1 }N
η1
0 { 0, 1 }N 1

(1 0 0 0..., 1 0 0 0..., 0 1 1 1... )

43
 1 1 1

Deste diagrama concluimos que, χ 56 = 2, 2, 2 .
Das combinações anteriores apenas uma (FFF) não pertence a B, por-
tanto não é oriunda da codificação de nenhum ponto do intervalo [ 0, 1 ],
sendo assim temos:

49  43  37  31  25  19  13  1 1 1
χ =χ =χ =χ =χ =χ =χ = , ,
56 56 56 56 56 56 56 2 2 2

244
Podemos imaginar o intervalo unitário como sendo uma das arestas do
cubo unitário. Na figura seguinte plotamos os sete pontos da aresta que são
transferidos para o centro do cubo

χ
z
x
y

Observe que em duas dimensões (quadrado) três pontos da aresta são


transferidos para o centro do quadrado. Em três dimensões (cubo) sete
pontos da aresta são transferidos para o centro do cubo.
Seja (x, y, z) um ponto do cubo. Com um pouco de reflexão o leitor
chegará às seguintes conclusões:
1a ) Se as três coordenadas, x, y e z, forem frações diádicas então, neste ponto
são colocados sete pontos da aresta do cubo (digo, do intervalo unitário).
2a ) Se apenas duas coordenadas forem frações diádicas então, neste ponto
são colocados quatro pontos da aresta do cubo.
3a ) Se apenas uma coordenada for fração diádica então, neste ponto são
colocados dois pontos da aresta do cubo.
4a ) Se nenhuma das coordenadas é diádica então, neste ponto é colocado
um único ponto da aresta do quadrado.
5a ) O conjunto dos pontos múltiplos é infinito enumerável e denso no cubo.
As telas a seguir referem-se à figura da página 244.

Ψ η ξ

245
2.8.2 O cubo hipermágico
A exemplo do que foi feito para o quadrado também podemos transferir
todos os pontos do cubo para uma de suas arestas. Sendo que esta transfor-
mação cumpre as mesmas condições que a do quadrado: é contı́nua, injetiva
e não sobrejetiva.

1 B B 1
η3 s sp

µ ν
s σ
η2
0 1 0
B
η1
B
1

• Cubo hipermágico

Chamaremos de γ a composta de todas estas transformações.


Exemplos:

1) Calcule γ 0, 0, 21 .
1
Solução: Temos 2 = 1 0 0 0 0 0 0 0 . . .. Logo,

1
µ 0, 0, = (0 0 0 0 0 0 . . . , 0 0 0 0 0 0 . . . , 1 0 0 0 0 0 . . .)
2
Agora aplicamos ν ao ponto anterior.
  
Observação: Dadas três sequências xn , yn e zn , ν faz uma multi-
plexagem das mesmas, isto é

x1 x2 x3 x4 . . .
y1 y2 y3 y4 . . . x1 y1 z1 x2 y2 z2 x3 y3 z3 x4 y4 z4 . . .
z1 z2 z3 z4 . . .
Portanto
ν
000000 ...
000000 ... 001000000 ...
100000 ...

246
Temos
ν(0 0 0 0 0 0 . . . , 0 0 0 0 0 0 . . . 1 0 0 0 0 0 . . .) = 0 0 1 0 0 0 0 . . .
Agora, aplicamos σ à sequência anterior, obtendo
0 0 1 0 0 0 1
σ(0 0 1 0 0 0 0 0 0 . . .) = 1 + 2 + 3 + 4 + 5 + 6 + · · · =
2 2 2 2 2 2 8
1
 1
Portanto, γ 0, 0, 2 = 8 .

2) Calcule γ 21 , 12 , 12 .
Solução: Temos 12 = 1 0 0 0 0 0 0 0 . . .. Logo
1 1 1
µ , , = (1 0 0 0 0 0 . . . , 1 0 0 0 0 0 . . . , 1 0 0 0 0 0 . . .)
2 2 2
Agora aplicamos ν ao ponto anterior, obtendo

ν (1 0 0 0 0 0 . . . , 1 0 0 0 0 0 . . . , 1 0 0 0 0 0 . . .) = 1 1 1 0 0 0 0 0 0 . . .
- Agora aplicamos, à sequência anterior, σ. Então,
 1 1 1 0 0 1 1 1 7
σ 111000000... = 1 + 2 + 3 + 4 + 5 + ··· = + + = .
2 2 2 2 2 2 4 8 8
1 1 1
 7
Portanto, γ 2 , 2 , 2 = 8 . Graficamente, temos

1
1
z s7
8
γ
y 0 1
x s1
8
0
1

Deste exemplo e do exemplo 3 (p. 244) concluimos que o centro do cubo


vai para o ponto 7/8 e gera seis buracos na aresta do cubo (ou no intervalo
unitário).
Observe que paradoxal: A exemplo do que ocorreu no quadrado aqui
também conseguimos, por γ, transferir o cubo para uma de suas arestas,
com a “agravante” de que agora “mais” buracos serão gerados na aresta.
Por exemplo um ponto (x, y) ∈ [ 0, 1 [2 com ambas as coordenadas diádicas
gera dois buracos na aresta do quadrado; por outro lado um ponto (x, y, z) ∈
[ 0, 1 [3 com duas coordenadas diádicas gera quatro buracos na aresta do cubo
e com três coordenadas diádicas gera seis buracos. Resumindo: estamos
transferindo para a aresta um “volume” maior de pontos enquanto o número
de lugares vazios na aresta aumenta.
Naturalmente que, o que foi feito para o quadrado e o cubo, se estende
sem dificuldade ao “hipercubo”.

247
Buracos na aresta do cubo:

O centro do cubo vai, por γ, para o ponto 7/8 ∈ [ 0, 1 ] e “gera” seis


buracos (imagens virtuais) no intervalo. Veja isto no diagrama:


49
 VVV : (1 0 0 0..., 1 0 0 0..., 1 0 0 0...)→ 1 1 1 0 0 0 0 0 0... = 56



 43

 VVF : (1 0 0 0..., 1 0 0 0..., 0 1 1 1... )→ 1 1 0 0 0 1 0 0 1... = 56



 VFV : (1 0 0 0..., 0 1 1 1..., 1 0 0 0... )→ 1 0 1 0 1 0 0 1 0... = 37

 56


 31
 VFF : (1 0 0 0..., 0 1 1 1..., 0 1 1 1... )→ 1 0 0 0 1 1 0 1 1... = 56
1 1 1
2, 2, 2 → 25

 FVV : (0 1 1 1..., 1 0 0 0..., 1 0 0 0... )→ 0 1 1 1 0 0 1 0 0... = 56



 FVF : (0 1 1 1..., 1 0 0 0..., 0 1 1 1... )→ 0 1 0 1 0 1 1 0 1... = 19

 56


 13

 FFV : (0 1 1 1..., 0 1 1 1..., 1 0 0 0... )→ 0 0 1 1 1 0 1 1 0... = 56


 FFF : (0 1 1 1..., 0 1 1 1..., 0 1 1 1... )→ 0 0 0 1 1 1 1 1 1... = 7
56

Por exemplo, a pseudo codificação V V F “gera” um buraco no espaço B3


e este, por sua vez, gera um buraco em B: 1 1 0 0 0 1 0 0 1 . . ., que, por sua
vez, gera um outro buraco em [ 0, 1 [: 43/56.

1 B B 1
η3 43
56
µ ν σ

η2
0 1 0
B
η1
B
1
(1 0 0 0 ..., 1 0 0 0 ..., 0 1 1 1 ...)

Ψ ν σ

248
Nos seis pontos seguintes:

43/56 = 0, 7679; 37/56 = 0, 6607; 31/56 = 0, 5536; 25/56 = 0, 4464;


19/56 = 0, 3393; 13/56 = 0, 2321.

localizam-se os buracos na aresta do cubo (ou no intervalo unitário),veja:

γ χ
z
x
y

Na figura da esquerda plotamos a imagem do centro do cubo, bem como


os buracos “reservados” na aresta − pelo centro. Na figura da direita repe-
timos, para efeitos de comparação, a figura da página 245.

χ
{ 0, 1 }N 1
η3
B
1 ξ
s
Ψ s η
η2 0 1
p s
{ 0, 1 }N
η1
0 { 0, 1 }N 1

1 B B 1
η3 s sp
µ ν σ
s
η2
0 1 0
B
η1
B
1

γ
249
2.9 Cálculo da taxa de juros
Polinômios e Matemática Financeira
Introdução

Veremos que, mesmo em casos onde se deve ter um número como saı́da de
um programa a programação algébrica pode facilitar bastante; apenas para
contextualizar, vejamos um importante exemplo da matemática financeira:
“Um congelador no valor de $ 950, 00 a vista é vendido em 12 pagamentos
mensais e sem entrada no valor de $ 100, 00 cada. Qual a taxa de juros
cobrada pela loja?”
Ao tentar resolver esse problema nos deparamos com a seguinte equação:
i(1 + i)12 100
=
(1 + i)12 − 1 950

Como isolar i (taxa) nesta equação?


O sentimento generalizado nos livros de matemática financeira é que não
é possı́vel isolar a taxa nesta equação. Por exemplo∗ ,
“Se é possı́vel uma fórmula especial para o cálculo de n, tal não acontece
para o cálculo de i, quando se conhecem P V , P M T e n. O cálculo de i
só é possı́vel por aproximações sucessivas. Calcula-se o valor de P V com
várias taxas até que se consigam valores próximos do valor dado para P V .
Em seguida, com o auxı́lio da regra de três, faz-se uma interpolação para
determinar a taxa correspondente a esse valor dado.”
Este é um método tosco de resolução − comparado com o que aqui vamos
apresentar. Vamos mostrar que é possı́vel sim obter “uma fórmula especial
para o cálculo de i”. Veremos como, através da computação algébrica, obter
uma fórmula para o cálculo da taxa e sem aproximações − num sentido a
ser esclarecido oportunamente.

Veras, Lilia Ladeira. Matemática Financeira 6. ed. São Paulo: Atlas, 2009.

250
Cálculo de prestações
Quando compramos um artigo a prazo efetuamos geralmente seu paga-
mento em uma série de prestações igualmente espaçadas no tempo. Essa
série de prestações é equivalente a um pagamento único, que seria o paga-
mento à vista. A fórmula − deduzida nos livros de matemática financeira
− a ser utilizada é a seguinte:

1 − ( 1 + i )−n
V = P · (2.3)
i

Essa fórmula nos fornece o valor à V ista de uma compra feita em n


parcelas iguais a P quando embutida uma taxa de juros de valor i.
Vamos passar esta fórmula para a linguagem da calculadora financeira
HP 12C , temos

1−( 1+i )−n


V =P · i

1−( 1+i )−n


P V = P MT · i
Onde: P V = Valor Presente e P M T = Pagamento = Prestações.

Séries postecipadas e antecipadas


Nos pagamentos periódicos, os pagamentos podem ser feitos no inı́cio do
perı́odo de capitalização, quando são chamados de antecipados, ou no final
do perı́odo, quando são chamados de postecipados. Por exemplo, os salários,
por serem pagos no fim do mês, são rendas postecipadas; as mensalidades
escolares, por sua vez, são rendas antecipadas.

P P P P P P
··· ···

p p p p p p p p
0 1 2 3 ··· 0 1 2 3 ···
− Antecipados − Postecipados

251
Temos a seguinte fórmula:

i(1 + i)n−1
PMT = PV · (1 + i)m
(1 + i)n − 1

como uma generalização da fórmula (2.3) (p. 251). Quando m = 0 temos as


séries antecipadas e m = 1 as séries postecipadas.
Obviamente que a fórmula acima contempla outras possibilidades. Por
exemplo, se a primeira parcela for paga no final do segundo perı́odo (ou
inı́cio do terceiro) (m = 2):

P P P
···

p p p p p − Postecipados, m = 2
0 1 2 3 4 ···

Cálculo da taxa de juros


Reconsideremos o seguinte problema: Um congelador no valor de $ 950, 00
a vista é 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 fórmula a seguir, temos:

i(1 + i)n−1
PMT = PV · (1 + i)m
(1 + i)n − 1
temos
i(1 + i)12−1
100 = 950 · (1 + i)1
(1 + i)12 − 1
Ou ainda
i(1 + i)12 10
12
=
(1 + i) − 1 95
Para isolar i nesta equação iremos iniciar com o binômio de Newton:
n  
X n
(a + b)n = an−k b k
k
k=0

Tomando nesta equação a = 1 e b = i, resulta:


n  
n
X n
(1 + i ) = ik
k
k=0

252
Vejamos um caso particular desta equação:
3          
3
X 3 k 3 0 3 1 3 2 3 3
(1 + i) = i = i + i + i + i
k 0 1 2 3
k=0

= 1 + 3i + 3i2 + i3

Resulta um polinômio do terceiro grau em i. Polinômios é uma das


especialidades da HP Prime , como já vimos.
Apenas para pegar intimidade com o somatório,
n  
n
X n
(1 + x ) = xk
k
k=0

vamos criar uma função na HP Prime , como na tela a seguir

após , teremos a tela da direita, onde vemos duas simulações.


Lembramos que todas as variáveis envolvidas (n, k, x) devem estar rese-
tadas. Lembramos que a letra i é reservada para a unidade imaginária.
Ademais, observe o seguinte

←−

Vamos manipular algébricamente a fórmula

i(1 + i)n−1
PMT = PV · (1 + i)m
(1 + i)n − 1

para obter:

(1 + i)n − 1 − i(1 + i)n+m−1 · P V /P M T = 0

253
Ou ainda, tendo em conta
n  
n
X n
(1 + x ) = xk
k
k=0

temos
n   n+m−1
X  
X n k n+m−1
i −1−i· i k · P V /P M T = 0
k k
k=0 k=0

Sendo
n        
X n k n 0 n 1 n
i = i + i + ··· + in
k 0 1 n
k=0 | {z }
=1

e
n+m−1
X      
n+m−1 k n+m−1 0 n+m−1
i = i + ··· + i n+m−1
k 0 n+m−1
k=0

Observe que temos uma diferença entre dois polinômios em i:

n   n+m−1
X  
X n k n+m−1
i − P V /P M T · i k+1 = 0
k k
|k=1 {z } | k=0
{z }
p1 (i) p2 (i)

Para o próximo programa fixe a seguinte configuração em sua calculadora


(Vista de inı́cio e Vista do CAS):

254
O programa seguinte calcula a taxa de juros

de acordo com a fórmula

i(1 + i)n−1
PMT = PV · (1 + i)m
(1 + i)n − 1

Problema: Um congelador no valor de $ 950, 00 a vista é vendido em 12


pagamentos mensais iguais e sem entrada no valor de $ 100, 00 cada. Qual
a taxa de juros cobrada pela loja?
O diagrama de fluxo de caixa da operação é visto a seguir:

PV PMT PMT

p p p p p p p p p p p p p
0 1 2 3 4 5 6 7 8 9 10 11 12

Solução: Entrando no programa anterior com os dados:

P V = 950, P M T = 100, n = 12, m = 1 (sem entrada)

o programa nos devolve a seguinte lista:

{ −178.6066 0.0000 3.7909 }

Ou seja: o polinômio resultante do problema em questão possui três


raı́zes reais. A que nos interessa é: i = 3.7909.

255
Vamos modificar o programa anterior para sair apenas com a taxa que
nos interessa, isto é, entre 0 e 100.
Tentando resolver este problema de “forma compacta” (e elegante) é que
fui levado a uma nova e interessante função da Calculadora, ei-la:
remove
Dado um vetor ou lista, remove as ocorrências de Valor ou remove os
valores que tornam o Teste verdadeiro e apresenta o vetor ou lista resultante.
Sintaxe:
remove(Value, List) ou remove(Test, List)
Antes dos exemplos, volte sua calculadora para as configurações

−→

−→

Veja os dois exemplos seguintes

Aqui cabe uma pergunta: e se quisermos eliminar na lista do exemplo os


x tais que x ≤ −2 e x ≥ 2 ?. Basta concatenar remove, assim:

Pois bem, agora volte a sua Calculadora para a configuração anterior aos
exemplos (p. 254).

256
Então, o programa para o cálculo da taxa de juros modificado, fica assim:

Na tela da direita recalculamos o problema do congelador.


Vejamos mais dois exemplos.
Problema: Uma loja de decorações anuncia a venda de um objeto de arte
por $ 600, 00 a vista ou em 1 + 8 (isto é, com uma entrada e oito parcelas
mensais) de $ 80, 00 cada. Qual a taxa de juros cobrada pela loja?
Solução: O diagrama de fluxo de caixa da operação é visto a seguir:

PMT PMT = $ 80, 00

p p p p p p p p p
0 1 2 3 4 5 6 7 8

PV = $ 600, 00

Entrando no programa com os dados:

P V = 600, P M T = 80, n = 9, m = 0 (com entrada)

o programa nos devolve: i = 4.8598 (a.m.).

257
Problema: Um aparelho de som é anunciado com um preço a vista de
$ 1200, 00 ou em três parcelas mensais iguais a $ 500, 00. Calcule a taxa de
juros cobrada pela loja, supondo que a primeira parcela seja paga:
a) no ato;
b) 30 dias após a compra.
Solução:
a) Entrando no programa com os dados: P V = 1200, P M T = 500,
n = 3, m = 0, o programa nos devolve: i = 27.4659 (a.m.).
b) Entrando no programa com os dados: P V = 1200, P M T = 500,
n = 3, m = 1, o programa nos devolve: i = 12.0444 (a.m.).

Conclusão: Pela “dedução” do programa podemos dizer que o valor da taxa


de juro é um valor “lógicamente exato”, embora, eventualmente, possa não
ser numéricamente exato, uma vez que no cálculo das raı́zes do polinômio,
pela HP Prime , introduz-se aproximações nos algoritmos numéricos.
Este programa pode ser visto, efetivamente, como uma fórmula para o
cálculo da taxa de juros; é uma função (fórmula) de quatro variáveis. Con-
trariando a afirmativa da autora citada na página 250:
“Se é possı́vel uma fórmula especial para o cálculo de n, tal não acontece
para o cálculo de i, quando se conhecem P V , P M T e n. O cálculo de i
só é possı́vel por aproximações sucessivas. Calcula-se o valor de P V com
várias taxas até que se consigam valores próximos do valor dado para P V .
Em seguida, com o auxı́lio da regra de três, faz-se uma interpolação para
determinar a taxa correspondente a esse valor dado.”

258
Capitalização composta em perı́odos fracionários
Os exemplos apresentados até agora − com respectivos fluxos de caixa
− foram para transações financeiras em que os juros começam a acumular
no inı́cio do primeiro perı́odo de pagamento regular. No entanto, muitas
vezes os juros começam a acumular antes do inı́cio do primeiro perı́odo
de pagamento regular − pode ser o caso de um empréstimo bancário, por
exemplo. O perı́odo referido, durante o qual os juros começam a acumular
antes da data do primeiro pagamento, é denominado perı́odo fracionário.

PMT
PV
···

p0 p1 p2 p3 Antecipado
n

Perı́odo
fracionário

PMT
PV
···

p0 p1 p2 p3 Postecipado
n

Perı́odo
fracionário

Consideremos o seguinte problema: Um empréstimo de $ 3 950 por 42


meses para comprar um carro começa a acumular juros 13 dias antes do
inı́cio do primeiro perı́odo de pagamento. Pagamentos de $ 120 são feitos no
final de cada mês. Calcule a taxa de juros do financiamento considerando
os dias extras.
Solução: O diagrama de fluxo de caixa é visto a seguir:

PV= $ 3 950 PMT PMT= $ 120

···

p0 p1 p2 p3 p 42
n

13 dias

O número de perı́odos que devemos utilizar no exemplo é:


13
n = 42 + = 42. 43
30

259
Substituindo os dados do problema na fórmula

i(1 + i)n−1
PMT = PV · (1 + i)m
(1 + i)n − 1

i(1 + i)42. 43−1


120 = 3950 · (1 + i)1
(1 + i)42. 43 − 1
Simplificando ligeiramente, temos
120  
i(1 + i)42. 43 = (1 + i)42. 43 − 1
3950
E não podemos aplicar a fórmula do binômio de Newton para desenvolver o
binômio acima posto que o expoente não é um número natural.
O desenvolvimento matemático que se segue é com vistas a construir um
algoritmo (programa) para resolver problemas do gênero.
Antes precisamos generalizar o coeficiente binomial, assim:

Definição 10. Se m for qualquer número real e k um número natural, então


definimos o coeficiente binomial, assim:

  
m  1, se k = 0;
= 
k  m(m − 1)(m − 2) · · · m − (k − 1) , se k ≥ 1.

k!

Por exemplo,
4
a ) Calcule 2 .

Solução: Sendo m = 4 e k = 2, temos, m − (k − 1) = 4 − 1, então
 
4 4(4 − 1) 4·3
= = =6
2 2! 2

b ) Calcule 4.35 .

Solução: Sendo m = 4, 5 e k = 3, temos, m − (k − 1) = 4, 5 − 2, então
 
4. 5 4. 5 (4. 5 − 1)(4. 5 − 2) 4. 5 · 3. 5 · 2. 5
= = = 6. 5625
3 3! 6

260
−4 
c ) Calcule 2 .

Solução: Sendo m = −4 e k = 2, temos, m − (k − 1) = −4 − 1, então
 
−4 −4(−4 − 1) −4 · (−5)
= = = 10
2 2! 2

A HP possui uma função, COMB, que calcula combinações COMB(m, k),


no entanto se m não for inteiro ou se for negativo a calculadora acusará um
erro. Vamos contornar esta limitação. . . Espere!
Isto foi o que escrevi no meu livro sobre a programação da calculadora
HP 50g, na PRIME, neste momento, observei que ela calcula sim o “binomial
generalizado”, como na definição 10, acima. Isto facilita nossa vida, veja:

−→

Retomando, iremos necessitar da série binomial (estudada no Cálculo),


ei-la:

m(m − 1) 2 m(m − 1) · · · m − (k − 1) k
1 + mx + x + ··· + x + ···
2! k!
Pode-se provar, que se m não for um número Natural, então a série bi-
nomial converge para (1 + x)m para |x| < 1. Sendo assim,

m m(m − 1) 2 m(m − 1) · · · m − (k − 1) k
(1+x) = 1 + mx + x +···+ x +···
2! k!
Tendo em conta nossa extensão do coeficiente binomial, temos:
+∞  
m
X m
(1 + x) = xk
k
k=0

Esta identidade vale se m não é um número natural. Na verdade é o caso


que nos interessa agora, uma vez que para m natural já tratamos anterior-
mente.
A tı́tulo de exemplo, vamos substituir x por i e m por −n para obter:
∞  
−n
X −n k
(1 + i) = i (2.4)
k
k=0

261
Vejamos dois casos particulares:
∞        
−2
X −2 k −2 0 −2 1 −2 2
(1 + i) = i = i + i + i + ···
k 0 1 2
k=0

= 1 + −2i + 3i2 + · · ·
e
∞        
−3
X −3 k −3 0 −3 1 −3 2
(1 + i) = i = i + i + i + ···
k 0 1 2
k=0

= 1 + −3i + 6i2 + · · ·
Na tela a seguir definimos na linha de entrada uma função de duas va-
riáveis

na tela do centro algumas simulações, configuração do CAS como na tela da


direita.
Vamos manipular algébricamente a fórmula,
i(1 + i)n−1
PMT = PV · (1 + i)m
(1 + i)n − 1
para obter:
(1 + i)n − 1 − i(1 + i)n+m−1 · P V /P M T = 0
Considerando que n não é um número Natural, podemos escrever:
+∞   +∞  
X n k X n+m−1 k
i −1−i i · P V /P M T = 0
k k
k=0 k=0

Ou ainda,
+∞   +∞  
X n k
X n+m−1
i − 1 − P V /P M T · i ik = 0
k k
k=0 k=0

O programa para esta fórmula muda muito pouco em relação ao pro-


grama da p. 257. Devemos estabelecer um limite N para o somatório
(N = 10 no programa a seguir).

262
A seguir temos o novo programa que implementa a equação
+∞   +∞  
X n k
X n+m−1
i − 1 − P V /P M T · i ik = 0
k k
k=0 k=0

Este é o programa que calcula a taxa de juros para capitalização com-


posta, incluindo perı́odos fracionários.
Entrando no programa com os dados: (p. 259)

P V = 3950, P M T = 120, n = 42.43, m = 1 (postecipada)

o programa nos devolve a seguinte taxa: i = 1.2279 (a.m.).


Nota: A sua calculadora deve estar na configuração da página 254.
Vejamos mais um exemplo: Um empréstimo de $ 4 500 por 36 meses
começa a acumular juros 15 dias antes do inı́cio do primeiro perı́odo de pa-
gamento. Pagamentos de $ 157, 03 são feitos no inı́cio de cada mês. Calcule
a taxa de juros do financiamento considerando os dias extras.
Solução: O diagrama de fluxo de caixa é visto a seguir:
PV= $ 4 500

PMT PMT= $ 157, 03

···

p0 p1 p2 p3 p 35
n

15 dias

O número de perı́odos que devemos utilizar no exemplo é:


15
n = 36 + 30 = 36. 5

PV=4500
PMT=157.03
n=36.5
m=0

263
Apêndice: Algoritmo para plotar pontos no espaço
Interregno cultural: Precisamente no ano de 1988 senti a necessidade
de fazer um programa computacional para traçar o gráfico de superfı́cies
z = f (x, y). Na época não existiam os potentes softwares algébricos exis-
tentes hoje e que traçam gráficos com a maior facilidade. Inicialmente,
para desenvolver meu programa consultei dois ou três livros sobre compu-
tação gráfica, entretanto achei os algoritmos − constantes nestes livros −
um tanto quanto complicados para serem implementados; foi quando decidi
criar meu próprio algoritmo.
Dedução do meu algoritmo
Após alguns instantes de reflexão me coloquei o seguinte problema: Como
plotar um ponto (x, y, z), do espaço tridimensional, em uma superfı́cie bi-
dimensional (a tela do computador ou uma folha de papel, por exemplo)?
Para resolver meu problema devo construir a seguinte transformação
T : R3 → R2
z z

t (x, y, z) t (X, Y )

y y

Observe que o ponto a ser plotado é “o mesmo” nas duas figuras. Digo,
para plotar o ponto de coordenadas (x, y, z) “no espaço” basta plotar o
ponto de coordenadas (X, Y ) no plano − de modo que esta plotagem nos
dê a ilusão de que o ponto encontra-se no espaço, entenderam?
Pois bem, só nos resta agora relacionar as “coordenadas virtuais” X e
Y com as coordenadas reais x, y e z. Isto pode ser feito a partir das figuras
z
z

t (X, Y ) t (X, Y ) ≡ (x, y, z)

y
y
`
θ
`
θ
x տ

264
Nota: θ é um ângulo entre o eixo x e o eixo z (negativo).
O nosso interesse estará centrado na figura da direita. Desta figura des-
tacamos o seguinte triângulo (ver seta):

y−X y−X
⊡ sen θ = ⇒ X = y − x · sen θ
x
z−Y x
θ
a z−Y
cos θ = ⇒ Y = z − x · cos θ
x

Então, o “menor algoritmo do mundo” para o traçado de superfı́cies, é:

(x, y, z) ≡ (X, Y ) = ( y − x · sen θ, z − x · cos θ ) (2.5)

Aplicações do algoritmo
Por exemplo, as figuras 3D na seção das progressões aritméticas tridimen-
sionais (p. 146) foram produzidas com este algoritmo. Também as figuras
3D na subseção 2.8.1 (p. 242).

Morte e ressurreição de um algoritmo


Alguns anos depois da concepção do meu algoritmo surgem os poderosos
softwares computacionais para o traçado de gráficos (inclusive superfı́cies),
devo confessar que, com muito pesar, vislumbrei a morte de meu rebento.
Entretanto, alguns anos depois as circustâncias me levaram a utilizar o
processador de texto LATEX 2ε e neste existe um ambiente (picture) para
o traçado de figuras que trabalha com as coordenadas cartesianas bidimen-
sionais (X, Y ). Somente então me dei conta de que a finalidade principal
de meu algoritmo não estava no traçado de superfı́cies mas sim em plotar
um ponto no espaço R3 e, em função disto, o mesmo se revelaria de grande
utilidade dentro do ambiente de figuras do referido processador de texto.
Por exemplo, os seguintes paralelepipedos foram traçados com o algoritmo
(2.5).

265
Nosso algoritmo pode ser visto como uma transformação linear

Y = F (X) = A X

onde
 
" # " # x
X −sen θ 1 0  
=  y 
Y − cos θ 0 1
z

Observe que G(0, y, z) = ( y − 0 · sen θ, z − 0 · cos θ ) = (y, z). Ou seja, os


pontos do plano yoz são “invariantes”.
Observe como o algoritmo transforma as coordenadas reais, (x, y, z), de
um paralelepipedo em coordenadas “virtuais” (X, Y ):
G G
(x, y, z) −→ (X, Y ) (x, y, z) −→ (X, Y )
(0, 0, 0) −→ (0, 0) (1, 0, 0) −→ (−0.6428, −0.7660)
(0, 1, 0) −→ (1, 0) (1, 1, 0) −→ (0.3572, −0.7660)
(0, 1, 1) −→ (1, 1) (1, 1, 1) −→ (0.3572, 0.2340)
(0, 0, 1) −→ (0, 1) (1, 0, 1) −→ (−0.6428, 0.2340)

z Y
G : R3 → R2

(0, 0, 1) r r(0, 1, 1) (0, 1) r r(1, 1)

(1, 0, 1) r r r r
r r y r r X
(0, 1, 0) (1, 0)

(1, 0, 0) r r(1, 1, 0) r r(0.3572, −0.7660)



x
(−0.6428, −0.7660)

Nesta figura fixamos θ = 40o e arredondamos as cordenadas em (X, Y )


para quatro casas decimais.

266
Uma diferença (evoluç~
ao) abissal!

O Absoluto contém todo o experien-


ciável. Mas sem o experimentador eles são
como nada. Aquilo que faz a experiência pos-
sı́vel é o Absoluto. Aquilo que a faz atual é o
Ser. (Sri Nisargadatta Maharaj)

267
A primeira edição do livro [6] chegou às mãos de um ilustre matemático
brasileiro, Prof. Ubiratan D’Ambósio, que me escreveu o seguinte email.

O endereço gentil@dmat.ufrr.br foi recusado.


Gostaria que ele recebesse esse e-mail. De fato, gostei muito do livro.
Um Abraço, Ubiratan
−−−−− Original Message −−−−−
From: Ubiratan D, Ambrósio <ubi@usp.br>
To: Gentil Lopes da Silva
Sent: Saturday, November 06, 2004 10:46 AM
Subject: Obrigado pelo livro
Caro Gentil
Muito obrigado pelo livro que você mandou pelo Chateau. Está muito bom,
interessante e cheio de provocações. Dá oportunidade para os estudantes
se iniciarem em pesquisas. Você fala que o livro destina-se a alunos de
2o e 3o graus. Eu diria que é também para a pós. Aritmética continua
sendo grande fonte de problemas de pesquisa que podem ser trabalhados
com relativamente pouco da complicada linguagem, notações e resultados
que caracterizam muitas áreas da matemática. São formulações simples que
podem ser trabalhados com pouca técnica, exigindo imaginação e criativi-
dade. Vou recomendar aos meus alunos. Mas tive um problema. Nos sites
das livrarias, o livro não existe. E nem está no site da Thesaurus. Recomen-
dar um livro implica dizer como adquirir. O que você diz? Siga em frente
com suas idéias. As suas reflexões iniciais, a sua escolha de epı́grafes, e a
própria capa, são uma grande contribuição para um novo pensar na urgente
renovação da educação em todos os nı́veis. A sua trajetória desde seus estu-
dos, lecionando em condições precárias, e com as dificuldades para publicar
o livro é um exemplo, muitı́ssimo frequente, do processo (certamente inten-
cional) de desencorajar o florescimento dos criativos, e abrir o espaço para
os executores de idéias de outros.
Uma curiosidade: você sabia que o Édouard Lucas, que você cita na pá-
gina 393, é quem fez a revisão técnica para a publicação póstuma do livro
“Mélanges de Calcul Intégral”, de Joaquim Gomes de Souza, o Souzinha, em
1882? O livro havia sido recusado por inúmeras editoras enquanto ele estava
vivo.
Muito obrigado.
Um abraço, Ubiratan

Nota: Como o Prof. Ubiratan não estava conseguindo acessar o meu antigo
email (gentil@dmat.ufrr.br) ele enviou seu email a um seu ex-aluno (saudoso
Chateaubriand), colega meu, que me repassou.

268
Capı́tulo 3
Aplicações ao Cálculo Numérico

A matemática é um campo demasiadamente árduo


e inóspito para agradar àqueles a quem não oferece
grandes recompensas. Recompensas que são da mesma
ı́ndole que as do artista. . . . Acrescenta ainda que é no
ato de criar que o matemático encontra sua culminân-
cia e que “nenhuma quantidade de trabalho ou corre-
ção técnica pode substituir este momento de criação
na vida de um matemático, poeta ou músico”.
(Norbert Wiener)

Introdução
Apenas lembramos que este não é um livro de Cálculo Numérico, mas de
Programação da HP Prime ; caso seja do interesse do leitor as demonstrações
das várias fórmulas que comparecem neste capı́tulo podem ser encontradas
nas referências, nosso objetivo precı́puo será programar estas fórmulas na
calculadora. Ademais, o leitor terá oportunidade de observar que os nossos
programas resultarão simples, compactos e estéticos.
Uma observação que julgamos de alguma relevância é a de que o nome
“Cálculo Numérico” remonta a uma época na qual nem se sonhava com a
possibilidade do advento da computação algébrica, razão porque acredita-
mos que um nome mais apropriado a esta disciplina − atualmente − seja
“Cálculo Numérico e Algébrico”, como teremos ocasião de observar em vá-
rios dos programas que aqui comparecem, a começar do próximo tópico:
Interpolação.

269
3.1 Interpolação
Introdução:
Em muitas situações de interesse necessitamos aproximar uma função
de “aspecto complicado”, como por exemplo∗ ,
Z θ
x3
C(θ) = 3θ −3 dx
0 ex − 1

por uma outra função mais simples de manipular. A integral a seguir†


Z 1r
1 + (k2 − 1)x2
dx
0 1 − x2

é conhecida como integral elı́tica, para 0 < k < 1 é impossı́vel encontrar


explicitamente uma primitiva da função
r
1 + (k2 − 1)x2
f (x) =
1 − x2
Ainda em outras situações, dispomos apenas de um conjunto de dados
tabelados − 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 cálculo da abscissa x̄ do centro de gravidade de uma placa, dado pela


fórmula,
Z b
xy dx
x̄ = Za b
y dx
a
Em situações tais como estas − e em muitas outras − necessitaremos do
importante conceito de


Esta é conhecida como função de Debye, encontrada em Termodinâmica Estatı́stica
no cálculo do calor especı́fico a volume constante de certas substâncias.

Que representa a quarta parte do perı́metro da elipse de semieixo maior 1 e semieixo
menor k.

270
Interpolação Polinomial

Considere uma função f (x) conhecida (ou “amostrada”) em n + 1 pontos


distintos: x0 , x1 , . . . , xn , de um intervalo [ a, b ] contido em seu domı́nio.
Tomemos a seguinte notação yi = f (xi ), i = 0, 1, . . . , n; como no gráfico a
seguir,

f
yn s
p

..
.
y1 s
p

y0 s
p

p p p p x
0 ···
x0 = a x1 x2 xn = b

Interpolar por um polinômio a função f − com x0 , x1 , . . . , xn ∈ [ a, b ],


n + 1 pontos distintos − significa determinar um polinômio P (x), de grau
menor ou igual a n, que coincida com f em todos estes pontos, isto é, tal
que:
P (xi ) = f (xi ) = yi , para i = 0, 1, . . . , n.

Geometricamente, temos

yn s
p

..
.
y1 s s f
p

···
y0 s
p

p p p p x
0 ···
x0 = a x1 x2 xn = b

O teorema a seguir afirma a existência e unicidade do polinômio inter-


polante.

271
Teorema 17 (Existência e unicidade). Seja f (x) definida em x0 , x1 , . . . ,
xn , (n + 1) pontos distintos de um intervalo [ a, b ], então existe um único
polinômio P (x) de grau menor ou igual a n de modo que

P (xi ) = f (xi ) = yi , para i = 0, 1, . . . , n. (3.1)

Prova: Considere o polinômio P (x), de grau n, da forma

P (x) = an xn + an−1 xn−1 + · · · + a1 x + a0

Vamos provar que existem (e são únicos) os coeficientes an , an−1 , . . . , a1 ,


a0 , tais que P (x) satisfaz as condições dadas em (3.1), isto é

i=0 ⇒ an xn0 + an−1 x0n−1 + · · · + a1 x0 + a0 = y0


| {z } |{z}
P (x0 ) f (x0 )

i=1 ⇒ an xn1 + an−1 x1n−1 + · · · + a1 x1 + a0 = y1


| {z } |{z}
P (x1 ) f (x1 )

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

i=n ⇒ an xnn + an−1 xnn−1 + · · · + a1 xn + a0 = yn


| {z } |{z}
P (xn ) f (xn )

Sendo assim, temos:



 a xn + an−1 x0n−1 + · · · + a1 x0 + a0 = y0
 n 0




 a xn + a
 n−1 + · · · + a x + a = y
n 1 n−1 x1 1 1 0 1




 ·············································




an xnn + an−1 xnn−1 + · · · + a1 xn + a0 = yn

Ou ainda
   
  an y0
0
xn 0
xn−1
· · · x0 1    
  an−1   y
 1

 xn xn−1 · · · x 1   
 1 1 1    
  ....  =  .... 
 ......................    
 
 a1



 yn−1


xnn xnn−1 · · · xn 1
   
a0 yn

272
No que resulta em um sistema de equações lineares da forma AX = B, onde
A é a matriz dada por:
 n 
x0 x0n−1 · · · x0 1
 
 xn xn−1 · · · x 1 
 1 1 1 
A= 
 ...................... 
 
xnn xnn−1 · · · xn 1

O determinante da matriz A é conhecido como


Y determinante das potências
ou de Vandermonde e, é dado por: det A = (xi − xj ).
i<j
Como, por hipótese, os pontos xi , i = 0, 1, . . . , n, são distintos dois a
dois, segue que detA 6= 0, donde concluimos que o sistema linear possui uma
única solução.
Isto é, os coeficientes do polinômio em (an , an−1 , . . . , a1 , a0 ) são únicos
e podem ser calculados pela resolução deste sistema; sendo assim demons-
tramos que o polinômio P (x) existe e é único. 

Considerações sobre erros


Pela construção do polinômio interpolante P (x) dada no teorema 17 te-
mos que este coincide com a função f (x) em todos os pontos x0 , x1 , . . . ,
xn , fora destes pontos certamente estaremos cometendo um erro porquanto,
é de se esperar que P (x̄) 6= f (x̄) para x̄ 6= xi , i = 0, 1, . . . , n.
Definimos o erro cometido na aproximação por

E(x̄) = f (x̄) − P (x̄), onde x̄ ∈ [ a, b ].

Geometricamente fica assim:

yn s
p

.. s f
. s
E(x̄) = f (x̄) − P (x̄)
y0 s P
p

p p p x
0 ···
x0 = a x̄ xn = b

273
Teorema 18 (Erro na interpolação). Seja f (x) uma função definida em x0 ,
x1 , . . . , xn , (n + 1) pontos distintos de um intervalo [ a, b ] e (n + 1) vezes
diferenciável. Se P (x) interpola f (x) nestes pontos, então o erro cometido
E(x) é dado por:
n
Y
(x − xi )
i=0
E(x) = f (x) − P (x) = f (n+1) (ξ) (3.2)
(n + 1)!
onde ξ ∈ [ x0 , xn ].
Prova: Veja, por exemplo, [4]. 
Observe que quando x = xi , i = 0, 1, . . . , n, o erro cometido é nulo,
como era de se esperar.
Limitante superior para o erro
A existência do ponto ξ que comparece em (3.2) é garantida pelo Teorema
de Rolle do Cálculo∗ , no entanto não existe uma regra para encontrarmos
este ponto o que tem como consequência a impossibilidade de calcularmos
o erro cometido, no entanto podemos determinar uma estimativa superior,
como segue: “modulando” a equação (3.2), temos
n
Y Yn n
Y

(x − xi ) (x − x i ) (x − x )
i

|E(x)|= i = 0(n+1)! f (n+1) (ξ) = i = 0(n+1)! |f (n+1) (ξ)| ≤ i = 0(n+1)! M

0nde estamos convencionando que M = max f (n+1) (x) : x ∈ [ x0 , xn ] .
A existência do máximo é assegurada pelo Teorema de Weierstrass† dado
a seguir:
Teorema 19 (Weierstrass). Toda função contı́nua f : [ a, b ] −→ R é limi-
tada e assume valores máximo e mı́nimo.
Sabemos do Cálculo que diferenciabilidade implica em continuidade, daı́
a exigência no enunciado do teorema 18 de que f seja (n + 1) vezes dife-
renciável.
Lembramos que a HP Prime calcula derivadas de qualquer ordem − o que
pode facilitar no cálculo de M , como estaremos mostrando oportunamente.
Ademais, observe que somente podemos calcular uma estimativa para
o erro quando dispomos da expressão analı́tica da função f ; nos casos em

Se a função f é contı́nua no intervalo [ a, b ] e diferenciável no intervalo ] a, b [ e
f (a) = f (b), então existe um ξ ∈ ] a, b [ tal que f ′ (ξ) = 0.

Karl Weierstrass (1815 − 1897) foi durante muitos anos professor em Berlim, e exerceu
profunda influência no desenvolvimento da Análise. Sempre insistindo em demonstrações
rigorosas, elaborou, mas não publicou, uma introdução ao sistema de números reais. Deu
também importantes contribuições à Análise Real e Complexa, às equações diferenciais e
ao cálculo das variações.

274
que temos apenas a função tabelada em um número finito de pontos não
podemos estimar o erro.
A prova do teorema 17 (p. 272) é construtiva no sentido de que nos mostra
como obter o polinômio interpolatório, no entanto existem outras técnicas
− computacionalmente mais eficientes − para o cálculo do polinômio.
Observe que qualquer que seja a técnica escolhida obteremos sempre o
mesmo polinômio interpolador uma vez que o já citado teorema nos garante
um único polinômio.
Na sequência estudaremos três das mencionadas técnicas:
Lagrange, Newton e Gregory-Newton

3.1.1 Interpolação de Lagrange


Seja f (x) definida em x0 , x1 , . . . , xn , (n + 1) pontos distintos de um
intervalo [ a, b ] e yi = f (xi ), i = 0, 1, . . . , n; a fórmula de Lagrange para
o polinômio interpolador de grau menor ou igual a n é dada assim:
n n
X Y (x − xj )
Pn (x) = yi · (3.3)
(xi − xj )
i=0 j=0
j 6= i

Para demonstração desta fórmula, veja, por exemplo, [2].


Vamos abrir esta fórmula tomando n = 3, por exemplo. Então, para
i = 0, 1, 2, 3; expandindo apenas o somatório,temos
3 3 3
Y (x − xj ) Y (x − xj ) Y (x − xj )
P3 (x) = y0 · + y1 · + y2 · +
j= 0
(x0 − xj ) j= 0
(x1 − xj ) j= 0
(x2 − xj )
j6=0 j6=1 j6=2

3
Y (x − xj )
+ y3 ·
j= 0
(x3 − xj )
j6=3

Agora, expandindo todos os produtórios, temos


(x − x1 )(x − x2 )(x − x3 )
P3 (x) = y0 · +
(x0 − x1 )(x0 − x2 )(x0 − x3 )

(x − x0 )(x − x2 )(x − x3 )
+ y1 · +
(x1 − x0 )(x1 − x2 )(x1 − x3 )

(x − x0 )(x − x1 )(x − x3 )
+ y2 · +
(x2 − x0 )(x2 − x1 )(x2 − x3 )

(x − x0 )(x − x1 )(x − x2 )
+ y3 ·
(x3 − x0 )(x3 − x1 )(x3 − x2 )

275
Implementação do polinômio interpolador de Lagrange
O programa seguinte recebe como dados de entrada dois vetores, um
contendo os xi (i = 0, 1, . . . n) e o outro contendo os yi (i = 0, 1, . . . n), e
sai com o polinômio de Lagrange dado pela fórmula (3.3):
(Nota, p. 280)

n n
X Y (x − xj )
Pn (x) = yi ·
i=0 j=0
(x i − xj )
j 6= i

Vamos fazer um teste com três exemplos.


1o ) Encontre uma lei algébrica 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 ]
Antes de executar o programa configure na sua calculadora a vista do CAS
como na tela a seguir

Na tela do centro temos uma simulação − observe que antes resetamos a


variável x (p. 23). Na tela da direita pedimos para expandir o polinômio,
obtemos
125 3 91 1
x − 30 x2 + x−
3 12 2

276
Vamos editar o programa para sair não com a expressão do polinômio,
mas com uma função polinomial, assim

←− aqui

A única alteração feita está indicada pela seta. Executando novamente


o programa obtemos a tela a seguir

Agora temos na saida a função polinomial


125 3 91 1
plg(x) = x − 30 x2 + x−
3 12 2
Na tela da direita confirmamos os pontos da tabela que originou o polinômio.
Confira:

i xi yi
0 0. 0 −0. 5
1 0. 1 0. 0
2 0. 3 0. 2
3 0. 5 1. 0

277
2o ) Encontre o polinômio 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 a seguinte função polinomial

plg(x) = x3 + 10 x

Na tela da direita confirmamos os pontos da tabela que originou o polinô-


mio.
3o ) Com este exemplo vejamos como a HP Prime pode nos auxiliar no cál-
culo da estimativa do erro. Considere a funçao f dada por f (x) = sen x,
amostrada nos pontos da tabela abaixo:

xi π π
0 4 2

f (xi ) 2
0 2 1



Determine o polinômio interpolador de Lagrange, avalie f 8 e um
limitante superior para o erro.

278
Entrando com os dados da tabela

o programa nos devolve a seguinte função polinomial


√ ! √ !
8−8 2 −2 + 4 2
plg(x) = 2
x2 + x
π π

na tela do centro pedimos apenas o lado direito desta equação (p. 61). Na
tela da direita temos (calculadora fixada em 4 decimais)
3 π   3 π  3 (√2 + 1)
f ≈ plg = ≈ 0. 9053
8 8 8
Vejamos agora uma estimativa para o erro segundo o algoritmo (p. 274)
n
Y

(x − xi )
i=0
|E(x)| ≤ M
(n + 1)!
 (n+1)
Onde: M = max f (x) : x ∈ [ a, b ] .
Adaptando ao nosso problema em particular (n = 2), temos
2
Y

(x − x )
i
i=0
|E(x)| ≤ M
(2 + 1)!
 (3)
Onde: M = max f (x) : x ∈ [ a, b ] .
Isto é
|(x − x0 )(x − x1 )(x − x2 )|
|E(x)| ≤ M
3!

Desejamos uma estimativa do erro no ponto de abscissa x = 8 (ver fig.
p. 273). Substituindo todos os pontos, temos
  3π 3π π 3π π
E 3 π ≤ |( 8 − 0)( 8 − 4 )( 8 − 2 )| M

8 6
Logo   3
E 3 π ≤ π M

8 1024

279
A propósito, façamos um programa para o cálculo do produtório coefici-
ente de M , na desigualdade a seguir
Y n

(x − xi )
i=0
|E(x)| ≤ M
(n + 1)!

Nota:
Antes faremos uma importante observação. Nos livros de Cálculo Numé-
rico os ı́ndices são contados a partir do 0, na HP Prime a partir do 1, por
exemplo
 π π 
Livros C.N. : 0 , ,
|{z} 4 |{z}2
x0 |{z}
x1 x2 ←− n = 2

 π π 
HP Prime : 0 , ,
|{z} 4 |{z}2
x1 |{z}
x2 x3 ←− n = 3

Na hora de programar devemos levar em conta este detalhe. Pois bem, o


programa a seguir calcula o coeficiente de M , na desigualdade acima∗

Na tela da direita temos a simulação do nosso exemplo.


Agora precisamos calcular
n o
M = max f (3) (x) : x ∈ [ a, b ]

onde  π
f (x) = sen x e
[ a, b ] = 0,
2
Vamos necessitar da terceira derivada de f .
Nota: Neste caso a terceira derivada de f é imediata, no entanto, faremos
pela HP Prime para servir de exemplo a eventualmente uma outra função
mais complicada.

Para acessar o produtório e ver sua sintaxe, página 52.

280
A seguir como acessamos a derivada

Na tela da direita resetamos a variável x para definir f , em seguida mos-


tramos duas alternativas para calcular a terceira derivada. Sendo assim,
temos
f ′′′ (x) = − cos x ∴ |f ′′′ (x)| = cos x
 
Portanto, o máximo valor que f (3) (x) assume no intervalo 0, π é 1.
2
Retomando a desigualdade
  3
E 3 π ≤ π M

8 1024
Logo   3
E 3 π ≤ π · 1 ≈ 0. 03028

8 1024
Portanto, um limitante superior para o erro é
 
E 3 π ≤ 0. 03028

8

Para efeito de comparação na tela a seguir rodamos novamente o pro-


grama PIL

na tela do centro definimos a função f (x) = sen x e mostramos como obter


a função Erro(x) = ∆(x) = f (x) − plg(x), na tela da direita calculamos
esta função no ponto x = 38π , obtendo

3π 3π 3π


∆ =f − plg = 0. 01855
8 8 8

281
Para completar nossa análise, na tela a seguir colocamos a três funções
na área de plotagem

[−2 π, 2 π] →
π
4 →

Na tela da direita dimensionamos os eixos para plotagem.


Na tela a seguir plotamos as duas primeiras funções, f (x) e plg(x)

∆(x) →
sen x

↑ 3π ↑π
8 2

plg(x)

na tela do centro apenas rotulamos o gráfico à esquerda e na tela da direita


incluimos a função erro, ∆(x) = f (x) − plg(x).

282
3.1.2 Interpolação de Newton
Conceito de Diferença Dividida
Nesta seção estudaremos uma fórmula, alternativa à de Lagrange, para a
construção do polinômio interpolatório − a fórmula de Newton − que fará
uso das diferenças divididas.
Seja f (x) uma função contı́nua, (n + 1) vezes diferenciável e definida em
x0 , x1 , . . . , xn , (n + 1) pontos distintos do intervalo [ a, b ].

Definição 11 (Diferença dividida de ordem zero). Definimos diferença di-


vidida de ordem zero de uma função f (x) definida nos pontos xi , i =
0, 1, . . . , n por:

∆0 f (xi ) = f (xi ) = yi i = 0, 1, . . . , n.

A diferença dividida de primeira ordem é definida em função da diferença


dividida de ordem zero, assim:

∆0 yi+1 − ∆0 yi
∆ yi = f [ xi , xi+1 ] =
xi+1 − xi

Nota: f [ · ] é uma outra notação para diferença dividida.


As diferenças divididas de ordens superiores são definidas recursivamente,
como segue:

Definição 12 (Diferença dividida de ordem n). Definimos diferença dividida


de ordem n de uma função f (x) definida nos pontos xi , i = 0, 1, . . . , n por:

∆n yi = f [ xi , xi+1 , . . . , xi+n ]

f [ xi+1 , xi+2 , . . . , xi+n ] − f [ xi , xi+1 , . . . , xi+n−1 ]


=
xi+n − xi

∆n−1 yi+1 − ∆n−1 yi


=
xi+n − xi

Podemos dispor as diferenças divididas em uma tabela, observando que


as diferenças de ordem 1 são calculadas a partir das diferenças de ordem
zero, as diferenças de ordem 2, a partir das diferenças de ordem 1 e, assim
sucessivamente, veja:

283
i xi Ordem 0 Ordem 1 Ordem 2 Ordem 3
0 x0 f [x0 ]
f [x0 , x1 ]
1 x1 f [x1 ] f [x0 , x1 , x2 ]
f [x1 , x2 ] f [x0 , x1 , x2 , x3 ]
2 x2 f [x2 ] f [x1 , x2 , x3 ]
f [x2 , x3 ]
3 x3 f [x3 ]

As diferenças sendo calculadas assim:

f [x1 ] − f [x0 ] f [x2 ] − f [x1 ] f [x3 ] − f [x2 ]


f [x0 , x1 ] = , f [x1 , x2 ] = , f [x2 , x3 ] =
x1 − x0 x2 − x1 x3 − x2
e
f [x1 , x2 ] − f [x0 , x1 ] f [x2 , x3 ] − f [x1 , x2 ]
f [x0 , x1 , x2 ] = , f [x1 , x2 , x3 ] =
x2 − x0 x3 − x1

ainda

f [x1 , x2 , x3 ] − f [x0 , x1 , x2 ]
f [x0 , x1 , x2 , x3 ] =
x3 − x0

Veja se a figura seguinte ajuda a divisar um padrão no cálculo das dife-


renças acima:

i xi Ordem 0 Ordem 1 Ordem 2 Ordem 3


0 x0 f [x0 ]
f [x0 , x1 ]
1 x1 f [x1 ] f [x0 , x1 , x2 ]
f [x1 , x2 ] f [x0 , x1 , x2 , x3 ]
2 x2 f [x2 ] f [x1 , x2 , x3 ]
f [x2 , x3 ]
3 x3 f [x3 ]

284
Exemplo: Construir a tabela de diferenças divididas da função f dada por
f (x) = 1/x para os pontos x0 = 1, x1 = 2, x2 = 4 e x3 = 5.
Solução: Diferenças 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

Isto é suficiente para construirmos a tabela − conforme algoritmo dado


anteriormente:

i xi Ordem 0 Ordem 1 Ordem 2 Ordem 3


0 1 1 1
−1
2
2−1 = − 12
1 − 18 −(− 21 ) 1
1 2 2 1 1 4−1 = 8 1
− −1
4 2
4−2 = − 81 1
40 8
5−1
1
= − 40
1 − 20 −(− 81 ) 1
2 4 4 1 1 5−2 = 40
− 1
5 4
5−4 = − 20
1
3 5 5

285
Teorema 20. Seja f (x) uma função contı́nua, (n + 1) vezes diferenciável
no intervalo [ a, b ]. Sejam x0 , x1 , . . . , xn , (n + 1) pontos distintos de [ a, b ].
Nestas condições temos:

n
X f (xj )
∆n y0 = f [ x0 , x1 , . . . , xn ] = n (3.4)
Y
j= 0 (xj − xk )
k= 0
k6=j

Prova: Veja [4]. 

A tı́tulo de ilustração, vamos abrir esta fórmula para n = 3, por exemplo:


3
X f (xj )
∆3 y0 = f [ x0 , x1 , x2 , x3 ] = 3
j= 0
Y
(xj − xk )
k= 0
k6=j

Então

f (x0 ) f (x1 ) f (x2 ) f (x3 )


∆3 y0 = 3
+ 3
+ 3
+ 3
Y Y Y Y
(x0 − xk ) (x1 − xk ) (x2 − xk ) (x3 − xk )
k= 0 k= 0 k= 0 k= 0
k6=0 k6=1 k6=2 k6=3

Ou ainda

y0 y1
∆3 y0 = + +
(x0 − x1 )(x0 − x2 )(x0 − x3 ) (x1 − x0 )(x1 − x2 )(x1 − x3 )

y2 y3
+ +
(x2 − x0 )(x2 − x1 )(x2 − x3 ) (x3 − x0 )(x3 − x1 )(x3 − x2 )

286
O programa a seguir implementa a fórmula (3.4). (p. 286)

n
X f (xj )
∆n y0 = n
Y
j= 0 (xj − xk )
k= 0
k6=j

Armazene o programa acima na variável DDYO, pois será utilizado subse-


quentemente como subrotina de um outro programa.
Para implementar a fórmula de Newton posteriormente, iremos necessitar
das seguintes diferenças:
∆1 y0 , ∆2 y0 , ∆3 y0 , . . . , ∆n y0 (3.5)
Para encontrar cada uma destas diferenças iremos necessitar dos seguintes
vetores de pontos:
[ x0 , x1 ] ⇒ ∆1 y0
[ x0 , x1 , x2 ] ⇒ ∆2 y0
[ x0 , x1 , x2 , x3 ] ⇒ ∆3 y0
..............................
Além do vetor correspondente [ yi ], claro.
O programa seguinte recebe os vetores [ xi ] e [ yi ] e sai com um vetor
contendo todas as diferenças divididas em (3.5).

Armazene o programa acima na variável DDTO − será uma subrotina. Na


página seguinte temos uma simulação deste programa.

287
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
1 0. 10 2. 001 10. 400 7. 300 20. 000 −−
2 0. 30 4. 081 14. 050 25. 300 −− −−
3 0. 60 8. 296 31. 760 −− −− −−
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: (Calculadora fixada em 3 decimais)

[ 10. 010 1. 300 10.000 10.000 ]

que é o vetor em destaque na tabela acima.

Fórmula de Newton
A fórmula de Newton para o polinômio interpolador é dada assim:

n
X i−1
Y
Pn (x) = y0 + ∆i y0 (x − xj ) (3.6)
i= 1 j= 0

Para demonstração desta fórmula, veja por exemplo [2].

288
A tı́tulo de ilustração vamos abrir a fórmula

n
X i−1
Y
Pn (x) = y0 + ∆i y0 (x − xj )
i= 1 j= 0

para n = 3, por exemplo:


3
X i−1
Y
i
P3 (x) = y0 + ∆ y0 (x − xj )
i= 1 j= 0

Ou ainda
1−1
Y 2−1
Y 3−1
Y
P3 (x) = y0 + ∆1 y0 (x − xj ) + ∆2 y0 (x − xj ) + ∆3 y0 (x − xj )
j= 0 j= 0 j= 0

Então

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 fórmula de Newton; recebe os vetores


[ xi ] e [ yi ] e sai com o polinômio dado por (3.6).

n
X i−1
Y
i
Pn (x) = y0 + ∆ y0 (x − xj )
i= 1 j= 0

A seguir o fluxograma da implementação do algoritmo de Newton :

Newton
[ xi ], [ yi ] Equação (3.6) Pn (x)
(p. 288)

X, Y [ ∆1 y0 , . . . , ∆n y0 ]
Subrotina [ xk ], [ yk ]
Subrotina
DDYO
Eq. (3.4), p. 286 DDTO
∆k y0

289
Exemplo: Para a tabela a seguir:

x 3 −2 0 9 4
y 15 5 3 687 47

O programa devolve o seguinte polinômio: x3 − 5 · x + 3.


Já para esta outra tabela:

x −2 1 2 4 5
y 16 −2 −4 −2 2

o programa devolve o seguinte polinômio: x2 − 5 · x + 2. Veja:

290
3.1.3 Interpolação de Gregory-Newton
Conceito de Diferença Finita
Considere, por exemplo, a sequência dos cubos dos naturais

13 23 33 43 53 63 ...

aplicando o operador ∆ (Diferença), obtemos

f (n) : 1 8 27 64 125 216 ...

∆ f (n) : 7 19 37 61 91 ...

onde a sequência ∆ f é obtida tomando-se diferenças sucessivas entre termos


consecutivos da sequência f .
A calculadora já faz esta diferença através do comando ∆LIST conforme
vimos na página 39, por exemplo, na tela a seguir

armazenamos em uma variável por nome LST a sequência dos cubos, na tela
do centro aplicamos nesta lista o operador ∆LIST. Podemos aplicar este
operador sucessivamente , por exemplo, assim

f (n) : 1 8 27 64 125 216 ...

∆ f (n) : 7 19 37 61 91 ...

∆2 f (n) : 12 18 24 30 ...

como na tela da direita acima.

291
Na referência [6] demonstramos a seguinte fórmula

m  
m
X
k m
∆ f (n) = (−1) f (n − k + m)
k
k=0

que nos fornece a m-ésima diferença, sem recursividade.


O programa a seguir recebe uma sequência e a ordem m da diferença que
se deseja

na tela do centro temos duas simulações. Na tela da direita geramos duas


listas a partir das fórmulas constantes na tela do centro. No diagrama
seguinte

f (n) : 1 8 27 64 125 216 ...

∆ f (n) : 7 19 37 61 91 ...

∆2 f (n) : 12 18 24 30 ...

temos:

∆ f (n) = 3 n2 + 3 n + 1

∆2 f (n) = 6 n + 6

Formalizando as Diferenças Finitas, temos:

I) de ordem zero: ∆0 y i = y i
II) de primeira ordem: ∆ yi = yi+1 − yi
III) de segunda ordem: ∆2 yi = ∆ yi+1 − ∆ yi
IV) de ordem n: ∆n yi = ∆n−1 yi+1 − ∆n−1 yi

292
De momento nos interessa o caso em que a sequência de pontos é dada
numa tabela, por exemplo

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 diferenças finitas:


iniciamos com os dados yi na horizontal, assim:

9. 82 10. 91 12. 05 13. 14 16. 19

Em seguida vamos fazendo diferenças sucessivas entre termos consecutivos,


até obtermos um único número, 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 diferenças podem ser alocadas em uma tabela assim:

i xi yi ∆ yi ∆2 y i ∆3 y i ∆4 y i
0 3. 5 9. 82 1. 09 0. 05 −0. 10 2. 11
1 4. 0 10. 91 1. 14 −0. 05 2. 01 −−
2 4. 5 12. 05 1. 09 1. 96 −− −−
3 5. 0 13. 14 3. 05 −− −− −−
4 5. 5 16. 19 −− −− −− −−

O nosso objetivo agora será “automatizar” o cálculo destas diferenças


finitas − as quais serão utilizadas oportunamente na obtenção do polinômio
interpolante de Gregory-Newton.

293
Vamos por partes − devagar − a fórmula
m  
m
X
k m
∆ f (n) = (−1) f (n − k + m) (3.7)
k
k=0

para m = 1 resulta (denotando a posição n por i)

1  
1
X 1 k
∆ y(i) = (−1) y(i − k + 1)
k
k=0

Na tela a seguir programamos esta fórmula

Na tela da direita temos uma simulação, confira na tabela a seguir

i xi yi ∆ yi ∆2 y i ∆3 y i ∆4 y i
0 3. 5 9. 82 1. 09 0. 05 −0. 10 2. 11
1 4. 0 10. 91 1. 14 −0, 05 2. 01 −−
2 4. 5 12. 05 1. 09 1. 96 −− −−
3 5. 0 13. 14 3. 05 −− −− −−
4 5. 5 16. 19 −− −− −− −−

Observe que a fórmula (3.7) pode ser vista como uma matriz que calcula
todas as diferenças finitas; como, por exemplo, a matriz vista a seguir:

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

294
Na fórmula
m  
m
X
k m
∆ f (i) = (−1) f (i − k + m)
k
k=0

temos a seguinte variação para os ı́ndices:

m = 0, 1, 2, 3, . . . e i = 1, 2, 3, . . .

(m linha, i coluna), veja:

(m, i) i

m (0, 1) (0, 2) (0, 3) (0, 4) · · · ∆0 y i


(1, 1) (1, 2) (1, 3) (1, 4) · · · ∆1 y i
(2, 1) (2, 2) (2, 3) (2, 4) · · · ∆2 y i
(3, 1) (3, 2) (3, 3) (3, 4) · · · ∆3 y i
..........................................

Nos valendo desta observação, construimos o programa a seguir que re-


cebe o vetor [ yi ] e sai com uma lista cujos elementos são vetores contendo
todas as diferenças finitas. (Ver importante observação, p. 280)

Observe que N é o número de pontos no vetor [ yi ]. O primeiro laço

FOR m FROM 1 TO N −1 DO

calcula as diferenças ∆1 , ∆2 , . . . , ∆N −1 . O segundo laço

FOR I FROM 1 TO N −m DO

calcula, em cada diferença, todos os termos.

295
Para o caso da tabela

i xi yi ∆ yi ∆2 y i ∆3 y i ∆4 y i
0 3. 5 9. 82 1. 09 0. 05 −0. 10 2. 11
1 4. 0 10. 91 1. 14 −0, 05 2. 01 −−
2 4. 5 12. 05 1. 09 1. 96 −− −−
3 5. 0 13. 14 3. 05 −− −− −−
4 5. 5 16. 19 −− −− −− −−

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 ] [ 0. 05 − 0. 05 1. 96 ] [ −0. 01 2. 01 ] [ 2. 11 ] }
| {z } | {z } | {z } | {z }
∆ yi ∆ 2 yi ∆ 3 yi ∆ 4 yi

Fórmula de Gregory-Newton
No caso em que os nós da interpolação x0 , x1 , . . . , xn são igualmente
espaçados∗ inicialmente procedemos a uma mudança de variável, assim:
x − x0
z= , ou ainda x = x0 + zh
h
Observe a correspondência entre os ı́ndices nas duas variáveis:

h h h













x
p p p p
x0 x1 x2 ··· xn−1 xn

h=1




z
p p p p
0 1 2 ··· n−1 n

Os pontos x0 , x1 , . . . , xn , com espaçamento h, possuem uma corres-


pondência única (bijeção) com os pontos 0, 1, . . . , n, com espaçamento h =
1, o que acarreta simplicidade nos cálculos − e na programação.

Isto é, xi+1 − xi = h, para i = 0, 1, 2, . . . , n, sendo h uma constante.

296
Com esta mudança de variável o polinômio de Newton (p. 288)
n
X i−1
Y
Pn (x) = y0 + ∆i y0 (x − xj )
i= 1 j= 0

toma a seguinte forma:

∆ y0 ∆2 y 0 ∆n y 0
Pn (x) = y0 + z · + z(z −1)· + · · · + z(z −1) . . . (z −(n−1))·
1! 2! n!
Para a dedução desta fórmula, veja, por exemplo, [2].
A fórmula anterior pode ser reescrita de forma compacta, assim:
i−1
n Y
X ∆i y 0
Pn (x) = y0 + (z − j) ·
i!
i= 1 j=0

Observe que vamos necessitar apenas do primeiro termo de todas as


diferenças finitas; por exemplo, veja isto no caso da tabela a seguir

i xi yi ∆ yi ∆2 y i ∆3 y i ∆4 y i
0 3. 5 9. 82 1. 09 0. 05 −0. 10 2. 11
1 4. 0 10. 91 1. 14 −0. 05 2. 01 −−
2 4. 5 12. 05 1. 09 1. 96 −− −−
3 5. 0 13. 14 3. 05 −− −− −−
4 5. 5 16. 19 −− −− −− −−

Isto significa que podemos fixar i = 1 na fórmula


m  
m
X
k m
∆ f (i) = (−1) f (i − k + m) (3.8)
k
k=0

obtendo portanto
m  
m
X
k m
∆ y1 = (−1) y1−k+m
k
k=0

Nota: Lembramos que o ı́ndice i na fórmula (3.8) é contado a partir de 1


(i = 1, 2, 3, . . .), (p. 295), enquanto nas tabelas do Cálculo Numérico (como
a tabela anterior) é contado a partir de 0 (i = 0, 1, 2, . . .).

297
O programa a seguir recebe o vetor [ yi ] e sai com um vetor contendo o
primeiro termo de todas as diferenças, segundo a fórmula
m  
k m
X
m
∆ y1 = (−1) y1−k+m (3.9)
k
k=0

Na tela da direita temos uma simulação para a tabela a seguir

i xi yi ∆ yi ∆2 y i ∆3 y i ∆4 y i
0 3. 5 9. 82 1. 09 0. 05 −0. 10 2. 11
1 4. 0 10. 91 1. 14 −0. 05 2. 01 −−
2 4. 5 12. 05 1. 09 1. 96 −− −−
3 5. 0 13. 14 3. 05 −− −− −−
4 5. 5 16. 19 −− −− −− −−

Para o cálculo do polinômio de Gregory-Newton, os livros de Cálculo


Numérico, calculam todas as diferenças finitas (como na tabela acima); ora,
mas isto não é necessário uma vez que só utilizamos o primeiro termo de
todas as diferenças e, estes, podem ser calculados pela fórmula (3.9). Isto
significa, no caso a seguir

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

que para encontrarmos os termos em destaque na vertical, só necessitamos


dos termos yi − em destaque na horizontal.

298
O programa a seguir recebe o vetor [ yi ], o primeiro termo xi , isto é, x0 ,
e o passo h; e sai com o polinômio de Gregory-Newton

∆ y0 ∆2 y 0 ∆n y 0
Pn (x) = y0 + z · + z(z −1)· + · · · + z(z −1) . . . (z −(n−1))·
1! 2! n!

Na tela do centro fizemos uma simulação para a tabela abaixo

i xi yi ∆ yi ∆2 y i ∆3 y i ∆4 y i
0 3. 5 9. 82 1. 09 0. 05 −0. 10 2. 11
1 4. 0 10. 91 1. 14 −0. 05 2. 01 −−
2 4. 5 12. 05 1. 09 1. 96 −− −−
3 5. 0 13. 14 3. 05 −− −− −−
4 5. 5 16. 19 −− −− −− −−

Na tela da direita aplicamos ao resultado o comando expand obtendo ao


final o polinômio
211 4 −3607 3 91961 2 −257639 45509
·x + ·x + ·x + ·x +
150 150 600 600 100
Vejamos mais dois exemplos:

i xi yi
0 0 1. 00
1 1 1. 50
2 2 2. 20
3 3 3. 10
4 4 4. 60

1 −1 3 17 2 18
· x4 + ·x + ·x + ·x + 1
60 10 60 60

299
i xi yi
0 1 5
1 4 9
2 7 18
3 10 32

Limitante superior para o erro para pontos equidistantes


Nas mesmas condições (hipóteses) do teorema 18 (p. 274) temos o seguinte
atalho para o cálculo de um limitante superior para o erro, para pontos
equidistantes: ([4], p. 137)

hn+1
|E(x)| ≤ M
4(n + 1)

onde, n o
(n+1)
M = max f (x) : x ∈ [ x0 , xn ]

Compare este resultado com o seguinte:


n
Y

(x − xi )
i=0
|E(x)| ≤ M
(n + 1)!

Onde: M = max f (n+1) (x) : x ∈ [ a, b ] .

300
3.2 Integração
Introdução:
Nesta seção implementaremos as principais regras de integração numérica
− as quais constam nos livros de Cálculo Numérico. Para a dedução das
fórmulas consulte um dos livros de nossas referências.
No cálculo numérico de integrais
Z b
I= f (x) dx
a

efetuamos uma partição do intervalo [ a, b ] em n subintervalos e “amostra-


mos” a função f no pontos desta partição, assim:

yn−1
y3
y0
y2 yn−2
y1 yn
y4

p p p p p p
x0 = a x1 x2 x3 x4 ··· xn−2 xn−1 xn = b

Onde:

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

f (x)

h h ... h

x
0 a = x0 x1 x2 xn−1 xn = b

Cálculos aproximados da integral I acima podem ser obtidos a partir


da integração do polinômio interpolador da função f (x), em pontos equi-
distantes do intervalo [ a, b ]. Este processo é conhecido como fórmulas de
quadratura de Newton-Cotes. Existem também outras fórmulas aproxima-
das para integração numérica como veremos a seguir.

301
3.2.1 Regra dos trapézios generalizada
Na regra dos trapézios em cada subintervalo da partição o gráfico da
função é aproximado por segmentos de reta.

f (x)

h h ... h

x
0 a = x0 x1 x2 xn−1 xn = b

A fórmula para a regra dos trapézios generalizada é como a seguir:


Z xn
h
f (x) dx ∼
= [ f (x0 ) + 2f (x1 ) + 2f (x2 ) + · · · + 2f (xn−1 ) + f (xn ) ]
x0 2

Erro:
h2
Et = − (x − x0 ) f (2) (ξ) , ξ ∈ [ x0 , xn ]
12 n

Limitante superior para o erro:


O ponto ξ no intervalo [ a, b ] não tem como ser determinado, razão porque
o erro não pode ser calculado com precisão, no entanto, podemos calcular
um limitante superior para o erro:

h2 n o
(xn − x0 ) max f (2) (x) : x0 ≤ x ≤ xn

|Et | ≤
12

302
Implementação da regra dos trapézios generalizada
O programa seguinte

recebe n (o número de subintervalos) e sai com um vetor contendo os coefi-


cientes numéricos em destaque na expressão:

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

que comparece na fórmula


Z xn
h
f (x) dx ∼
= [ f (x0 ) + 2f (x1 ) + 2f (x2 ) + · · · + 2f (xn−1 ) + f (xn ) ]
x0 2

Na tela da direita temos alguns exemplos.


A seguir o programa que implementa a regra dos trapézios

Configurando a vista do CAS como na tela do centro, na tela da direita vemos


uma simulação para a seguinte integral
Z 4
√ √
x dx ∴ f (x) = x
1

para n = 6 subintervalos.

303
Limitante superior para o erro
Vamos calcular um limitante superior para o erro, segundo a desigual-
dade:
h2 n
(2)
o
|Et | ≤ (xn − x0 ) max f (x) : x0 ≤ x ≤ xn
12
Para este caso particular, temos: h = (b − a)/n = (4 − 1)/6 = 0.5.
Substituindo os valores já disponı́veis, obtemos:

0.52 n o
(4 − 1) max f (2) (x) : 1 ≤ x ≤ 4

|Et | ≤
12
Ou ainda n o
(2)
|Et | ≤ 0.0625 · max f (x) : 1 ≤ x ≤ 4 (3.10)

Na tela a seguir definimos duas funções



f (x) = x e g(x) = f ′′ (x)

Na tela da direita plotamos o gráfico de |g| no intervalo [ 1, 4 ]; g(x) é decres-


cente neste intervalo, o máximo que a função g assume ocorre no extremo
esquerdo, isto é:
n o  √  √
(2) x 1
max f (x) : x ∈ [ 1, 4 ] = max 2
: x ∈ [ 1, 4 ] = = 0.25
4·x 4 · 12

Substituindo este valor na desigualdade (3.10), temos:

|Et | ≤ 0.0625 · 0.25 = 0.0156

304
3.2.2 Primeira regra de Simpson
A primeira regra de Simpson generalizada − ou regra 1/3 de Simpson −
estabelece que
R xn
x0 f (x) dx ∼
= h
3 [ f (x0 ) + 4f (x1 ) + 2f (x2 ) + 4f (x3 ) + · · · + 2f (xn−2 ) + 4f (xn−1 ) + f (xn ) ]

Onde n é um número par de subintervalos. O erro é dado por:

h4
Et = − (x − x0 ) f (4) (ξ) , ξ ∈ [ x0 , xn ]
180 n
xn −x0
Ou, alternativamente, tendo em conta que h = n

(xn − x0 )5 (4)
Et = − f (ξ) , ξ ∈ [ x0 , xn ]
180 n4

Limitante superior para o erro:


Como ξ ∈ [ x0 , xn ] não é conhecido, podemos, no entanto, calcular um
limitante superior para o erro:

h4 n o
(xn − x0 ) max f (4) (x) : x0 ≤ x ≤ xn

|Et | ≤
180

Implementação da regra de Simpson generalizada


Inicialmente vamos determinar uma fórmula para gerar os coeficientes
numéricos em destaque na expressão:

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

Uma fórmula para o termo geral desta sequência é:



1, se I = 0 ou I = n;
aI =
3 − (−1)I , se 1 ≤ I ≤ n − 1

O programa seguinte calcula estes coeficientes

305
A regra de Simpson generalizada
R xn
x0 f (x) dx ∼
= h
3 [ f (x0 ) + 4f (x1 ) + 2f (x2 ) + 4f (x3 ) + · · · + 2f (xn−2 ) + 4f (xn−1 ) + f (xn ) ]

está implementada pelo seguinte programa:

Na tela do centro fazemos uma simulação para a integral


Z 1
1 1
2
dx ∴ f (x) = , a = 0, b = 1, n = 8.
0 1+x 1 + x2

Na tela da direita comparamos nosso resultado com o valor da integral dado


pela calculadora.
Exemplo: Na tela a seguir fazemos uma simulação para a integral
Z 3
(x ex + 1) dx ∴ f (x) = x ex + 1, a = 0, b = 3, n = 2, 4, 6.
0

para n = 2, n = 4 e n = 6 subintervalos

Na tela da direita comparamos os respectivos erros tomando como refe-


rência a integral encontrada pela calculadora.

306
3.2.3 Segunda regra de Simpson
A segunda regra de Simpson generalizada − ou regra 3/8 de Simpson −
estabelece que
R xn
x0 f (x) dx ∼
= 3h
8 [ y0 + 3y1 + 3y2 + 2y3 + 3y4 + 3y5 + 2y6 + · · · + 3yn−2 + 3yn−1 + yn ]

Onde n é um múltiplo de 3 e h = (b − a)/n. O erro é dado por

h4
Et = − (x − x0 ) f (4) (ξ) , ξ ∈ [ x0 , xn ]
80 n
Antes de implementar a regra de 3/8 de Simpson generalizada vamos
fazer um programa para gerar a sequência 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

Esta sequência é gerada com o seguinte programa:

O programa da segunda regra de Simpsom muda muito pouco em ralação


ao programa da primeira regra (RSG, p. 306), salve aquele programa com um
novo nome, RSG2, assim

Na tela do centro fizemos as (poucas) alterações necessárias. Na tela da


direita fazemos uma simulação para a integral
Z 4 p p
ln(x3 + (ex +1)) dx ∴ f (x) = ln(x3 + (ex +1)), a = 1, b = 4, n = 9.
1

307
Na tela a seguir exibimos o valor dado pela calculadora

Na tela da direita observamos que com n = 18 obtemos o mesmo valor da


calculadora (com 4 decimais).
Exemplo: Calcule o valor aproximado da integral
Z 7
ln (x + 9) dx
1

usando a regra 3/8 de Simpson para 3, 6 e 9 subintervalos; ademais, encontre


os respectivos erros − comparado com o resultado da calculadora.
Solução: Na tela a seguir temos as integrais pedidas

Na tela da direita, os respectivos erros.

308
3.2.4 Quadratura gaussiana
A fórmula de quadratura de Gauss, ou simplesmente quadratura gaussi-
ana, é mais uma alternativa que se conta para o cálculo numérico de inte-
grais:
Z b
I= f (x) dx
a
Este método fornece um resultado bem mais preciso que os anteriores −
embora só possa ser aplicado quando se conhece a função dada por f (x);
não se aplica a partir de pontos definidos por experimentos (tabelados).
Inicialmente, o intervalo de integração [ a, b ] deve ser “transladado” para
o intervalo [ −1, 1 ]; isto se consegue através de uma mudança de variável,
fornecida pela seguinte bijeção:

x(t)
b−a
x−a = 1−(−1) (t − (−1))

b (1, b)
[

(−1, a) a
[

t
−1 p 0 p1

Encontrando a equação da reta por dois pontos, temos:


1 1 1
x = (b − a) t + (b + a) ⇒ dx = (b − a) dt
2 2 2
Expressando t em função de x, temos

2x − (b + a)  x = a, t = −1;
t= ⇒
b−a  x = b, t = 1.
Por outro lado, temos
 
1 1
f (x) = f (b − a) t + (b + a)
2 2
portanto
 
1 1 1
f (x) dx = f (b − a) t + (b + a) (b − a) dt
2 2 2
Sendo assim, temos:
Z b Z 1
I= f (x) dx = F (t) dt
a −1

309
Onde: 1 
1 1
F (t) = (b − a) · f (b − a) t + (b + a)
2 2 2
A propósito, o programa a seguir recebe f (x) e sai com F (t)

Na tela do centro temos um exemplo com

f (x) = 3 ex e [ a, b ] = [ 1, 3 ]

portanto
F (t) = 3 et+2
Na tela da direita temos um exemplo com
2 /2
f (x) = e−x e [ a, b ] = [ −2, 2 ]

portanto
2
F (t) = 2 e−2 t
Retomando, A fórmula de Gauss para n + 1 pontos é da forma:
Z 1
I= F (t) dt = A0 F (t0 ) + A1 F (t1 ) + · · · + An F (tn )
−1

onde os coeficientes Ai e os pontos ti (i = 0, 1, . . . , n) são incógnitas a


serem determinadas.
Observe que temos 2n + 2 incógnitas: A0 , A1 , . . . , An ; t0 , t1 , . . . , tn .
Escolheremos os coeficientes Ai e os pontos ti de tal forma que a fórmula
forneça um valor exato da integral para polinômios de graus ≤ 2n + 1.
Vamos por partes, para dois pontos, a fórmula de Gauss é:
Z 1
I= F (t) dt = A0 F (t0 ) + A1 F (t1 )
−1

Neste caso os parâmetros A0 , A1 , t0 , t1 , devem ser determinados de modo


que esta fórmula seja exata para polinômios de graus ≤ 2 · 1 + 1 = 3.

310
Sendo assim, basta exigir que seja exata para os polinômios∗
F0 (t) = 1, F1 (t) = t, F2 (t) = t2 , F3 (t) = t3 . (3.11)
tendo em vista que qualquer outro polinômio de grau ≤ 3 pode ser escrito
como: (combinação linear)
P3 (t) = a0 + a1 t + a2 t2 + a3 t3

= a0 F (t0 ) + a1 F (t1 ) + a2 F (t2 ) + a3 F (t3 )


Sendo assim, se a fórmula
Z 1
Fk (t) dt = A0 Fk (t0 ) + A1 Fk (t1 ), k = 0, 1, 2, 3
−1
é exata para estes polinômios, então teremos: (prove isto)
Z 1
P3 (t) dt = A0 P3 (t0 ) + A1 P3 (t1 )
−1
Ou seja, a fórmula também é exata para P3 (t).
Portanto, considerando os polinômios dados em (3.11) as quatro incóg-
nitas A0 , A1 , t0 , t1 podem ser encontradas por:
Z 1
tk dt = A0 tk0 + A1 tk1 , k = 0, 1, 2, 3.
−1
Desdobrando, temos:
Z 1
k=0 ⇒ t0 dt = A0 t00 + A1 t01
−1
Z 1
k=1 ⇒ t1 dt = A0 t10 + A1 t11
−1
Z 1
k=2 ⇒ t2 dt = A0 t20 + A1 t21
−1
Z 1
k=3 ⇒ t3 dt = A0 t30 + A1 t31
−1
Resolvendo as integrais obtemos o seguinte sistema de equações não-lineares:
A0 + A1 = 2

A0 t0 + A1 t1 = 0

A0 t20 + A1 t21 = 2/3

A0 t30 + A1 t31 = 0

São os polinômios da base canônica: B = { 1, t, t2 , t3 }, na linguagem da Álgebra
Linear.

311
Resolvendo este sistema obtemos (exercı́cio)
1 1
A0 = A1 = 1 e t0 = − √ , t1 = √
3 3
Substituindo na fórmula de Gauss para dois pontos
Z 1
I= F (t) dt = A0 F (t0 ) + A1 F (t1 )
−1

obtemos Z √ √
1
3 3
IG = F (t) dt = F − +F (3.12)
−1 3 3
Esta fórmula é exata para polinômios de grau ≤ 3, por construção.
Exemplo: Calcular,Z 2 utilizando a quadratura gaussiana para dois pontos, o
2
valor da integral e−x /2 dx.
−2
Solução: Inicialmente procedemos à mudança de variável. Do enunciado
2
retiramos: a = −2, b = 2 e f (x) = e−x /2 . Substituindo em F (t), temos:
1 1 1 
F (t) = (b − a) · f (b − a) t + (b + a)
2 2 2
1   1  1 
= 2 − (−2) · f 2 − (−2) t + 2 + (−2)
2 2 2
Sendo assim:
2 /2 2
F (t) = 2 f (2 t) = 2 e−(2 t) = 2 e−2 t

Logo √ √
√ √
3 3 2 3 3 2
F − = 2 e−2 (− 3 ) ; F = 2 e−2 ( 3 )
3 3
Substituindo em (3.12) resulta

IG = 4 e−2/3 = 2.0537

O programa a seguir implementa a fórmula (3.12)

Na telas do centro e direita temos dois exemplos.

312
O erro para o algoritmo de Gauss é dado por:

22n+1 (n!)4 (2n)


En = 3 · F (ξ), −1 < ξ < 1.
(2n + 1) · (2n)!

Se tentarmos obter a fórmula de Gauss para três pontos


Z 1
I= F (t) dt = A0 F (t0 ) + A1 F (t1 ) + A3 F (t3 )
−1

teremos um sistema não-linear com seis incógnitas: A0 , A1 , A3 ; t0 , t1 , t3 :




 A0 + A0 + A0 = 2






 A0 t0 + A1 t1 + A2 t2 = 0




 A t2 + A t2 + A t2 = 2/3

0 0 1 1 2 2




 A0 t30 + A1 t31 + A2 t32 = 0



A0 t40 + A1 t41 + A2 t42 = 2/5







A0 t50 + A1 t51 + A2 t52 = 0

de difı́cil resolução, convenhamos. Existem livros∗ que apresentam a fórmula


para a quadratura gaussiana com até n = 2 (3 pontos):
Z 1 r ! r !
5 3 8 5 3
I= F (t) dt = F − + F (0) + F
−1 9 5 9 9 5

outros livros costumam tabelar valores das constantes Ai e ti para um


certo número de pontos. Por exemplo, na página seguinte apresentamos
uma tabela para n = 7 (8 pontos).
A seguir programamos a fórmula anterior e simulamos um exemplo

na tela da direita temos, para efeito de comparação, o valor da calculadora.


Como, por exemplo, [4].

313
Existem livros que trazem algumas tabelas tais como

n i ti Ai

1 1; 0 ±0. 57735027 1

2 0; 1 ±0. 77459667 5/9


2 0 8/9

3 0; 1 ±0. 86113631 0. 34785484


2; 3 ±0. 33998104 0. 65214516

4 0; 1 ±0. 90617985 0. 23692688


2; 3 ±0. 53846931 0. 47862868
4 0 0. 53888889

5 0; 1 ±0. 93246951 0. 17132450


2; 3 ±0. 66120939 0. 36076158
4; 5 ±0. 23861919 0. 46791394

6 0; 1 ±0. 94910791 0. 12948496


2; 3 ±0. 74153119 0. 27970540
4; 5 ±0. 40584515 0. 38183006
6 0 0. 41795918

7 0; 1 ±0. 96028986 0. 10122854


2; 3 ±0. 79666648 0. 22238104
4; 5 ±0. 52553242 0. 31370664
6; 7 ±0. 18343464 0. 36268378

Por exemplo, como vimos, para n = 1 (dois pontos) (p. 312)

1 1
A0 = A1 = 1, t0 = − √ = −0.57735027, t1 = √ = 0.57735027
3 3

314
Existem vários inconvenientes em se trabalhar com tabelas como a da
página anterior∗ , em razão disto vamos envidar esforços para programa a
fórmula da quadratura gaussiana
Z 1
I= F (t) dt = A0 F (t0 ) + A1 F (t1 ) + · · · + An F (tn )
−1

para um n arbitrário de pontos e sem utilizar tabelas.


Iniciamos com os polinômios ortogonais, definidos a seguir:

Definição 13 (Conjunto ortogonal). Um conjunto de polinômios



P = pn (x) : n = 0, 1, 2, . . . ,

(onde n é o grau do polinômio) é dito ortogonal em relação à função peso


ω(x), num intervalo [ a, b ] se:
Z b
ω(x) pm (x) pn (x) dx = 0 para m 6= n
a

Existem vários conjuntos de polinômios ortogonais − como, p. ex. po-


linômios de Hermite, de Laguerre e de Legendre −, dependendo da escolha
da função peso ω(x). Quando ω(x) = 1 e o intervalo de integração [ a, b ] é
o intervalo [ −1, 1 ], os polinômios são chamados polinômios de Legendre −
disponı́veis na HP Prime .
O seguinte teorema é de importância decisiva para o algoritmo de Gauss.

Teorema 21. Fixado arbitrariamente um natural n, o pontos ti para a


quadratura gaussiana é a i−ésima raiz (zero) do polinômio de Legendre de
ordem n: pn (t). Os coeficientes Ai , são obtidos pela fórmula:

2
Ai = (3.13)
(1 − t2 )
i
· [ p′n (ti ) ]2

onde p′n (ti ) é o valor da derivada de pn (t) avaliada no ponto ti .

Prova: [5]. 

O nosso objetivo agora será implementar (programar) a quadratura gaus-


siana. Posto o nosso problema vejamos agora alguns recursos que a calcula-
dora nos disponibiliza para resolvê-lo.


Por exemplo, o livro citado na referência [2] ao elaborar o programa da quadratura
gaussiana digita a tabela dentro do programa (p. 526).

315
Os polinômios de Legendre podem ser acessados na calculadora a
partir da caixa de ferramentas, assim:

Aqui
←−

Por exemplo, vimos, para n = 1 (dois pontos) que (p. 312)


√ √
1 3 1 3
A0 = A1 = 1, t0 = − √ = − , t1 = √ =
3 3 3 3

e para n = 2 (3 pontos): (p. 313)


Z 1
r ! r !
5 3 8 5 3
I= F (t) dt = F − + F (0) + F
−1 9 5 9 9 5

Segundo o teorema 21 (p. 315) temos que


“Fixado um natural n, o ponto ti para a quadratura gaussiana é a i−ésima
raiz (zero) do polinômio de Legendre de ordem n”.
Nas telas podemos confirmar os dados anteriores

com a ressalva de que na calculadora é n + 1 no lugar de n.


Agora só nos resta encontrar os coeficientes Ai dados pela fórmula:
2
Ai =
(1 − t2 ) ·
i
[ p′n (ti ) ]2
onde p′
n
(ti ) é o valor da derivada de pn (t) avaliada no ponto ti .

316
Na tela a seguir

programamos a fórmula
2
Ai =
(1 − t2 )
i
· [ p′n (ti ) ]2
onde p′
n
(ti ) é o valor da derivada de pn (t) avaliada no ponto ti .
Nas telas do centro e direita confirmamos os Ai que aparecem em
√ √
1 3 1 3
A0 = A1 = 1, t0 = − √ = − , t1 = √ =
| {z } 3 3 3 3
Aqui

e Z r ! r !
1
5 3 8 5 3
I= F (t) dt = F − + F (0) + F
−1 9 5 9 9 5
Observe que em cada caso ao digitarmos t na linha de entrada teremos
uma lista com os respectivos coeficientes ti , veja:

Após todo este esforço − e ainda não terminamos − fazemos questão de


confirmar alguns dados constantes na tabela da página 314, fazemos isto na
página seguinte:

317
Nas telas a seguir

confirmamos as linhas n = 1 e n = 2 na tabela a seguir

n i ti Ai

1 1; 0 ±0. 57735027 1

2 0; 1 ±0. 77459667 5/9


2 0 8/9

3 0; 1 ±0. 86113631 0. 34785484


2; 3 ±0. 33998104 0. 65214516

Nas telas a seguir

confirmamos a linha n = 3 na tabela acima.

318
Programando a fórmula da quadratura gaussiana
Creio que já dispomos das principais ferramentas para implementar a
quadratura gaussiana. Na tela a seguir temos o programa que faz isto

no centro e à direita temos duas simulações.


Nota: A instrução QGL(n) assinalada a seguir

−→

tem por objetivo gerar as listas dos coeficientes Ai e ti , como vemos na tela
da direita.
Como mais um exemplo de aplicação do programa, vamos calcular a
integral Z 4
log x + x2
dx
2 (x + 3)2
Nas duas primeiras telas a seguir

calculamos a integral para n = 2 e n = 3, respectivamente. Na tela da


direita temos o valor dado pela calculadora. Observe que com apenas n = 3
(4 pontos) já obtemos o valor da calculadora.

319
No quadro a seguir

R. Trapézios Simpson 1/3 Simpson 3/8

Trapézios
Q. Gaussiana HP Prime Simpson 1/3
Simpson 3/8
Gauss
↑ erros

comparamos o valor da integral


Z 4
log x + x2
dx
2 (x + 3)2

em todas as técnicas vistas (com n = 6), na última tela temos os erros


cometidos − tomando-se o valor da calculadora como referência.

320
3.2.5 Integral dupla
Seja o problema de calcular a integral dupla a seguir:
Z Z
I= f (x, y) dx dy
D

onde D é o retângulo delimitado por:

a≤x≤b
c≤y≤d

O teorema seguinte afirma que o cálculo da integral dupla de uma função


contı́nua é realizado por meio de uma integral iterada, e em qualquer ordem.

Teorema 22 (Fubini). Se f : [ a, b ] × [ c, d ] → R é uma função contı́nua,


então
Z Z Z bh Z d i Z dh Z b i
f (x, y) dA = f (x, y) dy dx = f (x, y) dx dy
[ a, b ]×[ c, d ] a c c a

Veremos que as regras apresentadas anteriormente podem ser usadas no


presente contexto. Inicialmente fazemos uma partição do retângulo anterior
em nx subintervalos em [ a, b ] e em ny subintervalos em [ c, d ], assim:

yn = d
p

yn−1
p

.. ..
. . (xi , yj )
yj s
p

.. .. ··· ···
. .
y1
p

y0 = c
p

p p p p p p x
x0 = a x1 x2 ··· xi ··· xn−1 xn = b

Na verdade o n que comparece no eixo x é nx e o n que comparece no


eixo y é ny (não são necessariamente iguais).

321
Pois bem, supondo f contı́nua podemos utilizar o teorema de Fubini e
escrever Z Z Z b Z d
I= f (x, y) dx dy = dx f (x, y) dy
D a c
Rd
Chamando c f (x, y) dy de G(x), isto é
Z d
G(x) = f (x, y) dy (3.14)
c

podemos escrever:
Z b
I= G(x) dx
a
Para resolver esta integral simples aplicaremos a segunda regra de Simpson
R xn
x0 f (x) dx ∼
= 3h
8 [ y0 + 3y1 + 3y2 + 2y3 + 3y4 + 3y5 + 2y6 + · · · + 3yn−2 + 3yn−1 + yn ]

Então
3h
I= G(x0 ) + 3G(x1 ) + 3G(x2 ) + 2G(x3 ) + 3G(x4 ) + 3G(x5 ) + 2G(x6 )
8

· · · + 3G(xn−2 ) + 3G(xn−1 ) + G(xn ) (3.15)

Da equação (3.14), temos:


Z d
G(xi ) = f (xi , y) dy ; (i = 0, 1, 2, . . . , nx) (3.16)
c

Para cada i fixo, devemos calcular a integral da função (de uma única va-
riável) f (xi , y) no intervalo [ c, d ].

yn = d
p

yn−1
p

.. ..
. . (xi , yj )
yj s
p

.. .. ··· ···
. .
y1
p

y0 = c
p

p p p p p p x
x0 = a x1 x2 ··· xi ··· xn−1 xn = b

322
Para resolver esta integral em y
Z d
G(xi ) = f (xi , y) dy ; (i = 0, 1, 2, . . . , nx)
c

utilizaremos a primeira regra de Simpson:


R xn
x0 f (x) dx ∼
= h
3 [ f (x0 ) + 4f (x1 ) + 2f (x2 ) + 4f (x3 ) + · · · + 2f (xn−2 ) + 4f (xn−1 ) + f (xn ) ]

Então
h
G(xi ) = f (xi , y0 ) + 4f (xi , y1 ) + 2f (xi , y2 ) + 4f (xi , y3 ) + 2f (xi , y4 )
3

+ · · · + 2f (xi , yn−2 ) + 4f (xi , yn−1 ) + f (xi , yn )

Observe que temos nx + 1 desta equações; ademais, observe que como esta-
mos particionando o intervalo [ c, d ] em ny subintervalos

yn = d
p

yn−1
p

.. ..
. . (xi , yj )
yj s
p

.. .. ··· ···
. .
y1
p

y0 = c
p

p p p p p p x
x0 = a x1 x2 ··· xi ··· xn−1 xn = b

a rigor temos (i = 0, 1, 2, . . . , nx)

h
G(xi ) = f (xi , y0 ) + 4f (xi , y1 ) + 2f (xi , y2 ) + 4f (xi , y3 ) + 2f (xi , y4 )
3

+ · · · + 2f (xi , yny−2 ) + 4f (xi , yny−1 ) + f (xi , yny )

323
Pois bem, substituindo (i = 0, 1, 2, . . . , nx)

h
G(xi ) = f (xi , y0 ) + 4f (xi , y1 ) + 2f (xi , y2 ) + 4f (xi , y3 ) + 2f (xi , y4 )
3

+ · · · + 2f (xi , yny−2 ) + 4f (xi , yny−1 ) + f (xi , yny )

nesta equação (eq. (3.15), p. 322)

3h
I= G(x0 ) + 3G(x1 ) + 3G(x2 ) + 2G(x3 ) + 3G(x4 ) + 3G(x5 ) + 2G(x6 )
8

· · · + 3G(xn−2 ) + 3G(xn−1 ) + G(xn )

e tendo em conta que


h
G(xi ) = f (xi , y0 ) + 4f (xi , y1 ) + 2f (xi , y2 ) + 4f (xi , y3 ) + 2f (xi , y4 )
3

+ · · · + 2f (xi , yn−2 ) + 4f (xi , yn−1 ) + f (xi , yn )

obtemos:

 hy

I= 3hx
8 3
F (x0 , y0 ) + 4F (x0 , y1 ) + 2F (x0 , y2 ) + 4F (x0 , y3 ) + ···+ 4F (x0 , yn−1 ) + F (x0 , yn )

+ 3· hy
3
F (x1 , y0 ) + 4F (x1 , y1 ) + 2F (x1 , y2 ) + 4F (x1 , y3 ) + ···+ 4F (x1 , yn−1 ) + F (x1 , yn )

+ 3· hy
3
F (x2 , y0 ) + 4F (x2 , y1 ) + 2F (x2 , y2 ) + 4F (x2 , y3 ) +···+ 4F (x2 , yn−1 ) + F (x2 , yn )

+ 2· hy
3
F (x3 , y0 ) + 4F (x3 , y1 ) + 2F (x3 , y2 ) + 4F (x3 , y3 )+···+ 4F (x3 , yn−1 ) + F (x3 , yn )

+ 3· hy
3
F (x4 , y0 ) + 4F (x4 , y1 ) + 2F (x4 , y2 ) + 4F (x4 , y3 )+···+ 4F (x4 , yn−1 ) + F (x4 , yn )

+ 3· hy
3
F (x5 , y0 ) + 4F (x5 , y1 ) + 2F (x5 , y2 ) + 4F (x5 , y3 )+···+ 4F (x5 , yn−1 ) + F (x5 , yn )

+ 2· hy
3
F (x6 , y0 ) + 4F (x6 , y1 ) + 2F (x6 , y2 ) + 4F (x6 , y3 )+···+ 4F (x6 , yn−1 ) + F (x6 , yn )
·····································································
hy

+ 3· 3
F (xn−2 , y0 ) + 4F (xn−2 , y1 ) + 2F (xn−2 , y2 ) + 4F (xn−2 , y3 )+···+ F (xn−2 , yn )

+ 3· hy
3
F (xn−1 , y0 ) + 4F (xn−1 , y1 ) + 2F (xn−1 , y2 ) + 4F (xn−1 , y3 )+···+ F (xn−1 , yn )

hy

+ 3
F (xn , y0 ) + 4F (xn , y1 ) + 2F (xn , y2 ) + 4F (xn , y3 )+···+ 4F (xn , yn−1 ) + F (xn , yn )

324
Arrumando a casa obtemos:
hy
 
I= 3hx
8
· 3
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 (xn−2 , y0 ) + 4F (xn−2 , y1 ) + 2F (xn−2 , y2 ) + 4F (xn−2 , y3 )+···+ F (xn−2 , yn )

+ 3· F (xn−1 , y0 ) + 4F (xn−1 , y1 ) + 2F (xn−1 , y2 ) + 4F (xn−1 , y3 )+···+ F (xn−1 , yn )

+ 1· F (xn , y0 ) + 4F (xn , y1 ) + 2F (xn , y2 ) + 4F (xn , y3 )+···+ 4F (xn , yn−1 ) + F (xn , yn )

Na matriz 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 equação vamos antes fazer um programa que calcule
uma matriz com os valores da função em todos os vértices da malha de
partição, isto é

F (xi , yj ) ; (i = 0, 1, 2, . . . , nx), (j = 0, 1, 2, . . . , ny)

Ou ainda

 
F (x0 , y0 ) F (x0 , y1 ) F (x0 , y2 ) ... F (x0 , yny )
 
 F (x , y ) F (x , y ) F (x , y ) . . . F (x1 , yny ) 
 1 0 1 1 1 2 
 

 ... ... ... ... ... 

F (xnx , y0 ) F (xnx , y1 ) F (xnx , y2 ) . . . F (xnx , yny )

325
O programa a seguir calcula a matriz anterior

Nota: Ver concatenação da função map, p. 155.


Na tela da direita temos uma simulação para a seguinte integral dupla
Z π/2 Z 0,4
I= (y 2 + y) cos x dy dx
0 0

onde

 0 ≤ y ≤ 0, 4
f (x, y) = (y 2 + y) cos x e D:
 0 ≤ x ≤ π/2

Recebemos na saida do programa 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

− Na figura a seguir plotamos (esquerda) a malha da partição e, na figura


da direita, os valores f (xi , yj ) de acordo com a matriz anterior, assim:

f (x, y) f (x, y)

0,1
r 0,2
r 0,3
r 0,4
0 r r y r y

π r r r r r π r
6 6

π r r r r r π r
3 3

π r r r r r π r r r r r
2 2
x x

326
Finalmente, para o programa que calcula a integral dupla podemos salvar
o programa anterior com outro nome, digamos, I− Dupla, e completar como
na tela a seguir

Na tela da direita temos uma simulação para a seguinte integral dupla


Z π/2 Z 0,4
I= (y 2 + y) cos x dy dx (3.17)
0 0

Nota: No programa acima CPRS é programa que calcula os coeficientes da


primeira regra de Simpson (p. 305), lembramos que n (no caso ny) deve ser
múltiplo de 2; por outro lado, CSRS é programa que calcula os coeficientes
da segunda regra de Simpson (p. 307), lembramos que n (no caso nx) deve
ser múltiplo de 3.
Na tela a seguir mostramos a sintaxe para o cálculo da integral dupla
pela calculadora

na tela do centro calculamos a integral dada em (3.17), na tela da direita


pedimos uma aprroximação com quatro decimais, para efeito de comparação.
Nas telas a seguir vemos mais um exemplo

327
3.3 Equações Diferenciais Ordinárias
Introdução:
Nesta seção implementaremos as principais regras para a resolução nu-
mérica de equações diferenciais ordinárias− as quais constam nos livros de
Cálculo Numérico.
Antes, veremos alguns resultados do Cálculo que serão necessários pos-
teriormente.

Regra da Cadeia Para Derivadas


Teorema 23 (Regra da Cadeia de Duas Variáveis). Se x = x(t) e y = y(t)
forem diferenciáveis
 em t e se z = f (x, y) for diferenciável no ponto (x, y) =
x(t), y(t) , então z = f (x(t), y(t)) é diferenciável em t e

dz ∂z dx ∂z dy
= +
dt ∂x dt ∂y dt
onde as derivadas ordinárias são calculadas em t e as derivadas parciais em
(x, y).

Derivação implı́cita
Considere o caso especial em que z = f (x, y) é uma função de x e y e
y é uma função diferenciável de x. Então a equação anterior passa a ser:
dz ∂f dx ∂f dy ∂f ∂f dy
= + = + (3.18)
dx ∂x dx ∂y dx ∂x ∂y dx

Nota: O material a seguir − Fórmula de Taylor − foi retirado de um outro


livro nosso ([7]), aqui fazemos apenas um resumo, para mais detalhes e
provas dos teoremas sugerimos, a quem interessar possa, a citada referência.

328
Fórmula de Taylor
Os polinômios estão entre as funções mais simples que se estudam na
Análise. São adequados para cálculos computacionais porque os seus valores
são obtidos pela efetivação dum número finito de multiplicações e adições.

P (x) = a0 + a1 x + a2 x2 + a3 x3 + · · · + an xn

Muitas funções que surgem nas aplicações da Matemática a outras áreas


da ciência não são funções polinomiais. Nesta seção mostraremos como
aproximar uma função por polinômios; se a diferença entre uma função e
sua aproximação polinomial é suficientemente pequena, então podemos, com
vistas às aplicações práticas, operar com o polinômio em vez de o fazer com
a função original.

Ademais, e não menos importante, os


circuitos aritméticos dos computadores rea-
lizam apenas a operação de adição (as ou-
tras operações podem ser implementadas a
partir de circuitos somadores). Como então
realizar cálculos mais complicados?.

Vamos iniciar por passos, vejamos o caso mais simples.

Polinômio de Taylor de Ordem 1


Seja f uma função derivável em x0 e seja T dada por

T (x) = f (x0 ) + f ′ (x0 ) (x − x0 )



O gráfico de T é a reta tangente ao gráfico de f no ponto x0 , f (x0 ) .

y 
f x0 , f (x0 )

f (x) ⇓
T
T (x) − f (x0 ) = f ′ (x0 ) (x − x0 )

f (x0 ) s

x
x0 x

329
Para cada x ∈ Df (domı́nio da função), seja E(x) o erro que se comete
na aproximação de f (x) por T (x), assim:

E(x) = f (x) − T (x), x ∈ Df

Ou ainda

E(x) = f (x) − f (x0 ) + f ′ (x0 ) (x − x0 ) , x ∈ Df

Geometricamente, temos

y 
x0 , f (x0 )

f (x) ⇓
E(x) T (x) − f (x0 ) = f ′ (x0 ) (x − x0 )
T (x)

E(x) = f (x) − T (x)


f (x0 ) s
E(x) = f (x) − f (x0 ) − f ′ (x0 ) (x − x0 )
f
x
x0 x
T

O polinômio
P (x) = f (x0 ) + f ′ (x0 ) (x − x0 )
denomina-se polinômio de Taylor de ordem 1 de f em torno de x0 .
O próximo teorema fornece-nos uma expressão para o erro

E(x) = f (x) − f (x0 ) + f ′ (x0 ) (x − x0 ) , x ∈ Df

em termos da segunda derivada de f .


Teorema 24. Seja f derivável até 2.a ordem no intervalo I e sejam x0 , x ∈ I.
Então, existe pelo ao menos um ponto c̄ no intervalo aberto ] x0 , x [ ( ou
] x, x0 [ ) tal que
f ′′ (c̄)
f (x) = f (x0 ) + f ′ (x0 ) (x − x0 ) + (x − x0 )2
2

Comparando com

E(x) = f (x) − f (x0 ) + f ′ (x0 ) (x − x0 ) , x ∈ Df

temos
f ′′ (c̄)
E(x) =(x − x0 )2
2
para algum c̄ no intervalo aberto ] x0 , x [ ( ou ] x, x0 [ ).

330
Polinômio de Taylor de Ordem 2
O polinômio de Taylor de ordem 2 de f em torno de x0 é dado por

f ′′ (x0 )
P (x) = f (x0 ) + f ′ (x0 )(x − x0 ) + (x − x0 )2
2
Vamos mostrar, através de um exemplo, que o polinômio de Taylor de
ordem 2 aproxima melhor f do que o polinômio de Taylor de ordem 1.
Exemplo: Seja f (x) = ex . Determine os polinômios de Taylor de ordem 1
e 2, de f em torno de x0 = 0. Esboce os gráficos de f e dos polinômios.
Solução: Indiquemos por P1 e P2 os polinômios pedidos. Então

P1 (x) = f (x0 ) + f ′ (x0 )(x − x0 )

e
f ′′ (x0 )
P2 (x) = f (x0 ) + f ′ (x0 )(x − x0 ) + (x − x0 )2
2
Temos
f (x) = ex , f ′ (x) = ex , f ′′ (x) = ex
logo, f (0) = f ′ (0) = f ′′ (0) = 1. Fazendo as substituições devidas, temos

P1 (x) = f (x0 ) + f ′ (x0 )(x − x0 )

= f (0) + f ′ (0)(x − 0) = 1 + x

e
f ′′ (x0 )
P2 (x) = f (x0 ) + f ′ (x0 )(x − x0 ) + (x − x0 )2
2
f ′′ (0) 1
= f (0) + f ′ (0)(x − 0) + (x − 0)2 = 1 + x + x2
2 2

ex P2
P2 P1 f (x) = ex

P1 (x) = 1 + x
ex
P2 (x) = 1 + x + 12 x2
P1

331
Deixamos como exercı́cio ao leitor a análise das seguintes tabelas:

x → 0− 0+ ← x

onde
Erro1(x) = |f (x) − P1 (x)| e Erro2(x) = |f (x) − P2 (x)|
Seja P2 o polinômio de Taylor de ordem 2 de f numa vizinhança de x0 .
Para cada x em Df seja E(x) o erro cometido na aproximação de f (x) por
P2 (x). Por exemplo

y

x0 , f (x0 ) = (1, ln 1) = (1, 0)

f (x) = ln x
f

f (x)
P2 (x) = x − 1 − 21 (x − 1)2
E(x)
P (x)
s x E(x) = f (x) − P2 (x)
x0 x

P2

Assim, para todo x ∈ Df , temos


f ′′ (x0 )
f (x) = f (x0 ) + f ′ (x0 )(x − x0 ) + (x − x0 )2 + E(x)
2
De outro modo
 
′ f ′′ (x0 )
E(x) = f (x) − f (x0 ) + f (x0 )(x − x0 ) + (x − x0 )2
2
O próximo teorema fornece-nos uma expressão para o erro E(x) em ter-
mos da terceira derivada de f .

332
Teorema 25. Seja f derivável até 3.a ordem no intervalo I e sejam x0 , x ∈ I.
Então, existe pelo ao menos um ponto c̄ no intervalo aberto ] x0 , x [ ( ou
] x, x0 [ ) tal que

f ′′ (x0 ) f ′′′ (c̄)


f (x) = f (x0 ) + f ′ (x0 )(x − x0 ) + (x − x0 )2 + (x − x0 )3
2 3!

Comparando com a equação


 
′ f ′′ (x0 ) 2
E(x) = f (x) − f (x0 ) + f (x0 )(x − x0 ) + (x − x0 )
2
temos
f ′′′ (c̄)
E(x) = (x − x0 )3
3!
para algum c̄ no intervalo aberto ] x0 , x [.
Limitante para o erro: Seja f derivável até 3.a ordem no intervalo I e seja
x0 ∈ I. Suponha que existe M > 0 tal que |f ′′′ (x)| ≤ M para todo x ∈ I,
então para todo x em I se verifica
M
|f (x) − P (x)| ≤ |x − x0 |3
3!
onde P (x) é o polinômio de Taylor de ordem 2 de f em torno de x0 , isto é

f ′′ (x0 )
P (x) = f (x0 ) + f ′ (x0 ) (x − x0 ) + (x − x0 )2
2
∗ ∗ ∗

Taylor
Devolve a expansão da série de Taylor de uma expressão num ponto ou
no infinito (por predefinição, em x = 0 e com ordem relativa=5). Sı́ntaxe

taylor(Expr, [Var=Value], [Order])

333
Exemplo: Vamos calcular − para efeitos de comparação − os polinômios
1
de Taylor P1 e P2 para a função f dada por f (x) = no intervalo
1−x
|x| < 1 e em torno de x0 = 0.
Solução: Temos
P1 (x) = f (x0 ) + f ′ (x0 ) (x − x0 )
e
f ′′ (x0 )
P2 (x) = f (x0 ) + f ′ (x0 )(x − x0 ) + (x − x0 )2
2
Temos
1 1 2
f (x) = , f ′ (x) = , f ′′ (x) =
1−x (1 − x)2 (1 − x)3

ainda
f (x0 ) = f (0) = 1, f ′ (0) = 1, f ′′ (0) = 2
Sendo assim, temos

P1 (x) = f (x0 ) + f ′ (x0 ) (x − x0 )

= 1 + 1 (x − 0) = 1 + x

e
f ′′ (x0 )
P2 (x) = f (x0 ) + f ′ (x0 )(x − x0 ) + (x − x0 )2
2
2
= 1 + 1(x − 0) + (x − 0)2 = 1 + x + x2
2

A seguir temos a representação geométrica de f , P1 e P2 .

y
f
P2
1
f (x) =
1−x
P1

P1 (x) = 1 + x

s
P1 (x) = 1 + x + x2
¬−1 ¬1 x

334
Nas tabelas a seguir comparamos os erros quando aproximamos f por
P1 e por P2 − em pontos numa vizinhaça de x0 = 0.

↑ ↑

onde
e1(x) = |f (x) − P1 (x)| e e2(x) = |f (x) − P2 (x)|
e1
Na última linha da tabela exibimos o quociente entre os dois erros. Por
e2
exemplo, observe que no ponto x = −0.05 temos e1 = 20 · e2, e no ponto
x = 0.025 temos e1 = 40 · e2.

∗ ∗ ∗

Taylor do quociente
Apresenta o polinómio de Taylor de grau n para o quociente de dois
polinômios. Sı́ntaxe

divpc(Poly1,Poly2,Integer)

335
Polinômio de Taylor de Ordem n
Seja f derivável até a ordem n no intervalo I e seja x0 ∈ I. O polinômio

f ′′ (x0 ) f (n) (x0 )


P (x) = f (x0 ) + f ′ (x0 )(x − x0 ) + (x − x0 )2 + · · · + (x − x0 )n
2! n!
denomina-se polinômio de Taylor, de ordem n, de f em torno de x0 .
O polinômio de Taylor, de ordem n, de f em torno de x0 é o único
polinômio de grau no máximo n que aproxima localmente f em torno de
x0 de modo que o erro E(x) tenda a zero mais rapidamente que (x − x0 )n ,
quando x → x0 . (Verifique).
O polinômio de Taylor, de ordem n, de f em torno de x0 = 0 denomina-se
também polinômio de Maclaurin, de ordem n, de f .
Exemplo: Determine os polinômios de Taylor de ordem 1 até a ordem 4,
de f (x) = ex em torno de x0 = 0. Plote os gráficos.
Solução: Observe que calculando o polinômio de Taylor de ordem 4 obtemos
todo os anteriores. Temos

f ′′ (0) f ′′′ (0) f (4) (0)


P4 (x) = f (0)+f ′ (0)(x−0)+ (x−0)2 + (x−0)3 + (x−0)4
2! 3! 4!
Então
f (x) = ex ⇒ f (0) = 1
f ′ (x) = ex ⇒ f ′ (0) = 1
f ′′ (x) = ex ⇒ f ′′ (0) = 1
f ′′′ (x) = ex ⇒ f ′′′ (0) = 1
f (4) (x) = ex ⇒ f (4) (0) = 1

336
Substituindo, resulta
1 2 1 1
P4 (x) = 1 + x + x + x3 + x4
2 3! 4!

y y
f f
P2 (x) = 1+x+ 12 x2

P1 (x) = 1+x

s s

x x
0 0

y y
f f
P3 (x) = 1+x+ 21 1
x2 + 3! x3
P4 (x) = 1+x+ 21 x2 + 3!
1 3 1 4
x + 4! x

s s

x x
0 0

Nota: Os polinômios de Taylor vão colando cada vez mais no gráfico de f


à medida que n aumenta.

Teorema 26 (Fórmula de Taylor com resto de Lagrange). Seja I = [ a, b ]


e seja f : I → R tal que f e suas derivadas f ′ , f ′′ , . . . , f (n) existam e sejam
contı́nuas em I, e f (n+1) exista em ] a, b [. Seja x0 ∈ I um ponto fixado.
Dado x em I, x 6= x0 existe um ponto c entre x e x0 tal que

f ′′ (x0 )
f (x) = f (x0 ) + f ′ (x0 )(x − x0 ) + (x − x0 )2
2!

f (n) (x0 ) f (n+1) (c)


+ ··· + (x − x0 )n + (x − x0 )n+1
n! (n + 1)!

337
Definição 14. Uma equação diferencial ordinária de ordem n é uma equação
da seguinte forma

F x, y(x), y ′ (x), y ′′ (x), . . . , y (n) (x) = 0

onde constam a função incógnita y = y(x) e suas derivadas até a ordem n.

Exemplos: A seguir vemos algumas equações diferenciais ordinárias, onde:

dy d2 y
y′ = , y ′′ = 2 , . . .
dx dx
dy
a) = 2x + 3, de ordem 1;
dx

d2 y dy
b) y 2
+ 3x = x − 2, de ordem 2;
dx dx

d2 θ g
c) 2
+ sen θ = 0.
dt L
Esta equação, de ordem 2, e não linear − devido a presença do termo
sen θ − modela a oscilação de um pêndulo.

d4 y d3 y d2 y dy
d) 4
+ 3+ 2+ + y = 1, de ordem 4.
dx dx dx dx

3.3.1 Problema de valor inicial (PVI)


Definição 15. Um problema de Valor Inicial (PVI) de primeira ordem con-
siste de uma equação diferencial y ′ = f (x, y), x ≥ x0 , e uma condição
inicial y(x0 ) = y0 , onde y0 é um valor dado, chamado de valor inicial.

Resumimos da seguinte forma:


(
y ′ = f (x, y)
PV I : (3.19)
y(x0 ) = y0

Não é possı́vel, em geral, encontrar a solução analı́tica y = y(x) do PVI


por manipulação simbólica da equação diferencial, daı́ a necessidade de mé-
todos numéricos como os que serão aqui desenvolvidos.
Para resolver numericamente um PVI devemos inicialmente discretizar o
intervalo [ a, b ]:

a = x0 < x1 < x2 < · · · < xn−1 < xn = b

Ao conjunto acima denomina-se uma partição do intevalo [ a, b ].

338
Para obter uma partição (regular) do intervalo [ a, b ] em N subintervalos
de mesmo comprimento, fazemos h = b−a N , no que resulta

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

[ ] x
a = x0 x1 x2 ... xn−1 xn = b
h h h

Importante: Convenciona-se usar a notação y(xn ) (n = 0, 1, 2, . . .)


para indicar a solução exata do PVI nos pontos da partição, graficamente:

f (x)

y(xn ) y(x)

y(x0 )

h h ... h

x
0 a = x0 x1 x2 xn−1 xn = b

Por outro lado a notação yn (x) é reservada para a solução numérica


aproximada do PVI.

f (x) solução exata


y(x)
ւ
y(xn )
←− yn (x) solução aproximada

y(x0 ) = y0

...

x
0 a = x0 x1 x2 xn−1 xn = b

A solução numérica yn (x) é a funçao linear por partes, cujo gráfico é uma
poligonal com vétices nos pontos (xn , yn ), onde yn será calculado utilizando-
se algum dos métodos numéricos que serão dados logo mais.

339
Nota: É um resultado da Análise Matemática que dada qualquer função
contı́nua em um intervalo fechado [ a, b ] esta função pode ser aproximada −
com qualquer precisão que se deseje − por uma “função poligonal”.
De outro modo: dada qualquer f , contı́nua em um intervalo [ a, b ], existe
uma poligonal g arbitrariamene próxima de f no seguinte sentido:

d(f, g) = max |f (x) − g(x)| : x ∈ [ a, b ] < ε

onde ε > 0 é qualquer precisão arbitrariamene fixada. d(f, g) é a distância


entre as funções f e g.
Erro local: o erro local, cometido nas aproximações em cada ponto da
partição, é a diferença entre o valor exato da solução da equação diferencial
e o valor numérico aproximado, isto é:

e(xn ) = y(xn ) − yn , n = 0, 1, 2, . . . , N. (3.20)

Observe a “geometria do erro” no gráfico anterior.

Métodos baseados em série de Taylor


Vamos adaptar os resultados da série de Taylor, vista anteriormente, aos
nossos propósitos. Considere f uma função contı́nua e, ademais, suponha-
mos que todas as suas derivadas existam no ponto x = x0 = xn . A série de
Taylor nas vizinhanças do ponto x0 = xn é reescrita como∗

f ′′ (xn )
f (x) = f (xn ) + f ′ (xn )(x − xn ) + (x − xn )2
2!
f (k) (xn )
+ ··· + (x − xn )k + · · ·
k!
Vamos truncar o desenvolvimento da série de Taylor no p-ésimo termo, e,
por um “abuso de notação”, vamos continuar usando o sinal de igualdade,
assim:

f ′′ (xn ) f (p) (xn )


f (x) = f (xn ) + f ′ (xn )(x − xn ) + (x − xn )2 + · · · + (x − xn )p
2! p!

Vamos agora considerar nesta expressão x = xn+1 = xn + h, ou ainda,


x − xn = h, então:

f ′′ (xn ) 2 f (p) (xn ) p


f (xn+1 ) = f (xn ) + f ′ (xn ) h + h + ··· + h (3.21)
2! p!

Há um teorema do Cálculo que afirma que a igualdade em questão é verdadeira em
um ponto x se e somente se lim Rn (x) = 0. Portanto, estamos admitindo que este seja
n → +∞
o caso.

340
Vamos reconsiderar o PVI:
(
y ′ = f (x, y)
y(x0 ) = y0
Admitindo como hipótese que a solução y(x) do PVI tenha derivadas
contı́nuas para todo x ∈ [ a, b ], então substituindo em (3.21), temos

y ′′ (xn ) 2 y (p) (xn ) p


y(xn+1 ) = y(xn ) + y ′ (xn ) h + h + ··· + h
2! p!
Usando a notação,
d
yn ∼
= y(xn ), yn′ = f (xn , yn ), yn′′ = f (xn , yn ), . . .
dx
Observe, yn ∼
= y(xn ) ⇒ yn+1 ∼
= y(xn+1 ), então

yn′′ 2 y (p)
yn+1 = yn + yn′ h + h + · · · + n hp
2! p!
Ou, reconfigurando a notação:

h2 ′′ hp (p)
yn+1 = yn + h yn′ + yn + · · · + y (3.22)
2! p! n
que é o método de Taylor de ordem p.

3.3.2 Método de Euler


O método de Euler para a solução aproximada do PVI consiste no desen-
volvimento da série de Taylor para p = 1:

yn+1 = yn + h yn′ (3.23)

como yn′ = f (xn , yn ), resulta: (Método de Euler)

yn+1 = yn + h f (xn , yn ) , (n = 0, 1, 2, . . .)

Interpretação Geométrica: O método de Euler, desenvolvido por volta


de 1768, é também conhecido como o método da reta tangente.
Vamos considerar como poderı́amos aproximar a solução y = y(x) do
PVI (3.19) (p. 338) próximo de x = x0 .
Sabemos que o gráfico da solução (p. 339) contém o ponto (x0 , y0 ) e, da
equação diferencial (do PVI), sabemos, também, que a inclinação da reta
tangente ao gráfico nesse ponto é y ′ = f (x0 , y0 ). Sendo assim, podemos

341
escrever uma equação para a reta tangente à curva solução em (x0 , y0 ), isto
é:
y = y0 + f (x0 , y0 )(x − x0 )

f (x)
reta tangente - solução aproximada: yn (x)
y1
y(x1 )
y0 y(x)
solução exata

x
0 x0 x1

A reta tangente é uma boa aproximação para a curva solução em um in-


tervalo suficientemente pequeno. Se x1 estiver suficientemente próximo de
x0 , podemos aproximar y(x1 ) pelo valor obtido substituindo-se x = x1 na
equação da reta tangente no ponto x = x0 ; isto é,

y1 = y0 + f (x0 , y0 )(x1 − x0 )

Para prosseguir, podemos tentar repetir o procedimento. Infelizmente,


não conhecemos o valor y(x1 ) da solução em x1 . O melhor que podemos
fazer é usar o valor aproximado dado acima, y1 , em seu lugar.
Encontramos, então, a reta passando no ponto (x1 , y1 ) com coeficiente
angular f (x1 , y1 ), isto é,

y = y1 + f (x1 , y1 )(x − x1 )

Para aproximar y(x) no próximo ponto x2 , usamos esta última equação,


obtendo:
y2 = y1 + f (x1 , y1 )(x2 − x1 )
Continuando este processo (algoritmo), usamos o valor de y calculado
em cada etapa para determinar o coeficiente angular para a aproximação
seguinte.
Generalizando os passos anteriores obtemos uma expressão geral para
yn+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, . . .)

342
Algoritmo
Dado o PVI:
(
y ′ = f (x, y)
y(x0 ) = y0
podem ser adotados os seguintes passos para sua resolução:
1) Declare:
(i) A função f (x, y);
(ii) condições iniciais: y(x0 ) = y0 ;
(iii) intervalo [ a, b ], onde a = x0 ;
b−a
(iv) número de subintervalos N e calcule h = N ;
2) Para n = 0, 1, . . . , N − 1, faça:
Calcule:
inı́cio
xn+1 = xn + h
yn+1 = yn + h f (xn , yn )
fim

Exemplo: Calcule, pelo método de Euler, a solução aproximada do seguinte


PVI:
(
y ′ = f (x, y) = y − x
y(x0 ) = y(0) = 2
para x ∈ [ a, b ] = [ 0, 1 ] e N = 4 subintervalos.
Solução: Inicialmente temos:
b−a 1−0 1
h= = = = 0. 25
N 4 4
A discretização do intevalo fica: (n = 0, 1, 2, 3, 4)

p p p p p x
x0 = 0 x1 = 1
x2 = 1
x3 = 3 x4 = 1
4 2 4

O método 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. 25 xn + 1. 25 yn

343
Então:
n = 0 ⇒ y1 = −0. 25 x0 + 1. 25 y0 = −0. 25 · 0 + 1. 25 · 2 = 2. 5000
n = 1 ⇒ y2 = −0. 25 x1 + 1. 25 y1 = −0. 25 · 0.25 + 1. 25 · 2. 5 = 3. 0625
n = 2 ⇒ y3 = −0. 25 x2 + 1. 25 y2 = −0. 25 · 0.50 + 1. 25 · 3. 0625 = 3. 7031
n = 3 ⇒ y4 = −0. 25 x3 + 1. 25 y3 = −0. 25 · 0.75 + 1. 25 · 3. 7031 = 4. 4414

Observe a geometria:
y4
y3
y2
y1
y0

p p p p p x
x0 = 0 1 1 3 x4 = 1
x1 = 4
x2 = 2
x3 = 4

Apenas para efeitos de comparação, a solução analı́tica (exata) da equa-


ção diferencial proposta é: y(x) = ex + x + 1. No gráfico fica assim:
y y
y(x) y(x)
4.7183 4.7183
p

p
yn (x)

2 2
p

1 1
p

x x
−1
p 0 p1 −1
p 0 p1

A tabela a seguir exibe a solução exata − calculada nos pontos da par-


tição −, a solução encontrada pelo método de Euler e o erro local.

n xi Sol. exata y(xn ) Sol. aprox. yn Erro = y(xn ) − yn


0 0. 00 2. 0 2. 0 0. 0
1 0. 25 2. 5340 2. 5000 0. 0340
2 0. 50 3. 1487 3. 0625 0. 0862
3 0. 75 3. 8670 3. 7031 0. 1639
4 1. 00 4. 7183 4. 4414 0. 2769

344
A seguir temos o programa que implementar o método de Euler

Nota: A função REPLACE encontra-se na página 84.


Na tela direita temos a simulação do exemplo visto anteriormente, com-
pare

n xi Sol. exata y(xn ) Sol. aprox. yn Erro = y(xn ) − yn


0 0. 00 2. 0 2. 0 0. 0
1 0. 25 2. 5340 2. 5000 0. 0340
2 0. 50 3. 1487 3. 0625 0. 0862
3 0. 75 3. 8670 3. 7031 0. 1639
4 1. 00 4. 7183 4. 4414 0. 2769

Nas tela a seguir

temos um outro exemplo, alteramos a função para

f (x, y) = x − y + 2

na tela da direita rodamos o programa para [ a, b, ] = [ 0, 1 ], N = 10 e


y0 = 2. Na saida temos

[ 2., 2., 2.01, 2.029, 2.0561, 2.0905, 2.1314, 2.1783, 2.2305, 2.2874, 2.3487 ]

345
3.3.3 Método de Taylor de ordem p = 2
Truncando o desenvolvimento da solução y(xn ) do PVI, em série de Tay-
lor, na ordem p = 2, obtemos um outro método ainda mais preciso que o de
Euler: (eq. (3.22), p. 341)

h2 ′′
yn+1 = yn + h yn′ + y (3.24)
2! n
No PVI
(
y ′ = f (x, y)
(3.25)
y(x0 ) = y0

façamos a seguinte mudança de notação: z = y ′ = f (x, y).


Sendo z = f (x, y) uma função de x e y e y é uma função x, isto é,
y = y(x), podemos usar a fórmula (3.18): (p. 328)
dz ∂f ∂f dy
= +
dx ∂x ∂y dx
para obter:
d ′ ∂f ∂f dy
(y ) = + = fx + fy y ′
dx ∂x ∂y dx
Ou ainda:
yn′′ = fx (xn , yn ) + fy (xn , yn ) yn′ (3.26)
Sendo que de (3.25), temos: y′
n
= f (xn , yn ). Estes resultados em (3.24) nos
fornecem:
h2
yn+1 = yn + h f (xn , yn ) + [ f (x , y ) + fy (xn , yn ) f (xn , yn ) ]
2! x n n
Exemplo: Calcule, pelo método de Taylor de ordem p = 2, a solução
aproximada 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.
Solução: Inicialmente temos:
b−a 1−0 1
h= = = = 0. 2
N 5 5
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

346
Substituindo estes resultados na equação deduzida anteriormente, temos:

h2
yn+1 = yn + h f (xn , yn ) + [ f (x , y ) + fy (xn , yn ) f (xn , yn ) ]
2! x n n
h2
yn+1 = yn + h (xn − yn + 2) + [ 1 + (−1) · (xn − yn + 2) ]
2!
Substituindo o valor de h = 0.2 e simplificando, obtemos:

yn+1 = 0.18 xn + 0.82 yn + 0.38

Então, para n = 0, 1, 2, 3, 4, obtemos:

y1 = 0.18 x0 + 0.82 y0 + 0.38 = 0.18 · 0 + 0.82 · 2 + 0.38 = 2.0200


y2 = 0.18 x1 + 0.82 y1 + 0.38 = 0.18 · 0.2 + 0.82 · 2.0200 + 0.38 = 2.0724
y3 = 0.18 x2 + 0.82 y2 + 0.38 = 0.18 · 0.4 + 0.82 · 2.0724 + 0.38 = 2.1514
y4 = 0.18 x3 + 0.82 y3 + 0.38 = 0.18 · 0.6 + 0.82 · 2.1514 + 0.38 = 2.2521
y5 = 0.18 x4 + 0.82 y4 + 0.38 = 0.18 · 0.8 + 0.82 · 2.2521 + 0.38 = 2.3707

O programa a seguir implementa o método de Taylor de ordem p = 2:

Na tela da direita resolvemos o exemplo anterior.


Vejamos mais um exemplo de aplicação do programa.
Exemplo: Calcule, pelo método de Taylor de ordem p = 2, a solução
aproximada do seguinte PVI:
 2y
 y ′ = f (x, y) =
 + (x + 1)3
x+1


y(x0 ) = y(0) = 3

para x ∈ [ a, b ] = [ 0, 1 ] e h = 0.2.

347
Solução: Temos N = b−a h = (1 − 0)/0.2 = 5. Alteramos o inı́cio do
programa anterior para que possamos entrar com a função, assim

Na tela da direita resolvemos o exemplo, o programa nos devolve o se-


guinte vetor:

[ 3.0000 4.6200 6.7779 9.5976 13.2222 17.8141 ]

A solução exata do PVI é dada por:


1
y(x) = [ (x + 1)4 + 5(x + 1)2 ]
2
1
Por exemplo, y(1) = 2 [ (1 + 1)4 + 5(1 + 1)2 ] = 18.

3.3.4 Métodos de Runge-Kutta


Se tentarmos prosseguir no método de taylor de ordem p (p. 341) sur-
gem alguns incovenientes computacionais; por exemplo, deveremos tratar
simultâneamente com várias funções − f e suas derivadas −, o que aumenta
significativamente o espaço ocupado na memória do computador. Apenas
para contextualizar, se, por teimosia, formos considerar a potência seguinte
(p = 3), além da equação (3.26) (p. 346), teremos ainda que considerar

yn′′′ = fxx + 2fxy f + f 2 fyy + fy fx + fy2 f (x , y )
n n

que, convenhamos, até para a HP Prime torna-se oneroso.


Estaremos agora considerando uma outra classe de métodos para a reso-
lução do PVI: Métodos de Runge-Kutta∗ . Esses métodos possuem precisão
equivalentes aos métodos de Taylor com a vantagem de que evitam a neces-
sidade do cálculo de derivadas de ordem elevada.


Carl David Tolmé Runge (1856-1927) e Wilhelm Kutta (1867-1944).

348
Método de Runge-Kutta de ordem 1
O método de Runge-Kutta mais simples é o de primeira ordem dado por:

yn+1 = yn + h k1 , k1 = f (xn , yn )

Ora, mas este método nada mais é que o de Euler dado à p. 341.

Método de Runge-Kutta de ordem 2


Este método consiste no seguinte algoritmo∗ :

 y = yn + h2 (k1 + k2 )
 n+1


k1 = f (xn , yn )




k2 = f (xn + h, yn + h k1 )

o qual também é conhecido como método de Euler aperfeiçoado.


O programa seguinte implementa o método em questão

Na tela da direita resolvemos o seguinte


Exemplo: Usando o método de Euler aperfeiçoado, calcule a solução 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.


Para a dedução (ou justificativa) deste, e dos métodos seguintes, o leitor poderá con-
sultar alguma das obras listadas nas referências.

349
Método de Euler modificado
Um outro método de Runge-Kutta também bastante utilizado é:
 
 yn+1 = yn + h f xn + h2 , yn + h2 k1
 k1 = f (xn , yn )
o qual é conhecido como método de Euler modificado.
O programa a seguir implementa este método

Nota: Observe que, diferentemente dos programas anteriores, agora esta-


mos definindo f como função e não como expressão (p. 25) − tanto faz.
Na tela da direita resolvemos o
Exemplo: Usando o método de Euler modificado, calcule a solução 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.
Utilizando a solução exata, y(x) = e−x + x + 1, construimos a seguinte
tabela − comparando os diversos métodos.

Euler Euler Taylor


n xi Sol. exata Euler
modificado aperfeiçoado 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

Inferimos que os métodos Euler modificado, Euler aperfeiçoado e Taylor


de ordem 2 nos fornecem os mesmos resultados; comparando com a solução
exata vemos que estes três métodos são superiores ao de Euler (Taylor de
ordem 1), como era de se esperar.

350
Método de Runge-Kutta de ordem 3
Este método consiste no seguinte algoritmo:


 yn+1 = yn + h9 (2k1 + 3k2 + 4k3 )





 k1 = f (xn , yn )



 k2 = f (xn + 12 h, yn + 1
2 hk1 )



k3 = f (xn + 34 h, yn + 3

4 hk2 )

O programa seguinte implementa o método em questão

Na tela da direita resolvemos o


Exemplo: Usando o método de Runge-Kutta de ordem 3, calcule a solução
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.

351
Método de Runge-Kutta de ordem 4
Dentre os métodos de Runge-Kutta o mais popular é o de ordem 4, dado
a seguir:

 y = yn + h6 (k1 + 2k2 + 2k3 + k4 )
 n+1




 k1 = f (xn , yn )




k2 = f (xn + 12 h, yn + 21 h k1 )






 k3 = f (xn + 12 h, yn + 21 h k2 )




k4 = f (xn + h, yn + hk3 )

Este método é muito difundido nas rotinas de cálculo de computadores.


O programa seguinte implementa o método em questão

Na tela da direita resolvemos o


Exemplo: Usando o método de Runge-Kutta de ordem 4, calcule a solução
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.

352
Utilizando a solução exata, y(x) = e−x + x + 1, construimos a se-
guinte tabela − comparando alguns métodos, incluindo os dois últimos de
Runge-Kutta.

Euler Taylor Runge-Kutta Runge-Kutta


n xi Sol. exata
modificado ordem 2 ordem 3 ordem 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 precisão foi obtida com o Runge-Kutta de ordem 4 que coincide


com a solução exata − com quatro casas decimais.
Vejamos mais um exemplo de aplicação do programa.
Exemplo: Usando o método de Runge-Kutta de ordem 4, calcule a solução
do PVI dado por:
 2y
 y ′ = f (x, y) =
 + (x + 1)3
x+1


y(x0 ) = y(0) = 3

para x ∈ [ a, b ] = [ 0, 1 ] e h = 0.2.
Solução: (Re)declarando a função no inı́cio do programa, assim

executando o programa com os dados do problema teremos na saida a tela


da direita:

[ 3.0000 4.6365 6.8203 9.6759 13.3476 17.9984 ]

353
Considerando a solução exata

1
y(x) = 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. 347)

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 ]

354
Referências Bibliográficas

[1] Manual: Calculadora Gráfica HP Prime.

[2] Barroso, Leônidas C. et alii. Cálculo Numérico (com aplicações), 2a edi-


ção. São Paulo: editora HARBRA ltda, 1987.

[3] Ruggiero, Márcia A. Gomes & Lopes, Vera Lúcia da Rocha. Cálculo
Numérico: aspectos teóricos e computacionais, 2a edição. São Paulo:
Pearson Makron Books, 1996.

[4] Arenales, Selma & Darezzo, Artur. Cálculo Numérico: Aprendizagem


com Apoio de Software. São Paulo: Thomson Learning, 2008.

[5] Cláudio, Dalcı́dio Moraes & Marins, Jussara Maria. Cálculo Numérico
Computacional: teoria e prática, 2a edição. São Paulo: Atlas, 1994.

[6] Silva, Gentil Lopes. Novas Sequências Aritméticas e Geométricas (Com


programação na HP Prime ). 2 a Edição, 2016. Publicação Eletrônica.

[7] Silva, Gentil Lopes. Análise Real (com espaços métricos). 1 a Edição,
2017. Publicação Eletrônica.

355
Índice Remissivo

Álgebra abstrata, Boyer, 26 PVI, 338


Taylor p = 2, 346
A curva de Peano, 218 Email Ariovaldo, 109
A Métrica Quântica, 214 Email Cleber, 110
A potência do Nada Email Ubi, 268
criação de sentido, 51 Eva mordeu a maçã, 41
A régua quântica, 216
Algoritmo, plota ponto no R3 , 264 Fórmula de Taylor, 329
Fórmula inédita, 184
Binômio de Newton, 252 Função Max, 18
Boole, 26 Função Min, 18

Chaitin, 7 Gaston Bachelard


Combinações, 112, 208 Brusca Mutação, 213
Concatenando map, 155 Gentil
Cubo hipermágico, 246 Algoritmo binário, 220
Curva de Peano no cubo, 242, 243, Fórmula binária, 221
249 Fórmula inédita, 184
George, Boole, 26
Definição Gráficos, 77
Curva de Peano, 218 Gregory Chaitin, 7
quadrado hipermágico, 233
Demultiplexação, 222 HP PRIME
Desafios Adendo (Resetar), 23
Um Belo Desafio, 40 apply, 83
-II, 94 Binômio de Newton, 253
Desafios (Solve), soluções, 92 Caixa de Ferramentas, 38
Desenvolvimento N -ário, 115 Comandos matrizes, 46
Diferença dividida, 283 FOR, 64, 65
Diferença Finita, 291 FOR-STEP, 66
Fração irredutı́vel (limite), 101
E.D.O. Fração parcial, 101
Método de Euler, 341 IF - THEN - ELSE - END, 75,
Métodos de Runge-Kutta, 348 76

356
IF - THEN - END, 74 Linearização de sequências triplas, 163
Listas, 34
MAKELIST, 36 Métrica Quântica, 214
MAKEMAT, 44 Maharaj, 267
map, 88 Matriz N -ária, 118
mapii, 89 Matriz Binária, 115
Matemática Financeira, 250 Matriz digital, 211
Matrizes, 41 Matriz Ternária, 117
Menus Toolbox, 38 Multiplexação, 223
Número inteiro, 103
Norbert Wiener, 269
Polar-Complexo, 101
Polar-Retangular, 101 Peacock, 26
Polinômio de Taylor, 333, 335 Plotando gráficos, 77
Polinômios, 95 Polinômio de Taylor de Ordem n, 336
remove, 90, 256 Produtórios, 55
REPLACE, 84 Produto dos termos P.A., 70
Resetar variável, 23 Produto termos P.A., 55
SIZE (distintos), 51
Solve, 91 Quadrado hipermágico, 233
Somatórios e produtórios, 52
Régua quântica, 216, 217
Tabela seno, 85
Réguas de Cálculo, 267
Tabela-Resumo, 93
Regra da Cadeia, 328
Vetores, 51
Resolver complexa, 102
WHILE, 71, 72
Runge-Kutta, 348
Zip, 89
Sequências duplas, 119
Imagem real e imagem virtual, 237, Subrotinas, 62
238
Imagem virtual, 238 Um pequeno interregno cultural, 212
Integração
Dupla, 321 Voltaire, 215
Primeira regra de Simpson, 305
Zeros, 102
Quadratura gaussiana, 309
Zeros de complexa, 102
Regra dos trapézios, 302
Segunda regra de Simpson, 307
Interpolação
De Gregory-Newton, 291
De Lagrange, 275
De Newton, 283
Fórmula de Gregory-Newton, 297
Fórmula de Newton, 288
polinomial, 271

Linearização de sequências duplas, 132

357