Você está na página 1de 307

Prefcio

O Excel considerado uma importante ferramenta de apoio aplicaes nas


reas de finanas, estatstica, administrao de empresas, cincias sociais e
tambm nos diferentes ramos das cincias exatas e na engenharia.

Os captulos deste livro discutem muitos mtodos numricos empregados para


a resoluo de problemas matemticos e tcnicos. Como um texto que
pretende mostrar as possibilidades que oferece o Excel para a resoluo de
problemas, evitamos geralmente as demonstraes detalhadas de muitas
frmulas mencionadas nos exemplos. Tais demonstraes podero ser
facilmente pesquisadas em textos mais especficos e avanados sobre o assunto
em questo.

Os pr-requisitos bsicos para que o leitor possa ler esse texto sem maiores
dificuldades so um curso introdutrio de clculo diferencial e integral, lgebra
linear e noes de computao. Conhecimentos rudimentares de fsica tambm
sero desejveis e alguns exemplos sero de natureza avanada. Mas a maioria
dos exemplos no exige nenhum conhecimento especial, pois trata-se neles de
temas do dia-a-dia de cada um de ns. O leitor dever ter conhecimentos
bsicos do Excel, se bem que as explicaes so suficientemente detalhadas
como para que o leitor, que no tenha tais experincias, tambm possa seguir
o texto.

Os exemplos sero apresentados simplesmente com o intuito de ilustrar e


explorar a potencialidade do sistema. O Excel dispe a partir da verso 5 de
facilidades de programao (VBA), que permitem o desenvolvimento de
operaes que necessitam de procedimentos iterativos, recursivos, condicionais
etc.

Nos primeiros captulos, usamos o Excel 2007 junto com o Excel 2003, para
suavizar a transio do segundo ao primeiro.

Nos anos 1992 at 1994 publiquei os seguintes livros em alemo sobre o tema
de "Spreadsheets" (planilhas eletrnicas).

1. Franz Josef Mehr "Spreadsheets, Tabellenkalkulation fr


Naturwissenschaftler", Vieweg-Verlag Braunschweig/Wiesbaden 1992
2. Franz Josef Mehr "91 Anwendungen mit Quatro Pro fr Windows",
Vieweg-Verlag Braunschweig/Wiesbaden 1993
3. Franz Josef Mehr "Excel 5 la carte"
Vieweg-Verlag Braunschweig/Wiesbaden 1994
O novo livro em portugus baseia-se, em grande parte, nessas publicaes.
Neste novo texto, estou levando em considerao os desenvolvimentos que o
Excel tem visto durante estes ltimos dez anos, especialmente no que se refere
ao uso do VBA.

No posso deixar de mencionar as muitas observaes valiosas e sugestes que


me foram feitas pela minha querida esposa que, tambm, ajudou a orientar-me
nesta no sempre fcil Terra Brasilis.

Itatiaia, dezembro de 2007

Franz Josef Mehr


Sumrio

Parte I Os fundamentos

Captulo 1 Um passeio pelo Excel 3


A rotao da seta 5
Deformao e movimento de um tringulo 7
Como lidar com os seus gastos? 13

Captulo 2 Trabalhar com macros, funes lgicas 19


Macros 21
Funes lgicas 25
Domingo de Pscoa 28
Segurana de Macros, Depurar o Cdigo 31

Captulo 3 Procedimentos (macros) 33


Adicionar um boto tipo formulrio (forms) 36
Recurso (Recursividade) 37
Trabalhar com as funes MsgBox e InputBox 39
Alguns comentrios sobre a palavra-chave DIM 43

Captulo 4 Juros, Taxas e tudo isso 45


Juros simples 45
Juros compostos 47
Juros contnuos 49
Pequeno tutorial para entrar no mundo das finanas 50
Pagamento em Parcelas 53

Captulo 5 Grficos com Excel 2007, Parte I 57


Os Bio-Ritmos 58
Sobreposio de grficos 61
Seleo de clulas longnquas (com F8 F5) 63
Bobina de Helmholtz 65
Difrao por uma fenda 68
Difrao por uma rede de N fendas 70
Escalas logartmicas 71

Captulo 6 Calendrio (exemplo de uma tabela ou matriz) 73


O Dia Juliano e o Calendrio Gregoriano 75
Parte II Matemtica I

Captulo 7 Divisibilidade (MDC e MMC) 83


Equaes do segundo grau 88
Equaes do segundo grau com VBA 90
Nmeros Complexos 94
Funes de nmeros complexos 97
Equaes do terceiro grau 98

Captulo 8 Mtodos iterativos para equaes no lineares 101


Usando Goal Seek (Atingir meta) 101
Mtodo de Heron 102
Mtodo de Newton-Raphson 104
Mtodo de Bolzano 107
Regula falsi 110
Mtodo de Gauss-Seidel 112
Aplicao de Gauss-Seidel 115

Captulo 9 Sries infinitas, e, Pi 119


A srie de Seno 119
O nmero de Euler e o mtodo de Horner 123
O nmero Pi 126
O algoritmo-Pi dos irmos Borwein 131
SOMASEQNCIA 133

Parte III Matemtica II

Captulo 10 lgebra de Matrizes (Arranjos) 137


Exemplo: Centro de massa 143
Sistemas de equaes lineares 146
Produto vetorial em R3 148
O Mtodo de Gauss 150

Captulo 11 lntegrao: Regra dos trapzios 153


lntegrao: Regra de Simpson 155
Aplicao: Sries de Fourier 156
Planilha des Excel 158
Interpolao: Newton 160
Interpolao: Lagrange 167
Algumas consideraes tericas 172

Parte IV Grficos avanados

Captulo 12 Curvas de Lissajous 177


A espiral 179
O ciclide 181
Representaes 3D 182
Desenhando uma flor 185
Partcula carregada num campo eletromagntico 186
Trabalhando com o clsMathParser 189
Funo definida por troos 191
Superfcies 3D em Excel 194
Elementos para criar um grfico 197

Parte V Matemtica III

Captulo 13 Regresso linear 203


Regresso parablica 208
Trabalhando com as equaes normais 210
Regresso com logaritmos 214

Captulo 14 Programao linear, trabalhando com o Solver 215


Anlise de dados 218
Distribuies 220
A inverso de 226
Intervalo de confiana 228
Amostras de tamanho pequeno 229
Intervalo de confiana para a distribuio t 231
Testes de hipteses 233
Comparao de mdias 235
Teste de Qui-Quadrado 236
Anlise de dados com PROJ.LIN 239
Regresso linear mltipla 240
Parte VI Matemtica IV

Captulo 15 Resoluo numrica de equaes diferenais 245


Mtodo de Euler para y' = f(x,y) 246
Modelo de crescimento logstico 249
Mtodos melhorados de Euler (Heun) 251
Mtodo de Runge-Kutta 254
Desintegrao radioativa 256
Equaes de Lotka e Volterra 260

Captulo 16 Equaes diferenciais de segunda ordem 263


Reduo de y" a duas equaes de 1a ordem 263
Oscilador harmnico forado e amortecido 267
Trajetria do planeta Mercrio 268
Espalhamento de partculas Alfa 272
Movimento num campo r-1 273
O tomo hidrognico 276

Parte VII Exemplos selecionados

Captulo 17 Queda de uma esfera atravs de um fluido 283


Pndulo com amplitude arbitrria 284
Sistema Terra-Lua-Sonda espacial 286
Osciladores acoplados 290
Qual a velocidade de uma bala no cano? 293
A vida difcil das bactrias 295
Passeio aleatrio de uma molcula 297
O efeito Compton 298
Circuito RLC com fonte alternada 300
A distribuio de Poisson 303

Parte VIII Caixas de dilogo

Captulo 18 Formulrios 307


Tringulo 310
Calculadora para nmeros complexos 311
ndice remissivo
#, 44
#N/D, 141

A
ABS, 84
Acesso Rpido, 62
ActiveCell, 38
ActiveX, 309
Adjacentes, no adjacentes, 63
Ala de preenchimento, 6
ALEATRIO, 25, 297
Amostras de tamanho pequeno, 229
Anlise de dados, 215, 218, 238
Anlise, ferramentas, 14
Analysis ToolPak, 85
Ano bissexto, 78
Application, 38, 96, 170
Arquimedes, 126
Arquivos seqenciais (lendo e gravando), 224
ARRED, 12
Assistente de Grfico, 62
ATAN, ATAN2, 96
Atingir meta (Goal Seek), 101, 215
Atn, 96, 158
tomo hidrognico, 276

B
Bala no cano, 293
Bactrias, 295
Bernoulli, Johann e Jakob, 181
Bhashara, 88
Bin, 219, 236
Bio-Ritmos, 58
Bobina de Helmholtz, 65
Borwein, 131
Boto, 22, 35,18_,
Boto, Yes/No, 90
By Val, 166
C
Caixas de dilogo, 307
Caixa de nome, 58
Calculadora para nmeros complexos, 311
Calendrio, 73
Campo eletromagntico, 186
Casas decimais, 74
Cardano, frmula de, 99
Case, 41
Cl, 75
Cells, 35, 92, 145, 149
Cells no adjacentes, 63
Clulas longnquas, 63
Central de Confiabilidade, 62
Centro de massa, 143
Chart, 192
ChartObjects, 198
Ciclide, 181
Circuito RLC, 300
Classe, 236
clsMathParser, 189
Coeficiente de confiana, 229
Coeficiente de correlao, 206
Colunas, 3
Compton, efeito de, 298
Computador, 128
Constante, 103
Constante de matriz, 137
CONT.NM, 164
Controles ActiveX, 309
CONVERT, 16
Coordenadas de um ponto, 9
Copiar, 6, 66
Copiar, 17, 67
Cores, do sistema 62
Cor de Fonte, 74
CORRESP, 170
Ctrl d (copiar), 66
Ctrl+Shift+Enter, 11, 89, 139
Curvas de Lissajous, 177, 185
Curvas paramtricas, 177

D
Dados, selecionar, 17_21
DATA, 59
Debug.Print, 30, 197, 12-21
Depurar, 30
Desenvolvedor, 32, 36
Desintegrao radioativa, 256
DESVAP, 219
Desvio padro, 208
Diagrama polar, 5-7
DIAS360, 46
Difrao por uma fenda, 68
Difrao por uma rede de N fendas, 70
DIM, 43, 149
DIM (chart), 149
DIM as Long, 129
Discriminante, 88
Disperso (XY), 4, 57
DIST.NORM, 221, 226, 236
Distribuio de Poisson, 303
Distribuio Normal, 221, 223, 227
Distribuio t, 230
Distribuies, 220
Divisibilidade, 83
Domingo de Pscoa, 28
Do While, 85

E
e (nmero de Euler), 49, 123, 224
Engenharia, Categoria, 97
Equao de Van der Pol, 263
Equao, segundo grau, 88
Equao, terceiro grau, 98
Equaes de Lotka e Volterra, 260
Equaes diferenciais, 245
Equaes diferenciais acopladas, 257, 268
Equaes diferenciais de segunda ordem, 263
Equaes no lineares, 101
Equaes normais, 210
Equaes paramtricas de um crculo, 179
Equaes paramtricas do ciclide, 181
Equaes, Sistemas de, 112
Error, 193
Erro padro, 206
Escalas logartmicas, 71
Esfera, queda de uma, 283
Espiral, 179ff
Euclides, algoritmo de, 83
Euler, 123, 246ff
Exit Sub, 39

F
Fatorial, 37, 119
Ferramentas de anlise, 15, 17, 215
Ferramentas, do grfico, 60
Fibonacci, 224
For, 36
Format, 121
Formatar grfico, 8
Formatar Tabela, 15
Frmula de Euler, 224
Frmula de Heun, 252
Frmula de recorrncia, 248
Frmula matricial, 14, 90, 137, 239
Formulrio, 307
Frmulas predefinidas, 7
FREQNCIA, 13, 219
Funo, 32, 87, 121
Funo de densidade, 220
Funo, inserir, 91
Funo, definida pelo usurio, 91
Funo logstica, 250
Funes complexas de Excel, 94
Funes de planilha de trabalho, 97, 100
fx, 4, 27
F8+F5, 63, 74
F11, 64

G
Goal Seek, 101
Gosset, W.S., 229
GoTo, 39
Grfico, 3, 57ff, 69
Grfico, separado da planilha, 61
Gregory Machin, 130

H
Heron, 101
Histograma, 15, 219
Horner, 123, 164, 212
Hipteses, testes de, 233
I
IF, 36, 38
IMSOMA, 97
Indexados, valores, 125
InputBox, 39, 94, 126
INT, 76
INT.CONFIANA, 229
Integrao, 153
Interferncia, 64
Interpolao, 153, 170
Interpolao de Lagrange, 167
Interpolao de Newton, 161ff
Intervalo de confiana, 228, 231
Inverso de , 226
INV(p;f), 230
INV.NORM, 227ff
INV.QUI, 236, 303
INVT, 241
Iterao, 102

J
Juros, simples, 33

K
L
LBound, 166
Lagrange, 167
Laplace, equao de, 116
Layout, 55
Leibniz, 130
Leitura, somente, 5
Linha de Tendncia, 209, 214
Linhas, 3
Lissajous, 177
Lista, 137
Logaritmos, 214
Loop (lao), 24, 36, 103
Lotka e Volterra, 260
M
Macro, 20, 32, 106
Manual, 26
Marcadores, 165, 168, 184
Match, 11, 169
Matriz, 73, 137ff
Matriz dinmica, 137, 13-11
MATRIZ.MULT, 11, 13, 147, 211
MATRIZ.INVERSO, 147, 211
MXIMO, 84
MDC, 83ff
MDIA, 12, 219, 235
Mdia amostral, 218
Mensagem de erro 13, 94, 146
Mercrio, 268
Mesclar Clulas, 4
Mtodo da falsa posio (regula falsi), 110
Mtodo de Bolzano, 107ff
Mtodo de Euler, 246, 251
Mtodo de Gauss, 150
Mtodo de Gauss-Seidel, 112ff
Mtodo de Heun, 251
Mtodo de Newton, 161
Mtodo de Newton-Raphson, 104
Mtodo de Runge-Kutta, 254ff
MNIMO, 84
MMC, 83ff
Mod, 78, 83ff
MOD, 28, 59, 75, 78
Modelo de crescimento logstico, 249
Mdulo, 33
Montante, 33
Movimento num campo r-1, 273
MsgBox, 38, 86, 93
MsgBox (Yes/No), 39, 90
MUPAD, 158, 271

N
Newton, 161
Nvel de confiana, 14_15
Nvel de significncia, 14_15
Nome, caixa de, 76, 89
Nome, definir, 11, 57, 89
NumberFormat, 195
Nmeros complexos, 94, 311
O
Object, 149, 11_13
Ocultar, 74
OptionBase, 139
Oscilador harmnico forado e amortecido, 267
Osciladores acoplados, 290
OU, 29

P
Parser, 189
Partcula Alfa, 272
Partcula num campo eletromagntico, 186
Passeio aleatrio, 297
Pasta de trabalho, 3, 96
Pndulo com amplitude arbitrria, 284
, 126ff, 158
Planck, frmula de, 196
Point/vrgula, 94
Polinmio, 119
Private, 166
Problema restrito, 286
PROJ.LIN, 205, 239ff
Procedimento, 33
PROCV, 13, 234
Produto escalar, 142
Produto vetorial, 148
Programao linear, 216
PROJ.LIN, 205, 239
Programas auxiliares, 189
Prompt, 90
Public, 166

Q
Quantil, 227, 230
Quociente diferencial, 224

R
Raiz (quadrada, p-sima), 102
RAIZ, 234
Range, 144, 171
Range.Value, 22, 90, 95
Recursividade, 36
ReDIM, 139
Referncia, 6, 68
Referncia circular, 116
Regio de transferncia, 74
Regra de Simpson, 155, 160
Regra dos trapzios, 153
Regresso com logaritmos, 214
Regresso linear, 203
Regresso linear mltipla, 26
Regresso parablica, 208
Regresso polinomial, 211
Representao de nmeros, 128
Representaes 2D, 177
Representaes 3D, 182
Rotao, 5, 10
Rtulos, 165, 219
Run, mtodo, 11_2
Runge-Kutta, 254, 264

S
Salvar, 5
SE, 24, 26, 73
Segurana, 30, 32
Selection.NumberFormat, 195
SENH, 117
Srie, 8, 15, 59, 64
Srie de seno, 119, 134
Srie de cos, 133
Srie de Fourier, 156
Srie de potncias, 121
Simpson, 155, 173
Sistemas de equaes lineares, 146
Soluo numrica de equaes diferenciais, 245ff
Solver, 101, 215ff
SOMASEQNCIA, 131
Str, 94, 145
String, 93, 94
Student (distribuio), 229
Sub-rotina, 32, 87
Superfcies 3D em Excel, 194

T
Tabela de Dados, 223, 236
T-Quantil, 230
Trs corpos, problema dos, 286
Trocar, 87
Tschebyschew, desigualdade de, 222

U
Until, 85
Userforms, 307

V
Val, 91
Van der Pol, 263
VAR, 219
Varincia, 218, 219
Variant, 42, 139
Variveis indexados, 137
Variveis reduzidas, 268
VBA, 21, 85ff, 121
Verhulst, 250
Vetor, 137, 141

W
What-if, 223
While, 37
Worksheetfunction em VBA,

X
Y
Yes/No-Boto, 39, 90

Z
3

Captulo I
Um passeio pelo Excel

Ns comecemos com algo muito simples: Criar uma seta, ou seja, um grfico.

Este exemplo no pede nenhum conhecimento prvio sobre a criao de


grficos no Excel, pois os passos necessrios sero detalhadamente explicados.

A figura mostra uma pasta de trabalho (workbook) com trs planilhas


eletrnicas (worksheets). Uma pasta de trabalho , no Excel 2003, uma coleo
de maximal 256 planilhas. Cada planilha tem 256 colunas e 65536 linhas. No
Excel 2007 temos 1.048.576 linhas e 16.384 colunas. (Ctrl+Home manda o
cursor na clula A1. Para posicionar-se na ltima clula ocupada da planilha,
utilize Ctrl+End). Sempre quando voc abre o Excel, voc vai ver uma nova
pasta de trabalho. Cada clula dentro de uma planilha um objeto assim
como a pasta de trabalho e as planilhas tambm so objetos. As vezes
chamamos a planilha que est em uso de planilha ativa.
4

(Quando voc faz um clique com o boto direito do mouse numa clula, ver
uma lista suspensa com opes prontas para ser usadas.)

Como exemplo de um grfico, queremos traar uma seta.

Para isto suficiente conhecermos seis de seus pontos. As coordenadas destes


pontos ficam nas clulas A10 at B15. Recomenda-se que voc desenhe,
primeiro, a figura em papel quadriculado, colocando coordenadas em seus
vrtices.

Para introduzir algum valor numa clula, basta colocar o cursor na clula
desejada e digitar. Tudo o que voc digitar numa clula, aparecer tambm na
Barra de frmulas ao lado direito do cone fx (para editar o contedo de uma
clula, melhor faz-lo no campo ao lado do cone fx ). O endereo da clula
ativa indicado no canto esquerdo da barra de frmulas, no caso H3.

Para desenhar a nossa seta, preciso selecionar (marcar) as clulas A10:B15.


Basta passar o cursor do mouse sobre essas clulas, mantendo o boto
esquerdo pressionado, soltando-o aps as clulas terem sido marcadas. (Para
selecionar clulas no contguas, preciso manter pressionada a tecla Ctrl.)

Os passos a serem seguidos para fazer o desenho da seta so os seguintes:

1. Coloque as coordenadas nas clulas de A10 a B15


2. Selecionar toda a tabela.
3. Selecione Inserir>Grfico ou clique no cone do Assistente grfico. No
Excel 2007 v ao item Inserir e selecione Disperso (o que significa:
grfico XY).
4. Escolha o grfico com Linhas Suaves; Avanar (ou d um duplo clique
com o boto direita do mouse nesse diagrama). Concluir.
5. Terminado o grfico, se deve fazer o trabalho "fino", ou seja:

O ttulo "Uma seta" ocupa duas clulas. Para dar-lhe o espao de duas clulas,
v para Formatar>Clulas>Alinhamento>Mesclar Clulas. Porm, no mescle
nenhuma clula na regio prpria do grfico, pois o assistente grfico no
consegue lidar com clulas mescladas.

D outro duplo clique com o boto direito do mouse na aba "Plan1" da planilha,
para mudar o nome em "Seta1". Para aumentar ou diminuir o tamanho da
seta, necessrio alterar as escalas dos eixos X ou Y. D um duplo clique sobre
a regio do eixo X. Para reproduzir exatamente o grfico acima, clique na guia
Escala e altere os parmetros:

Mnimo: 0
Mximo: 3
Unidade principal: 0,5
Unidade secundria: 0,1
Eixo dos valores (Y) Cruza em 0 OK
5

Os parmetros do Eixo Y foram: 0,4; 1,6; 0,4; 0,001; 0,4

Agora necessrio salvar a sua obra. Se quer permitir somente leitura, v para
o menu Arquivo>Salvar como e, em Ferramentas, clique em Opes Gerais. Na
janela que aparecer, escolha Recomendvel somente leitura. No prximo passo,
vamos tratar de girar a seta. Para isso trocamos o nome na aba da segunda
planilha "Plan1" pelo nome "Seta2".

Para 2007: Selecione o intervalo a traar, em seguida


Inserir>Disperso>Com Linhas Suaves

Clique no grfico e observe acima direita as Ferramentas do


Grfico, clique em Layout para ativar ou desativar a legenda
ou para colocar um ttulo no grfico. Nesta mesma faixa, existe
um grupo de opes para alterar a formatao dos eixos e
para ativar ou desativar as linhas de grade.

A rotao da seta
A seguinte planilha mostra a seta do exemplo anterior girada de um ngulo =
45o no sentido anti-horrio- com referncia ao ponto D = (1,1) e expandido
por um factor b = 4.

As frmulas para uma rotao de um ngulo em torno da origem de um


sistema de coordenadas cartesianas podem ser encontradas nos livros de
lgebra linear ou tambm no curso de Mecnica do autor no site

http://www.geocities.com/Athens/Agora/6594/Mechsub/mech3_6.pdf
6

Em nosso caso, temos uma rotao em torno do ponto D(1;1) junto com uma
expanso por um fator b.

Se P tem coordenadas (x,y), depois da rotao obtemos P' com coordenadas


(x',y') dadas pelo seguinte par de equaes:

x= b(( x d1 )cos ( y d1 ) sen )) + d1


y ' = b(( x d 2 ) sen + ( y d 2 )cos )) + d 2

No se desespere! Lembre-se de que no queremos fazer matemtica, mas sim


aprender como se coloca uma frmula numa planilha do Excel. (Mais adiante
vamos dar mais algumas explicaes, quando tratamos das transformaes de
um tringulo.)

Para escrever a primeira equao, devemos comear colocando um sinal de


igual e, em seguida, a frmula em si:

Selecione a clula C10; digite um sinal de igual e, em seguida, a frmula

=4*((A10-1)*COS(PI()/4)-(B10-1)*SEN(PI()/4))+1

Na Barra de Frmulas, voc pode observar todo o que est escrevendo.


Tambm aqui onde se pode fazer as correes, se for necessrio. Para
finalizar, pressione a tecla Enter (obtendo o resultado 1). Depois de pressionar
a tecla Enter, a frmula foi registrada na clula C10. Posicionando o cursor na
clula C10 da planilha "Seta2", a Barra de frmulas da planilha mostrar a
frmula inserida.

Na clula D10 registre agora a segunda frmula:

=4*((A10-1)*SEN(PI()/4)+(B10-1)*COS(PI()/4))+1

Agora copiamos o contedo da clula C10 para C11,C12,C13,C14,C15.


Para fazer isso, clique sobre a ala de preenchimento da clula C10 e
arraste-a at a clula C15. Seguidamente copiamos da mesma forma a
frmula em D10 at D15. (A ala de preenchimento o pequeno
quadrado no canto inferior direito que se transforma num + .)

Quando se copia uma frmula de uma clula para outra, se mudam auto-
maticamente as referncias. Por exemplo, a frmula em D10 tem outro aspecto
em D15, a saber

=4*((A15-1)*SEN(PI()/4)+(B15-1)*COS(PI()/4))+1

Se voc no quer que estas mudanas das referncias aconteam, ou seja,


quando os dados utilizados em uma expresso forem obtidos sempre a partir
da mesma clula, p. ex. E10, utilizamos o smbolo $ no endereo da clula.
Para multiplicar todos os nmeros nas clulas A1:A10 com o nmero em E10,
7

voc digita a frmula =A1*$E$10 em B1 e arrasta a clula B1 com a ala de


preenchimento at B10. A frmula em B10 ser .

Muitas vezes aparecem nos cantos das clulas tringulos coloridos que indicam
erros. Por exemplo, um tringulo verde no canto superior esquerdo indica um
erro na frmula da clula. Lea sobre "indicadores de tringulos em clulas" na
"Ajuda" do Excel.

Se pode criar e girar setas sem clculo! Utilize as Autoformas! Experimente!

2007: Inserir>Desenvolvedores>Formas.

O Excel possui mais de 700 frmulas predefinidas, separadas em 11 categorias.


D um clique no assistente fx para ver a coleo. J utilizamos acima as
funes sen e cos .

Para fazer o seguinte grfico, siga os passos abaixo:


8

Coloque 0 em A1 e =A1+0,063 em A2; copiar A2 at A101. (O


incremento 0,063 poderamos colocar em E5. A frmula a usar
seria ento =A1+$E$5)
Digite =SEN(A1) em B1, em seguida copiar at B101
Selecionar A1:B101 -com Shift e a seta
Clique no Assistente grfico e selecione Disperso (XY), linha
suave; Avanar.
Srie, Nome: y = sen(x); Legenda; no marcar; Avanar
Eixos e linhas de grade (2 linhas principais)
Avanar; Concluir

O Assistente de grfico pergunta na ltima etapa se o grfico deve aparecer


"Como nova planilha" (separado) ou "Como objeto em Plan1". Se voc marcar
esta ltima alternativa, o grfico vai ficar na planilha indicada.

Para desenhar sen e cos no mesmo grfico, vamos adicionar a coluna C para os
valores de y = cos(x). Veja o resultado no Plan2 = sen_cos. Esta vez,
selecionamos o rango de A1 at C101. O Assistente grfico vai dizer-lhe os
passos a serem seguidos. (Trate de escrever x, sen(x), cos(x) nos cabealhos,
pois Excel sabe coloc-los no grfico.)

Alterar um grfico muito simples no Excel. Se voc quiser formatar a rea do


grfico, alternando todos os seus parmetros (cores, bordas, fontes, segundo
plano, dimensionar clulas, travar e proteger objetos entre outros), selecione o
menu Formatar e escolha a opo rea do grfico ou clique no boto localizado
na barra de ferramentas grficas ou ainda use um atalho apertando Alt+F+L.

Para editar cada parte do seu grfico, preciso seguir o mesmo procedimento,
ou seja, clicar primeiramente sobre qualquer lugar da planilha e depois sobre a
9

rea na qual gostaria editar. Por exemplo, se quisermos alterar a cor do fundo,
devemos clicar sobre ele para selecion-lo e depois duas vezes para abrir a
janela de formatao.

A seguinte figura foi feita com "Print Screen" e com o programa "Paint". Com o
Paint pode-se editar o grfico do Excel e fazer, tambm, um recorte.

Deformao e movimento de um tringulo

A figura mostra os tringulos ABC, A'B'C' e A"B"C".

A'B'C' fica acima de ABC. A'B'C' girado no sentido anti-horrio de 90 graus em


torno do ponto B'=B". A'B'C' o resultado de uma translao (-20;50) e de uma
expanso por a = 2 e b = 1,50 com referncia ao ponto A = (28;-24).
Quando se aponta com o cursor num ponto do grfico, v-se as coordenadas
do ponto, p. ex. C"=(62;-23)
10

Explicaes:

Se y = f(x) a equao de uma curva, ento

y' = f(x-x0) + y0

representa a mesma curva movida em uma direo paralela ao eixo dos x de x0


e de y0 unidades paralela ao eixo dos y. (Trata se de um cisalhamento ou uma
translao.)

J vimos as equaes de uma rotao no sentido trigonomtrico de um ngulo


em torno de um ponto X1 = (x1;y1) anteriormente, no caso da rotao da
seta. Esta transformao podemos escrever como x' = R(x-x1)+x1 onde R a
matriz de rotao no sentido anti-horrio (=trigonomtrico):

cos sen
R=
sen cos

Em forma explcita temos:

x ' = ( x x1 )cos ( y y1 ) sen + x1


y ' = ( x x1 ) sen + ( y y1 )cos + y1

Se uma curva for dilatada (|a|>1) o contrada (|a|<1) por fatores a e b, ento
as novas coordenadas sero

x ' = a( x x1 ) + x1
y ' = b( y y1 ) + y1

Podemos efetuar estas transformaes num nico grfico (uma srie s).

Preenchimento das clulas:

A1: =F9; B1: =H9; (A1:A3 determina os limites dos eixos)


A2: vazio
A3: =F10; B3: =H10
A4: vazio
A5: =F1; B5: =G1; Ponto A
A6: =F2; B6: =G2; Ponto B
A7: =F3; B7: =G3; Ponto C
A8: =A5; B8: =B5; novamente ponto A
A9: vazio
11

A10: =A5+F13; deslocamento e expanso


B10: =B5+H13
A11: =F16*(F2-F1)+A10; B11: =H16*(G2-G1)+B10
A12: =F16*(F3-f1)+A10; B12: =H16*(G3-G1)+B10
A13: =A10; B13: =B10; A14: vazio

A15: =(A10-F$6)*COS(H$7)-(B10-F$7)*SEN(H$7)+F$6 rotao


B15: =(A10-F$6)*SEN(H$7)+(B10-F$7)*COS(H$7)+F$7
ambas as frmulas devem ser copiadas at a linha 18

Grfico (Disperso com pontos de dados conectados por linhas).

Exemplo de clculo: O ponto A" a imagem do ponto A' depois da


rotao de 1,5708 radianos (=90 graus) em torno do ponto B" no
sentido anti-horrio. A avaliao manual fornece

A15: =(8-92) cos(1,5708..) - (26-77) sen(1,5708..) + 92 = 143

A seguinte figura interessante, pois vemos como os dois vetores


unitrios (1,0) e (0,1) foram girados em 30 graus (= PI()/6 radianos) no
sentido anti-horrio e ao mesmo tempo dilatados por um fator 2. Todos
os clculos ficam na planilha.
12

Explicaes:

3 1
A transformao dada pela matriz A = uma rotao de
1 3

30o composta com uma dilatao por um fator 2. Isto podemos mostrar fcil-
mente, pois A pode ser escrito como um produto:

3 1
3 1 2 0 2

2 2 0 cos30
o
sen30o
A=
1
=
= o

3 0 2 1 3 0 2 sen30o cos30

2 2

x ' 3x y
Isto significa: y ' =
x + 3 y

Podemos efetuar o produto de duas matrizes A e B com a instruo


{=MATRIZ.MULT(A;B)}; as dois chaves { } significam, que se deve entrar
uma matriz pressionando Ctrl+Shift+Enter em vez de s Enter. (No digite
as chaves { }, Excel faz isso automaticamente.)

Calcule os produtos da planilha!

Digite as matrizes nas clulas.


Selecione cada matriz.
Define elas com Inserir>Nome>Definir

Efetue os produtos como acima indicado.


Digite as coordenadas dos pontos nas clulas D14:E24
Clique no Assistente grfico ...
13

Com base nas nossas planilhas acima, poderamos, tambm, fazer o grfico de
uma parbola, uma elipse, ... em varias posies. O estudo das cnicas feito
com ajuda do Excel muito bonito e tem muitas aplicaes. Vale a pena ver!
Mas no podemos fazer tudo num s captulo o Excel oferece tantas coisas
boas para aprender. No seu dia-a-dia, certamente voc no s vai ocupar se
com girar setas e deformar curvas, e o Excel oferece inmeras ferramentas
capazes de facilitar e melhorar o seu trabalho. Com elas, perfeitamente
possvel realizar tambm tarefas simples, mas de grande utilidade em nossas
ocupaes dirias. Um bom exemplo o trabalho de um professor. Qual seria a
sua vida se no existisse o Excel? ... (Com o Excel 2007 pode gerenciar at
1.048.576 alunos, uma linha para 16.380 notas para cada aluno!)

Suponha, ento, que voc seja um professor e esteja contemplando


pensativamente as notas das provas e testes de seus alunos. Voc, estou
quase seguro, vai querer inseri-las numa planilha eletrnica e visualizar o
rendimento dos alunos graficamente.

A planilha a seguir mostra as notas de 4 dos meus 15 alunos alemes de anos


atrs. A melhor nota era 1 (muito bom) a pior era 6 (insuficiente).

A e B so os pesos das notas; A para provas, B para testes (de vrios tipos).
= mdia.

As notas foram arredondadas com a funo =ARRED (nm;nm_dgitos). Nm


o nmero que voc deseja arredondar. Num_dgitos especifica o nmero de
dgitos para o qual voc deseja arredondar nm.

Por exemplo: =ARRED(2,15;1) arredonda 2,15 para uma casa decimal (2,2). A
nota final na clula M5 calculada usando =ARRED(D$3*K5+H$3*L5;0).
(Aps digitar esta frmula na M5, ela deve ser copiada para as outras clulas.)
14

As mdias das provas e testes calculamos com a funo =MDIA(nm1;


nm2;...) que retorna a mdia aritmtica dos argumentos. Assim, temos em K5
a frmula =MDIA(C5:E5) e em L5: =MDIA(F5:J5).

Na clula S5 temos a mdia arredondada de todas as notas =ARRED(MDIA


(M5:M19);1)

Agora digitamos textualmente as notas em Q5 at Q10. As notas finais num-


ricas ficam em O5:O10.

Na clula N5 escrevemos a frmula =PROCV(M5;O$5:Q$10;3) e a copiamos at


N19. Esta frmula pesquisa (verticalmente) o valor na clula M5 na primeira
coluna da tabela (matriz) O$5:Q$10, isto em O$5:O$10, e retorna o valor que
est na mesma linha na terceira coluna da mesma tabela, ou seja, em
Q$5:Q$10. Este valor pode ser um texto, como em nosso caso. Assim obtemos
para M5 = 3 o valor "satisfatrio". (O "V" em PROCV significa "Vertical", o "H"
em PROCH, que tambm existe, significa "Horizontal".)

Finalmente utilizamos a funo =FREQNCIA(matriz_dados;matriz_bin) para


determinar a freqncia com que as notas em O5:O10 ocorrem no intervalo
(matriz) M5:M19. Matriz_dados uma matriz ou uma referncia a um conjunto
de valores cujas freqncias desejamos contar. Matriz_bin a matriz na qual
desejamos agrupar os valores contidos em matriz_dados.

(Tudo isso bem complicado, mas com pacincia pode-se tambm aprender
isso, sobretudo sabendo que serve para muitos casos parecidos.)

=FREQNCIA(M5:M19;O5:O10) inserida como todas as frmulas matriciais,


ou seja, primeiro selecionamos o intervalo P5:P10 e logo apertamos, simulta-
neamente, as teclas Ctrl, Shift e Enter, como j vimos no caso de
=MATRIZ.MULT(A;B).

Falta agora uma avaliao grfica da planilha. Primeiro copiamos a tabela O4


at P10 numa nova planilha.
15

Selecione os dados que deseja incorporar no grfico, e em seguida, clique no


boto Assistente de grfico e siga as instrues de configurao. Escolhemos o
tipo Colunas. Clique com o boto direito numa das 5 colunas, a fim de
selecionar toda a srie de dados e para obter diferentes opes de alterar o
grfico. No menu de contexto, escolha Formatar Srie de Dados. Abre-se a tela
com esse nome. Na aba Padres, clique em Efeitos de Preenchimento. Tambm
possvel usar imagens ou "cliparts". Para isso, clique no boto Selecionar
Imagem e indique o arquivo a usar.

Tambm poderia usar o programa Histograma em Ferramentas> Anlise de


dados. (Se esta funo no estiver disponvel, instale e carregue o suplemento
Ferramentas de anlise. Na lista Suplementos disponveis, selecione a caixa
Ferramentas de anlise e clique em OK.)

Criar grficos no Excel fcil. Mas acertar os detalhes do grfico um processo


que pode ser trabalhoso e o resultado nem sempre aquele que voc gostaria
de obter. O mesmo acontece com a formatao das tabelas. Veja a tabela a
seguir que foi feita com Formatar>AutoFormatao. (Em 2007: Incio>
Estilo>Formatar como Tabela.) Quando precisar fazer uma planilha baseada
nos dias da semana, basta escrever "Segunda-feira" na primeira clula, clicar
sobre o quadrado preto que se localiza no canto inferior direito (= ala de
preenchimento), e arrast-lo para as clulas seguintes.

Horrio Segunda-feira Tera-feira Quarta-feira Quinta-feira Sexta-feira


07:00 - 07:50
07:50 - 08:40
08:50 - 09:40
09:40 - 10:30
10:40 - 11:30
11:30 - 12:20

19:00 - 19:50
19:50 - 20:40
20:50 - 21:40
21:40 - 22:30

Como lidar com seus gastos? (Mltiplas planilhas numa


pasta de trabalho.)

Com um pouco de disciplina pode montar uma planilha do seu oramento


personal ou domstico. Na figura a seguir criamos um modelo para uma famlia
com dois filhos que estudam fora de casa. Os gastos dos filhos ficam em
planilhas separadas da planilha principal. As trs planilhas so interconectadas
por meio de "Selecionar todas as planilhas" (clique sobre a aba de qualquer
16

planilha). Cada registro que voc realiza numa planilha secundaria


automaticamente transferido para a planilha principal.

O ideal organizar os dados em categorias:

Receitas: salrio, aluguel, penso, horas extras, outros

Gastos fixos: aluguel, condomnio, prestao da casa, diarista, mensalista,


seguro do carro, IPTU, IPVA, seguro-sade, colgio, faculdade, cursos,
aposentadoria, clube/academia, outros

Gastos espordicos: alimentao, Luz, telefone fixo, telefone celular, carto


de crdito, gs, gua, transporte, outros

Gastos arbitrrios: viagens, cinema/teatro, restaurante, roupas, presentes,


outros

O nosso exemplo apenas um intento para mostrar o aspeto de uma tal


planilha.
17

Na planilha principal, devemos escrever em todas as clulas de Julia (B16:M16)


a frmula =Julia!B$9, pois a soma dos gastos de Julia em janeiro fica em
clula B9 da planilha Julia (copiando a frmula =Julia!B$9 na planilha principal
muda o endereo, assim fica, p.ex., em C15 =Julia!C$9, etc.). O mesmo
procedimento fazemos na planilha principal com Robert, onde copiamos
=Robert!B$9 de B15 at M15.

Teoricamente, sobram recursos no fim do ms (se cada integrante da famlia


ajudar a atualizar regularmente a sua ficha). Quem consegue poupar dinheiro
pode depois comprar vista... A dificuldade do projeto que ele envolve um
nvel de disciplina incomum.

Antes de concluir esta seo, gostaria mostrar outro recurso do item


suplemento do Ferramentas de anlise. (Para us-lo, clique na guia
Ferramentas>Suplementos e marque Ferramentas de anlise.)

a funo CONVERT (nm;de_unidade;para_unidade) que converte um "nm"


de uma unidade em outra. Se voc quer alterar o valor da clula A1 de minutos
para horas, ento a frmula ficaria assim: =CONVERT (A1;"mn";"hr").

CONVERT aceita os seguintes valores de texto (entre aspas) para de_unidade e


para_unidade:

A B
Frmula Descrio (resultado)
Converte 1 massa em libras em quilogramas
1 =CONVERT(1,0; "lbm"; "kg")
(0,453592)
2 =CONVERT(68; "F"; "C") Converte 68 graus Fahrenheit em Celsius (20)
3 Os tipos de dados no so iguais, ento retornado
4 =CONVERT(2,5; "ft"; "sec")
um erro (#N/D)
5 Converte 100 ps quadrados em metros quadrados
=CONVERT(CONVERT(100,"ft","m"),"ft","m")
(9,290304).

Para ver uma lista completa de todas as medidas que podem ser convertidas,
consulte o tpico da Ajuda da funo CONVERTER. Nesta lista no existem
ngulos, mas existem funes especiais:

A B
Frmula Descrio (resultado)
1
=RADIANOS(270) 270 graus como radianos (4,712389 ou 3/2 radianos)
2

A B
Frmula Descrio (resultado)
1
=GRAUS(PI()) Graus de radianos de pi (180)
2

Pronto vai aprender a criar, por meio da linguagem VBA do Excel, milhares de
novas funes que Microsoft esqueceu de embutir no seu Excel.
19

Captulo 2
Trabalhar com macros, funes lgicas
(Exemplos: Tringulo de Pascal, Domingo ds Pscoa)

Cpias relativas e absolutas

Nesta parte mostraremos outra vez a importncia que tem o processo de


copiar clulas no trabalho com o programa Excel. Nos lembramos: quando
copiamos clulas, o resultado muito diferente se copiamos dados do tipo
texto e nmeros, ou se copiamos frmulas e funes. No primeiro caso,
reproduzimos exatamente o contedo das clulas. No segundo caso, temos de
ter mais cuidado, j que o Excel altera o endereo das clulas que intervm nas
frmulas.

Exemplificando: se a clula A3 contiver a seguinte frmula: =A1+A2, e a


copiarmos para a clula B3, as referncias da frmula em B3 se ajustaro,
ficando assim: =B1+B2. Isso acontece devido frmula original conter apenas
referncias relativas (sem o smbolo $).
O caractere "$" diferencia uma referncia relativa de uma absoluta. Para que a
referncia no se altere quando copiada, devemos incluir o "$" ao endereo.
No exemplo acima, a frmula na clula A3 ficaria assim: =$A1+$A2. Mas
copiando-a para A4 daria =$A2+$A3, ou seja, a proteo funciona s
horizontalmente. O uso de um segundo "$" protege a frmula para qualquer
movimento. Assim, podemos copiar a equao =$A$1+$A$2 para qualquer
posio da planilha que ela no se alterar. uma referncia absoluta.

O Tringulo de Pascal nos da uma excelente oportunidade de aprender


copiar frmulas de uma clula a outras. A idia de produzir numa planilha
Excel quase automaticamente este famoso tringulo formado por nmeros
inteiros. Vamos considerar dois tipos de tringulo.
20

Na figura acima, colocamos 1 nas clulas A1:A7, tambm um 1 em B2. Na


clula B3 colocamos a frmula =A2+B2 que copiamos at G3 e depois at G7.
O tringulo dos zeros limpamos "manualmente", mais tarde vamos ver, como
se podem ocultar os zeros com um simples comando.

(Para copiar manualmente uma frmula em uma clula, colocamos o cursor


sobre o canto inferior direito dela, e neste momento, o cursor muda sua forma
de cruz branca para uma cruz preta. Mantendo-se pressionado o boto
esquerdo do mouse, arrasta-se o cursor at cobrir todas as clulas para as
quais se deseja copiar o contedo da clula de origem.)

O tringulo formado pelos nmeros binomiais:

0
0 =1

1 1
0 = 1; 1 = 1

2 2 2
0 = 1; 1 = 2; 2 =1

3 3 3 3
0 = 1; 1 = 3; 2 = 3; 3 = 1

.......................................................
As propriedades desse tringulo, embora j fossem conhecidas desde o sculo
XII ou XIII, foram sistematizadas somente no sculo XVII, por Blaise Pascal.
A soma dos nmeros em clulas diagonais, como nas clulas coloridas, so
nmeros de Fibonacci: 1 + 4 + 3 = 8; 1 + 5 + 6 + 1 = 13 ...

(Os nmeros de Fibonacci so 1, 1, 2, 3, 5, 8, 13, 21, 34, ... veja detalhes


abaixo e na seo seguinte.)
A soma dos nmeros binomiais de uma mesma linha uma potncia de base 2:
20, 21, 22, 23 ...
Na seguinte figura, vemos outra forma do tringulo, que surgiu na China j
em 1300 AC. Aqui colocamos um 1 na clula K1 e tambm um 1 em J2 e L2. K3
contem a soma =J2+L2. Copie o contedo da clula K3 (Ctrl-C e Ctrl-V) para a
clula E3. Copie seguidamente, com a aba de preenchimento, o contedo de E3
para todas as clulas entre E3 e Q3. Agora s copiar tudo isso at Q7.
21

Finalmente podemos ocultar todos os zeros. Selecione todas as clulas de E1


at Q7 com Shift-<para baixo>. No menu Formatar, clique em Clulas e, em
seguida, clique na guia Nmero. Na lista Categoria, clique em Personalizado e
na caixa Tipo, digite 0;-0;;@

Macros

Agora, vamos automatizar o processo de copiar a frmula =J2+L2 com ajuda


de uma Macro. (Uma macro um processo automatizado que evita a repetio
manual de comandos, fazendo com que eles sejam realizados de forma
automatizada poupando tempo e esforo.)

Siga os seguintes passos para criar nossa macro:

1. Digite 1 em K1, 1 em J1, 1 em L1: =J2+L2 em K3


2. Clique em Ferramentas>Macros>Gravar nova macro para ativar o
gravador de macros. Na tela que surgir, digite como Nome da macro
Pascal, Tecla de atalho p (melhor Shift p, o que ser na tela Ctrl+Shift
p, ou seja P). Cuidado, pois se existir algum comando que utilize as
mesmas teclas, ele ser desabilitado, e a macro passar a funcionar em
seu lugar.
3. Na caixa Armazenar macro em deixamos "Esta pasta de trabalho".
Assim, a macro ser armazenado juntamente com a planilha atual. Na
caixa Descrio, voc pode escrever o que quiser.
4. Ao pressionar OK, aparecer uma pequena tela com dois botes.
(Utilizamos o quadrado azul para parar a gravao do macro. O outro
boto se usa para alterar entre gravao absoluta e relativa.) Depois de
aparecer esta pequena tela, o gravador de macro registrar todos os
passos que voc vai fazer na planilha: posicione o cursor na clula K2,
copie com Ctrl-C, v na clula E3, Ctrl-V, arraste a aba de preenchimento
at Q3, e depois at Q7. Pressione o boto azul, para parar a gravao.

Uma vez que voc j tenha criado a macro, voc deseja rod-la. Voc pode
usar Ctrl+Shift-p ou as teclas Alt-F8 e pressionar Executar.
A sua planilha vai ter o seguinte aspecto (que depende de como voc terminou
o quarto passo):

Para evitar erros, aconselhvel de bem pensar nos passos a fazer durante a
gravao. Se errar, poder ser mais fcil comear tudo de novo do que tentar
consertar o erro. Se deseja ver o cdigo gerado durante a gravao, pressione
as teclas Alt-F11 e clique em Ferramentas>Macros>Editar. muito provvel
que voc ver um cdigo parecido ao seguinte:
22

O seu cdigo na janela de cdigo pode ser diferente, isso depende dos detalhes
da gravao. (No se preocupe agora da janela da esquerda, mais tarde vamos
trabalhar muito com ela.) O objeto Range seleciona a clula K3. Em seguida, o
mtodo de cpia do objeto Selection usado e Selection representa a clula
selecionada atualmente. Depois E3 selecionada etc.
Quando voc gravar uma macro, um mdulo ser criado e o cdigo ser
gravado nele. O gravador de macros cria uma sub-rotina, por isso vemos o Sub
no inicio do programa. Toda sub-rotina deve terminar com End Sub.
O que vemos, um programa com o nome "Pascal" na linguagem VBA (Visual
Basic for Applications). O VBA uma linguagem de programao incorporada
ao pacote Office e ser uma ferramenta muito importante em nossos trabalhos
com o Excel. Voc vai gostar! (O editor de VBA do Excel 2007 praticamente
idntico ao editor das verses anteriores de Excel. Tambm pode-se abrir com
ALT-F11.)
Aqui seguem alguns exemplos em VBA. Para escrever o cdigo utilizamos Alt-
F11 e depois clique duplo sobre EstaPasta_de_trabalho.

1. Neste exemplo vemos que tambm possvel colocar os valores iniciais


automaticamente na planilha:
Pressione Alt-F11, clique duas vezes sobre EstaPasta_de_trabalho, e entre o
cdigo na janela de cdigo. Depois pressione F5, para executar a macro.
23

2. Em VBA precisamos s uma linha de cdigo para produzir o tringulo:

Este programa vem com um boto de Exibir>Barra de ferramentas>Caixa de


ferramentas de controle.
(O Excel oferece dois tipos de botes: os ActiveX da Caixa de ferramentas de
controle e os botes da coleo Formulrios. Este segundo tipo usaremos no
prximo captulo.)

Clique no cone do boto e desenhe-lo, sem pressionar nenhum boto do


mouse, sobre a planilha. Em seguida clique duas vezes no boto, abre-se uma
janela para escrever a linha do cdigo. Salvar o programa com um nome
apropriado (no necessariamente Pasta1!). Clique em Executar para ativar a
macro (ou use F5). Depois volte para a planilha Excel e coloque um 1 em K1,
J2, L2 e anote em K3 a frmula =J2+L2. D um Click no boto e tudo pronto!
(Em 2007 se faz assim: Desenvolver>Controles de ActiveX etc.)
24

3. Se queremos colorir todas as clulas > 0 de amarelo, podemos digitar as


seguintes linhas:

Com Editar>Limpar>tudo podemos limpar a planilha.


O cdigo contem um For...Next loop com uma instruo condicional
IF...Then. Afortunadamente, todo isso l-se como se fosse portugus puro.
Tambm as instrues condicionais mltiples so simples e funcionam quase
como uma frase em portugus ou ingls. Elas usam os operadores And e Or e
significam exatamente o que querem dizer em ingls. Devido ao grande uso
que vamos fazer dessas instrues, voc vai facilmente acostumar-se a elas.

4. Facilmente podemos produzir uma planilha para criar os nmeros de


FIBONACCI. Alt-F11; 2x EstaPasta_de_trabalho; cdigo; salvar; F5.
O cdigo pode ser o seguinte:
25

No cdigo vemos o Do While ... Loop que continua sua execuo


enquanto a condio i < 14 estiver sendo atendida. Primeiro as clulas A1 e A2
obtm cada uma o valor 1. Em seguida, a varivel i configurada com o valor
1. J que 1 < 14, calcula-se o valor para A3. Ele ser =A1+A2 =2. Depois, a
varivel i ser aumentada em uma unidade, ou seja i vai ser igual a 2. O Loop
manda o programa para ver se 2 < 14... O Loop ser executado por ltima vez
quando i = 13, com A15 = A13 + A14 = 233 + 377 = 610.

Os resultados vo aparecer na primeira linha em vez da primeira coluna se


voc trocar os ndices das clulas:

Voc pode definir a seqncia de Fibonacci tambm pelo seguinte conjunto de


duas frmulas:
1. FIB(1) = Fib(2) =1 2. FIB(n)=FIB(n-1)+FIB(n-2), para n>2

Funes lgicas

Agora vamos ver alguns exemplos, nos quais a funo lgica SE vai ter um
papel decisivo.

Sintaxe: SE(teste_lgico; valor_se_verdadeiro; valor_se_falso)

1. Suponhamos que desejasse criar um Controle de Notas de Aluno, onde ao se


calcular a mdia, ele automaticamente especificasse se o aluno fora aprovado
ou no. Poderamos fazer o seguinte:
26

possvel aninhar at sete funes SE. Na seguinte planilha utilizamos trs:

Para preencher a coluna da mdia automaticamente, colocamos em B3 a


frmula =INT(ALEATRIO()*9)+2 que depois copiamos at B10.
ALEATRIO()*9 produz um nmero aleatrio entre 0 e 9, a funo INT
arredonda um nmero para baixo at o nmero inteiro mais prximo. Para
trabalhar com uma nova srie de nmeros aleatrios, s preciso apertar a
tecla de clculo F9. Em vez de ALEATRIO podemos usar ALEATRIOENTRE,
veja o prximo exemplo.
Voc pode poupar trabalho, se clicar sobre o boto fx e trabalhar com o recurso
Inserir Funo. Escolhe SE e utilize a janela que se apresenta. Veja a figura:

Compare as explicaes seguintes:


27

2. Para mostrar um exemplo com SE(OU...) vamos desenvolver um


programa para praticar as tcnicas de somar e restar dois nmeros.

Criamos aleatoriamente os dois nmeros entre 0 e 1000 nas clulas C6 e C8


com a nova funo =ALEATRIOENTRE(0;1000) na forma =INT(ALEA-
TRIOENTRE(0;1000). Em G7 temos =SE(F7=(C6+C8);"correto";"falso"). Na
clula F7 escrevemos nossa soma. Se for diferente de C6+C8, aparecer em G7
"falso". A frmula para a diferena contm SE e OU na combinao
=SE(OU(F9=(C8-C6);F9=(C6-C8));"correto";"falso"). Isso significa que vamos
considerar como sendo correta a diferena calculada como C8-C6 ou como C6-
C8. (Os resultados em C10 e C12 podemos ocultar colorindo as clulas em
branco.)
Para usar o programa, escolhemos primeiro o modo manual de clculo. Isso
fazemos com Ferramentas>Opes>Clculo>Manual, depois pressione F9, para
efetuar um novo clculo.

Em 2007 pressione o boto do Microsoft, depois


Opes do Excel>Frmulas>Opes do clculo>Manual.

Para fazer o teste lgico, colocamos o cursor na clula G7 e com o boto da


mouse clicamos no smbolo fx. Como mostrado na figura, veremos a janela da
funo SE. Clique em OK. Em G7 aparecer "falso" ou "correto". Em seguida
clicamos na G9 e depois clicamos com o cursor no cone fx. D um clique no OK
da janela do SE. Usando F9, efetuamos um novo clculo.

Para simplificar tudo, vamos registrar os passos do teste lgico numa macro.
28

O cdigo da macro do teste lgico pode ser assim:

Como acima descrito, conectaremos a macro tambm com um Command-


Button. (Clique no cone do boto e desenhe-lo, sem pressionar nenhum boto
do mouse, na planilha. Em seguida clique duas vezes no boto, e abre-se uma
janela para escrever as linhas do cdigo. Salvar o programa com um nome
apropriado (por exemplo "Calculadora"). Clique em Executar ou F5 para ativar a
macro. Em seguida regresse na planilha.) R = row (linha), C = column
(coluna); isso explicaremos mais adiante.

Pscoa

Agora vamos determinar a data do domingo de Pscoa para qualquer ano


depois de 1582. Ser interessante ver a aplicao das trs funes lgicas SE,
OU, E na clula B11 da seguinte planilha.

O algoritmo para nossa planilha foi desenvolvido por Aloysius Lilius e Christoph
Clavius. (Pscoa o primeiro domingo depois da primeira lua cheia, o que
sucede no 21 de Maro ou depois no ms de Abril.)
29

Precisaremos das seguintes informaes:

1. O ano em questo J
2. O nmero de ouro G: (J MOD 19)+1
3. O nmero do sculo C: INT(J/100)+1
4. Correes X: INT(3C/4)-12
" Z: INT(8C+5)/25)-5
5. Nmero de domingo D: INT(5J/4)-X-10
6. Nmero do "Epact" E: (11G+20+Z-X) MOD 30
Se E = 25 e G >11, ou se E = 24, ento aumente E em 1
(esta condio composta fica em B11)
7. Nmero da lua cheia N: 44 E
Se N < 21, ento aumente N em 30
8. Critrio N1: N + 7 ((D + N) MOD 7)
9. Se N > 31, ento Pscoa fica em N-31 de Abril, seno em N de Maro

Sem entrar numa discusso deste algoritmo, levaremos todas essas informa-
es numa planilha, compare tambm a figura acima.

H2: J
A7: =MOD(H$2;19)+1
B7: =INT(H$2/100)+1
C7: =INT(3*B7/4)-12
D7: =INT((8*B7+5)/25)-5
E7: =INT(5*H$2/4)-C7-10
F7: =11*A7+20+D7-C7
G7: =MOD(F7;30)
A11: =SE(G7<0;G7+30;G7)
B11: =SE(OU((E(G7=25;A7>11));G7=24);G7+1;G7)
C11: =44-G7
D11: =SE(C11<21;C11+30;C11)
E11: =D11+7-MOD(E7+D11;7)
G11: =SE(E11>31;(E11-31);"")
H11: =SE(E11<=31;E11;"")
30

Esse exemplo chama para ser transformado numa sub-rotina de VBA.


Precisaremos de uma srie de instrues If para processar as diferentes
condies do algoritmo. (Outra instruo disponvel no VBA para tais situaes
a instruo Select Case, compare o capitulo 3 sobre Procedimentos, p. 10.)
Uma instruo IF dentro de uma linha s, no termina com End IF, j que
assim no forma nenhum bloco. Os resultados so exibidos dentro de uma
caixa de mensagem. A verso com a funo DateSerial especialmente
interessante, pois ela mostra a data de Pscoa no formato dia/ms/ano

Exemplos: 1793 (31 de Maro); 1818 (22 de Maro); 2007 (8 de Abril)

Nas seguintes linhas construmos um bloco para a instruo If ... Then


... Else, a segunda condio "IF n<=31" foi absorvido pelo Else

If n > 31 Then
MsgBox "Pscoa fica no " & n - 31 & " de
Abril"
Else
MsgBox "Pscoa fica no " & n & " de Maro"
End If

O algoritmo foi tirado do livro The Art of Computerprogramming p. 155 de D.E.


Knuth. O comentrio de Knuth deve ser lido: There are many indications that the
sole important application of arithmetic in Europe during the Middle Ages was the
calculation of Easter date, and so such algorithms are historically significant.

Veja outro algoritmo e muitos exemplos no site


http://www.inf.ufrgs.br/~cabral/Pascoa.html
31

Segurana de Macros, Depurar o Cdigo

1. Quando carregar uma macro, Excel 2007 mostra um Aviso de


Segurana que deve ser respondido clicando sobre Opes. (Clique, se
for preciso, sobre o "Boto Office" e escolhe Opes do Excel, onde
encontra a Central de Confiabilidade. Em Configuraes da Central ...
pode marcar Mostrar a Barra de Mensagens.)

2. Existem diversas maneiras para controlar e depurar o cdigo.

Na planilha Domingo de Pscoa temos todos os resultados intermedirios


indicados. Eles nos ajudam a controlar o nosso cdigo, pois Excel nos deixa
executar o cdigo uma linha por vez. Coloque o cursor em algum lugar do
cdigo. Depois, pressione a tecla F8 uma vez. Continue teclando F8 at passar
o ponto de interesse. Quando voc executa o cdigo, at a linha amarela
chegar at a varivel b, veja a figura, voc j pode ver o valor de a, movendo o
cursor sobre esta varivel. O valor de a vai ser 14, se colocou o ano 2008.
32

(Com F9 pode-se colocar e remover pontos vermelhos de interrupo. Com


Ctrl+Shift+F9 pode-se limpar todos os pontos de interrupo.)
Outra possibilidade de verificar o cdigo com Depurar>Compilar VBA-Project
>Executar at o Cursor. Se voc colocou o cursor diante da varivel g, a
compilao do cdigo vai parar em g, e com o cursor pode-se inspecionar todos
os valores anteriores. Voc tambm pode ..., pois os mtodos de depurao
so numerosos. A melhor maneira de conhec-los, experimentar sem olhar no
relgio.
Com Verificao Imediata (Ctrl+G) podemos ver os resultados intermedirios
escrevendo Debug.Print.
33

Captulo 3
Procedimentos (macros)
Primeiramente lemos a seguinte citao, copiada de Excel-Ajuda:

O objetivo de uma macro automatizar as tarefas usadas com mais freqncia. Embora algumas

macros sejam simplesmente uma gravao de pressionamentos de teclas ou de cliques do mouse,

macros VBA (Visual Basic for Applications (VBA):uma verso de linguagem macro do Microsoft Visual

Basic usada para programar aplicativos do Microsoft Windows e includa em vrios programas da

Microsoft.) mais potentes so criadas por desenvolvedores que utilizam um cdigo capaz de executar

vrios comandos no computador. Por esse motivo, as macros VBA so consideradas um possvel risco

segurana. Um usurio mal-intencionado poder introduzir uma macro perigosa atravs de um

documento que, se for aberto, permitir que ela seja executada e possivelmente espalhe vrus (vrus: um

programa de computador ou macro que "infecta" arquivos de computador inserindo cpias de si mesmo

nesses arquivos. Quando o arquivo infectado carregado na memria, o vrus pode infectar outros

arquivos. Os vrus freqentemente tm efeitos colaterais nocivos.) em seu computador.

Geralmente, denomina-se de macro um procedimento escrito em cdigo VBA


que executa certas tarefas como, por exemplo, selecionar, mover e copiar
clulas, mudar o tipo de letra, ocultar ou apagar o contedo das clulas, etc.
Como vimos no captulo anterior, as macros automatizam tarefas e tornam mais
fcil a vida do usurio. Os procedimentos so escritos ou gravados sobre um
mdulo.

O VBA permite dois tipos de procedimentos: funes e sub-rotinas.

Os Sub-procedimentos (macros) so muitas vezes gravados pelo gravador de


macros e podem ser ativados usando um "shortcut-key". Outra maneira de
executar uma macro por meio da caixa de dilogo Macro que obtm-se por
meio de Ferramentas>Macros.

2007: Desenvolvedor>Gravar Macro. Se a guia Desenvolvedor no for


exibida, preciso pressionar o Boto do Microsoft Office e clicar em Opes do
Excel. Clique em Personalizar e, em seguida, marque a caixa de seleo Mostrar
guia Desenvovedor na Faixa de Opes.

Os Function-procedimentos aumentam a biblioteca das funes intrnsecas do


Excel. Uma funo criada pelo usurio usada na mesma forma como uma das
700 funes embutidas no Excel. Os procedimentos tipo "function" no podem
ser gravados, devemos escrev-los num "module sheet", ou simplesmente,
num mdulo. Uma funo retorna um valor, ao passo que uma sub-rotina no.
34

Uma chamada de funo tem o formato Nome-da-Funo (Lista-de-


Parmetros), onde Nome-da-Funo um nome qualquer iniciando com uma
letra e Lista-de-Parmetros um nmero fixo de parmetros que precisam ser
fornecidos na ordem correta.

As funes comeam com a palavra-chave Function e terminam com as


palavras End Function.

Exemplo:

Para criar uma funo, necessrio que exista um mdulo onde se possa
escrever o cdigo. Seguimos os passos descritos a seguir:

1. Ferramentas>Macro>Editor do Visual Basic

2. Inserir>Mdulo

(Ou mais fcil: Alt+F11>Inserir> Mdulo>Inserir Procedimento> Funo ou


Exibir>Project Explorer>Inserir Mdulo. 2007: Alt+F11>Inserir>Mdulo)

Nesse momento, aparece uma rea em branco onde pode-se digitar o texto da
funo (ou das funes). No canto superior direito ver uma caixa com seta
para baixo Declarao, e no outro canto tem a caixa Geral. (Uma mesma
macro pode ser usada por vrias planilhas, desde que no seja criada
diretamente em uma planilha especfica, mas sim em um mdulo.)

Digite agora o texto das duas funes, uma aps a outra o editor insira
automaticamente a linha de separao.

A caixa Declarao mostra sempre o nome da ltima funo. A funo


Montante faz uma chamada funo Simples_Juros e produz com o valor, por
esta determinado, a saida final da funo Montante.

3. Arquivo>Salvar Pasta1.xls (Depois vem Nome do arquivo onde voc pode


escrever, p.ex., Juros_Simples ou outro nome significativo.) Mas, no preciso
salvar o mdulo, suficiente salvar a pasta de trabalho aps terminar o seu
trabalho. Em 2007, clique no Boto do Microsoft Office: Salvar como>Pasta de
Trabalho Habilitada para Macro de Excel.
35

4. Volte janela do Excel (clicando no cone do Excel - o primeiro boto da


esquerda) e coloque o ponteiro dentro de qualquer clula.

5. Inserir>Funo>Definida pelo usurio (ou d um clique duplo no smbolo fx).


As duas funes, por nos criadas, aparecem listadas em Definida pelo usurio.
Pode selecionar Simples_Juros ou Montante. As duas funes calculam o
Montante e os Juros simples de uma aplicao do capital c a i% ao ano durante
n dias. (O Excel no contm embutida nenhuma funo para juros simples.)

Exemplo numrico: Calcular o valor dos juros correspondentes a um


emprstimo de R$ 12.500 pelo prazo de 18 meses, taxa de 1,5% ao ms.
(Nossas frmulas querem a taxa ao ano e o prazo em dias. Por isso, temos que
inserir: c = 12500, i = 1,5*12, n = 18*30)

Na figura a seguir temos adicionado tambm o caso dos juros compostos.

(No prximo captulo, vamos dar mais informaes sobre conceitos financeiras
bsicos.)
36

Adicionar um boto tipo formulrio (forms)

Agora vamos ver, outra vez, como se pode associar um boto a uma macro.
No captulo anterior, tiramos o boto da Caixa de ferramentas de Controle para
obter um "CommandButton". Esta vez usamos o boto do menu Formulrios.

Exemplo:

Suponha que nas clulas A1 a A10 (Cells(1,i) com i variando de 1 a 10) fiquem
os valores x, por exemplo as notas de 10 alunos. Queremos uma macro que
selecione as notas x tais que 6 < x < 8 e que as coloque na coluna B ao lado
das clulas em que se encontravam.

Clique em Exibir>Barra de ferramentas>Formulrios


Clique no cone do boto e note que o cursor virou um smbolo "+".
Desenhe um retngulo para o boto. Logo aparecer a janela "Atribuir
macro".
Atribua o boto macro com o nome "Boto".
Agora basta clicar no boto para que a macro seja executada.

2007: Desenvolvedor>Inserir>Controles de Formulrio etc. (Os Controles


Active X os usaremos no captulo 18.)
37

Recurso (Recursividade)

Recursividade uma tcnica de programao em que uma funo chama a si


mesma. Ela faz isso para resolver um problema menor. O algoritmo termina,
quando a funo pode resolver um problema menor sem ter que se chamar
novamente.

A recurso geralmente utilizada porque simplifica um problema conceitual-


mente.

Os exemplos clssicos do emprego de funes recursivas so o clculo do


nmero fatorial e o clculo dos termos da seqncia de Fibonacci.

Function Fatorial (n As Integer) As Integer


If (n=1) Then
Fatorial = 1
Else
Fatorial = Fatorial(n-1) * n 'frmula de recurso
End If
End Function

Vemos que o nome da funo,"Fatorial", aparece tambm no lado direito da


frmula de recurso, onde a funo est chamando-se a ela mesma.

Isso no pode acontecer num algoritmo no recursivo, como podemos ver nas
duas seguintes verses do programa.
38

No primeiro programa, utilizamos a estrutura While ... Wend, no segundo


programa trabalhamos com For ... To

Function Fatorial_While (n As Integer) As Integer


Dim cont As Integer, fat As Integer
cont = 1
fat = 1
While cont < n
fat = fat * (cont + 1)
cont = cont +1
Wend
Fatorial_While = fat ' valor de retorno
End Function

Nota-se que as variveis "cont" e "fat" so declaradas As Integer.Mais


frente vamos declarar fat como Double, veja o ltimo exemplo deste captulo.

Function Fatorial_For (n As Integer) As Integer


Dim cont As Integer, fat As Integer
cont = 1
fat = 1
For cont = 1 To n Step 1
fat = fat * cont
Next
Fatorial_For = fat ' valor de retorno

End Function

Para executar a ltima macro, clicamos sobre fx. Na tela "Inserir funo"
selecionamos Definida pelo usurio e escolhemos "Fatorial_for". Em seguida
vemos uma tela que pede um argumento. Com o valor N = 6 obteremos o calor
720.
39

Trabalhar com as funes MsgBox e InputBox

Vou demonstrar agora o uso de uma caixa de mensagens (message box).

Utilizamos esta funo para exibir mensagens em uma pequena janela.


Podemos exibir texto e tambm valores de variveis. Na maioria dos casos
temos que exibir uma mistura de texto e nmeros. Para lograr isso, utilizamos o
operador de concatenao "&". Considere alguns exemplos:

Neste exemplo usamos a instruo condicional IF...Then...Else. A linha


Application.ActiveCell refere-se a qualquer clula da planilha. Clique na
planilha e insira 12 numa clula (certifique-se de que o cursor permanea nessa
clula). Faz Alt+F11 para voltar a sua janela de cdigo e clique em Executar ou
pressione F5 para executar a macro. Voc ver uma caixa de mensagem
informando que o valor na clula igual a 12.

Se o valor no for 12, ento ver a outra mensagem.

(O objeto "Application" representa o prprio Excel e tem 218 propriedades e


mtodos. Visto que a propriedade "ActiveCell" global, podemos escrever

ActiveCell=12 em vez de Application.ActiveCell=12)


40

O seguinte exemplo mostra uma MsgBox-Yes/No de dilogo:

vbYesNo,vbNo,vbYes so constantes. vbYes toma o valor 6 se o boto Yes


for pressionado, vbNo toma o valor 7 se o boto No for pressionado. Veja
tambm a seguinte verso

Aparece aqui a instruo Exit Sub, com a qual voc poder sair de uma sub-
rotina ou de um "loop" (lao) usando a instruo Exit.

Agora utilizamos o loop While...Wend. Ele continuar a ser executado


enquanto uma condio especificada for verdadeira. Ser encerrado, assim que
a condio for falsa. Em nosso caso, a execuo do loop terminar quando o
raio for 0.
41

Com um Do...Until-Loop podemos lograr a forma mais breve e elegante.


Ele continua a execuo da rotina at uma condio especfica ser atendida, em
nosso exemplo "pergunta = vbYes". Geralmente isso significa esperar que uma
varivel chegue a um valor especfico. Quando a condio atendida, o loop
encerrado e o programa continua a ser executado na instruo seguinte ao
loop, aqui com um MsgBox:

Existe tambm um InputBox para dizer ao usurio o que deve fazer, por
exemplo: InputBox("Introduza um nmero inteiro"). Veja o prximo exemplo.
42

Vemos aplicada a funo InputBox em duas diferentes formas num clculo de


desconto. Os cdigos foram escritos sobre o mesmo formulrio. Antes de
aplicar uma ou outra verso, preciso de eleger na caixa das "Declaraes" a
macro desejada, no caso temos "Calcule_desconto2". Ativa-se a macro com F5.

A macro "Calcule_desconto1" foi escrita usando a instruo Select


Case. O cdigo muito eficiente e faz uso s uma vez da MsgBox.
Em "Calcule_desconto2" fazemos uso da instruo IF...ElseIf
...Then. Esse cdigo funciona, mas muito ineficiente. MsgBox foi
quatro vezes utilizado! Observe que a ltima aplicao do MsgBox com
Else e no com ElseIf.

No exemplo a seguir, introduziremos num programa para calcular o fatorial


uma caixa de mensagem junto com uma caixa para introduzir o nmero cujo
fatorial queremos calcular.

Note que a varivel fac definida como nmero de tipo Double (15 dgitos
significativos e Emax=308), pois o nmero fatorial pode facilmente superar o
tamanho de um nmero do tipo Integer (-32,768 at 32,767). (Na linguagem
Delphi, um nmero do tipo Integer vai de -2147483648 at 2147483647.)
Quando um nmero muito longo, ele automaticamente visualizado na sua
forma exponential.
43

Observe que o texto no MsgBox foi escrito em duas linhas. Depois do smbolo &
deve-se deixar um espao e escrever _ .

Alguns comentrios sobre a palavra-chave DIM

A sintaxe geral de uma declarao de varivel :

Dim nome da varivel As tipo de dado

VBA permite usar DIM sem mencionar um tipo de dado: DIM altura. Neste
caso, VBA tratar a varivel como tendo o tipo Variant. Exemplo: Se "altura" for
declarada como integer, DIM altura As Integer, ela ocuparia 2 bytes. Agora,
uma varivel Variant requer 16 bytes, ou seja, o no declarar a varivel como
integer significa um desperdcio de memria de 14 bytes. Num programa
grande e complexo, o desperdcio de memria pode ser significativo, pois ele
reduzir tambm a velocidade com a qual o programa corre, resultando num
desempenho pobre. Por esse motivo, uma boa idia declarar todas as
variveis.

Mas, se estamos desenvolvendo um programa pequeno, a declarao de todas


as variveis pode chegar a competir com o tamanho do programa prprio.
44

Neste caso, no se justifica tal declarao, a menos que o desenvolvedor anote


os DIMs por principio.

O que faz a declarao pouco amvel o fato de que se deve declarar cada
varivel por separado. Na declarao DIM a,b,c,d As Integer somente d
declarado como integer, a,b,c so do tipo Variant. Por outro lado, possvel
colocar mais de uma declarao em uma linha, escrevendo s uma vez DIM,
por exemplo

DIM altura As Integer, Name As String, fac As Double

Claro que, desta forma, no economizamos muito espao, mas tambm pouco
algo. Normalmente anotamos sempre as declaraes das variveis (por
princpio), mas, s vezes, e especialmente nos ltimos captulos, deixamos as
declaraes para o leitor, como exerccio.

Uma boa noticia o fato de que VBA permite o uso de certos sufixos como
indicadores de tipo de dados. Por exemplo, o # anexado na varivel a significa
que a# do tipo Double (% indica integer, & longo, $ string etc.)
45

Captulo 4
Juros, Taxas e tudo isso
Neste livro no quero enfatizar as aplicaes do Excel aos negcios, mas uma
breve introduo ao uso das funes financeiras indispensvel, assim como,
num captulo posterior, vamos demonstrar a aplicao do Excel em questes da
maximizao de lucros e de outras questes fundamentais da vida do homem
avanado.

Primeiro, vamos explicar o fundo terico do assunto, depois praticamos nossos


conhecimentos seguindo as instrues dum pequeno tutorial.

Um pouco de teoria
1. Juros simples

Em uma conta que pague juros simples, a taxa anual aplicada sobre a soma
original, sendo, portanto, a mesma a cada ano. Se tivssemos investido c = R$
100 a juros simples, de i = 5% ao ano, o saldo (montante) aumentaria a cada
ano em R$ 5 dando-nos uma progresso aritmtica: 100, 105, 110, 115,...

Ento, no final do primeiro ano temos 100 + 100 0,05 = 100 + 5 = 105 reais.
No final do segundo ano teriamos a soma de 100 + 100 2 0,05 = 110 reais,
e assim por diante. Depois de n anos, o nosso montante Mn ser de c + c n
i = c(1 + n i) reais, sendo i a taxa de juros anual. A frmula para os juros
dada por jn = cni. (Nos clculos, sempre exprimimos i como um decimal, por
exemplo 0,05 em vez de 5%.)

Se um capital de R$ 10000 for investido em vez de somente R$ 100, o clculo


ser assim:
46

O valor dos juros no final do primeiro ano : j1 = 10000 0,05 = 500.


O montante no final do primeiro ano ser: M1 = c + j1 = 10000+500 = 10500.

Juros no final do segundo ano: j2 =2 j1 = 1000 (os juros por ano so sempre
igual a 500).
Montante no final do segundo ano: M2 = 10000 + 1000 = 11000

Os juros no fim do terceiro ano so j3 = 3 j1 = 1500 e para o montante


teremos M3 = 10000 + 1500 = 11500 reais.

Nossa frmula Mn = c(1+ni) daria tambm M3 = 10000(1 + 3 x 0,05) =


11500

Exemplo 1:

Calcule o capital que, aplicado a 35% ao ano, durante dois anos, produziu os
juros de R$ 21000.

Resoluo:

Da frmula dos juros jn = cni vamos isolar c:

c = jn/(ni) = 21000/(20,35) = 30000 reais.

Exemplo 2:

Benedita fez uma aplicao de R$ 40.000,00 taxa de 38% ao ano, durante 2


anos, 5 meses e 12 dias. Quanto recebeu de juros com essa aplicao?

Resoluo:

A unidade de tempo da aplicao deve ser reduzida mesma unidade de tempo


da taxa, assim

5 meses = 5/12 anos; 18 dias = 18/360 anos = 1/20 anos. Temos ao todo n =
148/60 anos. Logo: j = cni = 400000,38148/60 = 37.493,33 reais.

Portanto, Benedita recebeu R$ 37.493,33 de juros com essa aplicao.

(A funo =DIAS360(data_inicial;data_fial) retorna o nmero entre duas datas


com base em um ano de 360 dias (= ano comercial = doze meses de 30 dias).

Exemplo: =DIAS360("4/5/2007";"18/6/2008") d 404 dias. Porm a instruo


="18/6/2008"-"4/5/2007" resulta em 411 dias. Aqui foram calculados os dias
exatos do calendrio com 365 dias ao ano.)
47

2. Juros compostos (juros sobre juros)

Vamos olhar rapidamente como funcionam os Juros Compostos. Suponha


que investimos R$ 100 (principal) em uma conta que paga 5 por cento de
juros compostos anualmente (ao ano = a.a.) No final de um ano, nosso
saldo ser 100 + 1000,05 = 100(1+0,05)=1001,05 = R$ 105.

O banco ento considerar esta nova soma como um novo principal que
ser reinvestido mesma taxa. No final do segundo ano o saldo ser
105+1050,05=105(1+0,05)= 1051,05 = R$ 110,25.

No final do terceiro ano teremos 110,251,05 = R$ 115,76, e assim por


diante. Desse modo, no apenas a soma original recebe juros anuais, mas
tambm os juros incorporados ao principal passam a produzir rendimento
no perodo (aqui no ano) seguinte da a expresso "juros compostos" ou "
juros sobre juros". Se tivssemos investido nossos R$ 100 a juros simples,
de cinco por cento, o saldo depois do terceiro ano seria apenas R$ 115. (S
no final do primeiro ano temos em ambos os casos o mesmo saldo de R$
105.) O dinheiro investido a juros compostos vai, aps o primeiro ano,
sempre crescer mais rpido do que se for investido a juros simples, no
importando qual seja a taxa.

Alguns bancos calculam o juro acumulado no uma vez, mas vrias vezes
por ano. Se, por exemplo, uma taxa de juros anual de 5 por cento
composta semestralmente, o banco usar metade da taxa de juros anual
como taxa por perodo. Da, que num ano, um principal de R$ 100 ser
composto duas vezes, cada vez a uma taxa de 2,5%. Assim, teremos no
final do primeiro perodo (= 6 meses) 100 (1+0,025) = R$ 102,5 e no final
do segundo perodo (= 1 ano) 100(1+0,025)(1+0,025) = 100 (1+0,025)2.
Assim, o saldo ser esta vez de R$ 105,0625, isto , cerca de seis centavos
a mais do que o mesmo dinheiro renderia se fosse composto anualmente a
cinco por cento.

O caso geral.

Vamos ver o que acontece no caso geral. Suponha que investimos um


principal de c reais em uma conta que paga r por cento de taxa de juros
compostos anualmente. Isto significa que, no final do primeiro ano, nosso
saldo ser c (1+r ), e no final do segundo ano, c (1+r )2 , e assim por diante
at que aps t anos nosso saldo ser c (1+r )t . Chamando esta soma de M,
chegamos frmula

M = c (1 + r )t (1)

O fator (1+r)t denomina-se fator de capitalizao ou de valor futuro.


48

Suponha, agora, que a composio feita n vezes ao ano. Para cada


perodo (anual, semestral, trimestral, semanal e mesmo dirio) o banco usa
a taxa de juros anual dividida por n, que r/n. E como em t anos existem nt
perodos, um principal c , aps t anos render um montante de

r
M = c(1 + ) nt (2)
n

A frmula (1) apenas um caso especial da equao (2) para n = 1.


Observe que M = (1+1/n)n para o caso c = R$1 e t = 1 ano.

Da seguinte tabela podemos tirar a influncia que o fator n tem sobre o


montante M. Usamos os valores j conhecidos: investimos c = R$ 100 a
uma taxa de r = 5% a.a. durante um ano.

Os resultados so bem surpreendentes. Como vemos, uma soma de R$ 100


composta diariamente rende exatamente treze centavos a mais do que
quando composta anualmente e cerca de um centavo a mais do que quando
composta mensalmente ou semanalmente! Quase no faz diferena em que
conta investimos o nosso dinheiro. Mas isso no exato, pois se voc for
rico, ento poderia investir R$ 1000.000 em vez de s R$ 100 e o seu
saldo no final do primeiro ano seria R$ 1.050.000 se composto anualmente,
comparado com R$ 1.051.267,50 se composto diariamente:

R$ 1.050.000,00
R$ 1.050.625,00
R$ 1.050.945,34
R$ 1.051.161,90
R$ 1.051.245,84
R$ 1.051.267,50
49

3. Juros contnuos

Se voc calcular a expresso M = (1+1/n)n para valores grandes de n vai


observar um comportamento bem peculiar. No que somos tentados a
pensar que M vai se aproximar a 1 ? - pois 1/n ficar cada vez mais prximo
de 1 a medida que n aumenta, e 1 elevado a qualquer potncia sempre
igual a 1. (Para este caso hipottico, tomamos r = 1, o que significa uma
taxa anual de juros de 100%.)

Ser interessante fazer um clculo. Aqui est:

Parece que qualquer aumento posterior em n quase no afetar o resultado


as mudanas acontecero em dgitos cada vez menos significativos; os
valores estacionam nalgum ponto em torno de e = 2,71828.

No sabemos quem primeiro notou o comportamento peculiar da expresso


(1+1/n)n medida que n tende ao infinito, por isso, a data exata do
nascimento do nmero que mais tarde seria denotado de e permanece
obscura.

Exemplo:

Se uma taxa de juros contnua de 0,5% a.m., quanto se obteria no final


de um ano sobre uma aplicao de R$ 1.000,00 a essa taxa?

Resoluo:

Usando a frmula (2) temos

M12 = 1.000 e 0,512/100 = R$ 1.061,84

comparado com R$ 1.051,27 se composto diariamente.


50

Pequeno tutorial para entrar no mundo das finanas


com o Excel

Vamos comear com desenvolver umas pequenas aplicaes financeiras.


Queremos saber como calcular juros, taxas, emprstimos e afins. Criaremos
primeiro uma planilha bem simples com a qual podemos repetir alguns dos
clculos realizados acima no caso dos juros simples. Para o clculo de i
utilizamos os seguintes dados:

Uma aplicao de R$ 22.000,00 pelo prazo de 160 dias, obteve um rendimento


(juros) de R$ 2.105,00. Qual a taxa anual de juros simple dessa aplicao?

Usando a frmula j = cni, temos i = j/(cn). Na planilha colocamos isso em L9


como =K10/(K7*K8). O resultado i = 21,53 % ao ano. O perodo intro-
duzimos em K8 como =160/360.
O "Modelo geral" envolve os trs clculos separados. Aqui esto as frmulas
utilizando a funo SE (veja as explicaes em seguida):
51

A pergunta para o "Modelo geral" foi:


Calcular o valor dos juros correspondentes a um emprstimo de R$ 3.000,00,
taxa de juros de 18% ao ano, pelo prazo de 10 meses (=10/12 anos).

Obtemos R$ 450 de juros. Calculamos o montante manualmente: M= R$ 3450.


(Colocando Perodos = 10, significa reduzir a taxa em =10/12 p.m. O resultado
no vai mudar.)

Para simplificar a planilha, temos utilizado um s bloco. Isso logramos por


meio da funo lgica SE. Como isso funciona, veremos agora (observe que foi
trocada a seqncia dos dados, para poder praticar o mtodo).

D6: =SE(C6="?";SE(C7="?";C10/(C8*C9);C7/(1+(C8*C9)));"")
D7: =SE(C7="?";SE(C6="?";C10+D6;C6*(1+(C8*C9)));"")
D8: =SE(C8="?";(C7/C6-1)/C9;"")
D9: =SE(C9="?";(C7/C6-1)/C8;"")
D10: =SE(C10="?";SE(C7="?";D7-C6;C7-C6);"")

As frmulas em D8 e D9 so quase idnticas:

D8: Primeiro perguntamos, se a condio C8 ="?" for verdadeiro, ou seja, se a


taxa de juros for desconhecida. Ento a funo SE retornar o resultado da
frmula (C7/C6-1)/C9 o que a taxa i de juros, pois i = (M/c -1)/n. Se na clula
C8 no se encontra nenhum smbolo ? (que deve ser digitado entre aspas
duplas), ento nada, representado por aspas duplas (""), ser escrito na clula
C9.

D10: Se os juros so desconhecidos, olhamos na clula C7, para ver se o


montante M dado. Se C7 contem o valor de M, obteremos os juros por meio
de C7-C6, ou seja j=M-c.
Caso contrrio, quando C7="?" verdadeiro, calculamos j com a frmula D7-
C6, supondo que o montante foi calculado e escrito na D7.
52

Assim, nosso modelo no vai cobrir todos os casos possveis, s vezes ser
necessrio de calcular manualmente um ou outro valor, p.ex. o montante.

Para os Juros compostos, tambm podemos criar um Modelo, usando a


frmula M = c(1+i)n em que M o montante (valor futuro), c o capital (valor
presente), i a taxa de juro composto e n o nmero de perodos. A figura
mostra tambm as Funes financeiras que o Excel tem embutido para tais
problemas.

Exemplos:

1. Qual ser o montante de uma aplicao de R$ 7000 ao final de 7


anos, taxa de juros compostos de 6% ao ano?

Soluo: R$ 10.525,41

2. Determinar o prazo necessrio para que um capital no valor de R$


10.000,00 aplicado taxa de juros compostos de 40% a.a. se
transforme em R$ 120.000,00.

Soluo: 7,39 anos


53

Certifique-se de que o perodo de tempo n e a taxa de juros i estejam na


mesma unidade de tempo.

As funes financeiras que foram usadas at agora so:

=VP(taxa;nper;;vf)
VP = Valor presente ou capital inicial utilizado para o clculo do valor
presente de uma operao financeira.
=VF(taxa;nper;;vp)
VF = Valor futuro ou montante usado para o clculo do montante.
=TAXA(nper;;vp;vf)
TAXA = taxa de juros compostos por perodo.
=NPER(taxa;;-vp;vf)
NPER o prazo da operao (o nmero de perodos)

Pagamento em Parcelas (compras a prazo, depsitos mensais


etc.)

Para estes clculos, o Excel oferece a funo Pagamento PGTO(taxa;nper;vp)


que colocamos em C10, veja a figura a seguir.
Nela, o primeiro argumento refere se taxa de juros mensal. Para mudar a
taxa anual (em %) para mensal, divida-a por 12. O segundo argumento o
nmero de perodos e, o terceiro, o valor do financiamento, ou seja, o valor
presente (vp).

A soma total que devemos pagar C10*C5 em C11. O total de juros calculamos
na clula C12 usando a frmula = C11 (- C6). O sinal negativo diante de C6
toma conta do fato de que o valor em C11 marcado em vermelho, indicando,
desta forma, que se trata de um valor negativo que ns pagamos de nosso
patrimnio. Se voc quer evitar este problema com os nmeros negativos, s
colocar C6 na frmula =PGTO(C4/12;C5;-C6). Todos os valores nas clulas
C10:C12 sero ento pretos.
54

1. Imagine que voc fez um financiamento de R$ 9000 cujo pagamento


vai ser parcelado em 12 meses. A Taxa de juros de cmodos 22% a.a.

(Se a financeira cobra 5% de Juros ao ms, p. ex. no ano 2007, devemos


digitar 5x12% = 60 % na clula C4. Taxas deste tamanho foram praticamente
desconhecidas no resto do mundo.)
Os formatos adequados para os valores monetrios podemos selecionar com
Formatar>Clulas>Nmero>Moeda. (Selecione as clulas com o boto direito
do mouse.)

2. Uma financeira, operando com a taxa de 8,5% a.m., concedeu um


emprstimo de R$ 10.000,00, a ser amortizado em 6 prestaes mensais
iguais, a primeira vencendo daqui a 30 dias (=Tipo 0). Calcular o valor
do pagamento mensal.

Neste exemplo, a taxa de juros dada ao ms. Neste caso escrevemos em C4:
=8,5%*12 = 102% ao ano (!!)
A prestao mensal ser de R$ 2.196,07 e o valor total pago ser R$
13.176,43. Desfrute outro exemplo desse tipo:

3. Qual o valor da prestao que se pagar para juntar em 30 meses, a uma


taxa de juros de 3,6% ao ms?
O pagamento mensal ser de R$ 440,44

Outra maneira de fazer este clculo com o uso da funo PGTO num
formulrio que o Excel oferece junto com cada funo.

Em nosso caso selecionamos Inserir>Funo>PGTO>OK e aparecer a


seguinte tela:
55

Agora queremos substituir os endereos das clulas por nomes significativos.


Por exemplo, vamos introduzir on nome "Taxa_Juros" para designar a clula
C4, pois bastante mais fcil usar nomes do que operar com smbolos. Vamos
dar um nome a cada clula.
Coloque o cursor em C4 e acione o comando Inserir>Nome>Definir. Na caixa
Definir Nome, digite, em cima Taxa_Juros (o nome no pode ter espaos).
Embaixo, o Excel j inclui, automaticamente, o endereo de C4. Acione OK.
Repita a operao para as clulas C5 e C6, nomeando-as, respectivamente,
como Num_Pagamentos e Valor_Financiado. Faa, tambm, as adequadas
formataes nas trs clulas, ajustando cada uma conforme o contedo
esperado:Formatar>Clulas>Nmero>Moeda>Casas decimais. As clulas C10:
C12 recebem o formato de Moeda.

Definimos agora

C10: Pago_Mensal
C11: Pago_Total
C12: Total_Juros

A cada um desses nomes deve corresponder uma frmula:

C10: =PGTO(Taxa_Juros/12;Num_Pagamentos;-Valor_Financiado)
C11: =Pago_Mensal*Num_Pagamentos
C12: =Pago_Total-Valor_Financiado

Observe o sinal de menos diante de "Valor_Financiado" na frmula


=PGTO(Taxa_Juros/12;Num_Pagamentos;-Valor_Financiado): ele indica que
cada pagamento ser subtrado do valor financiado.
56

A sintaxe completa da funo PGTO contm mais dois argumentos, a saber VF


= Valor Futuro e TIPO (que indica se o pagamento ser feito no incio ou no
final de um ms). PGTO(taxa;nper;vp;vf;tipo)
TIPO = 1 para pagamento antecipado e TIPO = 0 para pagamento no final do
prazo.

Por exemplo, se comprar uma tev e a primeira prestao for paga aps o
primeiro ms, o tipo ser 0; se ela for paga no ato da compra, o tipo ser 1.

Por meio do Excel podemos, tambm, poupar dinheiro. Veja o exemplo:

Se voc paga durante 36 meses no final de cada ms, TIPO = 0, uma quantia
de R$ 350 a uma taxa de 3,3 % ao ms, quanto ser o retorno?

Voc ter no final dos 36 meses a quantia de R$ 23.526,25 a sua disposio.


Como foi feito este clculo? Neste caso, selecionamos Inserir>Funo>VF>
OK. O resultado ser R$ 23.526,25. Este valor o Valor Futuro do seu
investimento. Um Investimento com TIPO = 1 daria R$ 24.302,62.

Compare com a figura a seguir, onde aparece a funo VF:

Na Barra de frmulas podemos ver o registro "=VF(0,033;36;350;;0)".

Agora imagine que o investimento de R$ 250 mensais durante cinco anos no


incio de cada ms a uma taxa de 1,5% ao ms. Qual ser o retorno? Nossa
frmula com =VF(0,015;60;250;0;1) dar a quantia de R$ 24.414,47.
57

Captulo 5
Grficos com 2007, Parte I

Para preparar o tema BioRitmo, vamos desenhar o grfico da funo

y = sen( x)

O procedimento bsico idntico ao aplicado nos exemplos anteriores, ou seja,


primeiro devemos fazer uma tabela com os valores da funo para um certo
intervalo de valores x e colocar valores fixos (constantes) na suas respectivas
clulas. Armazenamos a constante (Omega) com o nome "Omega" na clula
E1. (Na Caixa de nome, ao lado esquerdo do smbolo fx, escrevemos Omega. O
incremento 2*PI()/100 e recebe o nome "passo"; sua clula E2.)

1. E2: =2*PI()/100 (incremento)


2. A3: 0; A4: =A3+passo
3. B3: =SEN(E$1*A1) -ou B3: =SEN(Omega*A1)
4. Copie as frmulas em A4 e B4 at A103 e B103
5. Selecione as clulas A1 at B103
6. Clique na guia Inserir>Grficos e escolha Disperso XY. D um
clique no grfico e nos eixos para format-los.

O Excel tambm usa cabealhos de coluna ou linha dos dados do grfico para
nomes de sries. Os nomes das sries aparecem na legenda do grfico. Ns
escolhemos y=sen(wx) como cabealho em A1.
58

Voc pode elaborar um grfico em sua prpria planilha com nome prprio, ou
incorpor-lo numa planilha j existente, assim como na figura acima. No
prximo exemplo, vamos ver, como se cria um grfico numa prpria planilha
dentro da nossa Pasta de Trabalho.

O mtodo que acabamos de descrever no sempre o mtodo mais prtico. No


exemplo a seguir trabalhamos, depois de usar Inserir>Grfico, com o Assistente
de Grfico, para realizar a escolha do tipo de grfico e das vrias opes de
format-lo.

Os Bio-Ritmos

Bio-Ritmos so os ritmos de nossa vida, que controlada por trs ritmos ou


ciclos. Eles comeam no momento de nosso nascimento. O ritmo fsico tem um
perodo de 23 dias, o emocional de 28 e o intelectual de 33 dias. A "cincia",
que os estuda, conhecida como Bio-Ritmologia (Biorhythmology). Parece que
os primeiros especialistas na rea, os primeiros Bio-Ritmologos, foram alemes.
O grfico que representa estes ritmos pode ser denominado Ritmograma.

O Bio-Ritmo a forma mais eficiente de controlar e diminuir a taxa de


acidentes que se conhece em todo mundo, dizem os Bio-Ritmologos; sendo,
segundo eles, incorporado ao cotidiano dos pases mais avanados, como os
Estados Unidos, o Japo e em praticamente toda a Europa. (Estatsticas
apontam para um ndice de 110 mil pessoas acidentadas somente no trnsito a
cada ano no Brasil. Nos 25 anos, entre 1975 e 2000, 107.405 pessoas
morreram nas ruas e estradas do Brasil. Pode-se comparar esta cifra com os 50
mil soldados americanos que perderam a vida em aproximadamente 20 anos
de Guerra no Vietn. Para no esquecer: Segundo a TV Globo, outras 147 mil
brasileiros so vtimas anualmente da violncia e criminalidade. Mas, apesar
disso, o Brasil ainda um pas privilegiado, por no ter terremotos, vulces ou
furaces.)

Bem, para fazer os grficos dos Ritmogramas usando o Excel, temos de


desenhar a funo

2
(1) y = sen( t)
T
para T = 23, 28 e 33 dias. t = tempo entre nascimento e uma certa data. :=
2/T. Normalmente, t um nmero grande, e ser razovel de restar dele o
nmero dos perodos passados. Por isso decompomos t em nT e um resto t'.
N o nmero dos perodos passados: n = INT(t/T). Temos, assim,

(2) sen(t ) = sen( (nT + t ')) = sen(2 nT / T + 2 t '/ T )


59

Podemos, no entanto, simplificar esta expresso

2 A
(3) y = sen(t ) = sen(t ') = sen( B ) , onde B :=
T
com A:= MOD(t;T).

Por meio de E3: =DATA(D1;D2;D3) determinamos o nmero de srie seqn-


cial que representa uma determinada data.

A sintaxe da funo DATA DATA(ano;ms;dia). Exemplo: =DATA(2007;7;12)


retorna 12/7/2007, se a clula estiver formatada como Data. Temos de
transformar este resultado no nmero de dias contado a partir do 1. de janeiro
de 1900. Para lograr isto, d um clique com a tecla direita do mouse sobre a
clula que contem 12/7/2007, para escolher Formatar Clulas> Nmero>
Categoria> Geral. (O Excel armazena datas como nmeros seqenciais para
que eles possam ser usados em clculos. Por padro, 1. de janeiro de 1900
tem o nmero de srie 1. O nmero de data 39275 significa 39275 dias aps 1.
de janeiro de 1900.)

Com E6: =DATA(D5;D6;1) determinamos o nmero da data do primeiro dia do


ms D6 no ano D5. Na clula D8: =E6-E3 temos o tempo t. A equao (3)
permite o clculo dos valores "biorrtmicos" para um dia s. Se os queremos
para todo um ms, escrevemos y = sen(t"+B). t" o tempo a partir do
primeiro dia do ms. A constante de fase, B, deve ser calculada para cada um
dos trs ciclos separadamente. Por exemplo: Bfsico = 2Afsico/23.

Ento, devemos preencher as clulas do seguinte modo (compare com a figura


a seguir):

1. E3: =DATA(D1;D2;D3); E6: =DATA(D5;D6;1)


2. D8: =E6-E3
3. G3: =2*PI()*MOD(D8;23)/23
4. G4: =2*PI()*MOD(D8;28)/28
5. G5: =2*PI()*MOD(D8;33)/33
6. A11: 1; A12: =A11+1 (copiar at A41 -ou leve o ponteiro
do mouse at a ala de preenchimento na clula A11 e,
pressionando o boto direito do mouse, arraste at A41.
Escolha a opo Preencher Srie e o Excel faz a seqncia
automaticamente. Com o recurso Preencher Srie se pode
tambm preencher clulas seqencialmente com outros dados,
p. ex. do tipo Data/Hora. Se voc mover a ala de
preenchimento pressionando o boto direito do mouse,
aparecer a seguinte tela. Escolha a opo Srie para utilizar
outros incrementos.)
60

7. B11: =SEN(2*PI()*A11/23+G$3) (fsico)


8. C11: =SEN(2*PI()*A11/28+G$4) (emocional)
9. D11: =SEN(2*PI()*A11/33+G$5) (intellectual)
10. Copiar os contedos das clulas B11:D11 at B11:D41

11. Grfico
Selecione o intervalo A10:D41
Inserir>Disperso>Com Linhas Suaves

Clique no grfico e observe acima direita as Ferramentas do


Grfico, clique em Layout para ativar ou desativar a legenda
ou para colocar um ttulo no grfico. Nesta mesma faixa, existe
um grupo de opes para alterar a formatao dos eixos e
para ativar ou desativar as linhas de grade.
61

Existe uma maneira muito rpida para criar um grfico separado da planilha
original. Faa o seguinte:

1. Selecione a tabela dos dados (B10:D41)


2. Pressione a tecla F11 (a nova planilha vai ser identificada como Grfico1.
Com Shift-F11 insere-se s uma nova planilha sem grfico.)
3. Clique no grfico para alterar o Tipo de Grfico.

A prxima figura mostra o resultado.

Sobreposio de grficos (Interferncia)

Desenhe os grficos das funes

1
f ( x) = x 2 + 2 x
9
1 1
g ( x) = x3 x 2 + 4 x + 2
54 2
62

e o grfico da sua soma para o intervalo 0<x<20.

Na faixa Inicio preparamos a tabela com os valores das trs funes f(x), g(x),
f(x) + g(x). Na clula F2 temos o incremento 0,4.

1. A2: 0; A3: =A2+F$2; copiar at A52


2. B2: -(A2^2)/9+2*A2
3. C2: =(A2^3)/54-(A2^2)/2+4*A2+2
4. D2: =SOMA(B2:C2); copiar B2:D2 at D52

5. Grfico
Escolher A1:D52
Inserir>Disperso XY>Com Linhas Suaves
Formatao personalizada usando Layout do Assistente de Grfico (aparece
sempre quando clicar no grfico).

O Excel 2007 permite trs diferentes cores para o interface de usurio. Para
mudar o esquema de cores dum interface, clique no boto do Office e escolhe
Opes do Excel>Esquema de Cores. Pode-se eleger entre Azul, Prateado e
Preto. Neste exemplo foi elegido Preto. Pode-se ativar os Opes do Excel
tambm com um clique sobre a primeira linha da tela do Excel.

Na primeira linha da tela, est localizada a Barra de Ferramentas de Acesso


Rpido, onde se pode colocar os comandos mais comuns do dia-a-dia, por
exemplo o assistente grfico, veja a figura abaixo, onde se v iluminado o cone
para criar grficos. Atravs da Barra de Acesso Rpido, chega-se tambm
Central de Confiabilidade, onde pode dar a sua opinio sobre as macros.
63

Seleo de Clulas Longnquas (com F8 F5)

Consideremos agora a superposio, ou interferncia, de dois movimentos


harmnicos simples expressados pelas seguintes funes:

y1 = A1sen(1t ); y2 = A2 sen (2t )

Os dois movimentos harmnicos simples interferem construtivamente porque


suas amplitudes somam-se. Se A1=A2, ento temos o fenmeno dos batimentos
puros. Isso ocorre, por exemplo, quando dois diapases de freqncias quase
idnticas vibram simultaneamente prximos um do outro. No seguinte exemplo
fazemos A1 = A2 = 1 e 1 = 6 Hz, 2 = 5Hz. Voc pode variar estes valores e
observar instantaneamente o resultado no grfico.
64

A coluna A contem os tempos com um incremento de 4*PI()/200 = 0,0628 na


clula H5. (A1: 0, A2: =A1+H$5). Em B1 colocamos =$H$3*SEN($H$1*$A1).
Em seguida, copiamos com Ctrl+C a frmula para a rea de Transferncia.
Posicione o ponteiro sobre C1 e clique na tecla ENTER. O copiado deve ser
editado, para ter em C1 a frmula =$H$4*SEN($H$2*$A1).

D1: =SOMA(B1:C1). Todas as frmulas devem ser copiadas at a linha 201.


(As frmulas na coluna A comeam na clula A2.)

Antes de fazer o grfico (com F11 ou Inserir>Disperso etc.), devemos


selecionar as colunas a desenhar. Neste caso sero A e D. Mas trata-se de
colunas no adjacentes, uma situao que at agora no tivemos encontrada.
Faa o seguinte:

1. Posicione o ponteiro do mouse sobre na primeira clula que deseja


marcar, isto , A1. Clique com o boto esquerdo.
2. F8, F5 (= Ir Para)>Referencia A201, OK; isto seleciona as clulas de A1
at A201.
3. Shift+F8 (= Adicionar a Seleo, veja este texto na ltima linha
esquerda da tela)
4. F5 e introduzir D1, isso faz com que D1 ser selecionada.
5. F8, F5 >Referencia D201, OK; isto seleciona D1:D201
6. Shift+F8

Agora, os intervalos A1:A201 e D1:D201 esto selecionados para ser


traados, por exemplo com F11.

Se no aparecer um grfico Disperso XY, ser preciso selecionar outro Tipo


de grfico. Para evitar de que em vez dos nmeros corretos no eixo x
apaream os nmeros das clulas, ser preciso Editar a Srie, veja a
seguinte tela:

Se tudo andar bem, vai ver uma tela parecida com a figura a seguir. (Se por
algum motivo no der, s perguntar a Microsoft...)
65

importante, declarar Disperso XY como padro para a maioria dos


grficos cientficos!

Bobina de Helmholtz

Um exemplo muito interessante da realizao tcnica da superposio de duas


curvas a bobina idealizada por H.L. Helmholtz (1821-1894). Trata-se de um
par de bobinas de mesmo raio R, alinhadas paralelamente uma a outra ao
longo do eixo comum, e separadas entre si duma distncia igual ao raio R. O
objetivo desta bobina a criao de um campo magntico quase homogneo
na regio central. O tamanho do par de bobinas pode ser pequeno como a
cabea duma pomba, ou to grande como um quarto.

O valor do mdulo do campo magntico B ao longo do eixo de uma espira de


raio R , segundo a lei de Biot-Savart, dado pela expresso

B = 0 NI 0.8 0.8 / R (1)

onde 0 = 410-7 Vs/Am e I a corrente eltrica, x a distncia, medida deste


o centro da espira ao longo do eixo.

A bobina nr. 1 (N espiras) produz num certo ponto do seu eixo o campo
66

3
R
B1 = K ( R + ( x + )2 ) 2
2
(2)
2

A bobina nr. 2 (N espiras) produz, por sua vez, no mesmo ponto o campo

3
R
B1 = K ( R + ( x )2 ) 2
2
(3)
2

NIR 2
onde a constante K vem dada por K := 0 .
2
O campo magntico resultante das duas bobinas B = B1 + B2 .

Para x = 0, isso no centro entre as duas bobinas, obteremos

B = 0 NI 0.8 0.8 / R (4)

Para a representao grfica utilizaremos I = 1,45A, N = 130 e R = 0,15m. O


valor inicial de x de -0,15m, o valor final de 0,15m; incremento = 0,003 m.

1. A1: -0,15; A2: =A1+0,003; copiar at A101 (por exemplo


marcar A2:A101 e usar o comando Ctrl+d para copiar o
contedo de A2)
2. G1: 1,45 (=I); G2: 130 (=N); G3: 0,15(=R)
3. G4: =(2*PI()*1E-7*G$1*G$2*G$3^2 (constante K)
4. B1: =(G$4*(G$3^2+(A1-G$3/2)^2)^-1,5 ( bobina nr.1)
5. C1: =(G$1*(0,15^2+(A1+0,15/2)^2)^-1,5 (bobina nr.2)
6. D1: =SOMA(B1:C1)
7. Ponteiro na clula B1; F8 F5 referncia : D101 e Ctrl+d

Para criar o grfico, colocamos o ponteiro na A1 e pressionamos F8 F5


referncia D101. Em seguida Inserir>Disperso ... (ou F11)
67

Observe que utilizamos o comando Ctrl+d (Preencher Abaixo) para copiar o


contedo e o formato da clula mais acima de um intervalo selecionado (com
inicio F8 F5 final ) nas clulas abaixo. As caixinhas com texto so includas com
Inserir>Formas. O eixo vertical foi formatado com Formatar Eixo>Numero>
Cientfico.

O seguinte grfico foi feito usando F11:


68

Difrao por uma fenda


A funo y=sen(x)/x

Vejamos primeiro a funo f: y = sen(x)/x que no definida para x = 0.


Mas, no tem problema para tra-la.

O nico problema, a resolver agora, , como evitar uma diviso por zero? Olhe
na primeira linha da figura, para ver, como foi resolvido este assunto.

Se iluminamos uma fenda, largura = b, muito estreita, com luz monocromtica


(Laser), observamos detrs da fenda uma variao da intensidade da luz,
descrita pela seguinte frmula

2
sen( ) b
I ( ) = I (0) , com = sen( ) (1)

o comprimento de onda.
Para criar o grfico desta funo, resultar prtico, escolher para o ngulo
valores no intervalo -1,2 at 1,2 Radianos. Com 300 pontos, o grfico dever
ser bom, o que exige um incremento de 2,4/300. O valor 4 de b/ colocamos
na clula F1. O incremento em F2 est em referncia absoluta: $F$2.
69

1. A1: -1,2; A2: A1+$F$2 copiar at A301 (Automatize o processo de


marcar e do copiar! Coloque o cursor sobre A2 e, em seguida, acione F5
com referncia = A301. Antes de pressionar OK, oprima a tecla Shift.
Com isso queda marcada (selecionada) A2:A301. Agora falta s oprimir
Ctrl+d, para copiar a frmula de A2 at A301. Repetimos este
procedimento no segundo passo. F5 ref. B1 = retorno B1.)
2.B1:=PI()*F$1*SEN(A1);C1:=(SEN(B1)/B1)^2 . Selecione B1:C1(cursor
sobre B1Shift C1) at B301:C301 (F5 ref. C301 + Shift + OK). Copie as
frmulas de B1:C1 at B301:C301 por meio de Ctrl+d.

Grfico:

3. Temos de usar as colunas A e C (no adjacentes) para produzir o


grfico. Utilizamos o assistente grfico da Barra de Acesso Rpido.
Primeiro temos de selecionar as dois colunas A e C:

Cursor sobre A1  F8 F5 ref. A301, OK  Shift+F8


F5 ref. C1, OK (retorno C1); F8 F5 ref. C301, OK  Shift+F8
F5 ref. E5, OK (retorno E5). Assistente grfico (x,y Disperso,
Linhas suaves, OK- ou simplesmente pressionar F11)

Layout: Legenda nenhuma, Ttulo do Grfico etc.

Se mudar a constante na F4, voc poder ver imediatamente a influncia que


tem tal mudana sobre o grfico.
70

Difrao por uma rede de N fendas

Interessante ser ver a difrao por N fendas. Uma rede de difrao uma
lmina contendo um nmero elevado de fendas paralelas entre si. A distncia
entre duas fendas consecutivas denominada espaamento da rede,
representada por d. (A luz incidente na rede monocromtica, por exemplo a
luz de uma lmpada de sdio ou um raio de Laser.) A distribuio da
intensidade da luz que atravessa a rede vem dada pela seguinte expresso

2
I (0) sen sen( N )
2
I ( ) = 2 (2)
N sen

b d
com as abreviaturas := sen e := sen .

Para traar o grfico, elegemos b = 2 , d = 10 e N = 8. No grfico usamos
s as duas expresses em parnteses da eq. (2). O mximo no eixo y ser N2 e
calculamos 300 pontos com incremento 0,2/300 = 0,0006666.
As constantes ficam em K1: 2 (=b/); K2: 10(=d/) e K3: 8(=N)

B1: =PI()*$K$1*SEN($A1) (= )
C1: =PI()*$K$2*SEN($A1) (= )
D1: =(SEN(B1)/(B1+0,00001))^2 (0,00001 para evitar diviso por 0)
E1: =(SEN(K$3*C1)/(SEN(C1)+0,00001))^2 (N fendas)
F1: =D1*K$3^2
G1: =D1*E1

Agora, devemos copiar as frmulas at a linha 301. Primeiro, cursor sobre A2,
depois  F5 (A301)Ctrl+d, B1ShiftG1, F5 (G301)Ctrl+d
Para poder fazer uma comparao com a difrao por uma fenda s, temos em
F1:F301 os valores correspondentes para uma fenda. O grfico conter o
produto das colunas D e E que fica nas clulas G1:B301.

Para criar o grfico, precisamos selecionar as coluna A, F e G.

1. F5  A1, OK; F8 F5 (A301) OK, Shift+F8


2. F5  F1, OK; F8 F5 (F301) OK, Shift+F8
3. F5  G1, OK; F8 F5 (G301) OK, Shift+F8
4. F5  I5
71

Com N fendas observe-se N-2 mximos secundrios: 8 - 2 = 6 em nosso caso.

Escalas logartmicas

As funes de eficincia dos algoritmos de ordenao (busca) pertencem, em


geral, a lista das seguintes funes:

y = 2n ; y = n3 ; y = n 2 ; y = n log 2 n; y = n; y = log 2 n etc.

(A velocidade de busca est associada eficincia do algoritmo de busca. N o


nmero de elementos, entre os quais pode encontrar-se o elemento target.
Para se ter uma idia do que significam velocidade e eficincia, basta pensar
num programa como o Google.)

No eixo-x temos o nmero n dos elementos, no eixo-y colocamos o tempo


relativo de busca (tempo de clculo). Sabemos que a funo logartmica cresce
mais lentamente que as demais funes, e que as funes exponenciais
crescem mais rapidamente que todas.

Calculamos os logaritmos a base 2 (logaritmus dualis), log 2 := ld , com

lg(n)
log 2 (n) =
lg(2)
72

Grfico: Disperso-XY

1. Os valores de n:
Na clula A5 colocamos 1; na A6: 2, A7: 4; A8: 8.
As clulas A9 at A14 obtm 10, 20, 40, 60, 80 e 100
A15: =A14+10
Cursor sobre A15 e preencher todas as clulas at A104
2. As funes
B5: =2^A5; C5: =A5^3; D5: =A5^2
E5: (nada, pois um valor zero no pode ser usado numa escala
logartmica); G5 tambm nada
E6: =A6*LN(A6)/LN(2)
F5: =A5; G6: =E6/A6
Copiar todas as frmulas at linha 104

Vale a pena, comparar este grfico com uma representao semi-logartmica,


por exemplo para 1<=n<=10.
73

Captulo 6
Calendrio (exemplo de uma tabela ou matriz)

J que construmos uma planilha que nos calcula a data correta do Domingo de
Pscoa (o que foi para a igreja uma tarefa de mais de 1500 anos!), falta,
obviamente, a criao de um calendrio. Trata-se dum tpico exemplo de uma
tabela (matriz), ou seja, de um problema, para o qual o Excel foi criado.

A nossa planilha s precisa saber, com que dia o ms comea e quantos dias
tem. (Existem algoritmos que determinam estes dados, como veremos mais
adiante na planilha "Juliano")

Podemos considerar um ms como sendo uma matriz de k= 6 colunas e j= 7


linhas. As linhas so os dias, as colunas das semanas. A ltima coluna com k =
6, geralmente, no possui nenhum elemento. (Ela contem 31, quando o ms
consta de 31 dias e comea na sexta-feira.) A tarefa consiste em identificar os
dias adentro da matriz. Para este fim, introduzimos dois ndices j,k. Um dia ser
designado por D[i,k]. Por exemplo, D[5,4] o dia 24, que uma quinta-feira.
A figura a seguir mostra um ms que tem o seu comeo A na tera-feira (j=3)
e o ltimo dia E = 30. No devemos escrever nada na coluna k=1, , quando j
< A. Chegamos at a coluna k=5, quando o dia D[j,k] > E.

O valor de A fica na E1; o de E em E2.

k=1 k=2 k=3 k=4 k=5 k=6


j=1 Domingo 6 13 20 27
j=2 Segunda 7 14 21 28
j=3 (=A) Tera 1 8 15 22 29
j=4 Quarta 2 9 16 23 30 (=E)
j=5 Quinta 3 10 17 24
j=6 Sexta 4 11 18 25
j=7 Sbado 5 12 19 26

O clculo dos D[j,k] muito simples, pois temos D[j,k]=j+1-A+(k-1)*7,


exemplo: j=3; k=2 D[3,2]=3+1-3+(2-1)*7=8 etc.

1. A10: 1; A11: 2 at A16: 7 (estes so os valores de j; aplique


preencher srie)
2. C9: 1; D9: 2 at H9: 6 (valores de k)
3. C10: =SE(E(C$9=1;$A10<$E$1);"";SE($A10+1-$E$1+(C$9-1)*7<=
$E$2;$A10+1-$E$1+(C$9-1)*7;""))
74

Copie a frmula em C10 at H16. (Cursor sobre C10 e Ctrl+V, em seguida


selecionar C10:H16, usando F8 F5, Referncia H16, depois Ctrl+V. Ou usar a
ala de preenchimento.) As clulas devem ser formatadas com zero casas
decimais: Formatar Clulas>Nmero>Casas decimais 0.

Em B10 escrevemos Dom. Copiando isto at B16, o Excel preenche as clulas


automaticamente com Seg, Ter, Qua ...

Para ocultar o sistema de coordenadas "j-k", podemos utilizar branco como Cor
de Fonte. Outra maneira de "ocultar" o sistema j-k consta em mov-lo at AA1,
onde no ser visible. Selecione todo o calendrio e copie-o com Ctrl+C para a
regio de transferncia. V com F5 at AA1, Ctrl+V. Em AB2 escreva a frmula
=$AA2+1-$E$1+(AB$1-1)*7. Copie-a desde AB2 at AG8, veja a figura:

Os dias de semana foram sobrescritos, pois no precisamos deles neste lugar.


Agora voltamos ao calendrio original e l substitumos a velha frmula em C10
pela seguinte =SE(E(AB$1=1;$AA2<$E$1);"";SE(AB2<=$E$2;AB2;"")), veja a
seguinte figura. (Os ndices j e k podemos simplesmente apagar!)
75

Seguramente, voc vai perguntar, se no existe outro mtodo de produzir um


calendrio, sem usar um sistema de coordenadas.

Obviamente existe! Olhe a seguinte figura, onde a frmula na clula B10


excede as anteriores em no pouco. Por outro lado, isso nos mostra a aplicao
da funo =CL de Excel. Exemplo: =CL("col";B10) retorna o nmero da
coluna da clula B10, a saber 2.

O Dia Juliano e o Calendrio Gregoriano

Os astrnomos usam um calendrio que se baseia no Perodo Juliano, que


representa um intervalo de tempo de 7980 anos. Este perodo foi introduzido e
nomeado pelo matemtico francs Joseph Justus Scaliger (1540-1609). Ele
estava interessado em atribuir um nmero positivo para cada ano sem ter que
se preocupar com datas antes ou depois de Cristo. O seu perodo o produto
dos trs nmeros (tambm perodos) 19, 28 e 15. 19 anos o Ciclo Metnico
(segundo Meton de Atenas, mais ou menos 430 a.C.). A relao entre as fases
da Lua e os dias do ano repete-se a cada 19 anos. Desta forma, pode-se
associar um "Nmero de Ouro" entre 1 e 19 com cada ano. O "Ciclo Solar" tem
uma durao de 28 dias. Este o tempo de 4*7 anos, depois do qual um dia de
semana cai outra vez na mesma data do ano. Por exemplo, o 1 de Janeiro de
2000 foi um sbado e depois de 28 anos o prximo 1 de Janeiro cair outra vez
num sbado. O "Nmero Solar" o nmero do ano dentro de um Ciclo Solar. A
"Indico" (lat. indictio = convocao para pagar impostos), foi introduzido pelo
imperador Constantino em 312 d.C. para fixar um ano especfico dentro do ciclo
fiscal de 15 anos.

A Indico pode ser calculada pela frmula (ano + 2) Mod 15 + 1. (Por


exemplo: ano = 2007, ento divide-se primeiro 2009 por 15, o que da
133,9333..., e se guarda o resto 2009-133*15= 2009-1995= 14. Assim, no ano
2007 a Indico 14+1.) A frmula para o Excel =MOD(($F$1+2);15)+1,
onde a clula F1 contem o nmero 2007.
76

Scaliger notou, que os trs ciclos coincidiram por ltima vez no ano 4713 a.C.,
ou seja, neste ano de -4712 a Indico, o Nmero de Ouro e o Nmero Solar
tinham o mesmo valor 1. Este fato notvel se repetir a prxima vez em 3268
d.C., j que 3268+4712=7980 (no havia um ano 0). Os Astrnomos contam
os dias a partir do 1 de Janeiro de 4713 e utilizam a denominao "dias
Julianos" (JD), como Scaliger havia desejado. (Scaliger elegeu essa designao
em honor a seu pai que chamava-se Julius Caesar.)

Para obter o Dia Juliano (JD) de uma data qualquer, por exemplo 1 de Janeiro
de 2007, temos que calcular o nmero de anos decorridos desde 4713 a.C. at
a data desejada e restar 1, como no existia um ano 0. Ficam, ento,
4713+2007-1= 6719 anos o que corresponde a 6719 * 365,25 = 2.454.114,7
dias. A parte fracionria indica que o dia seguinte j foi iniciado, ou seja, o
nmero de dias decorridos 2.454.115. Mas, j que o Calendrio Gregoriano
est 13 dias frente do Calendrio Juliano, temos finalmente JD=2.454.102
para a data 1.1.2007. Mais correto: Ao meio-dia UTC de 1 de Janeiro de 2007
comeou o dia Juliano 2.454.102.

(UTC = Coordinate Universal Time um padro internacional de tempo


equivalente GMT, Greenwich Mean Time. O modified Julian Day, MJD, inicia-
se meia noite UTC e no ao meio-dia UTC. Alm disso, 2.400.000 menor
que o dia Juliano. Isto faz com que o nmero tenha menos dgitos e seja, por
isso, mais fcil de manejar. Alm disso, como ns estamos no terceiro fuso
horrio oeste de Greenwich, temos de subtrair 3 horas do valor UTC.)

O Calendrio Juliano, tem nada que ver com o Perodo Juliano, foi introduzido
em 45 a.C. por Julius Ceasar, e ainda em uso pela igreja ortodoxa russa em
vez do Calendrio Gregoriano. No Calendrio Juliano, o ano tropical
aproximado por 365.25 dias. Logra-se isso usando um ano bissexto cada 4
anos.

Podemos descrever todas essas estranhezas por a seguinte frmula

=$F$3+INT((153*m+2)/5)+y*365+INT(y/4)-INT(y/100)+INT(y/400)-$G$1

que colocamos na clula I5 da seguinte planilha. Em G1 temos a frmula


=SE($F$1<0;32083;32045), que leva em conta o problema dos anos negati-vos
no calendrio Gregoriano. Os valores de a, y, m calculamos com as equaes

I1: a = Int((14 - ms)/12); I2: y = ano + 4800 a; I3: m = ms +12*a-3

Na Caixa de Nome utilizamos as designaes a, y, m

A frmula para a Indico F5: =MOD(($F$1+2);15)+1, para o Nmero Solar


F6: =MOD(($F$1+8);28)+1 e para o Nmero de Ouro F7: =MOD($F$1;19)+1
77

No lado direito, em K1:P10, determinamos para um dia Juliano em N1 a data


do Calendrio Gregoriano. Em P8 temos para o dia a frmula

dia = e Int((135*m+2)/5)+1 P8: =ee-INT((153*mm+2)/5)+1


ms = m+3-12*(m/10) P9: =mm+3-12*INT(mm/10)
ano = b*100+d- 4800+m/10 P10: =INT(bb*100+dd-4800+INT(mm/10))

(As variveis e, m, b tem agora os nomes ee, mm, bb ... para diferenci-los dos
nomes a, y, m que foram utilizados acima.) Faltam as expresses para a, bb,
etc.

aa = JD + 32044 P1: =$N$1+32044


bb = (4*aa+3)/146097 P2: =INT((4*aa+3)/146097)
cc = aa-(b*146097)/4 P3: =aa-INT((bb*146097)/4)
dd = (4*cc+3)/1461 P4: =INT((4*cc+3)/1461)
ee = cc-(1461*d)/4 P5: =cc-INT((1461*dd)/4)
mm = (5*ee+2)/153 P6: =INT((5*ee+2)/153)

Temos aqui tudo numa pgina.

Seguramente, voc se alegra com o brinde "O dia da semana", que calcula para
cada data Gregoriana o dia de semana correspondente. Em H19 temos a
frmula para realizar esta tarefa:

H19: =MOD($F$3+z+INT(z/4)-INT(z/100)+INT(z/400)+INT(31*(m+1)/12);7)

Ao nmero 4 corresponde uma quinta-feira, j que nestes clculos o domingo


tem o cdigo 0. Outra vez estabelecemos a correspondncia entre cdigo e dia
de semana com =PROCV(H19;J$19:K$25;2) na clula G19; compare a
aplicao de PROCV no primeiro captulo. A varivel z na clula J2 igual a y-
4800. Se voc ainda fica com dvidas, leia os seguintes sites:
78

http://webexhibits.org/calendars/calendar-christian.html

e http://www.tondering.dk/claus/cal/node3.html

Seria bom, escrever uma macro para determinar, se um ano dado um ano
bissexto. Isso fcil e de grande valor educativo (no ?).
Para fazer isso, precisamos saber, que o calendrio Gregoriano tem 97 anos
bissextos em cada intervalo de 400 anos. E porque no existem 100 anos
bissextos neste intervalo? A resposta dada pela seguinte definio (vlida
aps 1582, pois os erros anteriores a essa data so includos nos 10 dias
eliminados em 1582):

Todo ano bissexto, cujo nmero divisvel por 4.


Mas, todo ano divisvel por 100 no bissexto.
Mas, todo ano divisvel por 400 ser bissexto.

Isto significa que os anos 1700, 1800, 1900 no eram bissextos, no entanto o
ano 1600 era bissexto assim como tambm o ano 2000. Ou seja, no intervalo
de 1600 at 2000 havia s 97 anos bissextos. (Os nmeros naturais de 1 at
100 contem 25 nmeros divisveis por 4, ou seja, em um intervalo de 400 anos
temos 100 anos divisveis por 4.)

Contento? O que passa se voc analisa o ano 1893? A caixa de mensagem s diz
1893, nada de ano bissexto. Porque? Como podemos obter a resposta: "1893 no
ano bissexto"?
79

Soluo:

ano = InputBox("Qual o ano?")


resposta = " no ano bissexto"

O que faltava era a linha em vermelha!


83

Captulo 7
Matemtica I (MDC e MMC, nm. complexos, equaes)
Divisibilidade (MDC e MMC)

Na ltima seo (Calendrio), o problema da divisibilidade era de alta


importncia. Para discutir este problema mais a fundo, vamos desenvolver uma
planilha de Excel que nos ajudar na busca dos divisores de um nmero.

1. MDC (mximo divisor comum)


O mximo divisor comum dos inteiros a e b, no nulos, o maior
inteiro que divide simultaneamente a e b.

Existem vrios mtodos para encontrar o MCD, por exemplo o mtodo de


decomposio de um nmero num produto de fatores primos. Mas, na
planilha, queremos usar o mtodo das divises sucessivas, tambm
conhecido como o algoritmo de Euclides. Quando se trata de nmeros muito
grandes, pode no ser fcil encontrar a decomposio em fatores primos. O
mtodo de Euclides muito prtico, pois baseado apenas em divises
sucessivas, como vemos no seguinte exemplo.

Exemplo: Determine o MDC dos inteiros 240 e 408 pelo mtodo das
divises sucessivas (o algoritmo de Euclides)

408:240 = 1 com resto 168 (= Mod(408,240))


240:168 = 1 com resto 72
168:72 = 2 com resto 24
72: 24 = 3 com resto zero. Portanto o MDC procurado igual a 24.
84

Podemos formular o algoritmo de Euclides como segue

n0 = max( a , b )
n1 = min( a , b )
nk = nk 2 mod nk 1
k = 2,3,...

A planilha foi construda da seguinte maneira:

A7: =MXIMO(ABS($E$1);ABS($E$2))
B7: =MNIMO(ABS($E$1);ABS($E$2))
C7: =SE(E(B7>0;B7<>"");MOD(A7;B7);"")
D7: =SE(C7=0;B7;"")
B5: =MXIMO(D7:D50)

A8: =SE(B7>0;B7;"")
B8: =SE(C7>0;C7;"")
C8: = SE(E(B8>0;B8<>"");MOD(A8;B8);"")

D8: =SE(C8=0;B8;"")

Copie os contedos das clulas A8:D8 at linha 50.

Utilizamos a coluna D, para encontrar um zero na coluna C. Quando o zero


encontrado, o nmero esquerda, na coluna B, ser o MDC desejado, ele o
mximo na coluna D.

2. MMC (mnimo mltiplo comum)


O mnimo mltiplo comum dos nmeros inteiros a e b no-nulos o
menor inteiro no conjunto dos seus mltiplos comuns.

Pode-se provar que ab = MDC(a,b)MMC(a,b)


Utilizamos este teorema na planilha para verificar os valores de MDC e MMC
encontrados separadamente.

Multiplicamos a sucessivamente por i = 1,2,..., at o produto ai mod b seja


igual a zero. Neste momento, ia sem resto divisvel por b, ou seja, ia o
MMC(a,b).

E7: 1
E8: =SE(F7<>"";E7+1;"")
F7: =$E$1*E7
F8: =SE(E(G7<>0;G7<>"");$E$1*E8;"")
G7: =MOD(F7;$E$2)
G8: =SE(F8<>"";MOD(F8;$E$2);"")
Copiar E8:G8 at linha 200 (ou maior!)
85

O MMC =MXIMO(F7:F400) e fica em F5.

H2: =E1*E2; H3: =B5*F5 -os dois nmeros devem ser idnticos.

(Pode ser preciso copiar E8:G8 at uma linha bem maior do que 140, para
obter ai mod b = 0, por isso, usamos F400, para poder extender a buscada de
zero at a linha 400. Tente os nmeros a=339 e b=1128; apenas na linha 382
aparece zero!)

Para praticar os nossos conhecimentos na programao em VBA, escrevemos


alguns pequenos programas sobre a determinao do MDC. (O Excel mesmo
tem incorporado as funes MDC e MMC por meio do Analysis ToolPak.)

Programa 1:

No seguinte programa seja a > b. O programa calcula para cada nmero n < b
se um divisor comum de a e b, ou seja, determinamos, se valem simultnea-
mente as duas relaes a Mod n = 0 e b Mod n = 0. Se for assim, sabemos
que este nmero o MDC(a,b).

Este programa no troca os nmeros e utiliza Do While , em vez de Do


Until.
86

Programa 2:

Programa 3:
87

O ltimo Programa 3 mostra um mtodo que determina de cada um dos


nmeros menores do menor de a e b, se ele um divisor comum de a e b. O
primeiro nmero que cumpre com esta condio ser o maior comum divisor de
aeb

Sub-rotinas e Funes

Todos os SUB-Programas so executadas desde o editor do VBA com F5.


Seria muito mais prtico t-las como funes, pois dessa forma poderamos
us-las como as outras funes embutidas no Excel. (Na realidade, o MDC
uma funo, pois ele retorna um s valor.)

No seguinte programa definimos a funo-VBA "myMDC" junto com uma funo


"Troca" que se ocupa com determinar o menor de a e b.
88

Para simplificar, foram deixados afora do programa as instrues Dim.


Agora demonstramos o uso da funo "myMDC". Ela no s determina o MDC
mas tambm calcula a raiz quadrada dele. (Compare com a funo "Montante"
no terceiro captulo.)

Com nossas funes podemos facilmente determinar o MDC de n nmeros


inteiros com n > 2. s preciso calcular primeiro A = MDC(A1,B1), depois B =
MDC(A,C10) etc.

Exemplo: =MDC(15;45;105;20) = 5 (com a funo MDC do Excel)

Equaes do segundo grau

Dada ax + bx + c = 0, com [( a, b, c ) R; a 0] .
2

Essa uma equao do segundo grau, cuja resoluo calculamos com a


chamada frmula de Bhashara (um matemtico hindu do sculo XII):

b b 2 4ac
x1, x2 =
2a
A expresso D := b 4 ac chama-se discriminante. Usando a discriminante,
2

podemos escrever a resoluo na forma


89

b + D b D
S = ,
2a 2a

A resoluo de nossa equao depender do valor de D. Devemos considerar


trs casos:

D > 0, neste caso, a equao ter duas razes distintas


D =0, neste caso, a equao ter duas razes reais idnticas
D < 0, neste caso, a equao ter razes imaginrias

Na planilha vamos tomar em considerao os trs casos.

As clulas A6, D3, F3, H3 foram denominados com D, A, B, E na "Caixa de


nome" (ao canto esquerdo da "Barra de Frmulas"). O nome "C" no foi
aceitado pelo Excel, por isso utilizei E. (S aparece na clula A6.)

A6: =B^2-4*A*E (E em lugar de C; Discriminante)


E5: =SE(D>0;(-B+RAIZ(D))/(2*A);-B/(2*A))
F5: =SE(D<0;"+i*";""))
G5: =SE(D<0;RAIZ(-D)/(2*A);"")
E6: =SE(D>0;(-B-RAIZ(D))/(2*A);-B/(2*A))
F6: =SE(D<0;"-i*";""))
G6 =SE(D<0;RAIZ(-D)/(2*A);"")
90

Poderamos inscrever os nmeros a, b, c diretamente nas clulas D3, F3, H3,


mas, mais chique utilizar uma macro: (Type := 1 significa que se introduz um
nmero; 2 = texto (uma string), 4 = valor lgico, 16 = valor de erro, tal como
#N/A, 64 = array (matriz) ).

A macro executada por meio de um boto. (Em 2007 se faz assim:


Desenvolver>Controles>Inserir>Boto + Atribuir o nome da macro "Os_dados"
em nosso caso.)

Resoluo de equaes do segundo grau com VBA

No programa a seguir, utilizamos uma funo matricial cujos argumentos so


os trs coeficientes a, b, c. A funo determina os solues da equao e as
coloca num array 2X2 de clulas.
91

Introduza os valores de a, b, c nas clulas A1, A2, A3. Selecione A5:B6 e clique
uma vez sobre o cone fx para Inserir Funo "segundograu" que fica na
categoria Definida pelo usurio. Na janela "Coef" escrevemos (A1:A3) y em
seguida pressionamos Ctrl+Shift+Enter e vemos os valores originais e os
resultados.
92

Para a equao 2x2 + 4x + 8 = 0 teremos o resultado

x1 = -1 + 1,732... (*i) e x2 = - 1 1,732... (*i)

Se tiver selecionado um intervalo 2x2 (=array de 4 clulas) antes de ativar a


funo "segundograu", ento ela escrever os resultados tambm na pasta de
trabalho, -depois de pressionar Ctrl+Shift+Enter (com OK no funciona!).

O seguinte programa "SegGrau", que tambm resolve uma equao de


segundo grau, demonstra outra vez uma aplicao da propriedade Cells.

Esta sub-rotina espera os coeficientes a, b, c nas clulas A1, B1, C1, pois na
propriedade Cells(i,j), i significa linha e j coluna. Cells(3,2) seria clula B3.
93

Sheets(1) refere-se a Plan1 (=planilha 1) da pasta de trabalho ativo. Com a =


8, b = 12, c = 10 temos o seguinte resultado.

Para no perder o contato com VBA, lhe ofereo uma ltima verso de uma
sub-rotina para a frmula de Bhashara. O programa trabalha, entre outras
coisas, com a variable String e com InputBox e MsgBox .
94

Nmeros Complexos

O clculo bsico com nmeros complexos nos proporciona uma oportunidade


para aprender alguns coisas novas em questes de programao em VBA.

Aprendemos

escrever um programa VBA com varias sub-rotinas de tipo funo


para lidar com a funo InputBox
escrever os dados e os resultados diretamente sobre uma planilha
usar a funo Val

J usamos varias vezes a funo InputBox para a entrada de dados numricos.


At agora, nunca tivemos problemas com esta funo, mas esta vez podemos
ficar surpreendidos.
Sem usar a funo Val, obtemos uma mensagem de erro 13, pois a InputBox
considera o nmero entrado pelo usurio como sendo uma String (= corrente
de smbolos). Estas Strings so passadas para um procedimento, por exemplo
"rsom", que est esperando como argumentos nmeros simples.

A funo Val converte uma String para um nmero. (A funo Str faz o
contrario, ela converte um nmero, p. ex. 346, para a String "346".) Observe
que Val no reconhece sinais de cifro ou vrgulas. Assim, devemos escrever os
nmeros decimais com ponto decimal e no com vrgula. Experimente!
Na seguinte planilha, vemos os resultados que o prximo programa vai
produzir com os nmeros complexos z1 = -0.5 - 0.866i e z2 = -1 + 1i, (na
regio azul encontram-se os clculos feitos com as funes complexas do
Excel).
95

Programa "Nmeros_complexos":

Com a instruo "Range("B6").Value = rdif" o Excel escreve o valor redif na


clula B6 da nossa planilha, etc.
Para sua convenincia, sero dadas aqui as regras usadas nas sub-rotinas:

Soma: z1+z2 = (a+c)+(b+d)i


Diferena: z1-z2 = (a-c)+(b-d)i
Produto: z1*z2 = (ac-bd)+(ad+bc)i
Quociente: z1/z2 = x + yi, onde

ac + bd bc ad
x= e y =
c2 + d 2 c2 + d 2
96

Para determinar a forma polar, z = r (cos + i sen ) , do nmero complexo z ,


b
preciso calcular o mdulo r = a 2 + b2 e o ngulo = tan 1 ( ) .
a
Para o arco tangente, o Excel tem embutido as funes =ATAN2(x;y) e
=ATAN(x). A segunda retorna s ngulos em [o;], mas ns precisamos
ngulos em [-;], que so retornados pela primeira funo =ATAN2(x;y). A
funo Atn do VBA retorna o resultado em radianos apenas entre -/2 e /2.
Por isso obtemos para z=-1+1i um ngulo de -0.78539816 radianos = -45o em
vez dos 135o esperados. ( altamente aconselhvel fazer se um esboo do
vetor correspondente ao nmero complexo.)

Modificao do program principal para a avaliao dos mdulos e dos ngulos:

Mas, afortunadamente, existe uma sada deste problema com Atn. Pois no VBA
permitido usar tambm as funes prprias do Excel (Worksheet Functions,
funes de planilha de trabalho).
s necessrio substituir a linha angulo = Atn(v/u)por a linha angulo =
Application.Atan2(u,v), isso tudo. (Veja o comentrio no final desta seo.)
Application tem o significado de "worksheet". Com este pequeno truco obtemos
ngulos aceitveis, por exemplo: z = -4 + 6i tem o ngulo = 123,69o (=
2,1588 Radianos).

Mas, no devemos esquecer adicionar as duas funes seguintes:


97

Agora vou revelar um segredo, pois podemos tambm encontrar os Nmeros


Complexos no Excel na categoria Engenharia. Para efetuar os clculos elemen-
tares, soma, diferena, produto, ... precisamos da funo COMPLEXO para
converter os coeficientes reais e imaginrios em nmeros complexos no
formato x + yi ou x + yj. (Se no usamos o "Sufixo" i ou j, o Excel pe auto-
maticamente i .)

Por exemplo: se B1: -0,5 e D1: -0,866, ento =COMPLEXO(B1;D1) retorna o


nmero complexo -0,5-0,866i, compare a primeira planilha acima. Determi-
namos a soma de z1 e z2 com a funo IMSOMA.

Resultado: =IMSOMA(P2;Q2)= -1,5+0,134i.

Veja tambm a calculadora que vamos criar no captulo 18.

Funes de nmeros complexos.

A seguinte lista contem algumas das importantes funes de nmeros


complexos, nas quais usamos as funes RAIZ, EXP, LN, ATAN2, SEN, COS :

1. zn = rn(cosn + i senn) (De Moivre,1667-1754)


2. ez = ea(cosb + i senb)
3. lnz = ln r + i; (- < <= )
4. senz = 0.5(eb + e-b) sena + 0.5(eb e-b) cosai
5. cosz = 0.5(eb + e-b) cosa - 0.5(eb e-b) senai
6. zz1 = hcosk+hsenki; onde z1 = c+id e h = rce-d; k = dlnr+c

Veja a planilha a seguir que foi criada com as seguintes expresses:

1. B6: =RAIZ(A2^2+B2^2); B7: =ATAN2(A2;B2)


B9: =B6^C2*COS(C2*B7); C9: =B6^C2*SEN(C2*B7)
2. B10: =EXP(A2)*COS(B2); C10: =EXP(A2)*SEN(B2)
3. B11: =LN(B6) C11: =B7
4. B12: =0,5*(EXP(B2)+EXP(-B2))*SEN(A2)
C12: =0,5*(EXP(B2)-EXP(-B2))*COS(A2)
5. B13: =0,5*(EXP(B2)+EXP(-B2))*COS(A2)
C13: =-0,5*(EXP(B2)-EXP(-B2))*SEN(A2)
6. B14: =F5*COS(F4); C14: =F5*SEN(F4)
com: F4: =G2*LN(B6)+F2*B7
F5: =B6^F2*EXP(-G2*B7)
98

O Excel permite introduzir, em estes casos, um nmero complexo como String e


sem o uso da funo COMPLEXO, veja 10+3i na clula J2.

Equaes do terceiro grau


99

Em 1539, um mdico e cientista, rico e influente na poca, Girolamo Cardano


(1501-1576), obteve de Tartaglia a regra para se resolver a equao do terceiro
grau, sob a forma de versos enigmticos, sem demonstrao. Mas Cardano
jurou a Tartaglia que no divulgaria a regra. Tartaglia (1499-1557) era
eminente professor em Veneza.

Hoje em dia, utiliza-se, geralmente, a seguinte regra sem versos mas um


pouco enigmtico, sim (frmula de Cardano):

1. Para resolver a equao x 3 + ax 2 + bx + c = 0 precisamos da


discriminante

2 3
q p a2 2
D = + com p = b e q = c + a 3 ab / 3
2 3 3 27

2. Se D for positiva, resultaro uma soluo real e duas solues complexas


conjugadas

x1 = u + v a / 3
x2 = (u + v) / 2 a / 3 i 3(u v ) / 2

3. As constantes u e v so dadas por

1 1
q q
u = ( + D ) 3 ; v = ( D ) 3
2 2

4. Se D <= 0, teremos as seguintes solues reais

p a
x1 = 2 cos( )
3 3
p a
x2 = 2 cos( + 120o )
3 3
p a
x3 = 2 cos( + 240o )
3 3

1 q
O ngulo est dado por = arccos
3 p
2 ( )3
3
100

No cdigo do program VBA "Sub Terceiro_grau()" foi preciso utilizar uma


"Worksheet Function" para determinar o ngulo . (Veja acima debaixo da
caixa "Complexos" na pgina 93.)
(Voc pode usar a maioria das funes de planilha do Microsoft Excel em suas
instrues de Visual Basic. Para obter uma lista das funes de planilha que
voc pode usar, consulte Lista de funes de planilha disponveis para o Visual
Basic.)
A verso para Excel foi feita com as entradas dadas abaixo da seguinte
planilha:

A11: =E6-D6^2/3; B11: =F6+2*D6^3/27-D6*E6/3


C11: =(B11/2)^2; h1(=D11) e h2 (=E11) foram introduzidas para
resolver o problema com razes de nmeros negativos:
D11: =SE(C11>0;-B11/2+RAIZ(C11);"")
E11: =SE(C11>0;-B11/2-RAIZ(C11);"")
F11: =SE(D11<0;(-1)*(-D11)^(1/3);SE(D11<>"";D11^(1/3);""))
G11: =SE(E11<0;(-1)*(-E11)^(1/3);SE(E11<>"";E11^(1/3);""))
H11: =SE(C11<=0;ACOS((-B11)/(2*RAIZ(-A11^3/27)))/3;"")
E15: =SE(C11>0;+F11+G11-D6/3;2*RAIZ(-A11/3)*COS(H11)-D6/3)
F15 e G15 ficam vazias
E16: =SE(C11>0;-(F11+G11)/2-D6/3;2*RAIZ(-A11/3)*COS(H11+2*PI()/3)-
D6/3)
E17: =SE(C11>0;-(F11+G11)/2-D6/3;2*RAIZ(-A11/3)*COS(H11+4*PI()/3)-
D6/3)
F17: =F16; G17: =G16
101

Captulo 8
Mtodos iterativos para equaes no lineares
Usando o Goal Seek (Atingir meta)

O mtodo mais simples de achar as solues (ou razes) duma equao


"complicada" da forma f(x) = 0 consiste em traar o grfico da funo, para ter
uma idia da localizao aproximativa das razes. Depois disso, podemos usar a
ferramenta "Atingir meta" do Excel (Dados>Ferramentas de Dados>Teste de
Hipteses>Atingir meta). (O Excel tem uma segunda ferramenta, o "Solver",
para achar numericamente os zeros de funes e para tratar problemas da
estatstica e anlise de dados. Veja no captulo 14 para mais detalhes.)

Exemplo: No estudo da radiao trmica aparece a equao

x
e x + 1 = 0
5
O grfico desta funo tem um ponto zero perto de x=5. Para obter este valor
com maior exatido, ativamos Atingir meta.

O resultado ser: x = 4,965105 com f(x) = -1,8E-06.

Temos que falar um pouco sobre "Mtodos iterativos" que servem, entre outras
coisas, para encontrar solues de equaes no lineares como x4 - 4 x3 - x + 5
= 0 ou 2ex - x sen(x+3) = 0. No primeiro caso, existe uma frmula resolvente
geral, como no caso da equao cbica, mas, ela complicada, e no segundo
caso, no existe nenhuma frmula resolvente.

Um mtodo iterativo, consiste de um modo geral, numa aproximao inicial


x0, tambm designada iterada inicial, e num processo de obter sucessiva-
mente novas iteradas xn+1 a partir das anteriores xn,... Desta forma,
102

pretendemos obter uma sucesso que convirja para z, soluo da equao f(x)
= 0, tambm designada por raiz da equao, ou zero da funo f.

Um processo clssico para ilustrar uma iterao o algoritmo der Heron para
determinar a raiz quadrada de um nmero N>=0.
Segundo Heron, comea-se com x1 = 1 como primeira estimativa para N1/2.
Depois calcula-se com a frmula

1 N
x2 = x1 +
2 x1

um novo, oxal melhor, valor para N1/2. (Esta frmula de Heron segue do
mtodo iterativo de Newton, veja mais adiante.) O novo valor utiliza-se como
x1, e, de novo, calcula-se um valor melhorado x2 etc. Veja o seguinte esquema

que contm na coluna A os valores xn e na coluna B os novos valores xn+1

A5: 1; B5: =0,5*(A5+B$1/A5)


A6: =B5; B6: =0,5*(A6+B$1/A6)

Copie A6:B6 at que dois iteraes sucessivas diferem em menos de um


nmero pequeno (psilon), por exemplo = 10-6. A execuo do algoritmo
termina, se Abs(x2-x1) for menor ou igual a . O ltimo valor de x2 representa a
raiz quadrada de N com a preciso estabelecida pelo .

Geralmente, escreve-se a frmula de Heron na forma

1 a
xn +1 = xn + , onde n = 0,1, 2,...
2 xn

x0 a aproximao inicial. Para calcular a p-sima raiz de um nmero positivo


a, podemos utilizar a seguinte frmula de iterao
103

1 a
xn +1 = ( p 1) x +
xnp 1
n
p

A Sub-rotina "Heron" contm a constante de preciso como critrio de parar o


algoritmo.

Segue aqui tambm uma verso Funo "Heron(a)" com sua janela "Heron"

Aps digitar esta funo, pode-se voltar para a planilha Excel e escrever
=Heron(1000), para extrair a raiz quadrada do nmero 1000 com a exatido .
104

Mtodo de Newton-Raphson

A raiz quadrada de a a soluo da equao f(x) = x2 a = 0. Para o clculo


duma raiz da equao f(x) = 0 utiliza-se muitas vezes o algoritmo de Newton-
Raphson, dada pela seguinte frmula de iterao (frmula recursiva)

f ( xn )
xn +1 = xn
f '( xn )

onde xn um valor aproximativo da raiz buscada e xn+1 uma melhoria de xn .


J mais acima dissemos que para a maioria das equaes no existe nenhuma
frmula resolvente geral, para determinar as razes. Nesse caso, usamos
mtodos numricos para obter uma soluo aproximativa, to perto quanto
queiramos da soluo exata. A seqncia {xn} convergir para a raiz, se f(x),
f'(x) e f"(x) forem contnuas no intervalo que contm a raiz.
A derivada da funo f(xn) = xn2 a f'(xn) = 2 xn , o que permite deduzir a
frmula de Heron imediatamente como caso especial da frmula de Newton. (A
frmula de Newton-Raphson obtida tomando uma srie de Taylor para f(x) =
0, retendo os termos de primeira ordem.)

Primeiro, vamos escrever uma funo VBA usando as idias aplicadas na funo
"Heron". Tomemos o caso especial da funo

f ( x ) = ax 3 + bx 2 + cx + d

partindo com a aproximao x0.


Como exemplo particular, calculamos a raiz de f(x) = x3 - 5x2 + x + 3 com x0
= 4 (valor que se tira do grfico da funo).
105

A funo tem os seguintes trs zeros: x1= -0,645751, x2 = 1, x3 = 4,645751

Na maioria dos casos, basta aproximar a derivada por

f ( x + h) f ( x )
f '( x)
h
Na seguinte figura vemos uma implementao do processo de Newton-Raphson
numa planilha do Excel utilizando esta expresso para a derivada na coluna E.
Pretendemos determinar as trs solues reais da equao x x 0, 2 = 0 .
5

Sabemos (grfico!) que elas devem ficar perto de -0,5; 1; -1. Na planilha
buscamos a terceira raiz utilizando como valor initial x0 = -0,9. (Os valores,
exatos com quatro casas decimais, so -0,2003; 1,0448; -0,9421.)
106

Uma vez criada a planilha, nos ser somente preciso introduzir a funo em
questo na clula B7, o resto faz uma macro, que ser ativada com Ctrl-i.
A planilha feita da seguinte maneira:

A7: =G$2
B7: aqui introduz-se o termo da funo, em nosso caso =A7^5-A7-0,2
C7: =A7+G$3, copiar at C15 (8 iteraes)
E7: =(D7-B7)/G$3, copiar at E15
G7: =A15 (resultado depois de 8 iteraes)
A8: =A7-B7/E7, copiar at A15

As colunas A, C e E no se mudam mais. Com uma macro copiamos B7 at


B15, depois B7 at D7. Em seguida copia-se D7 at D15. A macro faz isso com
Ctrl-i.
(J escrevemos varias macros para o Excel 2003. No Excel 2007 utilizamos o
caminho Desenvolvedor>Cdigo>Gravar Macro. Na seo Cdigo aparecer
depois Parar Macro.)
Para analisar, depois, uma nova funo, s preciso introduzir o seu termino
na clula B7, dar um valor inicial na G2 e ativar a macro com Ctrl-i.
Por exemplo =EXP(-A7)+A7/5-1 para a equao
x
e x + 1 = 0
5
ou =A7^3-2*A7-5 para a famosa equao de Wallis x 2 x 5 = 0 (soluo:
3

2,094552..)

A macro pode ser inspecionada por meio do Cdigo>Visual Basic no


Desenvolvedor.
107

Primeiro, selecionada B7 e copiada, com a ala de preenchimento, at B15.


Retorna-se para B7 e copia-se o contedo dela para a clula D7. Tambm esta
clula ser copiada at a linha 15. Finalmente, estaciona-se o marcador na
clula G7 do resultado.

O Mtodo de Bolzano (1781-1848)

No mtodo da bisseo ou mtodo de Bolzano divide-se o intervalo [a,b], onde


espera-se o zero da funo em estudo, sucessivamente ao meio at encontrar o
zero com a exatido desejada.

Seja f(x) = e-x + x/5 -1 a funo cujo zero, z, espera-se que fique entre a = 4
e b = 6. x = (a+b)/2 o centro do intervalo. Tomemos f(a) como valor de
comparao.

Se o meio x do intervalo j for o ponto zero, ento sero f(x) e f(a)f(x) = 0, e


no nos quedaria mais nada para fazer. Mas, geralmente, f(x) no ser 0. (Em
nosso caso temos x = 5 e f(5) = 0,00673795...)

Se o zero z da funo f ficar do lado esquerdo do meio x, ento temos


f(a)f(x) < 0. Neste caso, seguimos buscando s no intervalo [a,x], ou seja, ns
escolhemos b = x e calculamos o novo ponto mdio x = (a+b)/2, em nosso
exemplo x = (4+5)/2 = 4,5.

Se o zero fica direita do ponto mdio, resulta f(a)f(x) > 0.


Nos tomamos, ento, a = x e dividimos o intervalo do lado direito ao meio.

O processo repetido at que seja obtida uma aproximao para a raiz exata z
com uma tolerncia desejada.

O mtodo no muito rpido. Se buscarmos uma soluo com a exatido de


z x < , teremos de fazer N divises. Pode-se demonstrar que
108

N (ln(b a ) ln( )) / ln 2 1

Ou seja, para um dado intervalo [a,b] so necessrias, no mnimo, N iteraes


para se calcular a raiz z com tolerncia .

Para obter, em nosso caso, um resultado correto com trs casas decimais ( =
0,001), temos de fazer N > 10 divises (iteraes). A seguinte planilha confirma
este clculo, pois o valor x = 4,965... aparece apenas na clula C15.

Uma vez montada a planilha, s colocar a funo na clula E5 e ativar a


macro com Ctrl+b. (O cursor deve estar sobre E5.)

B5: =E$1; C5: =(B5+D5)/2; D5: =E$2 (copiar C5 at C20 ou mais embaixo)

E5: escreva a forma analtica da funo f(x), por exemplo =EXP(-B5)+B5/5-1.


Depois, copiamos ela por meio duma macro a F5 e, em seguida, at onde
queiramos, por exemplo, at a linha 20. Em B6 temos =SE(E5*F5>0;C5;B5) e
em D6: =SE(E5*F5<0;C5;D5). Copie B6 e D6 at B20, D20 ou mais
embaixo.

A macro "Bolzano" copia s os contedos das colunas E e F at a linha 30


109

O cdigo VBA "Bolzano" com a funo f muito simples

O mtodo de Bolzano (bisseo) no exige o conhecimento das derivadas, mas


tem uma convergncia lenta. O mtodo de Newton-Raphson tem, no entanto,
uma convergncia extraordinariamente rpida.

Para concluir esta seo, d-se, a seguir, uma prova do critrio da convergncia
do mtodo da bisseo.

Como a cada iterao o intervalo [a,b] dividido ao meio, na n-sima iterao,


o comprimento do intervalo dado por bn an = (b a ) .
n

Isso podemos expressar como

ba
xn xn 1 =
2n +1
introduzindo uma tolerncia para o valor da raiz desconhecida z. n = 0,1,2,...

Esta uma relao para o error absoluto do clculo e, ao mesmo tempo, nos
da uma frmula para o nmero mximo de iteraes necessrias para obter o
valor da raiz desconhecida z. Pois, da ltima desigualdade resulta

ba
(n + 1)ln 2 ln

ba
ln

n 1
ln 2 .
110

Isso significa, que no mtodo da bisseo conhece-se de ante-mo o nmero


mximo de iteraes necessrias para alcanar uma tolerncia desejada.

Mtodo da falsa posio (regula falsi)

A idia deste mtodo a de tomar, em contraste com o mtodo de Newton,


dois valores iniciais: x1 e x2, posicionados de tal maneira que a raiz exata da
equao f(x) = 0 esteja no intervalo [x1,x2], ou seja, que se cumpra a
desigualdade f(x1)f(x2) < 0, porque as ordenadas f(x1) e f(x2) tm sinais
opostos. (Trata-se dum mtodo de bisseo junto com uma interpolao
linear.)

A distncia entre x1 e x2 deve ser o suficientemente pequena para que


possamos estar seguros de que no fique outra raiz no intervalo [x1,x2]. Por
meio da seguinte frmula de iterao

xn +1 xn
xn + 2 = xn f ( xn )
f ( xn +1 ) f ( xn )

calculamos uma srie de novas posies xi que, geralmente, acercam-se pouco


a pouco raiz buscada. (Se f uma funo contnua em um intervalo [a,b] e
f(a)f(b) < 0, ento o mtodo da falsa posio converge.)

Para escrever o cdigo VBA aconselhvel reescrever a frmula de iterao da


seguinte forma:

af (b) bf (a)
x=
f (b) f (a )

Exemplo: Utilize a macro "falspos", veja mais em frente, para encontrar as


razes da funo f(x) = sen(x)e-x .

Primeiro, traamos o grfico da funo para ver onde, mais ou menos, esto
localizados os zeros.

Como demonstra a seguinte figura, podemos esperar duas razes no intervalo


[1,7]. (Efetivamente trata-se de e de 2.)
111
112

Falta ainda uma planilha do Excel para a Regula falsi:

Entradas:

A7: =F$2; C7: =G$2


B7: =SE(A7="";"";EXP(-A7)*SEN(A7)) { trata-se de f(x) = sen(x)e-x }.
Copiar at B20, depois para as clulas D7:D20.
Em D7 temos ento =SE(C7="";"";EXP(-C7)*SEN(C7))
E7: =SE(A7="";"";+C7-D7*(A7-C7)/(B7-D7)), copiar at E20
A8: =SE(ABS(A7-C7)>F$3;+C7;""); copiar at A20
C8: =SE(A8="";"";+E7); copiar at C20

Mtodo de Gauss-Seidel

Para a resoluo de sistemas de equaes lineares existe um mtodo iterativo


desenvolvido por Gauss e melhorado por Seidel. Este mtodo funciona, quando os
coeficientes dos elementos na diagonal principal tem valores absolutos muito majores
do que os coeficientes dos outros elementos.

Vejamos o seguinte exemplo:

25 x + 2 y + z = 69
2 x + 10 y + z = 63
x + y + 4 z = 43
113

Primeiro, extramos as variveis da forma

x = (69 2 y z ) / 25
y = (63 2 x z ) /10
z = (43 x y ) / 4

Somando os valores absolutos dos coeficientes das variveis no lado direito, d para a
primeira equao (2+1)/25 = 0,12, para a segunda 0,3 e para a terceira 0,5. Pode-se
demonstrar, que o mtodo convirja para a soluo exata, se estas somas de coeficien-
tes so menores que 1. (Trata se de um critrio suficiente.)

Comea-se dando aos coeficientes das variveis valores iniciais arbitrrios, por
exemplo zero.

Primeira iterao:

x (1) = (69 2 y (0) z (0) ) / 25 = 2,76


y (1) = (63 2 x (1) z (0) ) /10 = 5,748
z (1) = (43 x (1) y (1) ) / 4 = 8,623

Observe, que os valores j calculados so utilizados para obter o valor da varivel na


nova iterao. isso a vantagem do mtodo de Seidel com relao ao mtodo de
Gauss.

A implementao desse esquema numa planilha do Excel de uma simplicidade


surpreendente. Podemos escolher um esquema horizontal com C10: =(69-2*B6-
B7)/25; C11: =(63-2*C10-B7)/10; C12: =(43-C10-C11)/4. Isso copiamos at conseguir
uma convergncia aceitvel. Em nosso caso, paramos depois de 6 iteraes. As
solues exatas so x = 2; y = 5, z = 9
114

No esquema vertical utilizamos as frmulas

B11: =(69-2*C10-D10)/25;
C11: =(63-2*B11-D10)/10;
D11: =(43-B11-C11)/4

O nmero das iteraes pode ser bem alto. Por exemplo precisamos para o
seguinte sistema 77 Iteraes para obter as solues {2;1;-3}

2x y z =6
x +3 y +2 z = 1
3 x +4 y +3 z =1

Mas, se mudarmos na ltima equao 3z por 4z, obteremos as solues


x=2,272727; y=-0,36364; z=-1,0909 depois 29 iteraes apenas.
115

Aplicao de Gauss-Seidel (Distribuio de Temperatura)

Um mtodo parecido ao mtodo de Gauss-Seidel usado para determinar a


distribuio de temperatura numa placa metlica quadrada.

As bordas da placa metlica so submetidas a fontes de temperaturas fixas de


0 e 100 graus. A temperatura no interior da rea vai variar (subir) at um valor
limite. Temos escolhido 4 pontos no interior da placa cujas temperaturas T1,
T2, T3 e T4 devem ser calculadas. (Trabalhamos pelo momento com s 4
pontos, para poder explicar com mais facilidade o mtodo a usar. O mtodo de
resoluo desse problema consiste, na prtica, em dividir a superfcie em uma
grade com um grande nmero de pontos.)

As temperaturas nas bordas no tem de ser 0, pode-se escolher qualquer outro


valor.
O algoritmo consiste em calcular para cada ponto a mdia das temperaturas
dos pontos da vizinhana.

T1 = (0+100+T2+T3)/4 = 25; no incio, temos T2 = T3 = 0.


Este valor de T1 utilizamos j para calcular T2:
T2 = (T1+100+0+T4)/4 = (25+100+0+T4)/4 = 31,25
T3 = (0+T1+T4+0)/4 = (0+25+0+0)/4 = 6,25
T4 = (T4+T2+0+0)/4 = (6,25+31,25+0+0) = 9,375

Os valores de T1,..,T4 recalculamos (iteramos) at que se perceba claramente


uma certa tendncia (um valor limite). Fazemos uma segunda iterao com os
mesmos valores de contorno:

T1 = (0+100+31,25+6,25)/4 = 34,375
T2 = (34,375+100+0+9,375)/4 = 35,9375
T3 = (0+34,375+9,375+0)/4 = 10,9375
T4 = (10,9375+35,9375+0+0)/4 = 11,71875

Agora vamos criar uma planilha. Primeiro, introduzimos os valores de contorno


0 e 100. Depois, escrevemos em B3 a frmula =(A3+B2+C3+B4)/4. Excel vai
116

anunciar que esta frmula contm uma referncia circular. (Quando uma
frmula volta a fazer referncia sua prpria clula, tanto direta como
indiretamente, este processo chama-se referncia circular. Em nosso caso,
queremos calcular B3 = (A3+B2+C3+B4)/4, mas C3 =(B3+C2+D3+C4)/4 e
B4 =(A4+B3+C4+B5)/4 precisam o valor de B3, ou seja, eles referem-se de
volta B3.)

A referncia circular indicada por setas. Mas, voc pode mover-se entre as
clulas em uma referncia circular clicando duas vezes nas setas. Em nosso
caso, trata se de uma referncia circular desejada. Para poder trabalhar com
este "erro", temos que clicar em Office>Excel Options e eleger "Manual" e
"Iterao". Cada Iterao efetua-se com F9. (Em 2003 v a Ferramentas>
Opes>Clculo e escolha "Manual" e "Iterao".) A frmula em B3 deve ser
copiada at F7.
Depois de 24 iteraes, aparece em D5 o valor de 25 graus exatos. Depois de
mais 5 iteraes, no haver mais mudanas nos valores da planilha.

A determinao da distribuio de temperatura numa superfcie, conhecidas as


temperaturas nas fronteiras, obedece seguinte equao (equao de
Laplace):
2T 2T
+ = 0 (1)
x 2 y 2
ou tambm na forma
2T = 0

A equao de Laplace pertence as equaes diferenciais parciais elpticas. A


equao leva o seu nome em honra a Pierre-Simon de Laplace (1780).
No entanto, a equao apareceu pela primeira vez num artigo de Euler sobre
hidrodinmica em 1752.
A soluo no caso de uma placa de 10*10 unidades de longitude dada por
117

400 n n x
T ( x, y ) = senh( (10 y )) sen (2)
n n senh(n ) 10 10
n= 1,3,5,...

O mtodo de resoluo desse problema consiste em dividir a superfcie em uma


grade de pontos, ou clulas, convertendo-o em um problema de diferenas
finitas. Para calcular a srie (2) com Excel, podemos preparar uma planilha da
seguinte forma

Soma-se 10 termos da srie (2) para os valores x = 1,3 e y = 2. Os fatores


ficam nas colunas A at G. Na coluna H formamos as somas parciais. Na clula
H14 temos a soma total 33,91706.

Os valores de senh foram calculados com a frmula

senh( x ) = (e x e x ) / 2 (3)

Mas o Excel tem embutido a formula =SENH(), que houvssemos podido usar
em vez da formula (3), ou seja, =SENH(B5) em vez de =(EXP(B5)-EXP(-B5))/2
em C5.
Observe que em H5 fica =G5, mas em H6: =SOMA(G$5:G6) copiar at H14.
A5: 1
A6: =A5+2
B5: =A5*PI()
D5: =B5*(10-E$5)/10
E5: =(EXP(D5)-EXP(-D5))/2, ou =SENH(D5)
F5: =SEN(B5*E$1/10)
G5: =400*E5*F5/(B5*C5), =primeira parte da soma
H5: =G5
H6: =SOMA(G$5:G6), = soma dos dois primeiros termos
118
119

Captulo 9
Sries infinitas; nmero e de Euler e o nmero Pi
A srie de Seno

A seguinte frmula representa um polinmio:

Sn = a0 + a1x + a2 x 2 + ... + an x n (1)

Os termos das sries de potncias so funes de x da forma bi = ai x . Os


i

polinmios (1) so as somas parciais das sries de potncias. Funes como


ex, sen(x), cos(x) e outras podem ser escritas na forma dum desenvolvimento
em uma srie de potncias

f ( x) = a0 + a1x + a2 x 2 + ... (2)

Como primeiro exemplo consideramos o seguinte desenvolvimento para a


funo sen(x), que ser vlido para todos os x

x3 x5 x 7
sen( x) = x + + ... (3)
3! 5! 7!

sendo x o ngulo em radianos. O smbolo ! a fatorial, ou seja n! = 123n


o produto dos primeiros n inteiros. Os termos xn/n! tendem a 0 medida que n
tende para o infinito. Uma vez que os termos da srie so de sinais alternados
e decrescentes, decorre que o erro cometido quando somamos somente um
certo nmero n de termos, n arbitrrio, por exemplo 3, no exceder o valor do
primeiro termo desprezado.

Exemplo: Qual o seno de 1o (= /180 radianos)?


Da srie (3) decorre

sen(/180) = /180 (/180)3/6 + ... = 0,0174524064...

O primeiro termo desprezado (/180)5/120 = 1,3496...10-11, que menor do


que 0,000 000 000 02. O erro cometido em tomar s dois termos no maior
do que 210-11, portanto sen (1o) = 0,0174524064, com dez casas decimais.

No difcil implementar (3) numa planilha:


120

A srie (3) no til para valores de x > 20 radianos. Por exemplo, para
calcular sen(20), preciso somar 40 termos da srie (3) para obter um
resultado correto com oito casas decimais (= 0,91294525...).
Por outro lado, no precisamos calcular com valores de x > 20, pois sempre
podemos restar mltiplos de 2 at obter um valor aceitvel.
(20 - 32 = 1,150444078 e sen(1,150444078) = 0,9129452507. Para obter
sen(1,150444078) com 8 casas decimais, devemos somar 20 termos da srie
(3)).

As entradas para a planilha so:

A1: 1
A2: =A1+2, copiar para baixo
B1: 1
B2: =B1*(-1), copiar
C1: =B1*H$1, copiar; D1: =H$1
D2: =C2^A2/FATORIAL(A2), copiar

Gostaria mencionar uma tcnica recursiva para o clculo da srie (3).


Se tomarmos y1:= x, ento o segundo termo ser y2 = -x2/(23)y1. Do
segundo termo obtemos y3 = -x2 /(45)y2 ...
Este processo podemos escrever da seguinte maneira

x2
y1 = x, yk +1 = , k = 1,2,..., n 1 (4)
2k (2k + 1)
121

As entradas so

A5: 1 (=k); B5: =E$1 (=y1)


Na coluna C temos a soma C5: =B5
A6: =A5+1
B6: =(-1)*E$1^2/(2*A5*(2*A5+1))*B5
C6: =C5+B6
Copiar A6:C6 at A6:C104 ( soma-se 100 termos); o resultado fica na clula
E5: =C104
Para x = 20 obtemos a soma 0,9129452534737. Este nmero correto com 8
casas decimais.

A frmula de recurso (4) pode ser escrita como Sub-rotina ou como Funo:

Observe como definimos o formato do resultado usando a funo Format:

MsgBox "sen(" & x & ") = " & Format(s, "0.0000")

Imagino que voc esta interessado em fazer alguns exemplos adicionais


para praticar o VBA. Trate de implementar as seguintes sries de potncias:
122

x 2 x3
ln(1 + x) = x + ..., vlido para 1 < x 1 (5)
2 3

x3 x 5 z 1
ln( z ) = 2( x + + + ...), com x = , z >0 (6)
3 5 z +1

x x 2 x3
e =1+ +
x
+ + ..., vlido para todos os x (7)
1! 2! 3!

Dicas:
Para (6): t=x, s=x, k=1

Depois: k = k+2 e t=xxt; s=s+t/k. (t = varivel temporria)


controle: ln(40) = 3,688876... , correto com 3 casas decimais

Para (7): y1=1, y2=xy1/1, y3=xy2/2 etc.

Resoluo

Para (6) e (7):

E2: =(E$1-1)/(E$1+1)
A5: 1 (=k); B5: =E$2 (=varivel auxiliar t)
C5: =E$2 (= termo da soma)
A6: =A5+2
B6: =E$2*E$2*B5 (= potncias de x)
C6: =C5+B6/A6 (=soma parcial)

Copiar A6:C6 at A6:C104 (F5, Ctrl+d), soma-se 100 termos.


A soma dos 100 termos deve ser multiplicada por 2 e fica em
E5: =2*C104
123

A seguinte funo "logz" calcula ln(z) somando 100 termos da srie (6). Com o
termo auxiliar t evitamos o clculo direto das potncias de x.

A funo "Expo" calcula a funo exponencial ex somando n+1 termos da srie


(7). Para x = 1 obteremos para n = 10 o valor e1 = e = 2,7182818. muito
interessante, estudar com "Expo" a dependncia do valor de e do nmero de
termos somados.

O nmero e de Euler (1707-1783) e o mtodo de Horner

J no captulo trs, falando de juros contnuos, mencionamos o nmero de


Euler: e = 2,71828... At a poca de Euler, a funo exponencial ex era
considerada meramente como o inverso da funo logartmica. Euler colocou as
duas funes numa base igual, dando-lhes definies independentes:

x
e x = lim (1 + )n
n n
1
(8)
ln x = lim n( x n 1)
n
124

Euler j tinha usado a letra e para representar o nmero 2,71828 ... num de
seus primeiros trabalhos, um manuscrito intitulado "Meditao sobre
Experimentos feitos recentemente sobre o disparo do Canho ", escrito em
1727.

Como vimos, podemos expressar estes limites em forma de sries infinitas. A


srie (7) permite o clculo de e com qualquer grau de preciso desejado. Para
calcular e efetivamente, no preciso calcular os fatoriais, pois, como j
mostramos nas macros, pode-se escrever a srie para e na forma

e = 1+(1+1/2(1+1/3(1+1/4(1+1/5(1+1/6(1+...)))))) (9)

recomendvel calcular esta expresso desde o interior at o lado exterior:

n soma

5 1+1/5=1,2
4 1+(1,2)/4 = 1,3
3 1+(1,3)/3 = 1,43333
2 1+(1,43333)/2 = 1,71666
1 1+1,71666 = 2,71666

Para realizar este esquema, precisamos de s duas colunas

A5: 15 (=nmero dos termos)


B5: =1+1/A5; A6: =A5-1; B6: =1+B5/A6

Copiar A6:B6 at A6:B19. Em E6: =B19 temos o valor de e , correto com 12


casas decimais.
125

Um mtodo parecido a este o mtodo de Horner, que se utiliza para o


clculo de valores de polinmios como (1). Este algoritmo torna-se
computacionalmente muito eficiente, pois necessita de um total de n operaes
de adio e n operaes de multiplicao.

Exemplo: Seja P(x) = 4x3 2x2 + 3x - 6. Determine, utilizando o mtodo de


multiplicao aninhada de Horner, P(3).

Soluo: Escrevemos o polinmio na seguinte forma aninhada:

P(x) =((4x-2)x+3)x-6

Observamos a regra P = Px + A(i) com A(3) = -6, A(2) = 3, A(1) = -2 e A(0)


= 4. Os A(i) so os coeficientes dos termos do polinmio dado. Colocando o
valor x = 3 na forma segundo Horner, obteremos

P(3) = ((43-2)3+3)3 6 = 93

Para implementar a regra P = Px + A(i) numa planilha de Excel, escrevemos os


coeficientes A(i) na coluna A e a regra uma s vez na clula B6 (depois copiar
at for necessrio). O ltimo valor na coluna B o valor de P(x) para o x dado.

A Sub-rotina "Horner_sub" demonstra, como se pode trabalhar com uma lista


de nmeros dentro de um vetor a(i). Os a(i) so valores indexados. Lembre-se
que A(0) o primeiro coeficiente do polinmio: P(x) = A(0)xn + A(1) xn-1 +
...+A(n-1)x+A(n).

Exemplo: Seja P(x) = 3x4 -6x3 2x2 + 5x 8. x =3

A macro pergunta, primeiro, o valor de x, depois o grau (n = 4). Em seguida,


ela pede o valor de a(0) (= 3) etc. at a(4) (= -8)

A MsgBox d sucessivamente todos os coeficientes do polinmio. (Pode-se


obter, tambm, uma lista dos coeficientes.)
126

Finalmente aparece o valor P(3) = 70

Pode-se modificar esta macro para determinar um zero de P(x), ajustando o


valor de x at que P(x) 0

O nmero PI

O valor de conhecido com extraordinria preciso h muito tempo. J Arquimedes


de Siracusa (cerca de 287-212 a.C.) estimou que o valor de estava situado entre
3,14103 e 3,14271. Ele estudava polgonos regulares, de 96 lados, inscritos em um
crculo e circunscrevendo um crculo.

Utilizando um polgono de 393216 lados, Vieta (1579) determinou o valor de com 9


casas decimais.

Um quadrado, inscrito em um crculo de raio 1, tem lados de comprimento s4 = 2 ,


um polgono com 8 lados tem s2n = s8 = 2 4 s4 s4 = 2 2 . Para um

polgono de 16 lados resulta s2 n = s16 = 2 4 s8s8 = 2 2 + 2 .

Assim, podemos escrever em forma geral

s2 n = 2 4 sn sn (1)
127

Para desenvolver uma planilha para a equao (1), precisamos de trs colunas, B para
o nmeros dos lados, C para os comprimentos e D para o valor aproximativo de .

B5: 4; C5: =RAIZ(2); D5: =B5*C5/2


B6: =2*B5; C6: =RAIZ(2-RAIZ(4-C5*C5)); D6: =B6*C6/2.

Copiar B6:D6 at B6:D40

Tudo anda bem at n = 32768. Este polgono produz um valor para correto com oito
casas decimais.

Mas, depois disso, comea o caos e d para n = 536870912 o valor = 0.

Como podemos entender isso?

Deve-se saber que uma computador trabalha com nmeros reais e que cada
computador utiliza um nmero limitado de dgitos para representar um nmero
128

real (uma "palavra"). Os computadores utilizam diferentes arquiteturas para


representar uma palavra. Os micros utilizam palavras de comprimento 16 bits
(dgitos binrios), estaes de trabalho usam uma palavra de 32 bits e os
supercomputadores usam palavras de comprimento 64 bits.

Suponhamos, por simplicidade, que o nosso computador somente possa


processar nmeros com quatro dgitos. Um nmero como 3.141 ser
representado na forma padro como .3141E-1. Nesta representao normal,
uma palavra comea com um ponto digital e, detrs do ponto, no pode haver
como primeiro digito um digito zero. O nmero 0.0069 ser armazenado como
.6900E-2. Observe que ganhamos dois zeros, dos quais no sabemos se so
verdadeiros ou falsos.

Ao somar .3141E-1 e .6900E-2, devemos, primeiro, equalizar os expoentes:

.3141E-1
+ .0690E-1
___________

= .3831E-1

Como o acrescentar de zeros no-significantes pode conduzir a erros, podemos


facilmente ver se repetimos o clculo de com s 3 casas decimais

S4 = .141E1
S8 = RAIZ(.200E1-.142E1)=.762E+0
S16= RAIZ(.200E1-.185E1)=.387E+0
S32= RAIZ(.200E1-.196E1)=.200E+0
S64= RAIZ(.200E1-.199E1)=.100E+0
S128= RAIZ(.200E1-.200E1)= 0E+0

Compare S16:

RAIZ(.200E1-.185E1) = RAIZ(.015E1) = RAIZ(.150E+0)= .387E+0

O zero marcado foi adicionado pela normalizao. Estes zeros extras fazem com
que a partir de S128 resultem s zeros.

Como podemos evitar este dilema? O problema principal so as duas subtra-


es na frmula recursiva (1). Devemos tratar de transformar uma das subtra-
es numa adio, coisa que no difcil, pois s multiplicar
2+ 4 ss
s = 2 4ss por . Obteremos, assim, a seguinte
2+ 4 ss
sn
formula s2n = (2)
2 + 4 sn sn
129

Da planilha a seguir podemos ver como a nova frmula da valores estveis e


corretos at 14 casas decimais a partir de n = 33554432

A macro "ArchiPi" utiliza DIM n As Long , para poder ter uma exatido de
1E-14.
130

Dos algoritmos, baseando-se numa srie de potncias, o mais conhecido


nomeado segundo Leibniz (1646-1716, poltico, matemtico, inventor do
clculo, fsico, diplomata, jurista, filsofo...)

1 1 1 ( 1) n 1
= 4(1 + + ...) = 4 (3)
3 5 7 n =1 2n 1

Lamentavelmente, a velocidade de convergncia da serie (3) muito lenta.

Agora, quero demonstrar lhes um excelente algoritmo nomeado segundo J.


Gregory (1671) e J. Machin (1706).


= 4 An Bn (4)
4 n =1 n =1

(1) n 1 (1) n 1
Os coeficientes so An = , Bn =
(2n 1)52n 1 (2n 1)2392 n 1

A implementao em Excel pode dar a impresso de ser complicada, mas no


to difcil assim. Vejamos:

A10: 3; B10: -1; C9: 5; C10 =25*C9

D9: =1/C9; D10: =D9+B10/(A10*C10)


A11: =A10+2; B11: =-B10; C11: =25*C10

D11: =D10+B11/(A11*C11)
131

Copiar A11:D11 at A18:D18

E18: =16*D18; C19: 239 (comea o clculo dos Bn); D19: =1/C19
A20: 3; B20: -1; C20: =57121*C19

D20: =D19+B20/(A20*C20)
A21: =A20+2; B21: =-B20; C21: =57121*C20
D21: =D20+B21/(A21*C21); copiar A21:D21 at A22:D22
E22: =4*D22
E6: =E18-E22 ( aproximao para Pi)

Se precisa somente 9 termos da srie An e 3 da srie Bn para obter com 13


casas decimais.
A frmula por detrs do algoritmo Pi = 16 arctan(1/5) - 4 arctan(1/239)

O algoritmo-Pi dos irmos Borwein


132

Em 1995, Jonathan Borwein e Peter Borwein descobriram um algoritmo para


determinar o valor de 1/ com um extraordinrio desempenho. Ele fornece
com 170 casas decimais corretas aps apenas 3 passos de iterao.
Em 1995, os irmos Borwein determinaram, em colaborao com Yasumasa
Kanada da Universidade de Tquio, o nmero com 6,4 bilhes de casas
decimais, batendo o recorde mundial no calculo de .

O algoritmo reza assim:

y0 = 2 1
a0 = 6 4 2
1 4 1 yk4
yk +1 =
1 + 4 1 yk4
ak +1 = ak (1 + yk +1 ) 4 22k + 3 yk +1 (1 + yk +1 + yk2+1 )

O algoritmo tem um aspecto assustador, mas, como veremos, ele fcil a


implementar. importante reduzir tudo a operaes elementares, ou seja,
as potencias e razes devem ser reduzidas a operaes de adio e de
multiplicao. Mas, mesmo calculando 2 como potencia 21/2, a conver-
gncia surpreendentemente rpida. A potncia 22k+3 pode ser calculada
iterativamente como pot2 = pot24 com o valor inicial de pot2 = 2.
Vem aqui uma implementao do algoritmo:
133

SOMASEQNCIA

No Excel encontramos a funo SOMASEQNCIA que retorna a soma de um


polinmio e baseada na expresso

J sabemos que muitas funes podem ser aproximadas por um polinmio, ou


seja por uma soma parcial de uma srie de potncias.

Sintaxe

SOMASEQNCIA(x;n;m;coeficientes)

x o valor de entrada.
n a potncia inicial qual voc deseja elevar x.
m o passo pelo qual se acrescenta n a cada termo na seqncia.
coeficientes so os fatores ai dos termos do polinmio.

Exemplo:

x2 x4
A srie da funo cos dada por cos( x ) = 1 + ...
2! 4!

Se queremos calcular cos(2), escrevemos x = 2. A potncia inicial n = 0, pois


x0 = 1. Os passos so m = 2, e os coeficientes so os fatores dos termos do
polinmio, ou seja: 1/0!, -1/2!, 1/4!, -1/6! etc. (0! = 1 por definio.) Veja a
seguinte planilha:
134

A frmula em F7 =SOMASEQNCIA(G2;0;2;C3:C10). Os coeficientes na


coluna C so C3: 1; C4: =B4/FATORIAL(A4) etc.

Construmos a planilha para a funo Seno da mesma forma:

Agora, a frmula em F7 =SOMASEQNCIA(G2;1;2;C3:C10), pois a srie da


funo seno dada por

x3 x5 x 7
sen( x) = x + + ...
3! 5! 7!

Os valores de n na coluna A foram devidamente selecionados.

Mas, parece que a funo SOMASEQNCIA no de grande utilidade, pois


no faz outra coisa que somar os termos da srie, veja a prxima planilha,
135

onde adicionamos na coluna D as potncias de x e utilizamos em F10:


=SOMA(D3:D10) os resultados so idnticos.
137

Captulo 10
lgebra de Matrizes (Arranjos)
J varias vezes tivemos contatos com variveis indexados em matrizes ou
vetores (= matriz especial). Compare o primeiro capitulo, pagina 11, ou no
Captulo 7. Diz-se que o arranjo um vetor quando seus itens possuem um
nico ndice e que o arranjo uma matriz, quando seus itens (elementos)
possuem dois (ou mais) ndices.

No Excel, uma matriz pode ser dada como um intervalo de clulas, como
A1:C3. Mas, tambm pode ser armazenada na "memria" do Excel e , em tal
caso, chamado de constante de matriz (array constant ). Para criar uma
constante de matriz, utiliza-se a seguinte notao: {1.2.3.4.5}. Podemos usar
esta constante como argumento de uma funo, por exemplo de SOMA.
Escrevemos =SOMA({1.2.3.4.5}), Enter. Resultado: 15. (A frmula contm uma
matriz, mas, a frmula mesma no nenhuma frmula matricial (array
formula) e no precisa ser entrada utilizando Ctrl+Shift+Enter, como devemos
fazer no caso de uma frmula matricial. (Se bem que, em nosso caso, podemos
faz-lo.) Excel sempre coloca duas chaves { } em torno duma frmula matricial.
Mas, voc no deve escrev-las, isso faz Excel.)

Na edio portuguesa do Excel, devemos escrever os elementos de uma lista


(vetor) horizontal, separados por pontos (no por vrgulas!). Se os elementos
ficam numa coluna, eles so separados por ponto e vrgula.

Para mostrar os elementos 1,2,3,4,5 nas clulas A1:A5, escrevemos


={1;2;3;4;5}, Ctrl+Shift+Enter. Mas, antes devemos selecionar o intervalo
A1:A5! Se, em seguida, queremos quadrar estes elementos, ento selecio-
namos outras cinco clulas verticais, por exemplo D5:D9, escrevemos
=(A1:A5)^2 e pressionamos Ctrl+Shift +Enter.

Mas, cometi um equvoco, selecionei D5:D10. Excel escreveu por isso na ltima
clula #N/D (deve ser alemo: nicht da no est-, ou trata-se, porventura, de
latim: non datur?).
138

Como podemos copiar uma matriz de trs linhas e trs colunas?

s selecionar o intervalo, aqui G5:I7, e introduzir a seguinte constante de


matriz: ={1.2.3;4.5.6;7.8.9}, pressione Ctrl+Shift+Enter.

Exemplos:

Queremos multiplicar todos os elementos da matriz (A1:B2) pelo fator 2 e


queremos a nova matriz nas clulas (B5:C6). Olhe a seguinte soluo!

Com um click sobre fx buscamos a funo "MatrixFator" (Definida pelo usurio)


Aparecer a janela Argumentos da funo, a qual enchemos como demonstra a
figura. Importante: No clicar sobre OK, deve-se pressionar Ctrl+Shift+Enter.

O cdigo da funo "MatrizFator", que faz esta maravilha, vem aqui:


139

A matriz chamada de A, e Variant o tipo de dados que aceita tambm


matrizes. (Quando voc especificar argumentos para um procedimento, eles
sempre tero como padro o tipo Variant, que o tipo de varivel padro no
VBA. Uma varivel no declarada automaticamente do tipo Variant.)
temp uma varivel temporria com a qual calculamos os produtos
fator*A(i,j) da nova matriz. A varivel integer m contm o nmero de
linhas da matriz A. Na linha ReDim temp(m,m) dimensionamos temp com
este nmero m. Option Base 1 diz VBA que os ndices das matrizes
comeam todos com 1.

No prximo exemplo vamos somar duas matrizes A e B:

Primeiro enchemos as clulas com os elementos matriciais e depois selecio-


namos as clulas (A7:B8), para que elas recebam os elementos da matriz A+B.
Podemos escrever a funo "MatrizSOMA" na barra de frmulas como mostra a
figura, ou, o que eu prefiro, fazer um clique sobre fx e escrever os dados na
telinha dos Argumentos da funo. Feche a tela com Ctrl+Shift+Enter, no com
OK!
140

Uma declarao como "DIM R() As Double" define uma matriz dinmica R de
nmeros reais que mais frente deve ser fixada, p.ex. por ReDIM R(n,m).

O cdigo da funo "MatrizSOMA" contm somente uma nova varivel auxiliar


temp.

Voc sabe que o produto de duas matrizes A = [aij] e B = [bij] calculado


pela frmula

p
cij = ai1b1 j + ai 2b2 j + ... + aipbpj = aik bkj (1)
k =1

onde A uma matriz m x p (m linhas e p colunas) e B de p x n (p linhas e n


colunas) A matriz C = [ij] m x n, ou seja, ela tem m linhas e n colunas.
141

Isso significa, que o produto de A por B est apenas definido quando o nmero
de linhas de B exatamente igual ao nmero de colunas de A. No exemplo
seguinte, temos duas matrizes quadradas, ambas de 3 linhas e 3 colunas. A
matriz produto C aparecer no intervalo (A7:C9) por que aqui, onde
queremos que fique o resultado. Por isso selecionamos as clulas (A7:C9),
antes de pressionar as teclas Ctrl+Shift+Enter.

O cdigo foi ampliado pelo Loop For k =1 To p que executa a soma em (1)
Note a introduo do contador, n, das colunas da matriz B. A matriz produto
AB de m linhas e n colunas, m x n.
142

Seguem agora mais alguns exemplos sobre o produto de matrizes e vetores.


(Um vetor uma matriz de uma nica coluna ou linha.)

Aqui multiplicamos uma matriz A = ("2x3") por uma B = ("3x2"). A matriz


produto C = AB vai ter 2 linhas e 2 colunas. Eu havia selecionado 3 linhas e 3
colunas, e Excel encheu as clulas sem elementos com #N/D.

No exemplo a seguir, foi determinado de antemo o tamanho da matriz


produto. Deveria ser 1x3, ou seja uma linha e trs colunas. Por isso foram
elegidas trs clulas em linha horizontal: B8,C8,D8.

Para determinar o Produto escalar de dois vetores, multiplicamos um vetor


horizontal com um vetor vertical, o que produz um mero nmero, no caso 6
(=Produto escalar dos vetores)
143

Exemplo: Centro de Massa

Vamos resumir o que aprendemos nas paginas anteriores com um exemplo


sobre o centro de massa (de gravidade) de um sistema discreto de n partculas.
A abscissa xc do centro de massa, C(xc,yc), obtm-se pela frmula

n
mi xi
xc = i =1n (1)
mi
i =1
144

n
No ponto C pode-se considerar concentrada toda a massa M = mi .
i =1
Podemos reescrever a primeira frmula introduzindo os pesos pi = mi/M:

n n n
xc = pi xi e yc = pi yi com pi = 1 (2)
i =1 i =1 i =1

Na linha 12 temos as coordenadas do centro de massa xc = 0,88 e yc = 1,12.


Para desenhar a Srie1, elegemos A6:B12. O cursor fica no princpio em A6,
depois pressione F8, F5: A12, OK, Shift F8. Com F5 saltamos ao comeo da
Srie2 em E6. Depois F8, F5: E12, OK, Shift F8. Inserir> etc. A Srie2 consta s
do ponto C. O boto "Centro de Massa" pertence ao programa a seguir. Veja
outra vez o captulo Grficos 1 para recapitular o uso das teclas F8 F5.

Claro que no se precisa nenhuma macro para calcular C, ser fcil faz-lo na
planilha mesma, somando os produtos x(i)*p(i) e y(i)*p(i). Mas, a macro
"Pontos()" com o boto "Centro de Massa" pode ser usada para aplicaes mais
complicadas, por exemplo no caso das frmulas de interpolao do seguinte
captulo. A macro baseia-se num programa do site www.cidse.itcr.ac.cr/cursos-
linha/NUMERICO cujos autores se dedicam produo de cursos grtis na
internet para estudiosos das cincias matemticas e outras.

De valor especial o enfoque pedaggico que se nota ao estudar o cdigo. Ele


mostra, outra vez, como se l dados da planilha usando o objeto Range. A
instruo Set configura R para apontar para as clulas selecionadas, veja nosso
captulo sobre o tringulo de Pascal. A linha com IF n>1 And m = 4 Then
no contm cdigo, e VBA o aceita assim, sem protesta, e segue com a
prxima linha. (Vamos pensar que o Range selecionado uma Matriz de
dimenso n x m. A posio (i,j) da matriz corresponde linha i e coluna j.
Para contar linhas e colunas, VBA precisa saber onde comea e onde termina o
Range.)
145

A linha Cells(2,1) = "C = (" + Str(xc) + ", " + Str(yc)+ ")"


coloca as coordenadas do centro de massa na clula A1 (que foi ampliada)
como String (uma String uma srie de caracteres), pois a funo Str converte
um nmero em uma string. Isso no sempre muito desejado, pois o resultado
exibido com todas as casas decimais possveis.

Se mudar a massa m(6) de 4 por 3 ter o resultado C = ( .826086956521739,


1.1304347826087). O que acha? Seguramente poderamos escrever, como
fizemos na sub-rotina "SegGrau()",

Cells(2, 1) = "xc=": Cells(2, 2) = xc


Cells(2, 3) = "yc=": Cells(2, 4) = xc

em vez de Cells(2,1) = "C = ("+ Str(xc)+ ", "+ Str(yc)+ ")".


No caso dos nmeros complexos vimos o problema inverso, quando utilizamos
a funo Val para mudar uma string para um nmero real; veja tambm nossa
sub-rotina "complexos" no Captulo 7.
146

E muito importante familiarizar-se com o desenho de mensagens de erro,


utilizando, por exemplo, as mensagens contidas no programa anterior.

Sistemas de equaes lineares

Matrizes e vetores so igualmente usados quando se trata de resolver um


sistema de m equaes com n incgnitas (simplesmente: sistema linear). Um
caso especial ele onde m = n. Isto , a situao em que o nmero de
equaes igual ao nmero de incgnitas e a matriz dos coeficientes
quadrada. Na verdade, h inmeras aplicaes em que m n.

3x y +z =2
3 1 1
9x y =7
Seja um sistema linear com A = 9 1 0
6 x +2 y 2 z =8
6 2 2

Numa forma concisa escreve-se isso como Ax = b com a soluo x = A-1b. x


e b so vetores e A-1 a matriz inversa de A. No velho BASIC havia um funo
"Mat" e INV com as quais foi fcil resolver o sistema:

5 OPTION BASE 1
10 DIM A[3,3], I[3,3],X[3,1],B[3,1]
20 MAT READ A,B
30 MAT I=INV(A)
40 MAT X=I*B
50 MAT PRINT X
100 DATA 3,-1,1
110 DATA 9,-1,0
120 DATA 6,2,-2
130 DATA 2,7,8
200 END
147

A soluo o vetor 1.
2.
1.

Como fazemos isso no Excel? Veja:

Com "MATRIZ.INVERSO" calculamos a inversa I nas clulas (E12:G14), ou no


intervalo que voc escolher. Pressione Ctrl+Shift+Enter.

Escolhi (I12:I14) para o vetor soluo x, que o produto de I por b. Pronto.


A funo MATRIZ.INVERSO determina a inversa com uma exatido de 15 casas
decimais.

No caso de uma matriz 2x2 existem frmulas simples para o clculo dos
coeficientes da matriz inversa. O seguinte procedimento contm essas
frmulas. Trata-se de uma variao da funo "Segundograu" do Captulo 7.
Escrevemos em 4 clulas os elementos da matriz A, por exemplo em (A1:B2).
Depois selecionamos 4 clulas para a matriz inversa e, em seguida, clicamos
sobre fx para chamar nossa funo "inversa2". Na janela dos argumentos da
funo escrevemos ao lado de "MatrizA" o intervalo (A1:B2). No clicamos
sobre OK, mas sim pressionamos as teclas Ctrl+Shift+Enter.

Temos um mtodo simples para o controle do resultado, pois o produto IA


deve sempre produzir a matriz identidade de ordem 2 (no caso de uma
matriz quadrada de ordem n resulta uma matriz identidade de ordem n).
Usando a funo "MATRIZ.MULT" -ou nossa funo "MatrizProduto"-, este
controle ser rapidamente feito.
148

Exemplo:

A frmula em D5 diz =inversa2((A1:B2))

Produto vetorial em R3

Aproveitamos a oportunidade para transformar o program anterior num


programa para calcular o produto vetorial:
149

A figura mostra os vetores coluna a = (2,1,2) e b= (3,-1,-3) e o produto


vetorial c = (-1,12,-5), ou seja c = -i +12j -5k

Se no queremos introduzir explicitamente os coeficientes a1,...,b3, temos a


opo de ler os contedos das clulas com a propriedade Cells(i,j), como j
fizemos no programa "SegGrau" no Captulo 7. O programa a seguir utiliza
tambm o tipo de dada genrico "Object", que recebe todo tipo de objetos
definidos. Este tipo genrico muito menos eficiente do que uma declarao
especfica de objeto, tal como Dim a As Workbook, Dim b As Chart etc. Mas,
necessrio haver visto uma vez este tipo de dado. (Tambm houvssemos
podido usar As Variant em vez de As Object.)

O produto vetorial aparecer como vetor coluna.


150

O mtodo de Gauss

Embora o Excel oferea, como vimos, excelentes mtodos para resolver


sistemas de equaes algbricas, parece-nos indispensvel pr o clssico
mtodo de Gauss num ambiente VBA. Para o ensino nas aulas de lgebra
Linear ou nos cursos de Clculo Numrico, sempre foi fundamental uma
discusso do mtodo de Gauss.

Este mtodo consiste, essencialmente, em transformar por etapas sucessivas a


matriz original do sistema numa matriz triangular superior. Aps obteno da
matriz transformada (matriz triangular superior), o sistema pode ser resolvido
por substituio "ascendente" ("retroativa"). Para melhor explicar este
algoritmo de eliminao, resolveremos o seguinte sistema

2x1 + 3x2 x3 = 5 (1)


4x1 +4x2 -3x3 = 3 (2)
2x1 3x2+ x3= -1 (3)

Os passos a executar so:

1. Formar a matriz ampliada do sistema

2 3 1 5
B0 = 4 4 3 3
2 3 1 1

2. Consideraremos como piv a primeira linha, L10 = (2, 3, -1 , 5), para o


processo de eliminao.

3. Nossa meta zerar todos os coeficientes abaixo da diagonal principal;


para isso vamos

4. calcular o fator m210 = - (a210 / a110) =- 4/2 = -2 (passo 1)

5. Vamos somar 2a equao a 1a, multiplicada pelo coeficiente m210 =-2, e


colocar o resultado na 2a linha, isto no altera a soluo do sistema.
Resulta uma nova segunda linha: L21 = (0, -2, -1, -7) com a211 = 0. A
primeira linha no sofre mudana.

6. Falta, agora anular o elemento a310 = 2 em B0. Para isso, repetimos o


procedimento (passo 2): m310 = -(a310/a110) =- 2/2 = -1. Somamos,
agora, 3a equao a 1a, multiplicada pelo coeficiente m310 =-1. A nova
terceira linha ser L31 = (0, -6, 2, -6). E a matriz B1 tem a forma
151

2 3 1 5
B1 = 0 2 1 7
0 6 2 6

Falta anular a321 = -6.

6. Determinamos m321 = -(a321/a221) = -(-6/-2) = -3 (passo 3)

7. Chegamos, assim, nova matriz ampliada B1

2 3 1 5
B2 = 0 2 1 7
0 0 5 15

Vemos que o sistema original foi reduzido a um sistema triangular equivalente


ao sistema original, e cuja matriz uma matriz em escada.

2x1 + 3x2 x3 = 5 (4)


-2x2 - x3 = -7 (5)
5x3 = 15 (6)

Com a obteno de uma matriz em escada termina a parte descendente do


mtodo de eliminao de Gauss. Neste momento, verifica-se se o sistema
obtido possvel, isto , se no h equaes com o primeiro membro nulo e o
segundo no nulo. Se o sistema for possvel, resolve-se ele de "baixo para
cima" (parte "ascendente" ou "retroativa" do algoritmo). Obteremos em nosso
caso o seguinte vetor soluo: x3= 3; x2 = 2; x1 = 1.

Temos aqui o nosso exemplo produzido com a funo "gauss" que se orienta
estritamente no processo descrito.
152

No principio sero passados os parmetros para a funo "gauss". A funo l


os valores das matrizes matA e vetb da planilha:

e ela cria a matriz aumentada B. Com a MsgBox podemos observar a formao


das novas linhas para cada valor de k (isso s uma ajuda pedaggica que se
pode transformar num comentrio).
153

Captulo 11
Integrao e Interpolao

(Veja Applets para este tema no site http://www.cidse.itcr.ac.cr/cursos-linea/


NUMERICO/index.htm)

bem conhecido que a maioria dos integrais definidas s podem ser calculadas
numericamente. Neste capitulo, vamos estudar alguns mtodos numricos do
tipo Newton-Ctes, que empregam os valores de f(x) para valores de x
uniformemente espaados. Dois mtodos simples desse grupo so a regra dos
trapzios e a regra de Simpson

Regra dos trapzios

Para obter a regra geral, dividimos a rea debaixo da curva y = f(x) entre x = a
= x0 e x = b = xn em n faixas da mesma largura h = (b-a)/n. A integral ser
aproximada pela seguinte soma de reas de trapzios:

b
h h
f ( x)dx = ( f ( x0 ) + f ( x1 )) + ( f ( x1 ) + f ( x2 )) + ...
a 2 2
h
( f ( xn 1 ) + f ( xn )) = (1)
2
h
( f ( x0 ) + f ( xn )) + h( f ( x1 ) + f ( x2 ) + ... + f ( xn 1 ))
2

A ltima expresso a regra dos trapzios composta. Nas duas figuras


seguintes criamos duas diferentes funes VBA para avaliar esta frmula.
154

Para a =1, b = 2 , n = 6 obteremos o resultado 0,106189. Aumentando o valor


de n, dar, evidentemente, melhores aproximaes.

Na seguinte funo utilizamos o mtodo "Run", que requer um argumento


nomeado: o nome da macro ou procedimento para ser executada, em nosso
caso "Funcao". O mtodo Run retorna o que for retornado pela macro (pela
Function Funcao) chamada. Os objetos passados so os valores de x.

O programa anterior parece ser prefervel para a maioria dos usurios. Para
2
ln( x )
calcular 1 + x2 , usando 6 faixas, a macro deve ser chamada como
1
=Trapezio_Run( 1;2;6;"Funcao"):
155

Regra de Simpson

Como foi feito com a regra dos trapzios, deve-se subdividir o intervalo de
integrao [a,b] em n subintervalos iguais de largura h. Com a regra de
Simpson, o nmero n de subintervalos deve ser, porm, sempre par. A frmula
composta de Simpson dada por

b
h
f ( x)dx 3 ( y0 + 4 y1 + 2 y2 + 4 y3 + 2 y4 + ... (2)
a
+ 2 yn 2 + 4 yn 1 + yn )

A implementao a seguir faz clara diferena entre os termos par e impar.

Mas, a seguinte macro mais curta devido a um simples truco. Utiliza-se uma
varivel w = 6 - w que, no programa, somente pode tomar os valores 2, 4, 2,
4 ... se comea-se com w = 4.

Observe que o programa trabalha com uma soma s e que utilizamos somente
um For To Loop.
156

Aplicao: Sries de Fourier

a0
Uma srie de senos e co-senos do tipo + (an cos nx + bn sen nx)
2 n =1
chamada de srie trigonomtrica. Se esta srie converge, ela representa ento
uma certa funo f(x) que se pode escrever como

a0
f ( x) = + (an cos nx + bn sen nx) (3)
2 n =1

Podemos calcular os coeficientes an e bn, se conhecemos f(x). As frmulas so

1 +
a0 = f ( x)dx (4)

1 +
an = f ( x)cos nx dx (n 0)

(5),(6)
+
1
bn = f ( x)sen nx dx (n > 0)

Na maioria dos casos, impossvel calcular as integrais analiticamente. Em tais


situaes devemos aplicar uma regra numrica, por exemplo a de Simpson.
157

Para poder fazer uma comparao entre integrao analtica e numrica,


usamos uma funo simples, a saber f(x) = x2. Queremos, ento, desenvolver a
funo f(x) = x2 em uma srie de Fourier em co-senos no intervalo (-,+). (Os
coeficientes bn se anulam todos, se f(x) for par. Isso certo para f(x) = x2.)

Utilizando o programa Simpson (ou Simpson1) podemos calcular os coeficien-


tes an na tabela a seguir. Os resultados analticos so a0 = 22/3 e an = (-1)n
(4/n2) para n > 0.

numrico analtico
A0 = 3,2899 3,2899
A1 = -3,9999 -4,0000
A2 = 0,9995 1,0000
A3 = -0,4432 -0,4444
A4 = 0,2477 0,2500
A5 = -0,1560 -0,1600
A6 = 0,1046 0,1111
A7 = -0,0715 -0,0816

Aqui temos um exemplo: queremos calcular com Simpson1 o coeficiente A5:

Os valores para n = 30, 50, 100 podemos ver em B2:B4

Os valores numricos na tabela foram calculados com n = 30.


158

A verso como sub-rotina permite tambm a produo de uma tabela. O


programa l os valores de a, b, n da planilha.

O desenvolvimento da funo f(x) = x2 em uma srie de Fourier em co-senos


no intervalo (-,+) podemos escrever, ento, assim

f(x) = x2 3,2899 - 3,9999cos(x) + 0,9995cos(2x) - 0,4432cos(3x) +

+ 0,2477cos(4x) 0,16cos(5x)

O valor de , podemos calcular no cdigo VBA com Pi = 4*Atn(1), mas, na


planilha, 4*ATAN(1).

Planilha de Excel

Tambm vale a pena criar uma planilha para trs formulas (Trapzios,
Tangentes, Simpson). Repetimos as bases tericas utilizando as somas de
Riemann. (A seguinte figura foi produzida em MuPAD cuja descrio pode-se
encontrar no site do autor em http://www.geocities.com/Athens/Agora/6594/ .)

Na figura superior esto desenhados os retngulos que tocam a curva de por


debaixo. A soma das reas (soma inferior de Riemann)

Si = (y0 + y1 + y2 + ... + yn-1)h

Na figura temos n = 10 e a funo a parbola y = x2. x0 = 0 e x10 = 1.0


159

Para Si obtm-se o valor de 0.285 unidades de rea.

A soma superior, Su , dada por

Su = (y1 + y2 + y3 + ... + yn)h

Fazendo o clculo, obtemos Su = 0.385. O valor exato da integral 1/3, e o


valor mdio Sm = (Si + Su)/2 = 0,335 muito prximo ao valor exato. fcil
comprovar que este valor mdio, Sm , coincide com a frmula dos trapzios.

Uma melhoria obteremos tambm, se usamos sempre duas faixas e se


traamos por ymdio a tangente curva (ser preciso, utilizar um nmero par de
faixas!). A frmula resultante ser

St = 2h(y1 + y3 + y5 + ... + yn-1)


160

Compare a planilha a seguir onde temos todas as frmulas incorporadas.

A frmula de Simpson dada pela seguinte expresso

Simp = (2Sm + St)/3

A funo y = x2 (=A10*A10) fica na clula B10.

Na clula D10, temos o resultado =I$2*(SOMA(B10:B20)- (B10+B20)/2). Em


I10 fica =2*I$2*SOMA(F10:F20) e na I11 temos =(2*D10+I10)/3.

Um problema reside no fato de que a planilha deve ser modificada, se


trocarmos o valor de n. No caso n = 20, temos de copiar as frmulas at a
linha 30 e as funes nas clulas D10, I10 devem conter B30 em vez de B20 e
F30 em vez de F20.

Sem dvida, nestes casos prefervel utilizar as macros que foram desen-
volvidas mais acima.

Exerccio: Calcule por meio da planilha a seguinte integral elptica:

48
I= 1 + cos 2 x dx
0

utilizando n = 100. (Copiar at linha 110)


161

Resultados: Trapzios: 58,46239; Tangentes: 58,487679; Simpson:


58,4708211

Existem mtodos melhores dos que utilizamos acima, por exemplo o mtodo de
Romberg, que d o valor I 58,47047 com 4 casas decimais corretas.

Interpolao de Newton (1643-1727)

Vamos supor que, por meio de um experimento, temos uma tabela de dados:

x -2 -1 0 1 2
y 3 0 -2 6 1

Suponhamos, alm disso, que se queira conhecer o valor de y para um x no


tabelado. O mtodo de Newton resolve este problema determinando um
polinmio, p(x), que passe pelos pontos dados e que permita determinar,
aproximadamente, valores de y para pontos intermdios. (Devemos distinguir
entre Interpolao e Regresso. Mais frente, falando sobre mtodos
estadsticos, vamos estudar algumas tcnicas de tratamento e anlise de dados.
Obviamente, a regresso vai ser uma destas tcnicas. Dentre os processos
matemticos que resolvem problemas da regresso, com certeza, um dos mais
utilizados o Mtodo dos Mnimos Quadrados de Gauss. Neste mtodo trata-se
de determinar uma funo que passe o mais "prximo possvel" dos pontos
dados e no se pede que passe pelos pontos mesmos.)

Para no nos perdermos em consideraes tericas, apresentarei aqui a


frmula de Newton para a obteno dum polinmio interpolador. (Fala-se de
interpolao polinomial. Estes mtodos, por exemplo os de Newton, Lagrange e
Bernstein, diferem uns dos outros na tctica aplicada para determinar o
polinmio interpolador.)

Consideremos uma tabela com n+1 pontos (x0,y0), (x1,y1), ... ,(xn,yn) e
desejamos determinar um polinmio da forma

p(x) = a0+a1(x-x0)+a2(x-x0)(x-x1)+ ... +an(x-x0)(x-x1)(x-xn-1)

Pede-se determinar os coeficientes a0, a1, ..., an.

O polinmio interpolador da tabela acima tem, como demonstraremos, a forma

p(x) = -2 + (25x + 38x2 - 7x3 8x4)/6


162

Para um programa como MuPAD, Maple, Mathematica, etc. no nenhum


problema calcular tal polinmio. Em MuPAD, por exemplo, temos

X um valor no tabelado.

O mtodo de Newton adapta-se particularmente bem estrutura de uma


planilha como o Excel, pois ele funciona segundo o seguinte esquema:

As expresses do lado direito significam

a0 = y0
a1 = (y1 y0)/(x1 x0) := [x0,x1,y]
a2 = ((y2 y1)/(x2 x1) (y1 y0)/(x1 x0))/(x2 x0) := [x0,x1,x2,y]
.....................
an = [x0,x1,...,xn,y]
163

As entradas para esta planilha so

F4: x0 (=1); G4: y0 (=3)


F6: x1 (=3); G6: y1 (=1)
F8: x2 (=4); G8: y2 (=6)

E5: =F6F4; E7: =F8-F6; D6: =F8-F4

No lado direito (colunas H e I) calculamos as "diferenas divididas":

H5: =(G6-G4)/E5 (=a1); H7: =(G8-G6)/E7


I6: =(H7-H5)/D6 (=a2)

No numerador das fraes temos a diferena de valores da coluna anterior, no


denominador temos a diferena de valores x, que encontramos no lado
esquerdo do esquema na posio correspondente (por exemplo: a clula D6
corresponde clula I6).

A partir desta regra, podemos construir para qualquer nmero de valores


observados o esquema das diferenas divididas. Compare a seguinte planilha
que contm os 5 valores j considerados acima.

O polinmio resultante j foi calculado pelo MuPAD:

p(x) = 3 -3(x+2)+0.5(x+2)(x+1)+1.5(x+2)(x+1)(x)-4/3(x+2)(x+1)(x)(x-1)

p(x) = -2 (25x + 38x2 7x3 8x4)/6

O grfico deste polinmio segue mais frente.

Na realidade, podemos abrir mo do lado esquerdo do esquema e utilizar um


esquema escalonado mais simples, veja a planilha a seguir, que vai servir para
at 8 pares de valores observados (C4:D11).
164

Na coluna E temos:

E4: =(D5-D4)/(C5-C4); E5: =SE(CONT.NM($C$4:$C$11)>=3;(D6-D5)/(C6-


C5);" ") A funo CONT.NM conta quantas clulas contm nmeros. No caso
resulta CONT.NM(C4:C11) = 5, ento colocamos na clula E5 o resultado de
(D6-D5)/(C6-C5) = (-2-0)/(0-(-1))= -2.

E6: =SE(CONT.NM($C$4:$C$11)>=4;(D7-D6)/(C7-C6);" ")


E7: =SE(CONT.NM($C$4:$C$11)>=5;(D8-D7)/(C8-C7);" ")
E8: =SE(CONT.NM($C$4:$C$11)>=6;(D9-D8)/(C9-C8);" "), aqui escreve-se
nada na clula E8, pois CONT.NM($C$4:$C$11)>=6 falso. Na clula E10
temos a ltima frmula nesta coluna: =SE(CONT.NM($C$4:$C$11)>=8;(D11-
D10)/(C11-C10);" "))
F4: =SE(CONT.NM($C$4:$C$11)>=3;(E5-E4)/(C6-C4);" ")
F5: =SE(CONT.NM($C$4:$C$11)>=4;(E6-E5)/(C7-C5);" ").

J podemos reconhecer o esquema detrs das frmulas. s necessrio copi-


las para baixo e aumentar "manualmente" os nmeros nas relaes >= .

A ltima frmula fica em K4 e reza =SE(CONT.NM($C$4:$C$11)=8;(J5-J4)/


(C11-C4);" ")

Obviamente, muito desejvel ter uma macro VBA que capaz de fazer tudo
isso mais rpido e praticamente com um s clique da mouse.
O programa VBA que segue baseia-se num artigo de R. Pfeifer no site
http://www.arstechnica.de/computer/msoffice/vba/vba0094.html (em alemo).
Ele se mantm ao esquema pouco apresentado e trabalha com dois listas
(Arrays) embutidas na macro. Desafortunadamente, o programa no pode
determinar, explicitamente, o polinmio interpolador, como o vimos acima no
caso do programa MuPAD. Porm, ele nos permite determinar o valor de p(x)
para qualquer x fornecido por meio de uma InputBox. A sub-rotina "valor"
contm os Arrays x, y dos dados observados e a funo "InterNewton" calcula
para cada valor x a ser interpolado primeiro o polinmio que depois avaliado
usando o mtodo de Horner, que estudamos no ltimo captulo.
165

Para produzir uma tabela inteira de valores interpolados, que nos permitiria
mostrar tambm a curva interpolador, precisamos de desenhar outra macro,
assim como a nossa "Interpol", veja o prximo programa.

Na seguinte figura vemos o grfico do polinmio p(x) = -2 (25x + 38x2 7x3


8x4)/6, decorado com rtulos chamativos (veja embaixo para saber como se
faz) nos marcadores dos pontos observados. Mas, o polinmio no foi utilizado.
Os valores y na coluna B foram calculados pelo programa seguinte.
166

Uma vez calculadas as coordenadas, e colocadas automaticamente nas colunas


A e B, inserimos os valores observados na coluna C. Em seguida selecionamos
as clulas A5:C5 at C51 (com F5) e com Inserir>Disperso>Somente com
Marcadores fazemos um grfico com pontos isolados. Clique, em seguida,
sobre os pontos calculados e escolha Alterar Tipo de Grfico. Deve-se eleger
Disperso>Linhas Suaves para obter algo parecido ao seguinte grfico.
167

Finalmente clique em um dos marcadores e use Adicionar Rtulos de Dados ...


e, depois, Formatar Rtulos de Dados... para mold-los segundo o seu gosto.

Interpolao de Lagrange (1736-1813)

Se pode demonstrar que sempre existe o polinmio p(x) que interpola a funo
f(x), desconhecida, em x0, x1, ..., xn e que nico. No entanto, existem vrias
formas para se obter tal polinmio. Ao lado do mtodo de Newton bem
conhecida a forma de interpolao segundo Lagrange que consta de uma soma
de polinmios especiais (os polinmios de Lagrange).

Buscamos, agora, um polinmio da forma

p ( x) = y0 L0 ( x ) + y1L1 ( x) + ... + yn Ln ( x)

Calculam-se os polinmios de Lagrange, Li(x), pela seguinte expresso:

( x x0 )( x x1 )...( x xi 1 )( x xi +1 )...( x xn )
Li ( x) =
( xi x0 )( xi x1 )...( xi xi 1 )( xi xi +1 )...( xi xn )

n ( x xk )
Tambm podemos escrever Li ( x) = (x x )
; k i para i = 0,..., n
k =0 i k

As frmulas tm um aspecto pouco amigvel, mas a aplicao bastante


simples.

Na planilha utilizamos para cada Li(x) uma nova coluna e os coeficientes de


p(x) so os valores yj dos pares experimentais dados. Assim, para os trs pares
(x0;y0) = (1;4), (x1;y1) = (3;6) e (x2;y2) = (4;12), o polinmio interpolador vai
ser p(x) = 4L0(x) + 6L1(x) + 12L2(x).

Observe, que no clculo de Li(x) fica excludo, no numerador, o valor de xi. No


denominador aparecem todos os xi observados.

Exemplo: Dados os pontos experimentais (1;4), (3;6), (4;12)

Determine o polinmio de Lagrange para os pontos dados.

Resoluo: L0 = (x-x1)(x-x2)/[(x0-x1)(x0-x2)]= (x-3)(x-4)/[(1-3)(1-4)

L0 = (x2-7x+12)/6
168

L1(x) = (x-1)(x-4)/[(3-1)(3-4)] = (x2-5x+4)/(-2)

L2(x) = (x-1)(x-3)/[(4-1)(4-3)] = (x2-4x+3)/3

Assim obtemos p(x) = 4L0+6L1+12L2 = 5x2/3 17x/3 + 8

Na planilha, temos na coluna A os valores de x para os quais queremos calcular


os valores y (A2: =A1+0,1). Em B1 fica y0 = 4. A1 copiamos at A31 e na
coluna B inserimos, nos lugares correspondentes, os valores y observados.

C1: =($A1-3)*($A1-4)/((1-3)*(1-4)) (=L0). Esta frmula copiamos na D1 e


E1 e depois a editamos:
D1: =($A1-1)*($A1-4)/((3-1)*(3-4))
E1: =($A1-1)*($A1-3)/((4-1)*(4-3))

F1: 4*C1+6*D1+12*E1 (= p(x))

A representao no grfico deve conter os 3 pontos observados e todos os


pontos calculados na coluna F1. Visto que esta coluna no adjacente,
preciso fazer a seleo das clulas com o nosso mtodo F8-F5, que
introduzimos no captulo 5.

Em Inserir ser preciso eleger, primeiro, XY Linhas Suaves, e depois XY com


Marcadores, para ver os pontos experimentais. (Os valores calculados
constituem, agora, a Srie2 e no, como no caso da planilha de Newton, a
Srie1.) No ser difcil generalizar a planilha para acomodar mais pontos.
169

O cdigo VBA para a interpolao de Lagrange pode ter a seguinte forma:

No caso de muitos dados (experimentais), prefervel t-los numa planilha:

Na clula E3 inserimos o valor de x buscado e na clula H3 colocamos a


frmula =Lagrange(...) com a qual calculamos o valor de y correspondente. O
programa a seguir utiliza a funo MATCH do Excel.
170

Na verso portuguesa do Excel, escreve-se CORRESP com a sintaxe

CORRESP(valor_procurado;matriz_procurada;tipo_correspondncia)

Valor_procurado pode ser um valor (nmero, texto ou valor lgico) ou uma


referncia de clula de um nmero, texto ou valor lgico.

Matriz_procurada um intervalo contguo de clulas que contm valores


possveis de procura. Matriz_procurada precisa ser uma matriz ou uma
referncia de matriz. A Matriz_procurada deve ser posicionada em ordem
ascendente.

Tipo_correspondncia o nmero -1, 0 ou 1. Se tipo_correspondncia for 1,


CORRESP localizar o maior valor que for menor do que ou igual a valor_
procurado.

Para poder usar MATCH num macro VBA, devemos introduzi-lo pelo objeto
Application. Veja o captulo 7 onde isso foi usado e explicado.

Se buscarmos na lista x = {-2,-1,0,1,2,3,4} o valor 1,5, ento a varivel pos


assumir o valor 5 e i correr de 4 at 7, ou seja, o programa utilizar os 4
valores 1, 2, 3, 4 para calcular um polinmio de terceiro grau. Trata-se de uma
interpolao cbica. (O programa no funciona com menos de 4 pontos, e
sempre utiliza 4 pontos.)
171

Finalmente, aplicaremos o programa "Pontos" do ltimo captulo interpolao


de Lagrange:

Com os trs pontos padro (1;4), (3;6), (4;12) temos a seguinte planilha:
172

Algumas consideraes tericas

A regra de Simpson tem grande utilidade na matemtica numrica. Mais


frente vamos us-la, por exemplo, no contexto das equaes diferenciais,
discutindo os mtodos de Runge-Kutta. Por isso ser til dar uma deduo da
regra com a notao da mecnica.

Uma partcula se move em t segundos de um ponto x(0) at x(t). A figura


mostra trs valores da velocidade para trs instantes 0, t/2 e t. A verdadeira
curva da velocidade ignoramos, por isso a substitumos por uma parbola que
passa por P1, P2, P3. A equao da parbola

v(t) = At2 + Bt + C

Devemos determinar os trs coeficientes.

Para t = 0 temos v(0) = C (1)

Para t = t/2 temos v(t/2 = A(t/2)2 + Bt/2 + v(0) (2)

Para t = t temos v(t) = A(t)2 + Bt + v(0) (3)

A seguinte funo vai mostrar-se til, a definimos da seguinte maneira

D:= v(0) + 4v(t/2) + v(t) = 6C + 2A(t)2 + 3Bt (4)

da resulta tD/6 = Ct + A(t)3/3 + B(t)2/2 (5)

Por outro lado temos


173

t
o v(t)dt = ot (At2+Bt+C)dt = A(t)3/3 + B(t)2/2 + Ct

Fazendo uso de (4) e (5) resulta


t
o v(t)dt = x(t) x(0) = t [v(0) + 4v(t/2) + v(t)]/6 (6)

Isto a primeira regra de Simpson ou tambm conhecida como a regra do


1/6. (s vezes fala-se da regra do 1/3, pois quando se utiliza h = t/2 como
largura de um subintervalo, resulta otv(t)dt = h[v(0) + 4v(h) + v(2h)]/3.)

A regra de Simpson que foi utilizada acima a regra de Simpson composta,


pois se subdivide o intervalo de integrao [a,b] em n subintervalos iguais de
largura h e a cada par de subintervalos aplica-se a 1a regra de Simpson. (Como
a regra de Simpson aplicada em pares de subintervalos, o nmero n de
subintervalos deve ser sempre par.)

Exemplo: Queremos calcular a integral da seguridade estadstica definida por

x t 2
1
S ( x) = f (t )dt com f (t ) = e 2
x 2

por meio da regra de Simpson composta utilizando (6) repetidas vezes.

Soluo:

Criamos uma planilha do Excel com o seguinte aspecto:

O mesmo resultado obtemos com o programa "Simpson". A frmula do 1/6 fica


em E11: =H$3*(C10+4*D11+C11)/6, copiar at E30. O resultado em G11
calculamos como =SOMA(E11:E30). B10: =A10-H$4, B11: =B10+H$3
177

Captulo 12
Grficos com 2007, Parte II
Representaes 2D e curvas paramtricas

Curvas de Lissajous so curvas paramtricas definidas pelas equaes

x = a sen(1t )
y = b sen(2t + )

que foram descobertas em 1857 por Jules Antoine Lissajous, fsico francs.
Uma curva de Lissajous pode ser observada facilmente na tela de um
osciloscpio, colocando a componente x no canal horizontal e a componente y
no canal vertical.
S podemos ver curvas fechadas quando a razo das freqncias um
nmero racional, ou seja, quando 1 e 2 no possuem divisor comum. Neste
caso, temos 1:2 = n1:n2 onde os nmeros n1 e n2 so inteiros e no
possuem divisor comum.
Se a razo das freqncias angulares irracional, resultam oscilaes no
peridicas.
Se 1:2 no for um nmero racional, ento a curva ser "aberta" e, aps um
longo tempo, o ponto que traa a curva ter passado por todos os pontos do
retngulo limitado por x = a e y = b. Ele nunca passar duas vezes por um
dado ponto com a mesma velocidade.

Para a primeira figura foram elegidos os seguintes parmetros: a = b = 9; 1 =


200; 2 = 1/2 e = e h = 0,0001.

Entradas para a planilha:

1. As amplitudes esto em F1 e F2. 1 em F3 e 2 em F4. fica em F5.

2. O incremento de tempo h = 0,0001 est em F6. Visto que utilizaremos


300 pontos, t vai variar entre 0 e 0,03.
3. Na linha 10 comearemos com os clculos:
A10: 0
B10: =F$1*SEN(F$3*A10) (=x)
C10: =F$2*SEN(F$4*A10+F$5) (=y)
A11: =A10+F$6 (t = t+h)
4. Copiar tudo at a linha 310

Para desenhar os dados, selecionamos o intervalo B10:C310.


178

Agora podemos usar nossa planilha vontade, s necessrio variar os


parmetros.
Por exemplo: a = 6; b = 4; 1 = 3; 2 = 2; = 0 e h = 0,05 produzem a
seguinte figura

Interessantes curvas resultam com s mudar do valor de . Por exemplo /8 e


/2.
179

A espiral

As espirais continuam a ser um mistrio para a cincia. Pense nas Galxias e


nas outras espirais mais pequenas da natureza. Bem conhecidas so as espirais
dos caracoles e dos girassis. Mas, para a vida a mais importante forma espiral
a DNA, duas faixas paralelas espiraladas, batizada por dupla hlice por James
Watson e Francis Crick.

Um exemplo famoso na Fsica o cclotron. (Quando uma partcula carregada


em movimento uniforme penetra um campo magntico, tambm uniforme,
perpendicular direo de seu movimento, as foras que atuam fazem com
que a nova trajetria da partcula seja circular, -veja a seo anterior. Assim, se
o campo eltrico presente nos "ds" estiver em ressonncia com a revoluo
das partculas, essa acelerada a cada travessia do intervalo entre os "ds".)
Para obter as equaes que descrevem uma espiral, partimos das equaes
paramtricas de um crculo

x = r cos(t )
y = rsen(t ); - < t<

Vamos obter espirais fazendo depender o raio em forma apropriada do


parmetro t. Obtm-se as espirais arquimdicas por meio da tentativa
r m = a mt . A mais conhecida resulta com m = 1, ou seja r = at. A figura a
seguir foi desenhada com a = 1,5. A coluna B contm os valores de r, por
exemplo: B10: =F$5*A10.
180

A espiral logartmica com r = eat era a favorita de Jakob Bernoulli (1654-1705),


quem fez o primeiro uso extenso das coordenadas polares. (Na poca de
Bernoulli a funo exponencial ainda no era considerada como uma funo
independente, pois o nmero e nem tinha ainda um smbolo especial, e Jakob
utilizou a equao ln r = a. Assim, explica-se o nome de espiral logartmica.)
A nossa espiral logartmica tem a = 0,1:

Duas propriedades da espiral logartmica so especialmente interessantes:

1. Cada raio que passa pela origem atravessa a espiral com mesmo
ngulo.
2. O comprimento do arco de qualquer ponto da espiral logartmica at
o centro finito, embora sejam necessrias infinitas rotaes para se
chegar ao centro.

Para o ngulo vale a frmula a = ctg(). Utilizando a relao arc ctg(x) = arc
tg(1/x), obteremos = arc tg(1/0,1) = 1,4711 Rad ou = 84,29o.

Isso significa que a espiral corta o eixo X sempre sob 84,29o, pois o eixo X
tambm um raio pela origem.
181

O ciclide

Em 1696 Johann Bernoulli, o irmo mais velho de Jakob, propus um problema


de mecnica: encontrar a curva ao longo da qual uma partcula deslizar sob a
fora da gravidade no tempo mais curto possvel. (Este famoso problema
conhecido como o problema da braquistcrona, tempo mais curto.) Cinco
solues corretas foram apresentadas: por Newton, Leibniz, L'Hospital e pelos
dois irmos Bernoulli.

A curva pedida revelou-se um ciclide, a curva traada por um ponto P na


borda de uma roda, medida que ela rola, sem escorregamento, por uma
superfcie horizontal.

Sobre o movimento ao longo de uma ciclide compare o site

http://www.geocities.com/Athens/Agora/6594/Mechsub/mech3_3.pdf

(No caso geral, P pode tambm ficar no interior ou no exterior de um crculo. A


distncia do centro do crculo chamado de b.)

As equaes paramtricas do ciclide so:

x = at bsen(t )
y = a b cos(t ); < t <

a o raio do crculo, t = ngulo de rolagem.

Caso b > a
182

Devemos diferenciar o caso P sobre o circulo (a = b) do caso P no interior do


circulo (b < a) e do caso de P no exterior do crculo (b > a).
No grfico utilizamos a = 1 (F4), b = 2 (F5), h = 0,1 (F6); o valor inicial para t
-15 (A10)

C10: =A10*F$4-F$5*SEN(A10); D10: =F$4-F$5*COS(A10), copiar at D310.

A ciclide de Bernoulli tem a = b (=1); aqui pomos h=0,03.

Representaes 3D e curvas paramtricas

Muitas vezes curvas em 2D so dadas por meio de equaes paramtricas

(x(t),y(t)), t [a,b]

Exemplos conhecidos so crculos, elipses e trajetrias de partculas carregadas


(alfas, eltrons, prtons etc.) movendo-se em campos eletromagnticos. Uma
curva paramtrica em 3D representada por (x(t),y(t),z(t)), t [a,b].

No princpio deste captulo, vamos estudar a representao 3D de objetos


geomtricos, dados por pontos ou por equaes paramtricas. Depois,
consideraremos alguns exemplos tomados da Fsica.

Preparao

Se queremos desenhar um objeto geomtrico perspectivamente, temos que


fazer os seguintes trs passos:

1. O corpo deve ser descrito num sistema tridimensional de coordenadas


retangulares (X, Y, Z). Cada um dos seus pontos tem trs coordenadas
(x,y,z).
2. O corpo ser girado sobre trs eixos. As equaes que descrevem as
rotaes dependem da ordem e do sentido em que as rotaes so
executadas. (Rotaes no so comutativas! Ou seja, a ordem da
aplicao dos fatores de rotao influencia no resultado final.) As
coordenadas x,y,z se transformam em x',y',z'.
3. O corpo deve ser projetado sobre um plano de projeo (por exemplo a
tela do computador) onde corresponde a cada ponto com as coor-
denadas "giradas" x',y',z' um ponto com as coordenadas xs, ys .

O eixo X aponta para a direita, o Y para cima, e o Z aponta para o


observador. Primeiro giramos o corpo um ngulo beta (b) ao redor do eixo
Y, depois um ngulo alfa (a) em torno do eixo X e, finalmente, um ngulo
gama (c) volta de Z.
183

As equaes da transformao so

x' = [cos(c)cos(b)-sen(b)sen(a)sen(c)]x
- [cos(c)sen(b)+sen(a)cos(b)sen(c)]z
+ [cos(a)sen(c)]y

y' = [-cos(b)sen(c)-sen(b)sen(a)cos(c)]x (1)


+ [sen(b)sen(c)-sen(a)cos(b)cos(c)]z
+ [cos(a)cos(c)]y

z' = [sen(b)cos(a)]x + [cos(a)cos(b)]z + [sen(a)]y

A projeo em perspectiva feita atravs de clculos simples de "semelhana


de tringulos". As equaes para o clculo da projeo so:

xs = xa + (xa x')za/(z' za)


ys = ya + (ya y')za/(z' za) (2)

As coordenadas (xa,ya,za) so as coordenadas no espao (space coordenates)


do centro de projeo ("ponto do olho").

Ns escolhemos como centro de projeo um ponto situado no eixo Z com za


:= D = distncia do observador ao plano de projeo. Com esta simplificao,
obtemos as seguintes formulas de projeo:

xs = Dx'/(D-z')
ys = Dy'/(D-z') (3)

A prtica demonstra que ngulos de visada entre 40 e 60 graus proporcionam


experincias visuais bastante prximas da realidade. Ao contrrio, quando a
distncia do observador tela aumenta, o seu campo de viso se estreita e a
projeo em perspectiva no muito pronunciada. Por meio da planilha que
vamos desenvolver agora podemos confirmar estas observaes.

Para no repetir o clculo dos fatores de sen e cos permanentemente, os


colocamos como valores fixos nas clulas J1 at J6. As trs frmulas em H22,
F22, G22 so simples, mas extensos. Visto que este programa ser de grande
utilidade para todo este captulo, devemos sentir-nos cheios de anseio para
preencher as clulas com tudo o que segue. No assim?

1. J1: =SEN(B8*I1); J2: =COS(B8*I1); J3: =SEN(B9*I1);


J4: =COS(B9*I1); J5: =SEN(B10*I1); J6: =SEN(B10*I1)
2. Em H22 inserimos a primeira das frmulas (3)
=J$3*J$2*B22+J$2*J$4*D22+J$1*C22
184

F22: =((J$6*J$4-J$3*J$1*J$5)*B22-(J$6*J$3+J$1*J$4*J$5)* D22


+J$2*J$5*C22)/(B$11-H22)*B$11+H$8+H$10 (= x)

G22: =((-J$4*J$5-J$3*J$1*J$6)*B22+(J$3*J$5-J$1*J$4*J$6)*D22
+J$2*J$6*C22)/(B$11-H22)*B$11+H$9+H$11 (=y)

Copiamos todas as frmulas at linha 38 (use F8, F5).


4. Em seguida devemos inserir as coordenadas de espao das esquinas do
cubo:

B22 at D22 : -1; -1; 1


B23 " D23 : 1; -1; 1
B24 " D24 : 1; -1; -1
B25 " D25 : -1; -1; -1
B26 " D26 : -1; 1; -1
B27 " D27 : -1; 1; 1
B28 " D28 : 1; 1; 1
B29 " D29 : 1; 1; -1
B30 " D30 : -1; 1; -1
B31 " D31 : -1; 1; 1
B32 " D32 : -1; -1; 1
B33 " D33 : 1; 1; 1
B34 " D34 : 1; -1; 1
B35 " D35 : 1; 1; -1
B36 " D36 : 1; -1; -1
B37 " D37 : -1; -1; 1
B38 " D38 : -1; -1; -1

Agora, s selecionar as colunas F e G (F22:G38) e depois buscar Inserir >


XYDisperso com Linhas Retas com Marcadores.
185

Para poder obter na tela uma posio perfeita da figura, foram adicionadas nas
frmulas para xs e ys (F22, G22) dois constantes: F22: =H$8+H$10; G22:
=H$9+H$11. muito recomendvel guardar a planilha, pois vamos utiliz-la,
com poucas mudanas, nos prximos exemplos.

Desenhando uma flor

Na planilha anterior, foi preciso introduzir as coordenadas dos pontos "manual-


mente", o que foi bem cansativo.
Agora, tudo vai ser diferente, pois calcularemos as coordenadas apoiando-nos
nas seguintes frmulas:

x = asen(1t )cos(2t )
y = bsen(1t ) sen(2t + ) (4)

z = ce ( x + y2 )
2

Trata-se de figuras de Lissajous no espao 3D.


Usamos a planilha do exemplo anterior com as mudanas necessrias:

1. B8: 60; B9: 45; B10: -30; B11: 3


H8: 0; H9: 2; H10: 3; H11: 0
2. B13: 8 (= 1); B14: 3 (= 2); B15: 0 (= )
3. B22: =1,5*SEN(B$13*A22)*COS(B$14*A22) (= x)
C22: =1,5*SEN(B$13*A22)*SEN(B$14*A22+B$15) (= y)
D22: =EXP(-(B22^2+C22^2))
A22: 0
4. Copiar as frmulas em B22,C22,D22 (F5>D422>Shift>OK; Ctrl+d)
at a linha 422. Em A23 temos =A22+0,025; copiar at A422.
5. Para desenhar o talo da flor, deixamos a linha 423 vazia e adi-
cionamos B424: 0; C424: 0; D424: 1; B425: 0; C425: 0 e
D425: 3
6. As equaes para xs e ys , compare a planilha anterior, devem ser
copiadas at a linha 425 (depois limpar F423:H423)
7. Selecionar F22:G425 e Inserir >XY Disperso Linhas Suaves ...

Os valores de 1 e 2 determinam o nmero das ptalas e a forma da flor.


O ngulo de fase, , destri geralmente a harmonia da forma.
186

Mostramos tambm as ltimas linhas da planilha:

Partculas carregadas num campo eletromagntico

Um eltron num tubo de raios catdicos (= eltrons) sofre uma deflexo, se for
aplicado um campo magntico B. Suponhamos que o eltron entre num campo
magntico homogneo de um ngulo . A trajetria do eltron ser uma hlice
cilndrica com distncia caracterstica, s, constante. O valor desta constante (=
passo ou "pitch" da hlice) vem dado pala seguinte equao:

2 vsen( )
s= = Tvsen( )
e
B
m

O fator sen() uma constante e o tempo T para um crculo completo no


depende do ngulo . Para = 0o, o eltron percorre um crculo em torno do
campo magntico. (A trajetria completa de um eltron consiste da super-
posio do movimento retilneo uniforme paralelo ao eixo, e da revoluo num
plano perpendicular ao eixo.) v a velocidade do eltron.
187

Em 1922, Busch desenvolveu um mtodo para a determinao da carga espe-


cfica de eltrons conhecido como Mtodo da Hlice. A carga especfica do
eltron e/m = 1,7589 1011 C/kg.

Por meio das seguintes equaes paramtricas podemos representar este


"movimento completo", fazendo uso do Excel:

x = rsen(t )
y = r cos(t )
z = vsen( )t

Trate de inserir os dados em nossa planilha que produzem a seguinte figura:

(Dados: = 1; v = 1; r = 0,5; sen() = 0,1; h = 0,2; ngulos: 1; 40; 0 e D =


100; deslocamentos 7, 1, 0, 0. v = 0 d um crculo. O segmento do eixo Z foi
desenhado a partir das seguintes entradas nas linhas 424 e 425: todos zero,
salvo D425 = 9. Consulte tambm as explicaes sobre o prximo caso com E e
B paralelos.)

Quando um eltron se move na presena de campos E e B paralelos, sua


trajetria consiste da superposio de um movimento circular uniforme num
plano perpendicular aos campos e do movimento acelerado na direo dos
campos.
Outra vez podemos fazer uso da planilha anterior com as devidas mudanas. A
equao para z , agora, z = kt2, onde, nas figuras a seguir, a constante k foi
tomada igual a 0,01. Tomamos r = 1,5 e = 1. O incremento do tempo h =
0,07.
188

A primeira figura foi calculada com os ngulos 0, 0 (ou 180) e 0. A distncia foi
grande: D = 1000. Para os deslocamentos foram tomadas os valores 10, 6, -4,
0. A figura mostra a projeo da trajetria sobre o plano XY (um crculo).

A segunda figura mostra uma vista lateral com 0, 90, 0 e D = 1000. Os des-
locamentos so 10, 6, 0,0.

Finalmente, vemos, na terceira figura, uma representao perspectiva com 30,


40, 0 e D = 10. Os deslocamentos so: 10, 8, 0, 0:
189

O segmento do eixo Z foi desenhado a partir das seguintes entradas nas linhas
424 e 425.

Trabalhando com o clsMathParser

Dentre os programas auxiliares dedicados a VBA destaca-se o programa


clsMathParser que foi desenvolvido por Leonardo Volpi, Foxes Team. O
programa pode ser baixado gratuitamente do site
http://digilander.libero.it/foxes/mathparser/MathExpressionsParser.htm

Este site oferece tambm um manual completo com exemplos e aplicaes. O


Parser permite que o usurio escreva as frmulas na forma usual e de grande
ajuda na criao de grficos usando Excel e VBA. J esto outros programas no
mercado que utilizam o clsMathParser como programa de fundo como, por
exemplo, tc2, http://www.tcquadrat.de/downloads/tc2-Handbuch.pdf que
permite fazer clculos escrevendo em Word.
190

Se voc quer trabalhar com o parser, preciso baixar o programa e


descompact-lo numa pasta, por exemplo em "clsMathParser". Nesta pasta
encontram-se, alm da documentao em pdf, dois arquivos: clsMathParser.cls
e o arquivo mMath-SpecFun.bas.
O primeiro o parser e o segundo uma biblioteca com funes especiais j
implementadas. (Se pode descompactar o arquivo com ExtractNow.)

Para ver um exemplo da aplicao do parser, implementamos uma planilha


do Excel:

Os passos a seguir so:

1. No editor de VBA selecionamos Inserir>Mdulos>Project Explorer.

Com o boto direito da mouse fazemos click no Plan1 e elegemos Importar


arquivo.

Na pasta "clsMathParser" selecionamos clsMathParser. O segundo arquivo, o


mMathSpecFun.bas, que se encontra na pasta "clsMathParser" instalamos
da mesma maneira no Plan2. A ltima vista sobre VBAProject vai ter o
aspecto mostrado. O parser aparece como Mdulo de classe.
191

O exemplo mostra que no escrevemos =180*ATAN(D2)/PI(), mas sim


180*atan(x)/pi. Temos que levar em conta que as variveis empeam com uma
letra. Para x, y, z permita-se multiplicao implcita, ou seja 3x interpretada
como sendo 3*x. Em nosso caso, devemos escrever 180*atan(x)/pi .
Podemos escrever, utilizando expresses lgicas, uma funo definida por
troos. Como exemplo encontramos na documentao do clsMathParser a
seguinte funo:
x2 ; x0
f ( x) = ln( x + 1) ; 0 < x 1
x ln(2) ; x >1

Escreveremos esta funo como uma string da seguinte forma:

f(x):="(x<=0)*x^2 + (0<x<=1)*Ln(x+1) + (x>1)*Sqr(x-Ln(2))"


192

A figura mostra a imagem de uma parbola f(x) = x2 que fica na clula C1.
O seguinte programa criou a tabela e o grfico.

Se colocamos a expresso (x<=0)*x^2 + (0<x<=1)*Ln(x+1) + (x>1)*Sqr(x-Ln(2)) na


clula C1, deixando o resto como no caso da parbola, obtemos a figura em
baixo.
193

Veja tambm o programa "Eval_Pieces_Function" na pagina 50 da documen-


tao do clsMathParser.

O loop For i = 0 To n
Cells(6 + i, 1) = a + i * h
Cells(6 + i, 2) = Fun.Eval1(a + i * h)
Next i

determina os dados da tabela. Fun.Eval1(x) avalia o valor da funo para x =


a+i*h.
Tecnicamente falado, Eval1(x) um mtodo assim como tambm Eval(x)e
StoreExpression que armazena a expresso e que revisa a sua sintaxe.
Eval(x) avalia uma expresso de vrios parmetros e/ou variveis.
Eval1(x) aplicamos quando queremos avaliar uma expresso de uma
varivel s.
O curto programa a seguir utiliza Eval para poder, tambm, avaliar funes de
varias variveis como f(x,y,z) = 3x+3y-z nos pontos x = 5, y = -2, z = -1.
Resultado: 10.

Chamamos, usando o smbolo fx , a funo "Compute" e preenchemos os


colchetes dela assim como mostra a figura. O cursor ficava na coluna E onde
foram escritos os resultados.
194

Superfcies 3D em Excel

O Excel suporta 73 tipos de grficos, entre eles o tipo Superfcie 3D.


Encontramos este tipo via Inserir>Grficos>Outros Grficos.
Um grfico de superfcie til quando se pretende encontrar as melhores
combinaes entre dois conjuntos de dados. Ns pretendemos usar como
conjuntos de dados as coordenadas x e y de um funo z = f(x,y). A regio dos
pares (x,y) definida por [xmin,xmax]x[ymin,ymax]. Veja o seguinte exemplo
onde traamos a funo z = f(x,y) = (x2+y2)/2 sobre a regio [-3,3] X [-3,3].

Os dados para o grfico esto no intervalo C3:I9. A cada ponto neste intervalo
pertencem duas coordenadas. As coordenadas x para o eixo na frente ficam em
C2:I2, as coordenadas y do eixo lateral, que apresenta a profundidade do
grfico, esto em B3:B9. Os valores da funo so apresentados vertical-
mente, da base do grfico at a superfcie colorada.
Para criar este grfico, selecionamos as clulas B2:I9. O grfico pode ser
editado da maneira usual. Mas, para o tipo Superfcie 3D existem mtodos
especficos, como a Rotao 3D, a formatao dos paredes, da base etc.
195

semelhana do que acontece num mapa topogrfico, as cores indicam as


reas que pertencem ao mesmo intervalo de valores da funo, veja a
distribuio das cores junto com os intervalos de valores especficos.
(Um grfico de superfcie 3D apresentado sem cor denominado grfico de
superfcie vectorial 3D. Um Grfico de Nveis um grfico de superfcie visto de
cima, em que as cores representam intervalos de valores especficos. Este tipo
de grfico apresentado sem cor denominado Grfico de Nveis Vectorial.)

O preenchimento da tabela fazemos em VBA com o seguinte cdigo

A superfcie ser bastante mais liso e uniforme, se aumentarmos o nmero das


subdivises de n = 6 para n = 12, ou mais ainda.
Agora, no difcil incorporar este cdigo no programa Pars_Graf que vimos
acima. Na planilha inserimos primeiro os dados mostrados na seguinte figura.
Observe que no aparecem na planilha os valores calculados pelo programa.
Este se deve linha Selection.NumberFormat = ";;;" que oculta um
nmero com o formato ";;;", veja Formatar Clulas >Personalizado.
196

Continuao:

Para terminar este captulo, utilizamos outro programa da acima mencionada


documentao do "clsMathParser".
Trata-se da avaliao da famosa frmula de Planck para a intensidade da
radiao de um corpo negro.

A intensidade da radiao trmica emitida na semi-esfera dada pela seguinte


equao:

2 c1 5
I ( , T ) = c2
e T 1

c1 = 5,95510-13 Wcm2 ; c2 = 1,439 cmK; = comprimento de onda (cm);


T = temperatura da superfcie em K.
197

O programa tem uma estrutura muito simples:

Observe que o programa manda o resultado com Debug.Print janela


Verificao imediata que pode-se eleger com Exibir no editor do VBA (ou
simplesmente escrevendo Ctrl+g). Debug.Print muito til para verificar
rapidamente um resultado, se bem que pensado para o processo de
depurao do cdigo.

Elementos para criar um grfico

Neste lugar vou unir num simples programa alguns elementos para criar um
grfico "xlXYScatterSmooth".
Para desenhar uma funo com valores em A2:B7, basta o seguinte cdigo

A linha Set ch= ... um pouco assustador, mas, por meio dela podemos
198

variar o tamanho e a posio do grfico, utilizando como unidades a largura e a


altura de colunas e linhas. O objeto Worksheet tem uma propriedade
ChartObjects que retorna uma coleo ChartObjects, que a coleo de todos
os ChartObjects na planilha. Os parmetros do mtodo Add so Left, Top,
Width, Height. Left e Top do as coordenadas do canto superior esquerdo do
grfico relativas ao canto superior esquerdo da clula A1 na planilha. Width e
Height especificam o tamanho do grfico em "pontos".

Os parmetros de Add posicionam o grfico inicialmente de modo que seu


canto superior esquerdo tenha trs colunas a partir da margem esquerda e
meia linha para baixo da parte superior da planilha. O tamanho inicial do
grfico sete colunas de largura por quinze linhas de altura. O grfico
corresponde com grande exatido a estes valores. (A unidade bsica de
medio so os "pontos", definidos como 72 pontos = 1 polegada.)

O grfico no muito bonito, mas, neste exemplo, vemos como com poucas
linhas de cdigo possvel transformar rapidamente dados num simples
grfico.
Para satisfazer exigncias mais sofisticadas, VBA oferece os mdios para
colocar rtulos nos eixos, para colorar o fundo, inserir linhas de grade verticais
e outros.
199

Na figura acima foram adicionadas rtulos, linhas de grade verticais e um fundo


gris.

Para lograr estas melhoras, foram adicionadas mais algumas linhas de cdigo:

Para informarmos sobre as infinitas outras possibilidades, devemos consultar a


documentao do VBA. A maioria dos livros especializados em VBA ou em
grficos contm listas com os 73 tipos de grficos, chart elements etc.
Dois exemplos:

Steven Roman, Desenvolvendo macros no Excel, Editora Cincia


Moderna Ltda. 2000
Bill Jelen, Charts and Graphs for Excel 2007, QUE Publishing 2007

Para aprender as tcnicas da criao de grficos, pode-se consultar efetiva-


mente os exemplos que os especialistas no assunto oferecem gratuitamente no
internet, veja, por exemplo, o programa "funcplot2point1.xls" de Milner e
Watson no site http://www.waltermilner.com/vbmaths/
203

Captulo 13
Regresso linear e polinomial

Neste captulo, pretendemos ajustar retas ou polinmios a um conjunto de


pontos experimentais.

Regresso linear

A tabela a seguir relaciona a densidade (g/cm3) do sdio em funo da


temperatura (oC):

Temperatura (oC) Densidade(g/cm3)


100 0,927
200 0,904
300 0,882
400 0,859
500 0,934
600 0,809
700 0,783
800 0,757

Quando representamos estes dados em grfico, do a impresso de ficar


numa reta que poderia ser traada com uma rgua "a olho". Porm, no caso
de os pontos estarem mais dispersos, o ajustamento a olho bastante
subjetivo e inexato. (Alm disso, ajustamento a olho requer que todos os
pontos estejam primeiramente colocados num grfico. No caso de, por
exemplo, 100 observaes, isto seria bastante tedioso.)

Nosso objetivo ajustar uma reta y = a + bx aos pontos do diagrama de


disperso, utilizando tcnicas matemticas. O famoso mtodo dos quadra-
dos mnimos de Gauss responde pergunta "o que um bom ajustamento"
com as seguintes equaes para calcular os valores dos fatores a e b:

n
( xi x )( yi y )
i =1
b= n (1)
( xi x )2
i =1
a = y bx

1 n 1 n
As mdias de x e y so definidas por x = xi ; y = yi (2)
n i =1 n i =1
204

a = coeficiente linear da reta, b= coeficiente angular da reta

Apliquemos estas frmulas ao nosso exemplo:

C1: =(A1-MDIA(A$1:A$8))*(B1-MDIA(B$1:B$8))
D1: =(A1-MDIA(A$1:A$8))^2, copiar as frmulas at linha 8
E1: =SOMA(C1:C8)/SOMA(D1:D8) (=b)
E2: =MDIA(B1:B8)-E1*MDIA(A1:A8) (=a)

Na coluna G ficam os valores de y da reta de regresso


G1: =E$2+E$1*A1

Para fazer o grfico, deve-se levar em conta que temos de representar duas
sries de dados. Veja tambm o captulo 5, p. 63

(Se tiver instalado o programa tc2 que mencionei no ltimo captulo, poderia
aqui, em WORD, calcular a densidade de sdio para uma temperatura dada:
T=600
d=0,9536-2,4274E-04*T = 0,808 o que corresponde bem ao o valor da
tabela.)

hora de mencionar que o Excel, a partir do Excel 97, tem embutido uma
ferramenta que faz tudo o que acabamos de ver, s eleger Layout>Linha
de Tendncia com as suas opes, p. ex. a equao da linha e o valor de R2.
205

Mas, este assistente somente aparecer depois que voc selecionar um grfico,
em nosso caso Disperso Somente com Marcadores. As propriedades da linha,
como cor, estilo etc. podem ser variadas, s fazer clique sobre a linha e
selecionar Formatar Linha de Tendncia.

Mas, aqui no terminam as maravilhas estadsticas do Excel. Existe a funo


estadstica PROJ.LIN com a sintaxe PROJ.LIN(val_conhecidos_y; valconhe-
cidos_x; constante; estatstica)

Para aplic-la, necessrio preencher as duas primeiras linhas na seguinte


janela.

A janela mostra j os fatores a e b da equao da reta de regresso. Se


colocarmos no ltimo campo 1 (=VERDADEIRO), veremos a seguinte tabela.

( preciso colocar nossos dados em outras clulas, por exemplo D1:E8, pois
temos selecionado o intervalo A1:B5 para os resultados estadsticos. A frmula
=PROJ.LIN(E1:E8;D1:D8;;1) uma frmula matricial e deve ser inserida
pressionando Ctrl+Shift+Enter.)
206

Os valores em A1 e B1 so, outra vez, a e b. A2 e B2 contm os valores do erro


padro dos coeficientes b e a. (a e b so funes dos valores experimentais yi.
Devido propagao dos erros, as incertezas nos yi influenciaro tambm os
valores de a e b. Suponhamos que as incertezas nos valores de x sejam
depreciveis.) Na clula A3 temos o valor de R2, o coeficiente de determinao.
Este valor deve ficar bem perto de 1 para que o ajustamento possa ser
considerado como sendo bom. R o coeficiente de correlao. Se R for igual a
1, existir uma correlao perfeita na mostra no haver diferena entre os
valores de y estimados e os valores reais. Em B3 temos o valor do erro padro
para a estimativa de y, ou o erro padro dos resduos. Este parmetro calcula-
se com

1 n
2y = ( yi a bxi )2 (3)
n 2 i =1

Em nosso caso resulta y = y2 = 4,121E 6 = 0,00203

O parmetro b = (2b)0,5 em A2 calculamos com

n y2
b2 = 2
(4)
2
n n
n xi xi
i =1 i =1

A frmula para Excel =8*0,000004121/((8*SOMA(D1:D8)-SOMA(A1:A8)^2))


e d b = 3,1324E-6.

O valor para a na clula B2 determinado com

n
y2 xi2
i =1
a2 = (5)
D
onde D significa o denominador de (4). Resultado: a = 0,001582

1 n 2
Observe que temos tambm a = b xi (6)
n i =1

Em A4 aparece a estadstica F, ou o valor de F observado. Com um TesteF


podemos determinar, se a relao observada entre as variveis dependentes e
independentes ocorre por acaso. Em B4 esto os graus de liberdade (nmero
dos valores experimentais numero de fatores, ou seja 8 2 = 6). A5 contm
207

a soma dos quadrados da regresso e B5 a soma residual dos quadrados.


n n
Para sreg temos sreg = ( yi y ) e para sres temos sres = ( yi yi )
2 ' 2

i =1 i =1

significa a mdia dos valores experimentais, y' um valor de y calculado, ou


seja y' = a + bx. Comparando estas frmulas com y, vemos que y =
(sres/(n-2)).

No exemplo anterior, o coeficiente de determinao, R2, 0,990, o que indica


uma forte relao entre variveis independentes e as densidades.

O coeficiente de determinao definido como R2 = 1- sres/sreg , o que d 1-


2,426E-5/0,024747 = 0,9990.

Ento, quanto maior R2, melhor o ajuste da regresso aos dados observados.

Exemplo: Um estudante varia a temperatura de um gs quase ideal,


mantendo o volume constante. Para cada valor de temperatura, ele mediu a
presso em mm Hg. O estudante obteve os seguintes valores

Presso em mmHg Temperatura em oC


65 -20
75 17
85 42
95 94
105 127

Devido equao dos gases ideais, PV = nRT, espere-se uma relao linear
entre os valores da tabela. Para confirmar esta suposio, fazemos um anlise
de regresso.
208

As entradas para a figura foram:

H5: =5*SOMA(C5:C9)-(SOMA(A5:A9))^2 (=D, denominador de (4) )


I5: =F7^2*SOMA(C5:C9)/H5 (= a2, a = desvio padro de a, ponto de
intercepo da reta com o eixo y, ou erro padro da intercepo)

O bloco A11:C22 contm os dados a desenhar. Na coluna C ficam os valores y


calculados com a equao de regresso. C11: =F$5+E$5*A11

O grfico fazemos com Inserir>Disperso>Somente com Marcadores.

Trata-se, neste exemplo, de um caso de extrapolao bastante duvidosa. O


zero absoluto encontra-se no intervalo a a = ( 263 18) C , de fato,
o

encontra-se a 273,15C. Os cinco valores de temperatura (valores de y)


deveriam ser marcados com barras de incerteza de ancho 2*6,7 = 13,4; 6,7
o desvio padro de y em F7. (Desvio padro = standard deviation).

O Excel com Linha de Tendncia no faz extrapolao

Regresso parablica

A tabela mostra os resultados experimentais correspondentes velocidade do


som em ar seca em funo da temperatura.

Temperatura em oC velocidade em m/s


0 331
10 337
20 343
30 349
40 355
50 360
60 366
209

Se busca a equao de uma parbola que se ajuste em forma optimal (no


sentido dos mnimos quadrados) aos pontos experimentais.

A equao deve ser da forma y = a + bx + cx2 onde os 3 parmetros a,b,c


devem ser determinados.

Por meio de Linha de Tendncia obtemos o seguinte grfico

bvio que tambm houvssemos podido utilizar um ajuste linear, mas, no


fcil predizer a curva que se esconde detrs dos dados.

No seguinte exemplo, capacidade trmica especifica (em kJ/(kgK) de gua


em funo da temperatura em graus Celsius, vamos buscar um ajuste cbico
da forma y = a + bx + cx2 + dx3

Temperatura oC C em kJ/(kgK)
0 4,2177
5 4,2022
10 4,1922
15 4,1858
20 4,1819
25 4,1796
30 4,1785
35 4,1782
40 4,1786
45 4,1795
50 4,1807
55 4,1824
60 4,1844
65 4,1868
70 4,1896
75 4,1928
80 4,1964
210

85 4,2005
90 4,2051
95 4,2103
100 4,2160

A Linha de Tendncia produz o seguinte resultado (sem os ttulos nos eixos):

Se queremos determinar os coeficientes do polinmio com mais preciso,


podemos fazer um clculo direitamente a partir das equaes normais.

Trabalhando diretamente com as equaes normais

Na teoria da regresso por mnimos quadrados, vemos que se obtm os


parmetros a, b, c na equao y = a + bx + cx2 ou y = a1 + a2x + a3x2
resolvendo o seguinte sistema com respeito s incgnitas a1, a2, a3

a1n + a2 x + a3 x 2 = y
a1 x + a2 x 2 + a3 x3 = xy (1)

a1 x 2 + a2 x3 + a3 x 4 = x 2 y

A soluo deste sistema, denominado equaes normais, fcil, pois podemos


escrever (1) em forma matricial MA = B com a soluo A = M-1B.
M-1 a matriz inversa da matriz M. A o vetor das incgnitas e B o vetor dos
lados direita, ou seja,
211

a1 y Sy

A = a2 e B = xy := Sxy (2)

a3 x 2 y Sx 2 y

M uma matriz quadrada de ordem m = 3, dada por

n Sx Sx 2

M = Sx Sx 2 Sx3 (3)
2
Sx Sx3 Sx 4

Determinamos a inversa da matriz, outra vez, pela funo MATRIZ.INVERSO


com a Matriz: A15:D17, veja a seguinte planilha que vale para o ndice de
refrao de uma soluo de acar em gua. x = concentrao, y = ndice de
refrao n. Veja, tambm, captulo 10, p. 147.

M encontra-se no bloco A15:C17, a inversa M-1 fica em G15:I17. O vetor


soluo est em K15:K17. Ele foi calculado como produto matricial pela funo
MATRIZ.MULT: =MATRIZ.MULT(G15:I17;D15:D17), Ctrl+Shift+Enter

A15: =CONT.NM(A1:A11); A16: =A13; A17: =C13


B15: =A13; B16: =C13; B17: =D13
C15: =C13; C16: =D13; C17: =E13
D15: =B13; D16: =F13; D17: =G13

Finalmente, calculamos para um valor de x dado o valor do polinmio da


regresso:

y = 1,333 + 1,417E-3x + 6,195E-6x2


212

No captulo 9, pag. 121, desenvolvemos para o mtodo de Horner uma sub-


rotina. Esta vez, utilizamos uma funo, para calcular os valores do polinmio:

Facilmente podemos inserir na planilha os dados da "velocidade do som em ar


seca em funo da temperatura" de acima (eliminando as linhas 10 e 11 na
planilha da Regresso polinomial), para obter a mesma funo que determi-
namos acima.

No ser muito difcil escrever o cdigo VBA para realizar os passos exercidos
na ltima planilha.

Calculamos, assim, as somas:

O seguinte cdigo cria as matrizes M e B


213

No programa completo dimensionamos, primeiro, cada matriz como matriz


dinmica (que uma matriz que se ajusta quantidade dos dados selecionados
e que, eventualmente, podemos recortar ou ampliar).

A planilha correspondente tem o seguinte aspecto

Os dados so os do exemplo da capacidade trmica especfica, veja acima. A


funo da regresso polinomial a chamamos de "RegressPoli" e ela deve ser
usada com Ctrl+Shift+Enter, pois uma frmula matricial. Na planilha temos
previsto um polinmio at n = 5, o que muito raro. Mas, o programa aceita
polinmios de qualquer grau.

Aqui vem, finalmente, a funo "RegressPoli":


214

Regresso com logaritmos

A planilha mostra a corrente em A de uma fotoclula em funo da distncia d


entre lmpada e clula. O primeiro diagrama parece exibir uma tendncia
hiperblica entre I e d. O grfico dos logaritmos mostra uma relao linear com
a equao log y = log a + blog x = 1,036 1,919x. (O diagrama direita foi
feito com Linha de Tendncia linear.)

A retransformao dos logaritmos para as unidades originais, nos d a equao


de uma funo de potncia: y = axb = 10,86Ax-1,92 10,9Ax-2, pois a =
101,036=10,87.
215

Captulo 14
Programao linear, Anlise de dados
Trabalhando com o SOLVER

O Excel oferece mais ferramentas estadsticas. Via Dados encontra voc


Analise de Dados e o Add-in Solver. Se no encontrar, deve carreg-los.

Clique no boto do Microsoft Office e, em seguida, clique em Opes do


Excel.
Clique em Suplementos e, na caixa Gerenciar, selecione Suplementos do
Excel. Clique em Ir para.
Na caixa Suplementos disponveis, marque as caixas Ferramentas de
Anlise, Ferramentas de Anlise VBA e Solver. OK

Com o Analise de Dados vamos trabalhar mais frente. Neste momento,


dedicamo-nos ao Solver com o qual podemos, entre outros, resolver
problemas que so complicados demais para a ferramenta Atingir meta (Goal
Seek) que utilizamos no comeo do captulo 8. Para familiarizar-nos com o
Solver, vamos resolver outra vez o problema anterior.

O Solver encontra o mesmo resultado que encontramos usando Atingir Meta,


possivelmente com mais preciso:
216

Outros problemas para o Solver resolver lidam com programao linear (PL).
Ela usada para maximizar ou minimizar diversos tipos de problemas, por
exemplo problemas da tima mistura de produtos. Como exemplo podemos
citar as distribuidoras de petrleo que precisam determinar a quantidade de
aditivos a ser adicionada ao petrleo de forma a obter um certo tipo de
gasolina ao menor custo possvel ou, em certos casos, quere-se conhecer a
quantidade de gua que se pode adicionar a fim de atender s expectativas
mnimas dos clientes -como poder ligar o motor ou poder dirigir pelo menos um
quilmetro sem problemas srias.

Assim, temos o problema de buscar um valor extremo de uma grandeza que


depende de vrias variveis. Esta busca depende, muitas vezes, de restries
laterais que, em geral, podem ser formuladas em forma de igualdades ou
desigualdades. Geralmente, trata-se de uma otimizao linear onde se busca
minimizar ou maximizar o valor de uma funo objetivo linear z(x1,...,xn) = a1x1
+ ... + anxn. Neste caso, tambm as restries so equaes ou inequaes
lineares, ou seja, as equaes ou inequaes dos modelos de programao
linear (PL) tm a seguinte conotao:

a11x1 + a12x2 + ... + a1nxn <=/>= b1 etc.

O mtodo implementado no Solver chamado de mtodo simplex que um


algoritmo que se aproxima iterativamente soluo tima. (O Solver foi
desenvolvido pela FrontLine Systems, mas, existem no mercado e no domnio
publico outros Solvers, por exemplo o LP_solve.)

Para conhecer o Solver, definimos um problema no qual se produz um produto


pela mistura das sustncias S1, ... ,Sn. A sustncia Si contm as sustncias
bsicas B1, ... ,Bm.

Suponhamos que um fabricante de comidas para animais de estimao


pretenda fabricar um produto novo pela mistura de S1 e S2 (cereais e carne)
que contm pelo menos 150g de gorduras, 200g de protenas, 250g
carboidratos e com um calor de combusto de 6800KJ, -e que deve ser, obvia-
mente, o menos custoso possvel. (Em comidas para animais de estimao,
boas fontes de minerais incluem suplementos minerais, peixe, carne, fgado,
lcteos e cereais.)

Tabela dos materiais bsicas em gramas por kg de cereais/carne

Cereais Carne Mnimo


Gorduras 100g 500g 150g
Protenas 500g 100g 200g
Carboidratos 400g 400g 250g
Combusto 8400kJ 17000kJ 6800kJ
Preo/kg 3,50 5,20
217

Sejam x = quantidade em kg de cereais por rao e y = quantidade em kg de


carne por rao.

Para as restries temos

Gorduras: 100x + 500y >= 150


Protenas: 500x + 100y >= 200
Carboidratos: 400x + 400y >= 250
Combusto: 8400x + 1700y >= 6800

A funo objetivo a minimizar : z = 3,5x + 5,2y

Entradas na planilha:

Coloque os dados numa planilha, veja o exemplo a seguir.

1. O Solver precisa duas clulas, por exemplo F1 e F2 (clulas variveis),


para armazenar as duas solues x e y.
2. F4 contm a funo objetivo =F1*3,5+F2*5,2
3. As condies laterais colocamos em H1:H4
H1: =F$1*B1+F$2*C1, copiar at H4.
4. Active o Solver.
5. Definir clula de destino: fazer clique na clula F4 e, depois, selecionar
Min. As Clulas variveis so F1:F2, faa um clique nelas. Clique no
boto Adicionar para adicionar as restries. A caixa de dialogo est
dividida em trs partes. Com o cursor no campo Referncia de clula,
faa um clique em H1; mude o smbolo <= para >= (para cada
desigualdade) e, com o cursor em Restrio, faa um clique na D1. Em
seguida, clique no boto Adicionar para colocar a desigualdade na lista
das restries. Agora o mesmo procedimento com H2 e D2 etc. Voc
deve terminar a ltima restrio com OK.

Se depois clicar em Resolver, aparecer em F1 a informao de que deve usar,


por rao, 406 gramas de cereais. Em F2 diz y = 219g de carne. Na clula F4
fica o preo da rao: 2,56 Reais.

Aps terminar, veremos a caixa de dialogo do Solver:

Manter soluo do Solver: Neste caso, vai manter na planilha atual os valores
encontrados pelo Solver.

Restaurar valores originais: Neste caso, vai manter os valores originais.

Existem mais Opes: Tempo mximo, Preciso, Mostrar resultado de iterao


....
218

Anlise de dados

Para descrever uma amostra, utiliza-se as seguintes estimativas:

Freqncia, mdia amostral, desvio padro amostral, mediana amostral. Estas


estimativas estimam a verdadeira mdia, o desvio padro e a mediana da
populao, que so desconhecidos. Chama-se os verdadeiros, mas ds-
conhecidos, valores populacionais de parmetros, definidos com letras Gregas.
As letras Romanas referem-se aos valores amostrais que so chamadas de
estadsticas. A pergunta bsica a responder : Como podemos obter estimativas
dos parmetros populacionais, a partir das estadsticas amostrais, e quo
precisas sero tais estimativas?

Para o seguinte exemplo precisamos das seguintes expresses:

1 m
x = fi xi mdia amostral; =MDIA
n i =1

1 m
s =
2
( fi xi2 nx 2 ) varincia amostral; =VAR
n 1 i =1

s = s2 = desvio padro amostral: =DESVAP

fi = freqncia absoluta =FREQNCIA, Fi := fi/n = freqncia relativa


219

Existe outra definio da varincia com 1/n em vez de 1/(n-1). A diferena


entre as duas frmulas ser insignificante, se n fosse muito grande. A formula
m
com 1/n pode ser escrita como s = xi Fi x . Esta , geralmente, uma
2 2 2

i =1
expresso mais conveniente para usar no clculo da varincia de uma
distribuio de freqncia do que a anterior.

Exemplo: Temos uma amostra de 35 valores (crianas por famlia) que foram
anotados no momento de receb-los, sem ser ordenados. Queremos determinar
os valores das estadsticas.

Na planilha a seguir, temos em A5:C16 os valores da amostra. Ao lado, D5:D10,


temos uma pequena lista das classes (0, 1, 2, ...,5).

E5: Selecionar E5:E10 e inserir a frmula =FREQNCIA(A5:C16;D5:D10), Ctrl


+Shift+Enter
B17: =SOMA(E5:E10)
B18: =MDIA(A5:C16)
B19: =VAR(A5:C16)
B20: =DESVAP(A5:C16)

G5: =E5/B$17, copiar at G10


Na coluna H calculamos a funo F da distribuio emprica,Fi, acumulada.
H5: =G5; H6: =G6+H5, copiar at H10. O ltimo valor da 1.

Para criar o grfico, selecionamos Barras>Barras agrupadas e Adicionar Rtulos

A seguir utilizamos para o mesmo problema a ferramenta Anlise de Dados


que mostra os mesmos valores para a funo F, mas em %.

Selecione Histograma com Intervalo de entrada: A5:C16. Intervalo do bloco


(=bin range, bin = intervalo): D5:D10. Intervalo de sada: $E$14 (ou outro)
220

Na caixa de dialogo, foi selecionado Percentagem Cumulativo e Resultado do


grfico. (Um diagrama Pareto um diagrama ordenado de barras.) O diagrama
mostra tambm a curva da funo F que termina em 100% = 1. O que
chamado de "bloco" o intervalo de classe que, em ingls, chamado "bin".

Distribuies

Neste pargrafo, estudamos distribuies contnuas. Em muitos casos prticos,


podemos supor que os dados tm uma distribuio Normal.

A distribuio Normal ocupa um lugar de preeminncia dentre as distribuies


da teoria estadstica. Ela especificada por 2 parmetros: a mdia popula-
cional, , e o desvio padro populacional, , ou tambm a varincia 2.

A funo gaussiana de densidade de probabilidades, FGDP, definida por

1 x
1 ( )2
f ( x) = e 2 (1)
2
Esta funo tambm chamada funo normal de erros. (No caso de a varivel
X sendo discreta, f(x) tambm chamada funo de probabilidades. A varivel
aleatria X dita discreta, se assume valores num conjunto finito ou infinito
enumervel.) A distribuio normal simtrica em torno da mdia o que implica
que e mdia, a mediana e a moda so todas coincidentes.
A Probabilidade do evento "X<=x", ou seja P(X<=x) = F(x), ser calculada pela
funo
221

x
F ( x) = f (t )dt =P(X<=x) (2)

F(x) = funo distribuio de probabilidade, ou funo de distribuio cumu-


lativa (FDA).

conveno usar um F maisculo para a FDA, em contraste com o f minsculo


usado para a funo densidade de probabilidade (ou funo massa de probabi-
lidade).

Usando =0 e =1, proporciona a distribuio normal padro. Neste caso,


escreve-se, normalmente, e em vez de f e F.
Na prtica desejamos calcular probabilidades para diferentes valores de e ,
(usando =DIST.NORM). Mas, no necessrio trabalhar com diferentes
distribuies, para resolver um dado problema, basta transformar a varivel X
X
numa forma padronizada Z = , pois Z tem distribuio N(0,1). Podemos,

x
ento, escrever F ( x ) = ( ) . Em Excel temos a funo =DIST.NORMP

que retorna a funo da distribuio cumulativa normal padro.

No seguinte exemplo vamos usar a funo DIST.NORM

Exemplo: Suponha que as espessuras de um particular tipo de pranchas


possam ser descritas por uma distribuio Normal, com mdia = 1,4cm e
desvio padro = 0,05cm. (Diremos, ento, que a varivel aleatria X =
espessura varia continuamente, e teremos uma distribuio contnua. Tomamos
a mdia aritmtica x e o desvio s como "boas" estimativas de e .)

Aleatoriamente tiramos da produo uma prancha e perguntamos:

a. Qual a probabilidade de que a espessura esteja entre 1,36cm e 1,48cm?


b. Qual a probabilidade de que ela seja major do que 1,45cm?

Ajuda:

a. Dada f(x), eq.(1), a probabilidade de X se encontrar no intervalo (x1,x2) pode


ser calculada atravs de integrao segundo eq. (2).

P(x1<=X<=x2) = F(x2) - F(x1).

b. F(x) calculamos com =DIST.NORM(x;;;1). Com o parmetro 0 obtm-se


f(x). O lado direito da eq. (2) representa a probabilidade de que a varivel X
tome um valor inferior ou igual a x.
222

Entradas:

1. Dados em B5:B8
2. E6: =DIST.NORM($B$7;$B$5;$B$6;1) (= F(x1))
E7: =DIST.NORM($B$8;$B$5;$B$6;1) (= F(x2))
3. G6: =DIST.NORM($B$7;$B$5;$B$6;0) (= f(x1) segundo eq.(1))
G7: =DIST.NORM($B$8;$B$5;$B$6;0) (= f(x1))
4. F10: =SE(B7="";"";E7-E6)
5. C11: =2*DIST.NORM(2;0;1;1)-1 ou =2*DIST.NORMP(2)
6. C12: =2*(1-DIST.NORM(2;0;1;1)) ou =2*(1-DIST.NORMP(2))
7. E12: =1-E7; G12: =E7

A probabilidade do desvio padro da mdia foi calculada com c = 2. Para a


distribuio Normal, a proporo de valores caindo dentro de dois desvios
padro da mdia, 2 , P(|X-u|<=2) = 2(2) -1 = 0,9545, ou 95,5%.
Ou seja, veja C11, 95,5% de todas as pranchas tm uma espessura que
desvia-se do valor esperado menos de c = 2 = 0,1cm.

C12: s 4,55% desviam-se mais de 0,1cm da mdia.

(A desigualdade de Tschebyschew, P(|X-u|<=k) > 1-1/k2, d, com k=2, a


probabilidade P > 0,75. Esta reduo do limite a s 75% o preo que se paga
para a universalidade da estimao.)

X
Se queremos trabalhar com Z = , devemos pr = 0 e =1. Z(x1) =

(1,36-1,4)/0,05 = -0,8 Z(x2) = 1,6.
223

No Excel encontramos em Dados>Teste de Hipteses a opo "Tabela de


Dados". Por meio dela podemos substituir o valor na clula B8 sucessivamente
por outros valores, por exemplo pelos valores -2, -1, 8, ... , 12 em B24:B94,
veja a figura a seguir.

B5: 5; B6: 2; C23: =E7


B24: -2; B25: =B24+0,2 copiar at B94 (F5 e Ctrl d)
Selecione B23:C94 e em seguida selecione "Tabela de Dados" onde deixamos a
primeira opo no primeiro campo em branco:

O valor na clula B8 (1,48) ser ento substitudo pelos valores do intervalo


B24:B94. Excel coloca em todas as clulas de C24 at C94 a frmula matricial
{=TABELA(;B8)}. O grfico foi construdo com os valores nas colunas B24:C94.

Foi isso um exemplo de um analise "what-if": o que passaria, se a espessura


no for 1,4 mas ...?

(Com o mesmo mtodo podemos demonstrar que o quociente de diferencias se


aproxima ao valor limite, ou seja derivada da funo dada.
224

Veja a seguinte planilha na qual determinamos os valores do quociente


diferencial da funo f(x)=5x2 para valores de h cada vez menores. D4: =D3/10
at E11. Excel coloca sucessivamente todos os valores de h na clula B3 e copia
o contedo de B10 para E3:E11.

Outro exemplo a avaliao de uma seqncia, por exemplo a famosa frmula


de Euler que j estudamos nas pginas 48 e 119. A planilha seguinte fcil de
entender:

Aproveitemos deste exemplo, para introduzir a tcnica de trabalhar com


arquivos seqenciais.

A primeira sub-rotina cria um arquivo seqencial com nmeros da forma


(1+1/n)n que devem tender ao infinito para valores de n crescendo cada vez
225

mais. A segunda sub-rotina l os nmeros e mostra num MsgBox os nmeros


criados.

Aqui temos o "output" da sub-rotina LerNumerosEuler:


226

1 n
A convergncia da seqencia e = lim (1 + ) muito lenta. O valor de
n n
1000
(1+1/1000) 2,7169239.

Obviamente podemos traar as curvas das funes F(x) ou f(x) sem TABELA,
pois temos a funo DIST.NORM. Vamos, ento, e tracemos N(0,1) e N(5,2)
fazendo uso desta ltima funo:

Todos os valores vo da linha 6 at 76.


B6: =DIST.NORM(A6;$B$3;$B$4;0)
C6: =DIST.NORM(A6;$C$3;$C$4;0)

As curvas tm dois pontos de inflexo, simtricos em relao mdia, que


ocorrem quando x = + e x = -.

Graficamente, as curvas tm forma de sino, com concavidade voltada para


baixo entre os pontos de inflexo da curva, e convexidade para aqum e alm
1
desses pontos. O mximo de uma curva tm as coordenadas ( ; ).
2
Assim, os mximos ficam em (0;0,399) para N(0;1) e em (5;0,1995) para
N(5;2)

A inverso de

Para determinar intervalos de confiana e para os testes de hipteses,


precisamos para um valor dado da funo (z) o valor z correspondente. Isso
significa que devemos resolver a equao (z) = 1- com respeito a z. No
possvel fazer isso em forma analtica, mas existem vrios mtodos numricos
para esta tarefa. A funo do Excel INV.NORM(;;) se baseia numa destes
227

mtodos aproximativos e retorna o inverso da distribuio cumulativa normal


para a mdia especfica e o desvio padro dados.

A seguinte planilha tem em F10 a funo:

=INV.NORM(Se(B5=1;B13;0,5+B13/2);B9;B10) e em F11:
=INV.NORM(Se(B5=1;B13;0,5+B13/2);0;1)
Veja, tambm, as explicaes para a distribuio_t mais frente.

O nmero real z no qual a funo distribuio de probabilidade corresponde


ao valor na equao (integral) P(X<=z) = (z) = chamado de -
quantil ou 100-percentil. Geometricamente, z corresponde ao limite direito
da rea sob a curva da funo (z).

-quantil de Z unicaudal:
228

O -quantil de Z bicaudal ilustrado pela seguinte figura.

-quantil de Z bicaudal:

A rea sob a curva normal (na verdade abaixo de qualquer funo de


densidade de probabilidade) 1. Ento, para quaisquer dois valores especficos
podemos determinar a proporo de rea sob a curva entre esses dois valores.
Para a distribuio Normal, a proporo de valores caindo dentro de um, dois,
ou trs desvios padro da mdia so:

Intervalo Probabilidade
1 68,3%
2 95,5%
3 99,7%

Veja p. 8

Intervalo de confiana

Problemas sobre intervalos de confiana para a mdia desconhecida de certa


populao tm muitas vezes a forma do seguinte exemplo:

Recebemos uma quantidade grande, N, de baterias, das quais queremos saber


em qual intervalo se encontra a mdia da varivel X (=durao da bateria).

O mtodo a usar recomenda avaliar uma amostra (tamanho n). Se o desvio


padro = x/n for conhecido, sabemos que o intervalo aleatrio
229

x x
[X z ;X + z ]
n n
contm com a probabilidade de confiana = 2(z)-1 (intervalo bicaudal).
Assim, devemos determinar z pela inverso de . Se x no for conhecido,
utilizamos a estimativa

1
s= ( x x )2
n
i =1 i
n 1
Se o tamanho da amostra for n<30, devemos utilizar a distribuio t.
O Excel tem para o intervalo de confiana a funo INT.CONFIANA.

Na planilha a seguir utilizamos INV.NORM para a inverso de e INT.CON-


FIANA(alfa;desv_padrao;tamanho) para o intervalo bicaudal de confiana.
o nvel de significncia utilizado para calcular o nvel de confiana. O nvel de
confiana igual a 1-, ou 100(1-)%, ou, em outras palavras, um alfa de
0,05 indica um nvel de confiana de 95%. Chama-se = 1- tambm de
coeficiente de confiana.

Amostras de tamanho pequeno

No ano 1908, W.S.Gosset propus a distribuio "Student", tambm chamada de


distribuio-t, que, no caso de amostras de tamanho pequeno, substitui a
distribuio Normal. (Student um pseudnimo de William Sealy Gosset, que
no podia publicar artigos usando seu prprio nome.)
230

Para calcular os intervalos de confiana, precisamos dos assim chamados


valores_t (t_quantiles), ou seja, precisamos da soluo da equao integral
s(t1-;f) = 1-. Na seguinte planilha, calculamos os valores_t de duas maneiras.
Primeiro, utilizando a funo INV(p;f) do Excel que retorna o inverso da
distribuio_t. Segundo, utilizamos um dos algoritmos desenvolvidos para a
inverso da funo de distribuio Student.

Entradas para Excel:

G6: =SE(B16<=0,5;-INVT(E8;F);INVT(E8;F)); (nomeei E13 de F)


E7: =SE(B7=1;1-B16;0,5+B16/2)
E8: =SE(E7<=0,5;2*E7;2*(1-E7))

A frmula que foi usada no intervalo J6:J18

t (au+bu3+cu5+du7+eu9)/(92160f4)

As constantes so definidas da seguinte forma:

a = 92160f4+23040f3+2880f2-3600f-945
b = 23-40f3+15360f2+4080f-1920
c = 4800f2+4560f+1482
d = 720f+776; e = 79
u = quantil da distribuio N(0;1)

O clculo de u nas clulas J12:J18 baseia-se na seguinte frmula

z t-(a+bt+ct2)/(1+dt+et2+ft3) com t = (-2ln(1-))


231

a = 2,515517; b = 0,802853; c = 0,010328


d = 1,432788; e = 0,189269; f = 0,001308

Obtemos os z-quantiles dos valores 0 < <= 0,5 com z = -z1-. Com estes z-
quantiles da distribuio N(0,1) determinamos em seguida os x-quantiles da
distribuio N(,) usando x = +z.

Seguem aqui as entradas para o clculo de t:

J6 (=A): =92160*F^4+23040*F^3+2880*F^2-3600*F-945
J7 (=B): =23040*F^3+15360*F^2+4080*F-1920
J8 (=C): =4800*F^2+4560*F+1482
J9 (=D): =720*F+776

Segue o clculo do quantil da distribuio N(0;1)

J12 (T): =RAIZ(-2*LN(1-Q))


J13 (ZA): =2,515517+T*(0,802853+0,010328*T)
J14 (NE): =1+T*(1,432788+T*(0,189269+0,001308*T))
J15 (ZQ): =T-ZA/NE
J16 (RG): =92160*F^4
J17 (H): =ZQ^2
J18 (TQ): =ZQ*(A+H*(B+H*(_C+H*(D+79*H))))/RG

G16: =SE(B16<=0,5;-TQ;TQ)
E15: =SE(B7=1;B16;0,5+B16/2)
E16: =SE(E15<=0,5;1-E15;E15)

Os resultados do Excel e os das frmulas diferem na quarta casa decimal. A


implementao das frmulas complicada e o uso da frmula INVT , obvia-
mente, prefervel implementao das frmulas. Por outro lado, interessante
saber o que se esconde por detrs de INVT.

bom saber que para amostras grandes (n > 30) a distribuio_t se aproxima
a uma distribuio Normal.

Intervalo de confiana para a distribuio "t"

Temos uma amostra pequena com x e s calculados (n<30). Queremos saber


em que intervalo podemos esperar a mdia . O intervalo buscado podemos
escrever como x a x < < x + a x onde a x o erro da estimativa da mdia
da populao (erro de amostragem). a x pode ser estimado atravs da seguinte
232

s
expresso a x = t1 ; f , no caso de um intervalo de confiana unicaudal. No
n
caso dum intervalo bicaudal, temos de usar /2 em vez de . Se se tirar uma
amostra (n) de uma populao (N) pequena, precisa-se introduzir um fator de
N n
correo k = .
N 1

Em base nestas aclaraes, criamos uma planilha do Excel.

E15: =SE(B9=0;1-B16;0,5+B16/2)
E16: =SE(E15<=0,5;2*E15;2*(1-E15))
E7: =SE(B7=1;B14-G19;"")
E8: =SE(B8=1;B14+G19;"")
E9: =SE(B9=1;B14-G19;""); E13 = F
F7: =SE(B7=1;"<=";"")
D8: =SE(B8=1;" <=";"")
G9: =SE(B9=1;B14+G19;"")
G16: =SE(B16<=0,5;-INVT(E16;F);INVT(E16;F))
G19: =B15*G16/RAIZ(B13) (erro de amostragem)

Exemplo:

Dez mensuraes (=amostra) so feitas para a resistncia de um certo tipo de


fio, fornecendo os valores X1, ...,X10. Suponha-se que X =10,48 ohms e =
1,36 ohms. Vamos supor que X tenha distribuio N(,) e que desejemos
obter um intervalo de confiana para , com coeficiente de confiana = 0,90.
Portanto, = 0,10.
233

A planilha "Distribuio-t" determina que o valor-t 1,833. Conseqentemente,


o intervalo de confiana procurado ser:

(10,48 - 10-0.5(1,83)(1,36); 10,48 + 10-0.5(1,83)(1,36)) = (9,69; 11,27)

Este intervalo corresponde ao resultado determinado pela ltima planilha.

Ao afirmar que (9,69;11,27) constitui um intervalo de confiana de 90% para ,


no estaremos dizendo que 90% das vezes a mdia amostral cair naquele
intervalo. A prxima vez que tiramos uma amostra aleatria, X presumvel-
mente ser diferente e, por isso, os extremos do intervalo de confiana sero
diferentes. O que estamos dizendo que 90% das vezes, estar contido no
intervalo ( X -1,83/n, X +1,83/n).

Testes de Hipteses

Nesta seo, encontraremos outra maneira de tratar o problema de fazer uma


afirmao sobre um parmetro desconhecido. Consideremos o seguinte
exemplo:

Um fabricante declara que a durao da vida X das N = 3000 baterias enviadas


pelo menos 230 horas (hiptese de nulidade). O fabricante e o comprador
das baterias so decididos a testar a hiptese de nulidade H0: 230 contra a
hiptese alternativa Ha: < 230. Ao mesmo tempo querem determinar um
intervalo de confiana para a mdia desconhecida (sabe-se que a mdia
aritmtica X dos valores de uma amostra de tamanho n constitui uma "boa"
estimativa de ). Eles analisam uma amostra de n = 50 baterias e encontram
para uma estimativa de 223 horas; a estimativa do desvio padro s = 21
horas.

Para variar a metodologia, buscamos os valores de z = -1( ou (1+)/2) numa


pequena tabela que colocamos no bloco A24:C32
234

Podemos encontrar os valores nesta tabela numa tbua da distribuio Normal


ou por meio da funo INV.NORM(;0;1).

Entradas:

D32: =PROCV(B14;A24:C32;B34+1)
A34: = $D$32*E8/RAIZ(E6)*B35 (multiplicao com o fator B35: =RAIZ((B8-
E6)/(B8-1)))
B34: =SE(B13=1;2;1)
D34: = PROCV(B14;A24:C32;3)
E11: =SE(B11=1;B6+A34;"")
F11: =SE(B11=1;SE(E$7>=E11;"rejeitar";"aceitar");"")
E12: =SE(B12=1;B6-A34;"")
F12: =SE(B12=1;SE(E$7<=E12;"rejeitar";"aceitar");"")
E13: =SE(B13=1;B6-$D$32*E8/RAIZ(E6);"")
G13: =SE(B13=1;B6+$D$32*E8/RAIZ(E6);"")
E15: =SE(B13=1;SE(OU(E7<=E13;E7>=G13);"deveria rejeitar";"deveria
aceitar");"")
B17: =E7-$D$34*E8/RAIZ(E6)*B35
D17: =E7+$D$34*E8/RAIZ(E6)*B35
235

Comparao de duas Mdias

Dois instrumentos (multmetros) so usados para medir a intensidade da


corrente eltrica. O instrumento 1 produziu com 8 medies x 1= 1,486, o
instrumento 2 deu com 13 medies x 2 = 1,492. Os desvios padres dos
instrumentos foram s1 = 0,026 e s2 = 0,021. (A amostra com o maior desvio
recebe o ndice 1.) A pergunta que se impe : As leituras de ambos os
instrumentos so significativamente diferentes ou pode-se dizer que as mdias
1 e 2 das populaes subjacentes so idnticas?

Para testar isso, devemos saber se as duas populaes tm as mesmas varin-


cias (Teste-F). (Isso o caso se o quociente s21/s22 menor do que o valor
correspondente F1 ; f , f da distribuio F que se obtm para = 0,05 por
1 2

meio de =INVF(0,05;7;12) (= 2,91). Este valor maior do que (s1/s2)2 = 1,53.)

Como quantidade de teste y, utilizamos a diferena d = x 1- x 2 :


d n1n2 (n1 1) s12 + (n2 1) s22
y= . A varincia total vem dada por s =
2
s n1 + n2 n1 + n2 2
(= pooled variance = varincia amostral combinada).

Temos como hiptese da Nulidade H0: 1 = 2 e como hipteses alternativas

Ha : 1<2; 1>2; 1#2

No caso 1>2 rejeitamos H0, se y > t1-a;f . (Obtemos o valor de t com nossa
planilha da distribuio t.) Se escolhermos 1<2, teremos como critrio de
rejeio de H0: y < -t1-;f .

Geralmente, escolhe-se 1#2 e rejeita-se H0, se |y| > t1-/2;f.

O intervalo de confiana de d (d-td/y; d+td/y).

Entradas:

B14: =((B10*B8^2+C10*C8^2)/H8); B15: =(1/B9+1/C9)


B16: =RAIZ(B14*B15); B17: =B12/B16 (=y)
E15: =SE(D15=1;H4*B16;-H4*B16)
F15: =SE(D15=0;H4*B16;""); H8: =B9+C9-2 (graus de liberdade)
G15: =SE(D15=1;SE(B12>E15;"1 maior do que 2";"2 maior do que
1");SE(OU(B12<E15;B12>F15);"rejeitar H0";"no rejeitar Ho"))
D20: =SE(D15=0;B12-H4*B12/B17;"")
F20: =SE(D15=0;B12+H4*B12/B17;"")
H4: =SE(B5<=0,5;-INVT(H11;F);INVT(H11;F))
H10: =SE(D15=1;1-B5;0,5+B5/2)
H11: =SE(H10<=0,5;2*H10;2*(1-H10))
236

Concluso: O teste no pode rejeitar a H0, porque a diferena d = -0,006 est


dentro do intervalo (-0,022; 0,022). Com um nvel de confiana de 90%
podemos supor que as duas populaes saram da mesma populao-me. Ao
nvel de significncia de 5%, a leitura do instrumento 1 no significativamente
diferente da leitura do instrumento 2.

Teste Qui-Quadrado (2; = letra grega chi)

Deseja-se verificar a afirmao de que o peso de meninas recm-nascidas


segue a distribuio Normal. Numa clinica foram pesadas n = 140 meninas e
seus pesos distribudos sobre 11 classes (blocos, bins) cada um de 200g.

Precisamos das seguintes informaes:

1. Os centros xi' dos intervalos e as freqncias absolutas observadas fo,i.


2. Frmula para o clculo do valor esperado para dados classificados em k
1 k '
classes e n observaes: x = xi fi
n i =1
1 k '
3. Frmula para a varincia amostral: s = ( xi x ) fi
2 2
n i =1
k ( f o ,i f e ,i ) 2
2
4. Frmula para : =
2
; fe = freqncia esperada
i =1 f e ,i
5. A funo ("Fi"): =DIST.NORM(x;mdia;desv_padro;1)
6. A funo {=TABELA(;Bx)} do menu Dados, veja "Distribuio Normal"
7. A funo =INV.QUI(;f) para determinar o valor crtico de (Qui). f = 11
3 = 8 (nmero de classes condies = nmero de graus de liberdade).

As colunas A, B e D contm os valores observados.


237

Entradas:

C5: =(A5+B5)/2, copiar at C15; E5: =C5*D5, copiar


D16: =SOMA(D5:D15) (foi chamado de Numero)
E17: =SOMA(E5:E15)/D16 (=Mu)
F5: =(C5-E$17)^2*D5
F16: =(C5-E$17)^2*D5; F18: =RAIZ(F16/D16) (Sigma)
F20: =DIST.NORM(B20;B17;B18;1)
H3: =F20 (valor Fi)
Selecionar G3:H15 e escolher Dados/Teste de Hipteses/ Tabela de Dados

O valor de x em B20 ser automaticamente substitudo pelos valores em


G4:G15. G4 e G15 foram ocupadas te tal forma que H4 d o valor 0 e H15 1.
x tem o valor 10 para dar em H3 tambm 0.

Na coluna I esto os valores esperados (calculados) da freqncia absoluta.


I5: =(H5-H4)*D16, copiar at I15
J5: =(D5-I5)^2/I5, copiar at J15
J17: =SOMA(J5:J15); valor de Qui2

O Qui2-crtico, para o nvel de 5%, com f = 8, 15,51 (=INV.QUI(0,05;8)). O


valor observado de Qui2 ento altamente significativo e h bom motivo para
crer que o peso das meninas seja normalmente distribudo. Isso v-se tambm
no histograma onde os valores calculados (verdes) correspondem satisfatoria-
mente aos valores observados (vermelhos). (A regio crtica constituda de
valores maiores de Qui2-crtico.)
238

Quero terminar este exemplo com um anlise mais direto do problema. Trata-
se duma interpretao grfica dos dados. Vamos considerar as freqncias
acumuladas observadas como probabilidades acumuladas, P(Zz), de uma
varivel aleatria Z = (p )/ onde p o peso das meninas recm-nascidas.

O grfico dos valores z (que determinamos com nossa planilha "Inverso da


funo de distribuio") e do peso p deveria dar uma reta, pois

p 1
Z= = p

a equao de uma reta. A intercepo com o eixo-p vai dar o valor esperado
e a inclinao dar 1/.

Na planilha vemos na coluna A os pesos observados e em B as freqncias


relativas fr. Em C temos as freqncias acumuladas: C7: =B7; C8= =B8+C7,
copiar at C16. Em C17 colocamos 0,999. D7: =INV.NORM(C7;0;1), copiar at
D17.
Antes de seguir adiante, fazemos o grfico. Observamos que os pontos dos
dados observados ficam perto duma reta. Isso nos deixa de pensar que,
efetivamente, estamos frente a uma distribuio Normal. O corte da reta com o
eixo de p corresponde, mais ou menos, a 3300g. Da inclinao da reta obtemos
= 360g. So estes os valores experimentais que colocamos nas clulas D18 e
D19. Na coluna F temos os valores esperados de p (F7: =INV.NORM
(C7;D$18;D$19)

A planilha mostra tambm uma anlise de regresso feita com "Anlise de


Dados". A reta da regresso y = -8,29 + 0,00253x. Na coluna G ficam os
valores calculados com esta equao.
239

mais simples fazer este anlise usando a funo PROJ.LIN do Excel.


necessrio selecionar duas clulas adjacentes, por exemplo E19 e F19. A
frmula = PROJ.LIN(D7:D16;A7:A16) uma frmula matricial e deve ser
inserida pressionando Ctrl+Shift+Enter. Resultado: em E19 aparece o valor
0,00253 e em F19 temos -8,29

Analise de Dados com o mdulo de regresso PROJ.LIN

Utilizaremos a funo PROJ.LIN quando buscamos relaes entre duas ou mais


variveis. Na planilha a seguir analisamos a afirmao de certo professor de
que alunos com boas notas em Ingls tambm so bons em Matemtica. O
professor quer comprovar esta hiptese com o seguinte material (hipottico):

Aluno 1 2 3 4 5 6 7 8 9 10 11 12
Ingls (X) 2 7 5 9 9 4 8 4 6 3 10 10
Matemtica (Y) 3 5 4 7 8 5 7 3 4 2 7 9

Os algarismos na tabela so pontos entre 1 e 10.

Busca-se, usando o Mtodo dos Mnimos Quadrados, a reta de regresso y = b1


+ b2x.

Deixa-se guiar pela seguinte planilha.


240

Selecione F7:G11 e aplique a funo PROJ.LIN(C4:C15;B4:B15;1;1). Ela vai


tambm retornar os dados estatsticos de regresso adicionais. Ao pressionar
Ctrl+Shift+Enter, aplicamos a frmula matricial ao bloco selecionado.

Primeiro, aparecem os coeficientes de regresso b1 = 0,658; b2 = 0,729.


Debaixo seguem os desvios padres de b1 e b2: o desvio padro de b1 fica em
G8: 0,689, o de b2 em F8: 0,099. ( Entre estes desvios existe a seguinte relao
1
sb1 = sb2 xi2 , veja o captulo anterior, frmula (6).)
n

Em F9 encontramos o coeficiente de determinao R2 = 0,844. Isso significa


que 84,4% da variao dos valores y (pontos em Matemtica) podem ser
explicados pela regresso. (Isso considervel, se bem que, neste exemplo,
puramente hipottico.)

Tambm podemos calcular os intervalos de confiana para os coeficientes


(desconhecidos) 1 e 2 da verdadeira reta de regresso = 1 + 2x.

b1 tsb1 1 b1 + tsb1 e b2 tsb2 2 b2 + tsb2

Para f = n - 2 = 10 e 1 = 0,95 temos t = 2,228. O intervalo de 95% para 1


ser: -0,877 1 2,193.

Regresso linear mltipla

A funo PROJ.LIN preste-se, tambm, para avaliar uma amostra com duas ou
mais variveis como ilustramos no seguinte exemplo.

A direo de uma companhia de cosmticas acha que a ganncia y (por


persona) do produto "Cheiro de Ouro" no s depende do nmero de
habitantes x1 da regio das vendas, como tambm das despesas publicitrias x2
gastas por persona. Os seguintes dados devem ser analisados para detectar
uma possvel relao.

Regio Habitantes x1 Propaganda x2 Lucros y


(Milhes) ($/persona) (por persona)
1 2,4 0,32 7,2
2 1,3 0,42 5,0
3 5,1 0,24 8,4
4 4,9 0,28 8,2
5 3,2 0,52 8,0
6 6,7 0,2 10,2

Busca-se uma equao de regresso da forma = a + b1x1 + b2x2.


um estimador para o lucro y. Os valores numricos de denominamos
241

estimativas. Neste exemplo, no estamos buscando uma reta, mas sim um


plano de regresso.

A coluna G vai receber os valores que calculamos por meio da equao de


regresso. Os valores da varivel dependente y esto em E2:E7 (E8 contm a
sua soma.) Selecione o intervalo C11:E15 para receber a frmula matricial =
PROJ.LIN(E2:E7;B2:C7;1;1), compare com o exemplo anterior.

O erro padro de y fica em D13 e H8, compare com equao (3) do captulo
( y y )2
anterior. Em nosso caso, s = 0,6884 com s
2
= ; n = nmero das
n k 1
observaes (6), k = nmero das variveis independentes (2). O nmero dos
graus de liberdade f = n-k-1 = 3

s2 o desvio padro de b2 e o seu valor de 3,78 muito grande. De t = b2/s2 =


3,245/3,78 = 0,858 < t0,05;3 = 3,182 (= INVT(0,05;3)) segue que, para um
nvel de confiana de 95%, b2 no significativamente diferente de 0. Isso
significa que a propaganda no teve xito. De fato, obtemos, utilizando
somente x1, um erro padro de 0,665 e a equao com = a + b1x1 = 4,676 +
0,803x1 um modelo satisfatrio para os lucros. Disso segue que foram gastas
grandes quantidades de dinheiro para as propagandas sem resultar em
aumentar os lucros.
245

Captulo 15
Resoluo numrica de equaes diferenciais

Para podermos investigar exemplos de simulao que surgem na Fsica,


Engenharia, Biomatemtica etc., estudamos, neste captulo, alguns mtodos de
resoluo numrica de equaes diferenciais ordinrias de primeira e segunda
ordens.

A soluo de uma equao diferencial uma funo que satisfaz a equao


diferencial sobre algum intervalo aberto. Uma equao diferencial ordinria tem
a forma geral

(x,y,y',y'',y''',..., dny/dxn) = 0 (1)

Esta equao de n-sima ordem e tem somente uma varivel independente,


x.

A funo y = F(x) uma soluo de (1) se ela n vezes diferenvel e se


satisfaz a Eq. (1).

As equaes y':= dy/dx = x+y; y''+(1-y2)y' + y = 0 so exemplos de equaes


diferenciais ordinrias. Uma equao diferencial (x,y(x),dy/dx) = 0 pode
geralmente ser escrita como

dy/dx = y' = f(x,y) (2)

As equaes diferenciais ordinrias tm vrias solues. Para escolher uma


nica soluo, so necessrias informaes adicionais, normalmente n para
uma equao de n-sima ordem. Se todas as n condies adicionais forem
especificadas para um mesmo valor de x, por exemplo xo, temos um Problema
de Valor Inicial, PVI. Caso estas n condies adicionais sejam dadas para mais
de um valor de x, temos um Problema de Valor de Contorno, PVC.

O grfico de uma soluo da equao diferencial chama-se de curva soluo.


(Uma curva soluo tambm uma curva integral.)

Existem mtodos grficos e numricos para obter uma idia sobre a forma da
soluo, e aos quais pode-se recorrer se no existe nenhuma frmula explcita
da soluo ou se a frmula complicada demais para ser til.

Para as aplicaes na Fsica, Biomatemtica etc. precisamos muitas vezes de


mtodos numricos que aproximam uma soluo exata com praticamente
qualquer preciso.
246

Mtodo de Euler para y' = f(x,y)

Vamos considerar agora a equao diferencial ordinria de primeira ordem y' =


f(x,y) junto com uma condio inicial y(x0) = y0.

O nosso objetivo obter numericamente uma soluo y(x) que satisfaa a


equao diferencial e as condies iniciais. O mtodo numrico mais simples
o de Euler (1707-1783) e baseia-se na idia de aproximar os valores de y(x)
pela reta tangente, como ilustrado na figura a seguir.

(Euler descreveu o seu mtodo em 1768 em "Institutiones Calculi Integralis,


sectio secunda, caput VII")

Se fizermos um zoom no grfico de uma funo lisa de uma varivel y = f(x)


perto de um ponto x = a, o grfico parece cada vez mais uma reta e assim se
torna indistinguvel de sua reta tangente nesse ponto. A inclinao da reta
tangente a derivada f'(a) e a reta passa pelo ponto (a,f(a)) de modo que sua
equao

y = f(a) + f'(a)(x-a) (3)

Agora aproximamos os valores de f pelos valores-y da reta tangente. Para


valores de x prximos de a, podemos escrever para o verdadeiro valor f(x) da
funo f no ponto x

f(x) f(a) + f'(a)(x-a) (4)

O trao da tangente at o ponto do valor verdadeiro indica o erro que fazemos


aproximando f(x) pelo valor de f(a) + f'(a)(x-a). O fato de f ser aproximadamente
uma funo linear em x perto de a expresso dizendo que f localmente linear
perto de x = a.
247

Vimos que o mtodo de Euler se baseia na suposio que a reta tangente


curva soluo (curva integral) de y' = f(x,y) com y(x0) = y0 em (xi,y(xi)) aproxima
a curva soluo sobre o intervalo [xi , xi+1].

Visto que a inclinao (ou declividade) da curva soluo em (xi, y(xi)) y'(xi) =
f(xi, y(xi)), a equao da reta tangente curva integral em (xi, y(xi))

y = y(xi) + f(xi, y(xi))(x-xi) (5)

Fazendo x = xi+1 = xi + h, obtemos

yi+1 = y(xi) + hf(xi, y(xi)) (6)

sendo h o tamanho do passo e yi+1 o valor de y at a reta tangente no ponto


xi+1. yi+1 tomamos como uma aproximao a y(xi+1).

J que foi dado y(x0) = y0, podemos usar (6) com i = 0 para calcular y1

y1= y(x0) + hf(x0, y(x0)) = y0 + hf(x0, y0) (7)

Agora fazemos i =1 e Eq. (6) se torna

y2 = y(x1) + hf(x1, y(x1)) (8)

mas, esta equao no til, pois no conhecemos y(x1). (S y(x0) est


conhecido e o chamamos y0.) Bem, vem aqui a aproximao:

O valor y(x1), que no conhecemos, substitumos pelo valor y1, que s chega
at a reta tangente e que , no exemplo da figura anterior, nitidamente inferior
ao valor real da funo y(x) em x1.
248

y(x2) y2 = y1 + hf(x1,y1)

No prximo passo vamos substituir y(x2) por y2:

y3 = y2 + hf(x2,y2)

O processo pode ser repetido at que o valor desejado de x seja alcanado.

Em geral, o mtodo de Euler comea com o valor conhecido y(x0) = y0 e calcula


y1, y2, ... yn por meio da frmula de recorrncia

yi+1 = yi + hf(xi,yi), 0<= i <= n - 1 (9)

(Trata-se de uma frmula de recorrncia e no de iterao, pois no caso de


uma iterao, que um caso especial da recorrncia, se busca, em geral, um
valor limite para o processo. Mas, o uso das palavras neste sentido estrito no
muito comum.)

Os nmeros y1, y2, y3 etc. so aproximaes de y(x1), y(x2), y(x3) etc.

Exemplo:

y' = 1-x+4y, y(0) = 1; soluo exata: y(x) =x/4 -3/16 + (19/16)e4x

Soluo segundo Euler: (h = 0.1)

f(x,y) = 1 - x +4y
y1 = y0 + hf(x0,y0) = 1 + 0.1(1-0+41) = 1+0,5 = 1,5 ; x = x1 = h = 0.1
valor exato (ou analtico): y(0,1) = 1,609041828
y2 = y1 + hf(x1,y1) = 1,5 + 0,1(1-0,1+41,5) = 1,5 +0,69 = 2,19; x = x2 = 0,2
valor exato: y(0,2)= 2.505329853
y3 = y2 + hf(x2,y2) = 2,19 + 0,956 = 3,146; x = x3 = 0,3
valor exato: y(0,3) = 3,830138846
fcil escrever um programa VBA para o mtodo de Euler:
249

Formulamos as duas funes F e F0 da seguinte maneira:

Na seguinte planilha, vemos os clculos anteriores estendidos at x = 1.

Aplicao: Modelo de crescimento logstico

O primeiro exemplo trata do crescimento de uma "populao" de rvores,


animais, palavras, armas etc.

N0 o tamanho da populao no inicio do estudo, N(t) o tamanho no tempo


t. Num primeiro momento, poderamos supor que a velocidade de crescimento
(= taxa de crescimento) dN/dt fosse proporcional ao tamanho atual N(t), ou
seja, poderamos tentar usar a seguinte expresso:

dN(t)/dt = aN(t) (10)

sendo a o coeficiente do crescimento. Facilmente podemos ver que esta


equao diferencial de primeira ordem tem como soluo a seguinte funo
exponencial

N(t) = Noea(t-to) (11)


250

que descreve um crescimento sem limite. No mximo ao comeo do processo


podemos supor um crescimento exponencial, pois, aps de certo tempo,
devemos observar um processo de frenagem devido a influencias externas (por
exemplo por falta de alimento). (Ainda possvel descrever aproximadamente o
crescimento populacional mundial pela eq. (11), mas, o ritmo mximo de
crescimento da populao mundial foi atingido por volta da segunda metade da
dcada de 1960.)

O matemtico belga Pierre F. Verhulst introduzia em 1837 um termo de


frenagem na equao (10) e props o seguinte modelo:

dN(t)/dt = aN(t) bN(t)2 (12)

b = capacidade de suporte ambiental (a e b so fatores positivos). Esta


equao tem uma soluo analtica:

a
N (t ) = (13)
a bN 0 at
b(1 + e )
bN 0

A funo logstica, expressa pela equao (13), costuma tambm ser designada
como lei universal do crescimento. Sua aplicabilidade como ferramenta
matemtica para a descrio do crescimento de populaes em geral foi
demonstrada nos anos 20 pelo estadstico e zologo americano Raymond Pearl
(1925), razo pela qual a equao logstica , s vezes, referida como equao
de Pearl. O nosso objetivo determinar a soluo da equao (12) numrica-
mente por meio do mtodo de Euler. Podemos facilmente adaptar o nosso
programa nova situao, identificando x com t e y com N(t):
251

A concordncia entre as solues numricas e analticas satisfatria. As


curvas logsticas em S (curva sigmide) constituem hoje em dia uma das mais
importantes ferramentas matemticas para a prtica quantitativa da previso
tecnolgica, isto , para a avaliao do potencial de crescimento e difuso de
novas tecnologias.

Embora o mtodo de Euler seja bastante simples, o mesmo pouco utilizado para a
soluo numrica do problema do valor inicial, j que h outros mtodos, como
veremos adiante, que possuem uma melhor eficincia e exatido. Os outros mtodos
so mais complicados, mas, na maioria dos casos, podemos seguir utilizando o nosso
esquema bsico que aplicamos acima.

Mtodos melhorados de Euler


O mtodo de Euler na formulao yi+1 = yi + hf(xi,yi) utiliza sempre a
inclinao da reta tangente curva soluo no comeo do intervalo [xi , xi+1] e
supe que esta inclinao permanea constante durante o intervalo inteiro.
Mas, normalmente, vemos que a curva soluo de y(x) muda a inclinao da
reta tangente no intervalo [xi , xi+1]. Pode-se esperar um melhoramento do
mtodo tomando a inclinao no centro do intervalo ou tomando uma mdia de
vrios inclinaes em [xi , xi+1].

Como Mtodo melhorado de Euler ou Mtodo de Heun (pron.: hoin) se


conhece um procedimento que calcula primeiro a mdia das inclinaes das
retas tangentes curva integral nos extremos do intervalo [xi , xi+1], depois se
segue os passos que nos levaram s frmulas (5) at (9). Voltemos, ento,
Eq. (5) e substituamos a inclinao (f(xi, y(xi)) pela mdia

mi = (f(xi,y(xi)) + f(xi+1,y(xi+1))/2 (14)

A Eq. (6) reza agora yi+1 = y(xi) + h (f(xi,y(xi)) + f(xi+1,y(xi+1)))/2 e uma aproxi-
mao a y(xi+1). Como antes, aproximamos y(xi) por seu valor aproximado yi
quando i >0.
252

Pero y(xi+1) tambm ser, normalmente, desconhecido e vamos substitu-lo


pela aproximao y(xi+1) yi+1 = yi + h f(xi,yi).

A frmula de recorrncia do mtodo melhorado de Euler ou a frmula de Heun


fica finalmente assim

yi+1 = yi + h/2 (f(xi,yi) + f(xi+1, yi+ h f(xi,yi))) (15)

Para o clculo prtico til a introduo das seguintes expresses

k1i = f(xi,yi) (16)


k2i = f(xi+h, yi + hk1i) (17)

yi+1 = yi + h (k1i + k2i)/2 (18)

O mtodo de Heun produz resultados bastante mais exatos do que o mtodo


de Euler simples, especialmente uma variante del processo que melhora em
cada ponto xi primeiro os resultados por meio de uma iterao interna antes de
avanar ao prximo ponto xi+1. No programa de "Heun2 " realizamos isso.

(O mtodo de Heun possui um erro de truncamento global da ordem de O(h2) e


podemos verificar que, se diminuirmos o tamanho do passo de h para h/2, o
erro ser reduzido de um fator 1/4, e assim sucessivamente. O smbolo O(h2)
quer dizer que o mtodo de Heun coincide com a srie de Taylor at os termos
de ordem h2.)

Tomamos as equaes para esta planilha do seguinte programa.


253

O principio dessa nova tcnica est no mtodo de Euler, mas os resultados so


mais exatos.

O mtodo de Heun com iterao interna ainda mais exato como podemos ver
da seguinte planilha
254

O mtodo de Runge-Kutta

Mas, tampouco este mtodo pode concorrer com o mtodo clssico de Runge e
Kutta, como veremos em seguida.

O mtodo de Runge-Kutta o rei entre aqueles mtodos apropriados para


resolver os problemas de valor inicial (C. Runge 1856-1927, W. Kutta 1867-
1944). Os seus atrativos so simplicidade, alta preciso e versatilidade. A idia
detrs do mtodo RK bastante parecido ao raciocnio detrs do mtodo
melhorado de Euler (frmula de Heun), mas agora calculamos a funo f(x,y)
no apenas duas vezes, como no mtodo de Heun, antes quatro vezes,
reduzindo assim o erro global de truncamento para O(h4)! (O mtodo de RK,
que mais adiante vamos usar, tambm conhecido como RK de quarta ordem.
O mtodo de Heun chamado de RK de segunda ordem e o mtodo de Euler
como RK de primeira ordem.)

No vamos desenvolver rigorosamente as frmulas do mtodo RK. Vou,


porm, apresentar o algoritmo como se fosse uma simples modificao do
mtodo de Euler.
255

Algoritmo Runge-Kutta de quarta ordem para y' = f(t,y).

(J que, nas aplicaes, temos geralmente o tempo como varivel indepen-


dente, utilizaremos t em vez de x e v em vez de y'. O smbolo <v> indica o valor
mdio de 4 derivadas -velocidades- do mtodo de RK.)

tn+1 = tn + h

yn+1 = yn + h<v>,

onde

<v>:= (v1+2v2+2v3+v4)/6 (19)

Calculam-se as quatro derivadas segundo o seguinte esquema:

v1:= f(t,y)

v2:= f(t + h/2, y + v1h/2)

v3:= f(t + h/2, y + v2h/2)

v4:= f(t + h, y + v3h) (20)

(Mais adiante veremos que a generalizao deste mtodo para equaes de


segunda ordem, y" = f(t,x,y'), muito simples.)

Agora vamos ver como simples a implementao computacional das


esquemas (19) e (20).
256

(Para mostrar que o novo programa, tambm, uma modificao do programa


de Euler, seguimos utilizando, no cdigo, x em vez de t.)

Os resultados mostram que os erros so apenas da ordem de 10-6. No caso do


mtodo de Euler, encontramos erros da ordem de 10-2. O mtodo de Euler tem,
porem, o seu valor didtico e ajuda no entendimento dos mtodos mais exatos.

Aplicao: Desintegrao radioativa

A desintegrao , de certo modo, o processo inverso do crescimento expo-


nential. Uma sustncia radioativa consista no momento t = 0 de um nmero
A(0) := A0 de tomos radioativos. Depois do tempo t seja desintegrado um
certo nmero de tomos da substancia-me A, que, por sua vez, produzem
uma substancia-filha B, que, por sua vez, decai produzindo C.

A cintica da reao pode ser simbolizada na seguinte forma


257

A k1  B k 2  C

A, B, C so as concentraes dos participantes da reao, k1 e k2 so as


velocidades (taxas) da reao. No caso da desintegrao radioativa, chama-se
estas taxas A e B. A a constante de desintegrao da substancia-me. O
nmero dos tomos caindo na unidade do tempo proporcional quantidade
dos tomos no decada:

dA(t )
= A A(t ) (21)
dt

Enquanto B decai, ela recebe permanentemente as partculas que vem da sub-


stncia-me A. Ou seja:

dB(t )
= B B(t ) + A A(t ) (22)
dt

As equaes diferenciais (21) e (22) descrevem, juntas, a desintegrao de A e


B e devem ser resolvidas juntamente. Trata-se de um sistema de duas
equaes acopladas de primeira ordem. No seguinte programa "Euler2" foi s
preciso introduzir o tempo t e uma segunda funo G(x,y) para dB(t)/dt:
258

Na planilha, vemos o processo de desintegrao radiativo para as constantes A


= 1 e B = 0,5. Os valores iniciais ficam em B0 at B3. Para x0 = A0 temos o
valor 100, para y0 = B0 = 0. ( x:= A e y:= B).

Podemos controlar a soluo numrica (Euler) com os valores da soluo


analtica:

A(t ) = A0e At
A0 A (23)
B (t ) = ( e A t e B t )
B A

A comparao mostra que a concordncia para h=0,1 no muito satisfatria e


que prefervel utilizar um mtodo mais exato, como, por exemplo, o mtodo
de Runge Kutta. A planilha seguinte mostra uma excelente concordncia
entre as solues numricas e analticas.
259

Para produzir esta planilha, foi necessria modificar o algoritmo RK1 para
resolver nosso sistema de dois equaes de primeira ordem x' = f(t,x,y) e y' =
g(t,x,y). Em ltima anlise, foi somente necessrio introduzir uma segunda
equao, g(t,x,y). Com o intuito de aplicar o programa em outras situaes na
Fsica, utilizamos os smbolos v (velocidade) e a (acelerao) para x' e y'.

As funes so:
260

Aplicao: Equaes de Lotka e Volterra

O modelo de presa-predador de Lotka-Volterra um modelo de importncia


histrica na modelagem matemtica de sistemas ecolgicos como, por exemplo,
na anlise da coexistncia de duas espcies que interagem, uma como presa
(coelhos) e outra como predadora (raposas). A.J. Lotka (1925) e V. Volterra
(1926) propuseram independentemente o seguinte modelo para calcular a
evoluo do nmero de coelhos e raposas num determinado ecossistema, ano
aps ano:

x' = ax - bxy e y' = -cy + dxy (24)

y = nmero de raposas, x = nmero de coelhos, t = tempo de interao


(coexistncia). Os parmetros a, b, c, d representam a interao entre as duas
espcies.
As equaes de Lotka-Volterra so um par de equaes diferenciais, no
lineares e de primeira ordem, que podemos facilmente resolver utilizando o
nosso programa "Runge_Kutta2".
261
263

Captulo 16
Equaes diferenciais de segunda ordem

Reduo de y" a duas equaes de primeira ordem

Nas sees anteriores, aprendemos mtodos da resoluo de equaes


diferenciais da primeira ordem. Tambm podemos estender estes mtodos
sistemas de primeira ordem. Resulta que estes mtodos podem ser usados
tambm para equaes de ordem superior a um, tal como d2x/dt2 =
f(t,x(t),x'(t)), pois esta equao pode ser reduzida a um sistema de duas
equaes da primeira ordem y' = f(t,x,y) e x' = y. Por exemplo: A equao
para um pndulo x" + sen(x) = 0 , x(0) = 0 , x'(0) = 1 pode ser transformada
em x' = y e y' = x" = - sen(x). Aqui vem mais dois exemplos.

Exemplo 1:

Transforme a equao de Van der Pol y"(x) - m(1-y2)y'(x) + y = 0 num


sistema de duas equaes diferenciais de primeira ordem. m um parmetro
maior que zero.

Soluo:

Para fazer a transformao, vamos aplicar uma mudana de variveis:

y1(x) = y(x) e y2(x) = y'(x).

Teremos ento o sistema

y1 ' = y2

y2' = m(1-y12) y2 - y1.

Para resolver o problema, usando um dos nossos mtodos, podemos tomar m


= 2 e as condies iniciais y(0) = 2 e y'(0) = 0.

A equao de Van der Pol uma equao homognea, pois o lado direito
zero. No prximo exemplo, consideramos uma equao linear de segunda
ordem com uma funo F(t) "de excitao" no lado direito, por exemplo F(t) =
F0 cos(w t).

Exemplo 2:

Transforme a equao do oscilador harmnico

mx"(t) + rx'(t) + kx(t) = F(t)


264

num sistema composto de duas equaes diferenciais de primeira ordem. As


condies iniciais so x(t0) = x0 e x'(t0) = u0.

Soluo:

Outra vez fazemos a mudana x'(t) = y(t) e x''(t) = y'(t) com que a equao de
segunda ordem torna-se:

x'(t) = y e y'(t) = f(t,x,y)

com as condies iniciais x(t0) = x0 e y(t0) = y0. Por exemplo:

x"(t) -2 x'(t) + 2 x(t) = e2t sen(t)

Para esta equao, utilizaremos o mtodo de Runge-Kutta com

x'(t) = y(t) (=f(t,x,y)); y representa a derivada dx/dt (= velocidade)


y'(t) = 2y(t) - 2x(t) + e2tsen(t) (=g(t,x,y)); y' a derivada segunda x"
(=acelerao). t0=0; x0 =-0.4; y0 = -0.6 (=x'(0) = v(0)).
A soluo analtica x(t) = 0.2 e2t (sent - 2 cost)
265

Vemos que o algoritmo de RK para uma equao y' = f(x,y) facilmente


modificado para resolver um sistema de dois equaes de primeira ordem, s
preciso acrescer uma segunda funo g(t,x,y), ou seja, agora temos x' =
f(t,x,y) e y' = g(t,x,y).

Bastar ento considerar unicamente sistemas de equaes de primeira ordem.


Mas, as vezes, ser mais til e simples resolver uma equao de segunda
ordem por um procedimento direto, ou seja, sem desdobrar a equao em duas
equaes da primeira ordem.

Para o algoritmo de uma soluo direta, partimos das definies de velocidade


v e acelerao a (= derivada segunda):

tn+1 = tn + h

yn+1 = yn + h<v>

vn+1 = vn + h<a>

<v> e <a> so valores mdios de v e a no intervalo [tn, tn+1] apropriadamente


definidos. No esquema de Runge Kutta temos

<v>:= (v1+2v2+2v3+v4)/6

<a>:= (a1+2a2+2a3+a4)/6

As derivadas calculam-se usando o seguinte esquema:

v1 := v a1 := f(t,y,v)
v2 := v + a1h/2 a2 := f(t+h/2, y + v1h/2, v2)
v3 := v + a2 h/2 a3 := f(t+h/2, y + v2h/2, v3)
v4 := v + a3 h a4 := f(t+h, y + v3h, v4)
266

Podemos calcular os valores de y e v tambm pelas relaes

y = y + hv + h2(a1 + a2 + a3)/6

v = v + h(a1 + 2a2 + 2a3 + a4)/6

No caso de um sistema de duas equaes diferenciais de segunda ordem

x'' = f(t,x,x',y,y') e y'' = g(t,x,x',y,y')

s necessrio escrever o anterior esquema para as duas variveis x e y com u


= x' e v = v'. Veja o seguinte programa:
267

Sem as instrues marcadas como comentrios, podemos usar este programa


para uma equao s, por exemplo, para a equao

x'' = (-rx'-kx+F0cos(t))/m

do oscilador harmnico forado e amortecido.

A fase transitria faz-se notar at quase 30 s. Depois de 30s temos o regime


permanente (estacionrio).

Com F0 = 0 e x0 = 1 obtemos uma oscilao livre e amortecida:


268

Trajetria do planeta Mercrio

Os sistemas de equaes diferenciais de segunda ordem surgem em muitos


problemas da Fsica, por exemplo, no caso do movimento de um planeta. Antes
de calcular a trajetria de tal sistema, temos que falar sobre a reduo das
variveis reais a tais sem unidades. Com estas variveis reduzidas podemos
utilizar nmeros pequenos e confortveis para o clculo numrico.

A nica fora que atua sobre o planeta a fora gravitacional. As componentes


cartesianas desta fora so Fx = mx" = -Cm x/r3 e Fy = my" =- Cmy/r3. Para a
acelerao obtemos as seguintes equaes:

x" = - C x / r3 e y" = -C y / r3 (1)

onde significam x" = d2x/dt2 , C := GM e r=(x2 + y2)1/2

O sistema (1) consta de duas equaes diferencias acopladas. (No tomamos


em conta as interaes com outras planetas!)

Para simplificar a escrita e os clculos, introduzimos novas unidades para o


comprimento e o tempo, ou seja x0 e t0, cujos valores devemos ainda fixar.

Escrevemos x = Xx0, r = Rx0 e t = Tt0. As novas variveis X, R e T no tm


unidades.

A velocidade v = dx/dt toma a forma v = dx/dt = x0/t0 dX/dT e a acelerao

a = d2x/dt2 = x0/t02 d2X/dT2. V = dX/dT = v t0/x0 .

A nova forma da equao x" = - C x / r3 ser

d2x/dt2 = x0/t0 d2X/dT2 = - C/x02 X/R3 ou seja

d2X/dT2 = - Ct02/x03 X/R3 (2)

S precisamos pr Ct02/x03 := 1 (3), para obter a equao do movimento


sem constantes

d2X/dT2 = - X/R3 (4)

J que queremos traar a rbita do Mercrio, razovel tomar x0 igual ao raio


da rbita da Terra, que chamado unidade astronmica (A.u.)

x0 = 1,4961011m (5)
269

Nossa nova unidade do tempo ser, ento,

t0 = (x03/C)1/2 = 5,027106 s (6)

O perodo do Mercrio (durao de um ano) de 88 dias terrestres. Os dados


do perihlio so v0 = 58,9 km/s e r0 = 46,0 106 km. Suponhamos que o
planeta esteja no perihlio no tempo T = 0. Um intervalo de tempo de T =
0.05 significa um tempo real de t = Tt0 = 0.05t0 = 0.055,027106s = 2.91
dias. Uma rbita completa corresponder a 88 dias.

As condies iniciais so:

X(0) = x(0)/x0 = 46109 m/x0 = 0,3075


Y(0) = 0,
dX(0)/dT = 0,
dY(0)/dT = v0t0/x0 = 58,9103 m/st0/x0 = 1,982

Segue aqui o programa:


270

As funes F e G (= aceleraes reduzidas) so

Segue a parte inicial dos resultados junto com a rbita:

A orbita se fecha depois de 1,52 unidades de tempo, ou seja, depois de 88


dias. u = dx/dt e v = dy/dt.

Seguramente ser de interesse uma comparao com um programa profissional


como, por exemplo, o MUPAD.

Os resultados que represento em seguida mostram uma divergncia a partir da


terceira casa decimal. Pode-se supor que o MUPAD trabalha com um algoritmo
mais exato do que o de Runge e Kutta. Efetivamente, obtemos melhor concor-
dncia com os resultados de MUPAD quando reduzimos os passos de h = 0,05
a 0,02.

Todos os mtodos at agora discutidos so chamados de "single-step" (passo


nico). Isso quer dizer: Quando se conhece a soluo x(t) para um instante t
determinado, se pode, ento, calcular x(t+h), sem necessidade de conhecer
tambm valores da soluo para instantes anteriores a t.

Mas, nos chamados mtodos "multi-step" (passo mltiplo) faz-se tambm uso
de valores anteriores a t, a saber: x(t-h), x(t-2h), ... Tais mtodos precisam, no
271

comeo, de um mtodo "single-step" para calcular alguns valores iniciais para


arrancar o algoritmo.

Os mtodos de passo mltiplo mais populares provm de ADAMS-BASHFORD,


MILNE e de HAMMING. O do ADAMS foi desenvolvido em 1855, baseando-se
em idias do BASHFORD. Anos depois, o mtodo caiu no olvido at, no comeo
do sculo XX, foi redescoberto pelo matemtico noruegus STRMER.

A frmula de recorrncia de ADAMS para x'(t) = f(x(t)) tem a seguinte forma:

x(t+h) = x(t) + h/24 (55 f(x(t)) - f(x(t-h)) + 37 f(x(t-2h)) - 9 f(x(t-3h)))

Antes de aplicar esta frmula, calcula-se os valores necessrios para o arranque


pelo mtodo de Runge-Kutta.

O mtodo de HAMMING muito exato e estvel e , por isso, usado com


freqncia.

Programa de MUPAD para calcular a trajetria do Mercrio:


272

Espalhamento de partculas Alfa

Com o nosso programa do pargrafo anterior fcil mostrar uma trajetria


repulsiva, por exemplo, a trajetria de uma partcula alfa desviada pelo ncleo
de um tomo de ouro. Trata-se duma trajetria hiperblica de repulso.

1 Q1Q2
A fora que atua sobre a partcula Alfa F = . Introduzimos uma
4 0 r 2
Q1Q2 m3
constante C pela relao C = = 5, 486 2 . m = 6,65E-27kg a massa
4 0 m s
da partcula Alfa com a carga Q1 = 2e. O ncleo de ouro tem a carga Q2 = 79e.

As duas aceleraes so = Cxr-3 e = Cyr-3.

A fim de calcular com nmeros pequenos, precisamos, primeiro, ter


uma idia sobro o tamanho dos passos. O dimetro do ncleo
aproximadamente 10F = 1E-14 m. (1F = 1 Fermi usado na fsica
nuclear e tem o valor de 110-15 m). Se queremos traar a trajetria da
partcula Alfa sobre 400F, precisamos 2E-20s, supondo uma veloci-
dade de 2E7m/s. Se queremos uma trajetria com 50 pontos,
precisamos de passos com h = 4E-22s. A partcula poder partir em x
= 200F = 2E-13m. Para o parmetro de impacto, y0, podemos usar
valores entre 0,5F e 5F.

As constantes tm, neste exemplo, os seguintes valores reduzidos: x0 = 5,


y0=1, u0 = -0,8, h = 0,15 e C = 1.

O valor de y0 o parmetro de impacto b. Na figura usamos y0 = b = 1F.

Aumentando a distancia do impacto a y0 = 2 faz com que a partcula no seja


retro espalhado, ela somente sofrer um desvio:
273

Movimento num campo r-1

At agora consideramos campos centrais inversamente proporcionais ao


quadrado da distncia -e a natureza vigia estritamente sobre a preservao do
expoente 2. As digresses de este valor so menores de 210-16. Mas, nos
laboratrios, podemos realizar casos com expoentes bem diferentes de 2, por
exemplo o expoente 1 num filtro eletrosttico para as velocidades de partculas
carregadas, como eltrons.

Neste pargrafo, utilizamos, outra vez, o programa do planeta Mercrio, mas,


esta vez, para o caso de uma fora inversamente proporcional distncia, F(r)
= k/r.

Injeta-se um eltron perpendicularmente num campo eltrico que se forma em


torno de um fio reto infinito e carregado uniformemente com q Coulomb por
metro, C/m. O eltron vai descrever trajetrias em torno do fio. Um caso
especial ser uma rbita circular.

Por simetria, as linhas de fora so radiais e, se q for positiva, dirigidas para


fora do fio. Pela aplicao da lei de Gauss podemos facilmente mostrar que

E(r) = q/(20) r-1

A constante 0 denominada permissividade eltrica do vcuo. No SI de


unidades seu valor 8,85410-12 C2 N-1 m-2.

Para a fora que atua sobre o eltron obtemos

F(r) = - qe/(20) r-1


274

As duas componentes cartesianas da acelerao so

x" = - Cx r-2 e y" = - Cy r-2

onde C = q e /(20 me) e r = (x2 + y2)1/2

(Compare com x" = Cxr-3; y" = Cyr-3 do pargrafo anterior !)

e = carga elementar: 1,60217710-19 C


me = massa do eltron: 9,1093910-31 kg
e/me = razo carga/massa para o eltron: 1,75881011 C/kg

Para que o eltron se mova sobre uma rbita circular, deve ser F(r) = -mv2/r.
Desta relao resulta a seguinte equao para a velocidade v

qe
v= = C
2 0 me

Ou seja, eltrons que se movem ao longo de uma trajetria circular tm a


mesma velocidade, independente do raio.

Primeiro vamos usar variveis reduzidas, depois colocamos as variveis com as


unidades normais de s, m e m/s.

No primeiro programa escolhemos como novas unidades x0= 10-2 m e t0=10-6s.


Uma unidade natural para a velocidade seria v0 = 104 m/s. Esta escolha tem
como conseqncia que C= 108 m2 s-2. Para que C tenha este valor, temos que
tomar q = 3,16310-14 C/m. Utilizando estes valores, obtemos Ct02/x02 = 1.

Assim, no primeiro programa, y0 = 5 significa um comprimento de 510-2 m = 5


cm. A velocidade u0 = 1 significa uma velocidade real de 104m/s. O intervalo h
= 0.5 , na realidade, igual a 510-7 s.
275

Vemos a trajetria circular para v = 104 m/s. Voc poder utilizar outros raios,
ou seja, outros valores para y0, p.ex. y0 =1, para ver que sempre obter um
crculo como trajetria.

Se voc mudar a velocidade de u0 =1 para u0 = 0,5 (= 5 000 m/s), o resultado


ser uma trajetria em forma de roseta que no se fechar. Veja a seguinte
figura:
276

Agora fazemos o mesmo calculo usando variveis normais. No programa


introduzimos y0 = 0.05m, u0 = 1E4m/s e h = 5E-8s. Para a constante C
obtemos C = 1,000E8.

O grfico , outra vez, um crculo como na figura anterior, mas, nos eixos
temos metros em vez de centmetros.

O tomo hidrognico
O tomo de hidrognio constitudo por um eltron e um prton. Devido sua
simplicidade, o tomo de hidrognio desempenhou um papel central no desen-
volvimento da fsica quntica.

Apesar de ser um sistema simples, o problema de resolver a equao de


Schrdinger para o tomo de hidrognio bem complicado, pois trata-se de um
problema tridimensional, onde a funo U depende da coordenada radial r.

Para a grande maioria dos problemas existentes na natureza, as respectivas


equaes de Schrdinger no podem ser resolvidas exatamente, e o tomo de
hidrognio e sua srie isoeletrnica (He+, Li++, etc.) pertencem a este pequeno
grupo dos problemas exatamente resolvveis. O H+ um tomo de hlio
ionizado, o Li++ um tomo de ltio duplamente ionizado.

Segue aqui a equao radial de Schrdinger:

1 d 2 dR 2
r + [E U(r )]R = l(l + 1)
R
(1)
r 2 dr dr h 2 r2
277

No caso do tomo de hidrognio temos, porem, uma dificuldade adicional, pois


a equao (1), que queremos resolver, tem dois termos com singularidades,
em 1/r e 1/r2. No programa, comeamos os clculos no em r = 0, mas sim em
r + d, onde d um nmero pequeno, 1E-8, que nos protege do perigo de uma
diviso por zero.

Primeiro ser preciso de formular a equao (1) numa forma mais apropriada
para o clculo numrico.

Vamos mudar a varivel r por a varivel sem dimenso , definida por

:= 2Z/na0r := r (2)

O nmero quntico, n, definido por

E:= - e4Z2/(40)222 n-2 (3)

a0 = 0h2/e2 ou a0 = 2/e2 (cgs) 0,52910-8cm o primeiro raio de Bohr.


Para expressar E no sistema cgs preciso substituir 0 por 1/4: Ecgs = -
e4Z2/(22n2).

Aplicando estas abreviaturas, podemos reduzir a equao de Schrdinger a


uma forma bastante simples

R"() + 2/ R'() + (n/ -1/4 - l(l+1)/2) R() = 0 (4)

Usamos R() em vez de R(r) para indicar que estamos usando a varivel
adimensional = r com = 2Z/na0.

O programa a seguir utiliza o mtodo de Runge-Kutta com os valores de


contorno R(0) = 0 e R'(0) = 0.2041. Na proximidade de = 0 empregamos uma
aproximao linear: f = x + ut.
Agora, consideramos o caso com n=3 e l=0. Para usar a varivel , temos que
substituir r/a0 por 3/2. Isso significa que e-r/3ao = e-/2 .

O programa calcula a densidade de probabilidade radial R(r)2 r2. Esta funo


nos d a probabilidade de encontrar o eltron num tomo de hidrognio em
certa distncia r do ncleo (prton)

Apresentamos aqui por fines de comparao a funo analtica da distribuio


radial.

(n=3,l=0): R(r) = 2(1/3a0)3/2 (1 - 2/3 r/a0 + 2/27 (r/a0)2 ) e -r/3a0

ou R() = ao-3/2/93 (6 - 6 + 2) e-/2

Na planilha a seguir, comparamos os valores numricos com a soluo analtica.


278
279

No programa, utilizamos a funo F = -2*u/t+(1/4+l*(l+1)/t^2-


n/t)*x apenas a partir de t > 0,00001.

O grfico do estado (3,0) tem trs picos. O valor mais provvel fica na distncia
r 13,5a0 13.5 0,52910-8cm = 7,1410-8cm. A teoria d para a distncia
mais provvel (valor esperado) a expresso

n 2a0 1 l (l + 1)
< rnl >= 1 + 1 (5)
Z 2 n 2

Em nosso caso, obtemos desta equao tambm <r30> = 9a0(1+0.5)= 13.5a0.

Uma representao detalhada da teoria do tomo de hidrognio pode-se


encontrar no site http://www.geocities.com/Athens/Agora/6594/indexsci.html
283

Captulo 17
Exemplos selecionados

Queda de uma esfera atravs dum fluido

Uma esfera de massa m e raio R cai com velocidade inicial zero a partir de x =
0. Subdividimos a distncia da queda, H, em n intervalos, cada um de compri-
mento h = H/n.

Para cada intervalo calculamos a velocidade mdia usando (vi + vj)/2.


Ao longo de cada intervalo, consideramos a acelerao como sendo constante.
A acelerao no intervalo nmero j (= intervalo-j) dada por

aj := (vj - vi)/(tj - ti) = g[u-((vi+vj)/(2v1))2] (1)

A constante v1 definida por v12:= 8Rgc/(3C) onde = densidade do fluido


(1000 kg/m3 para gua), c = densidade da esfera (7800kg/m3), R = raio (4mm),
C = 0.4 e g = 9.81m/s2 .

O tempo de cada pelo intervalo-j

tj - ti = (2h)/(vi + vj) (2)

Esta expresso introduzimos em equao (1), juntamente com a abreviatura

b:= g*h/(2v1)2 (3)

Chegamos, assim, seguinte frmula de iterao:

vi+1 = [(vi2 + 4buv12(1+b))1/2 -bvi]/(1+ b) (4)


284

Em vez de vj temos escrito vi+1, alm disso temos u := 1-/c. Para determinar o
tempo de queda, temos que somar os tempos parciais tj, gastos nos n
intervalos, veja eq. (2). Calculamos este tempo da seguinte maneira:

(5)

Resultado: T = 0,25111 segundos para H = 20cm

O pndulo com amplitude arbitrria

A equao de movimento y"(t) = -sen y(t) com os valores iniciais y(0) e y'(0).
Ningum ser capaz de resolver esta equao em forma "fechada". Uma
soluo aproximada obtm-se somente por meios numricos. Neste pargrafo,
vamos desenvolver um mtodo iterativo muito simples. Trata-se duma queda
com vnculo.
285

Esta vez subdividimos a amplitude o em n partes de igual tamanho = o/n.

O pndulo precisa t segundos para percorrer o ngulo = s/L. A soma de


todos os elementos t d o perodo T:= ToKo onde Ko um fator de correo,
dependendo do ngulo o, e To = 2 (L/g)1/2 o perodo do pndulo simples.
Suponhamos que a acelerao tangencial seja constante no intervalo t. Temos

at = (vi+1 - vi)/t = gsen (6)

A velocidade mdia no intervalo t (vi + vi+1)/2, e o arco, passado pelo


pndulo em t segundos, ser s = (vi + vi+1) t/2 = L . Assim, obtemos

vi+1 = vi + g t sen (7)


t = 2 L /(vi + vi+1) (8)

Substituindo t da primeira equao pelo t da segunda, resulta a seguinte


frmula de iterao para a velocidade

vi+1 = (vi2 + 2 L g sen)1/2 (9)

A soma de todos os t entre = o e = 0 proporciona o tempo T/4, e o


perodo completo

(10)

O fator de correo vem dado por

(11)

Ko depende, aparentemente, de g e L. Mas, isso no o caso, pois, se intro-


duzirmos uma grandeza u sem dimenso como

v := u (g L)1/2 (12),

podemos eliminar (g L)1/2 e ns obtemos vi + vi+1 = (g L)1/2 (ui + ui+1), onde


pusemos

ui+1 := (ui2 + 2 sen)1/2.


286

Finalmente, resulta

(13)

Resultado: K0 = 1,01742 para 0 = 30 graus. T = K0T0

Para t suficientemente pequeno, a preciso do mtodo de iterao pode


produzir resultados com at trs ou quatro dgitos decimais corretos.

Trajetria Lua-Terra (Problema restrito)

No chamado "Problema restrito de trs corpos" movem-se dois corpos


pesados em torno do centro de massa comum enquanto um terceiro corpo leve
move-se no mesmo plano que os corpos pesados. Podemos imaginar-nos uma
sonda espacial m3 que se move no campo gravitacional da Terra m1 e da Lua
m2. A influencia do Sol no tomada em conta.

Na figura vemos Terra e Lua sobre o eixo-x de um sistema de coordenadas


que gira com velocidade angular constante.

Os dois corpos descrevem crculos complanares em torno do seu centro de


massa.
287

A Terra tem do Sol a distncia b1 = md, sendo m := m2/(m1+ m2). A distncia


entre Sol e Lua b2 = m'd com m' = 1-m. A velocidade angular tem a direo
do eixo-z e o seu valor vem dado pela expresso 2 = G (m1 + m2)/d3.

Num sistema inercial, a segunda Lei de Newton rezaria m3 a = F1 + F2, onde F1


e F2 so as foras devido a m1 e m2. Em nosso sistema, no inercial, temos que
introduzir duas foras "inerciais". So a fora centrfuga: Fc = -m3 x ( x r) e
a fora CORIOLIS Fcor = -2 m3 x vrel.

As equaes de movimento para as duas coordenadas de m3 so

(6)

(7)

A unidade de tempo foi escolhido de tal forma que = 1, ou seja para que o
tempo para uma rotao do sistema de coordenadas fosse T = 2.
As distncias d1 e d2 so

d12 = (b1 + x)2 + y2 = (md + x)2 + y2 (8)

d22 = (b2 - x)2 + y2 = (md - x)2 + y2 (9)

A massa ser m = 0.012277471, se tomarmos d = 1.

As condies iniciais sero x0 = 0.994 (ou seja, do lado direito da Lua),


y0 =0, dx(0)/dt := vx(0) = 0 e dy(0)/dt := vy(0) = -2.1138987966945.
288

Esta enorme quantidade de casas decimais necessria, pois os clculos so


muito sensveis com respeito a variaes delas. Nos primeiros tempos dos
vos espaciais, foi absolutamente necessrio de no permitir uma diferena da
"injection speed" de 10840 m/s por mais de 1 m/s. Com uma diferena de > 2
m/s, a Lua no houvesse podido ser atingido, pois no houve possibilidade de
corrigir a trajetria durante o vo.

Voc pode estudar, agora, estes fatos usando o seguinte programa. (Na poca
dos primeiros PCs, o clculo da trajetria durava, numa HP-85, 4 horas!)
289

Na figura da planilha, observamos uma trajetria de "regresso" que nunca


atingir a Terra.

Posio da Terra: x(0) = -0,01228, y(0) = 0 e a da Lua: 0,9887, y(0) = 0. A


sonda parte no lado direito da Lua em x(0) = 0,994 e y(0) = 0.

Na seguinte figura, temos v0 = -2,0325, h = 0,002 e imax = 5500


290

Osciladores acoplados
(Compare com Interferncia no captulo 5)

Agora vamos estudar o caso de dois osciladores acoplados, trocando energia


entre si mesmos.

Consideramos o modelo ilustrado na seguinte figura:

Duas "partculas" de massas m1 e m2 so presas uma outra e a paredes fixas


por molas. No estado relaxado, as molas tm os comprimentos l01,l0 e l02.
Na posio de equilbrio, elas tm o comprimento l1 e l2 (neste estado as molas
sim podem ser esticadas, ou seja, l1 no necessariamente igual a l01, etc.).

Sobre a massa m1 atuam quatro foras: m1g, N1, T1 e T1', analogamente para
m2 .

A segunda lei de Newton para m1 e m2 reza:

m1g + N1+ T1 + T1' = m1 a1 (1)

m2g + N2+ T2 + T2' = m2 a2 (2)

Para os deslocamentos (supomos que x2 > x1) podemos escrever

m1x1" = -k1(s1 + x1) + k(s + x2 -x1) (3)

m2x2" = -k(s + x2 - x1) + k2(s2 - x2) (4)

Os coeficientes significam s = l - l0, s1 = l1 - l01, s2 = l2 - l02, ou seja, eles so os


alongamentos que as molas j tm no estado de equilbrio.

A energia potencial do sistema vem dada pela seguinte expresso


291

Ep = k1(s1 + x1)2/2 + k(s + x2 -x1)2/2 + k2(s2 - x2)2/2 (5)

Supomos agora, simplificando, que as molas estejam, no estado de equilbrio,


distendidas e que tenham os mesmos comprimentos. Neste caso particular, as
equaes de movimento (3) e (4) assumem as seguintes formas

x1" = - ax1 + bx2 (6)

x2" = - cx2 + dx1 (7)

A equao para x1 contm com x1 tambm x2, e na equao para x2 parecem


tanto x2 quanto x1. Ambas as equaes esto, por isso, acopladas, elas formam
um sistema de duas equaes diferenciais acopladas.

As constantes so definidas da seguinte maneira:

a:=(k + k1)/m1,
b:= k/m1,
c:= (k + k2)/m2,
d:= k/m2 (8)

Resolveremos o sistema (6)-(7) numericamente. (Nos limitaremos a considerar


o caso particular de duas massas iguais, tomando k1 = k2 := k0 e a = c =
(k+k0)/m e b = d = k/m.)

No comeo, a massa m2 foi deslocada por x2(0) = 1 e logo liberada, enquanto


m1 estava em x1(0) = 0 (temos m1 = m2). Logo de soltar o segundo oscilador,
observamos como as suas oscilaes so transmitidas para o primeiro e que a
fase de deslocamento do oscilador m1 est sempre atrasada de um ngulo de
90o em relao ao oscilador 2, que comea o movimento. (Precisa-se mover o
grfico de m1 de 90o esquerda, para obter fases idnticas.) Devido
defasagem entre os dois osciladores, h uma troca de energia entre eles.

Ambas as massas executam um movimento de batimento. Da figura podemos


ver que o tempo entre dois valores mnimos da amplitude (= tempo do bati-
mento) de 28 s. O perodo da oscilao prpria aproximadamente de 5,5 s.
A primeira figura mostra somente o oscilador 1, o que faz que podemos ver os
pormenores do movimento com maior nitidez. Usamos o programa "Runge-
Kutta2" com as seguintes funes:
292

A segunda figura mostra os deslocamentos das massas m1 e m2 superpostos no


mesmo grfico. (x1(0) = 0, x2(0) = 1).

O programa permite fazer um estudo completo das oscilaes com diferentes


condies iniciais. Podemos detectar que existem dois modos de oscilao, fala-
se de modos normais ou fundamentais, para os quais a defasagem 0o ou 180o
e nos quais no h transferncia de energia.

O primeiro modo normal temos quando x1(0) = x2(0) = A, p. ex. A = 1. Os dois


osciladores movem-se em fase. A mola do centro no sofre deformao e,
portanto, no exerce fora sobre as massas. elas movem-se como se no
estivessem acopladas. Ambas massas oscilam com a mesma freqncia 0 =
(k0/m)1/2.

No segundo modo normal, os dois osciladores movem-se em oposio de fase


(temos uma diferena de fase de ) com x1(0) = -A e x2(0) = A (=1). A
freqncia agora maior do que a freqncia sem acoplamento = (02 +
2k/m)1/2, pois nesse caso, o centro da mola de acoplamento fica sempre em
repouso, isso como se fosse reduzido o comprimento da mola central
metade do comprimento original, ou, o que o mesmo, como sua constante de
293

mola fosse agora 2k. (Podemos chamar os modos fundamentais de modos


puros, os outros sero modos mistos.)

Em todos os outros casos, observamos batimentos, ou seja, uma variao nas


amplitudes dos osciladores. Este fenmeno ocorre quando dois movimentos
harmnicos simples que tm a mesma direo e freqncias diferentes
interferem. O resultado da superposio especialmente interessante quando
as amplitudes so iguais. Nesse caso, podemos observar uma flutuao de
amplitude.

Qual a velocidade de uma bala no cano? Qual a velocidade do projtil


quando sai da boca do cano?

O cano de um rifle tem 45cm de comprimento, o de um canho tem 3,60m.


Estes so dados que variam, obviamente, com o produtor e com o tempo. Para
responder s perguntas postas, aplicamos, primeiro, um modelo simples. Em
seguida vamos nos basear em valores experimentais. O nosso tratamento vai
fazer uso do mtodo de Simpson.

1. Modelo simples para a acelerao

Usaremos, primeiro, o seguinte modelo linear:

a(t) = b ct para 0<t<0,05s; a(t) = 0 de resto

Podemos adaptar as constantes b e c velocidade final conhecida. (Sabe-se


que uma bala atirada por um fuzil sai do cano com a velocidade de 900m/s.)
A seguinte planilha mostra os resultados para b = 20000 e c = 35000.
294

A velocidade cresce quase linearmente e a bala sai, depois de 0,049 segundos,


com a velocidade de 938 m/s.

Para o modelo escolhido, a velocidade v(t) = bt ct2/2 + v0.

Entradas:

A5: 0; B5: =A5-H$3; C5 = SE(A5<=0,05; H$5-H$6*A5;0); copiar at C60.


D5: =SE(B5<=0,05;H$5-H$6*B5;0); E5: =H4. Copiar D5 at D60.
F5: =H$5*A5-H$6*A5^2/2+H$4 (soluo analtica)
A6: =A5+H$2; copiar at A60. B6: =A6-H$3; copiar ate B60
E6: =H$2*(C5+4*D6+C6)/6+E5 (Simpson); copiar at E60

2. Modelo realista

Agora utilizamos os dados experimentais da distribuio da presso no interior


do cano do rifle M14 (M.L. James et al. Applied Numerical Methods, Internatio-
nal Textbook Co., 1967)

Dados: m = 0,0215 lb (=9,75g); seo transversal do cano: A = 0,07069 inch2


(= 0,456 cm2).

Na planilha, encontramos o perfil da distribuio de presso ao longo do cano.


295

Da lei de conservao da energia no intervalo [xi,xi+1] resulta para a velocidade

2 A xi +1
x&i +1 = x&i2 + p( x)dx
m xi

x 1
Para o tempo obtemos uma frmula de recurso: ti +1 = ti + i +1 x& dx
xi

As integrais sero aproximadas pelo mdio aritmtico.

Entradas:

C6: =RAIZ(G$4*(B5+B6)*1000*0,5/2); a partir de C18 temos ....1000*0,5


E6: =3*A6/C6 (=valor inicial para t)
C7: =RAIZ(C6^2+G$4*(B6+B7)*1000*0,25); a partir de C18: ....1000*0,5
E7: =E6+((1/C6+1/C7)*0,25)*1000 at E17
E18: =E17+((1/C17+1/C18)*0,5)*1000 at E35

Depois de 1,5ms, a bala sai do cano com uma velocidade de 927 m/s.

A vida difcil das bactrias.

No seguinte exemplo, estudamos o crescimento de uma cultura de bactrias.


No primeiro caso, supe-se que as bactrias morrero devido ao limitado
espao do ambiente. Neste caso, a sua taxa de mortalidade vai ser proporcional
ao nmero de bactrias j presentes.
O nmero de bactrias no fim da semana x vai ser y = (1+p/100)y (ry)y onde
p o fator de crescimento semanal e r o fator de mortalidade por semana.
296

Entradas:

B5: =F17 (populao inicial)


B6: =(1+$F$19)*B5-$F$18*B5^2; copiar at B20
Para o grfico foi selecionado 1p como largura da linha.

O modelo mostra que a cultura tende a um valor limite de 200 bactrias.

Muito diferente ser a situao, se levarmos em conta o lixo que as bactrias


produziram e deixaram na cultura. O nmero de bactrias no fim da x-esima
semana vem dado pela seguinte relao y = (1+p/100)y (rn)y onde n o
nmero total das bactrias que viveram na cultura.

As bactrias se asfixiam no prprio lixo!

Entradas:

C5: =B5; C6: =B6+B5; copiar at C20


B5: =F17
B6: =(1+$F$19)*B5-$F$18*B5*C5; copiar at B20
297

Passeio aleatrio de uma molcula

Nesta seo, queremos simular o caminho aleatrio de uma molcula num gs.
Isto o modelo matemtico para uma famlia muito ampla de processos. (Uma
analogia o caminho pouco controlado de um bbado num campo aberto. Aps
cada passo, ele se esquece para onde ia e toma um rumo diferente. Suporemos
que ele inicia seu caminho aleatrio num poste no meio do campo, a nossa
origem das coordenadas. O nosso objetivo determinar onde o bbado se
encontra aps um numero N de passos.)
Para a investigao anloga no caso de uma molcula num gs, precisamos de
algumas frmulas da estocstica:

1. O livre percurso mdio de uma molcula de gs dado pela formula


T
= 31073
pd 2
d = dimetro da molcula e so expressados em Angstrm (10-10m)
p = presso do gs, mede-se em mbar

Para T = 300K, p = 1000mbar e d = 3E-10m, temos = 1036 Angstrm.

2. Se a molcula se encontra, aps uma coliso, no ponto P(x,y), ento


percorrer, em seguida, a distncia s sob o ngulo (medida em relao
ao eixo-X) at o ponto P' = (x',y') da prxima coliso. As suas coorde-
nadas so
x' = x + s cos()
y' = y + s sen()

onde s = -lnR1 e = 2R2. R1 e R2 so nmeros aleatrios que o Excel


determina com =ALEATRIO().

Entradas:

1. Na linha 10, encontram-se os valores iniciais de todos os dados:


B10: 0 (=R1); C10: 0 (=R2); D10: 0; E10: =G$1; F10:H10 0
2. Na linha 11, colocamos as frmulas que copiamos at a linha 210
3. B11: =ALEATRIO() (=R1); C11: =ALEATRIO() (=R2)
4. D11: =2*PI()*B11; E11: =-G$1*LN(C11); F11: =E11+F10
G11: =G10+E11*COS(D11); H11: =H10+E11*SEN(D11)
5. Em F5 temos a distncia linear entre o ponto inicial e o ponto final,
ou seja, F5: =RAIZ(H210^2+G210^2)
6. F6 contm o livre percurso mdio, ou seja =F210/A210

Para o grfico, selecionamos o intervalo G10:H210. Todas as vezes que


pressionamos a tecla F9, obtemos uma nova simulao (clculo manual).
A molcula comea o passeio em (0,0) e faz N = 200 colises.
298

Para simular colises moleculares no computador, precisamos da distribui-


o dos livres percursos mdios no gs. Sabe-se que eles seguem uma
x
distribuio exponencial e que a funo densidade f ( x ) = e / .

Finalmente, a molcula encontra-se na distncia L = xN2 + y N2 da origem.


L/N uma boa estimativa de .
(A base terica de nosso tema pode-se encontrar em F.J. Mehr, Simulation
von stochastischen Trajektorien, Praxis d. Naturwissenschaften, Physik
11,329,1983.)

O efeito Compton

A.H. Compton realizou, em 1923, experimentos nos quais raios X eram espal-
hados por um alvo de grafite. O comprimento de onda dos raios espalhados por
um dado ngulo , medido em relao direo incidente, era determinado
utilizando a difrao de Bragg. Compton mostrou que a radiao espalhada
tinha uma freqncia mais baixa do que a incidente.

Modelo:

Antes da coliso, temos um eltron em repouso e um fton incidente, depois


da coliso, vemos um fton ' espalhado e um eltron que se move com
energia cintica Ec = hc/ hc/'. (O fton incidente d origem a um novo
fton de menor energia.)

Para analisar o efeito Compton, necessrio levar em conta que o efeito


relativstico j que o fton uma partcula relativstica que viaja velocidade da
luz. Isso significa que devemos usar as equaes da relatividade para a
variao da massa, da energia e do momento linear.
299

Introduzimos e do fton incidente nas clulas B4 e B5. As demais quanti-


dades calculam-se na seguinte ordem:

1. ' = + c(1-cos()) com c = hc/E0 (= comprimento de onda de


Compton) e E0 = m0c2
' = comprimento de onda do fton aps da coliso
2. Ec = hc/ hc/' (=energia cintica do eltron)
3. pc de (pc)2 = Ec2 +2E0Ec
4. ngulo de espalhamento do eltron da componente do momento em
relao direo y: -pcsen() + hcsen()/' = 0
5. A equao pccos() + hccos()/' = hc/ (componente do momento na
direo-x) pode ser usada como controle.

Entradas:

Em B29:B34 ficam as constantes e, m0, c, h, hc, E0


B34: B$30*B$31^2; B35: =B34/B29
300

D3: =D2*1000*B29; D4: =B33/D$3; B4: =D4


G14: =B$27; G15: =360-(G14+G16); G16: =B$5
B18: =B33/B4/B29/1000; B19: =H19/1000; B20: =H20/1000
F18: =B$33*SEN(B$21)/B$22; F19: =B33/B22
F20: =B$23; H18: =B$25*SEN(B$26); H19: =F19/B29
B21: =B5*PI()/180; B22: =B$4+B$33*(1-COS(B$21))/B$34
B23: =B$33*(1/B$4-1/B$22); B24: =B23/B29; H20: =B$24
B25: =RAIZ(B23*(2*B34+B23))
B26: =ASEN(B$33*SEN(B$21)/(B22*B25))
B27: =B26*180/PI()

Circuito RLC com fonte alternada

A figura mostra um circuito RLC paralelo forado por um gerador senoidal de


freqncia angular . A impedncia Z de um elemento do circuito, submetido a
uma voltagem alternada, a razo entre a queda de voltagem nos terminais do
elemento e a corrente passando pelo mesmo.

Impedncia do resistor: Z=R


Impedncia do indutor: Z = -iL
Impedncia do capacitor: Z = i/C

Para o valor absoluto da impedncia do circuito representado, obtemos

1 R 2 + ( L)2
| Z |=
C R 2 + ( L
1 2
)
C

A defasagem entre a tenso U e a corrente I dada pela seguinte relao


301

L
tan = (1 2 LC ) RC
R

(tan definido por Im(Z)/Re(Z) e o ngulo de fase da tenso em relao


corrente e no o ngulo de fase da corrente em relao tenso. Assim
temos: = u - i)
No caso de ressonncia, ou seja = 0, resulta

1 R2
res
2
=
LC L2

Na maioria dos casos, temos R2C/L << 1 e res (1/LC)1/2.


As correntes parciais, IL e IC, nas duas ramificaes do circuito podem ser muito
maiores do que a corrente total. Fala-se de ressonncia da corrente.
Na figura seguinte, estudamos a ressonncia da impedncia |Z| para trs
diferentes valores de R.

Cada curva foi calculada por meio do seguinte programa:


302

Para o seguinte circuito queremos criar uma planilha onde inserimos todos os
clculos em forma detalhada.

As formas complexas das impedncias so:

R1, L1: Z1 = R1 + L1i; R1 = R


R2, L2: Z2 = R2 + L2i; R2 = 0
R3, C : Z3 = R3 - 1/(C)i; R3 = 0

Ns calculamos a impedncia do circuito paralelo com Zp = Z1Z2/(Z1+Z2)

Entradas:

B10: =2*PI()*B6; C10: =D6; D10: =B10*F6; E10: =E6


F10: =B10*G6; G10: =C10*E10-D10*F10; H10: =C10*F10+D10*E10
B14: =C10+E10; C14: =D10+F10; D14: =B14^2+C14^2
E14: =(G10*B14+H10*C14)/D14; F14: =(H10*B14-G10*C14)/D14
G14: =E14; H14: =F14-1/(B10*H6); I14: =RAIZ(G14^2+H14^2)
B18: =C6/I14; C18: =B18*RAIZ(E14^2+F14^2); D18: =B18/(B10*H6)
E18: =C18/RAIZ(C10^2+D10^2); F18: =C18/RAIZ(E10^2+F10^2)
G18: =C6*B18*COS(H18*PI()/180) (= potencia total em Watts)
H18: =ATAN(H14/G14)*180/PI() (= em graus)
I18: =E18*B10*F6 (= tenso em L1); I20: =E18*D6
303

A distribuio de Poisson

Eventos raros obedecem muitas vezes a uma distribuio de Poisson. Ela


freqentemente usada para modelar dados de contagem, por exemplo, para
descrever o nmero de partculas Alfa emitidos pelo Polnio-210 num certo
intervalo de tempo.
Em 1910, E. Rutherford e H. Geiger registraram 2608 vezes o nmero de Alfas
emitidas em 7,5s. (Phil. Magazine (6) 20, 1910, p.698). Havia 6 intervalos de
7.5s com 11 ou mais eventos (pulsos).

A planilha abaixo mostra os resultados observados e o anlise deles:

Para criar esta planilha, precisamos das seguintes frmulas:

1. A funo de densidade de probabilidades da distribuio de Poisson:

f p ( x, ) = x e / x! (1)

O mdio aritmtico fornece uma estimativa para . As freqncias


esperadas calculamos com fi,e = Nfp(xi,). N = soma das freqncias
observadas fi,o.

2. Para o clculo do valor crtico de Qui2, podemos utilizar a funo INV.QUI


do Excel ou a seguinte expresso:

2 2 z3 7 z
f + z 2 f + ( z 1) +
2

3 9 2f (2)

(6 z 4 + 14 z 2 32) /(405 f )

z = 1- (nvel de confiana) da distribuio Padro Normal


304

Para f > 30 pode-se usar uma frmula mais curta:

2 2 3
2 f (1 +z ) (3)
9f 9f

Entradas:

1. Nas colunas A e B ficam os valores experimentais


2. C6: =A6*B6; copiar at C17
3. D6: 1; D7: =D6*A7; copiar at D17(=fatorial)
C18: =SOMA(C6:C17); C19: =C18/B18
4. E6: =C$19^A6*EXP(-C$19)/D6; copiar at E17
F6: =E6*B$18; copiar at F17
5. G6: =(F6-B6)^2/F6; copiar at G17
G18: =SOMA(G6:G17) (=quantidade de teste de Qui2)
J que esta quantidade menor do que o valor crtico de Qui2
(=18,308), podemos supor que os dados experimentais sigam a
distribuio de Poisson. Em G23 fica a funo =INV.QUI(0,05;B23) para
determinar o valor crtico de Qui2. Este valor foi calculado para um nvel
de confiana de 95%. O nmero dos graus de liberdade f =12 - 2 =10.
6. Para aplicar a frmula (2), podemos escrever no E24
=B23+(2*B23)^0,5*G30+2*(G30^2-1)/3+(G30^3-
7*G30)/((2*B23)^0,5*9)-(6*G30^4+14*G30^2-32)/(405*B23)
7. D26: =SE(B26<0,5;1-B26;B26)
G26: =RAIZ(-2*LN(1-D26))
G27: =2,515517+G26*(0,802853+0,010328*G26)
G28: =1+G26*(1,432788+G26*(0,189269+0,001308*G26))
G29: =G26-G27/G28
8. Em G30 fica o valor z: =SE(B26<=0,5;-G29;G29)
9. Em G31 calcula-se uma aproximao valida para f > 30:
=B23*(1-2/(9*B23)+G30*RAIZ(2/(9*B23)))^3
Esta frmula usamos somente com o intuito de comparar os mtodos.
O grfico foi feito com Inserir>Colunas>2D. Para editar o eixo horizontal
prossiga assim: Marcar o grfico e selecione Design>Selecionar
Dados>Rtulos do Eixo Horizontal>Editar.
Selecionar com o mouse o intervalo A6:A17>OK>OK

aconselhvel comparar este exemplo com o teste de distribuio Normal


no captulo anterior.
307

Captulo 18
Caixas de dilogo personalizadas (formulrios, userforms)

Na seguinte figura, vemos uma calculadora que determina a rea de um crculo.

A pergunta bvia : Puxa, como se faz isto?

Resposta: Abra o editor do VBA (Alt+F11) >Inserir>UserForm.


Voc vai ver uma grade de pontos ("grid") e uma Caixa de ferramentas. Para
criar a calculadora, voc precisar de trs destas ferramentas: dois rtulos
(Label, "A"), dois caixas de texto (TextBox, "ab") -para inserir o raio e para
mostrar o resultado- e dois botes de comando (CommandButton). Os nmeros
nas caixas de texto sero interpretados como strings, ou seja textos. D um
clique com o boto esquerdo sobre uma ferramenta e arraste a sobre a grade
de pontos. Este conjunto de grade e objetos o formulrio. Ajuste a posio
e o tamanho destes elementos no formulrio conforme indicado na figura.
308

Agora podemos substituir os "Labels" e as inscries nos botes pelas


designaes desejadas, por exemplo: "Raio", "rea", "Calcular" e "Exit".
(As propriedades de quaisquer controles no formulrio podem ser mudadas.
Mas pode-se tambm usar as designaes propostas pelo editor do formulrio.)
D um clique no elemento a editar e coloque, com outro clique, o cursor no
texto. Escreva "Raio", etc. Selecione o novo texto e d um clique do boto
direito nele. Abra a janela Propriedades (F4). Com Font podemos ajustar o
fonte, o estilo e o tamanho das letras. Com Width = 35 reduzimos a largura da
caixa a 35 pontos. Este processo repetimos com o outro rtulo e com os
botes. (Podemos, tambm, mudar o tamanho do elemento e sua posio
diretamente com o maus. Podemos fazer todo o processo da nomeao com a
janela de Propriedades aberta e editando um controle aps outro. Note que
com "Caption" damos um nome a um boto.)

Tambm podemos nomear as duas caixas de texto -e o formulrio mesmo-


pressionando F4. No cdigo, vamos referirmos a estes controles por meio dos
seus nomes, "raio" e "area". (Poderamos usar os nomes propostos pelo editor,
mas eles fazem com que o cdigo seja um pouco crptico. Mais frente,
utilizamos esta tcnica no exemplo da calculadora para nmeros complexos.)
Finalmente, preciso escrever, para cada boto de comando, um pequeno
procedimento que dir ao boto o que deve fazer quando pressionado.
(Precisamos escrever o cdigo que ser executado quando o evento Click
dispara; caso contrrio, clicar no boto no ter conseqncias, nada
acontecer.)
309

Com F5 podemos executar o formulrio. (Deve-se usar um ponto decimal no


valor do raio, pois, no captulo 7, vimos que Val no reconhece vrgulas.)

Seria muito agradvel, poder executar o formulrio diretamente da planilha por


meio de um boto de comando.

Isso pode ser realizado facilmente:

Na planilha, selecionamos por meio de Desenvolver>Inserir>Controles ActiveX


um boto de comando. D um duplo-clique com o boto esquerdo do mouse
sobre o boto de comando e escreva o seguinte cdigo:

Para ativar o boto pode ser necessrio executar, primeiro, o formulrio com
F5.
310

Exemplos:

Tringulo

No formulrio, vemos uma calculadora que determina a rea de um tringulo


por meio de A = s ( s a )( s b)( s c) onde s = (a+b+c)/2.
No cdigo do boto "Calcular", inclumos tambm as condies sob as quais os
trs nmeros introduzidos formam um tringulo, ou seja "a < b+c e b < a+c e

c < a+b". Tambm foi includo o controle "Quadro" com o cone . O


desenho mesmo foi feito com o "Paint" e introduzido no formulrio com Ctrl+C,
Ctrl+V. (Deve-se selecionar na janela Propriedades a propriedade Picture,
colocando o cursor na segunda coluna, ou seja sobre "(Nenhum)".) Neste
exemplo, o controle Quadro foi introduzido para mostrar que ele existe e como
pode ser usado. Muita utilidade no tem, neste exemplo. Mas, em outros casos,
pode ser bastante til, por exemplo num formulrio para determinar as
correntes, tenses, etc. num circuito eltrico ilustrado num "Quadro".
311

O cdigo do boto na planilha reza

Uma calculadora para nmeros complexos

No captulo 7, falamos muito sobre os nmeros complexos e sua implemen-


tao no Excel. No captulo 7, encontramos tambm as frmulas necessrias
para criar a calculadora. O exemplo calculado embaixo, foi tomado do mesmo
captulo, trata-se da diviso dos nmeros z1 = -0,5 0,866i e z2 = -1 +1i.

Os botes +, -, x e / foram feitas reduzindo apropriadamente o tamanho de


quatro botes de comando. Neste exemplo, usamos os "Labels" e os
"TextBoxes" que o editor fornece, ou seja, no foram introduzidos novos nomes
ou ttulos. Este mtodo no muito aconselhvel, mas, ele resulta ser muito
rpido e efetivo quando o nmero dos controles for muito grande.
312

Como sempre, criamos, primeiro, o formulrio e s depois escrevemos o


cdigo. (Clique no menu Janela do Visual Basic Editor, para poder eleger entre
cdigo ou formulrio.)
313

Os procedimentos so rapidamente escritos, pois trata-se, essencialmente, de


um original e trs cpias do mesmo cdigo.

O cdigo para o boto de comando na planilha contm a designao padro


"UserForm1".

Antes de usar o boto, deve-se executar uma vez o formulrio com F5.

Você também pode gostar