Sei sulla pagina 1di 291

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 f
x
(para editar o contedo de uma
clula, melhor faz-lo no campo ao lado do cone f
x
). 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 =
45
o
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:
1 1 1
2 2 2
(( )cos ( ) ))
' (( ) ( )cos ))
x b x d y d sen d
y b x d sen y d d


= +
= + +

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 f
x
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-x
0
) + y
0

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

e de y
0
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 X
1
= (x
1
;y
1
) anteriormente, no caso da rotao da
seta. Esta transformao podemos escrever como x' = R(x-x
1
)+x
1
onde R a
matriz de rotao no sentido anti-horrio (=trigonomtrico):
cos
cos
sen
R
sen


=



Em forma explcita temos:
1 1 1
1 1 1
' ( )cos ( )
' ( ) ( )cos
x x x y y sen x
y x x sen y y y


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

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:
A transformao dada pela matriz A =
3 1
1 3




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



=







=
2 0 cos30 30
0 2
30 cos30
o o
o o
sen
sen








Isto significa:
' 3
'
3
x x y
y
x 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:

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

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

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


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
1
0
1 1
1; 1
0 1
2 2 2
1; 2; 1
0 1 2
3 3 3 3
1; 3; 3; 1
0 1 2 3
.......................................................

=



= =



= = =



= = = =




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:
2
0
, 2
1
, 2
2
, 2
3
...
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 f
x
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 f
x
. 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 f
x.
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 f
x
).
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 f
x
. 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 E
max
=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 M
n
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 j
n
= 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 : j
1
= 10000 0,05 = 500.
O montante no final do primeiro ano ser: M
1
= c + j
1
= 10000+500 = 10500.
Juros no final do segundo ano: j
2
=2 j
1
= 1000 (os juros por ano so sempre
igual a 500).
Montante no final do segundo ano: M
2
= 10000 + 1000 = 11000
Os juros no fim do terceiro ano so j
3
= 3 j
1
= 1500 e para o montante
teremos M
3
= 10000 + 1500 = 11500 reais.
Nossa frmula M
n
= c(1+ni) daria tambm M
3
= 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 j
n
= cni vamos isolar c:
c = j
n
/(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
1 ( )
t
M c r = + (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
(1 )
nt
r
M c
n
= + (2)
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
M
12
= 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 f
x
, 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
(1)
2
( ) 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) ( ) ( ( ')) (2 / 2 '/ ) sen t sen nT t sen nT T t T = + = +


59
Podemos, no entanto, simplificar esta expresso
(3) ( ) ( ') ( ) y sen t sen t sen B = = = , onde
2
:
A
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: B
fsico
= 2A
fsico
/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
2
3 2
1
( ) 2
9
1 1
( ) 4 2
54 2
f x x x
g x x x x
= +
= + +



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:
1 1 1 2 2 2
( ); ( ) y A sen t y A sen t = =
Os dois movimentos harmnicos simples interferem construtivamente porque
suas amplitudes somam-se. Se A
1
=A
2
, 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 A
1
= A
2
= 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
0
0.8 0.8 / B NI 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
2 2
2
1
( ( ) )
2
R
B K R x

= + + (2)
A bobina nr. 2 (N espiras) produz, por sua vez, no mesmo ponto o campo
3
2 2
2
1
( ( ) )
2
R
B K R x

= + (3)
onde a constante K vem dada por
2
0
:
2
NIR
K = .
O campo magntico resultante das duas bobinas B = B
1
+ B
2
.
Para x = 0, isso no centro entre as duas bobinas, obteremos
0
0.8 0.8 / B NI 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
( )
( ) (0) , com ( )
sen b
I I 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
2
2
(0) ( )
( )
I sen sen N
I
sen
N




=



(2)

com as abreviaturas : e :
b d
sen 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 N
2
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:


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


(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),
2
log : ld = , com

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


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
0
1
2 1
max( , )
min( , )
mod
2,3,...
k k k
n a b
n a b
n n n
k

=
=
=
=

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
a e b
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
2
0, ( , , ) ; 0] ax bx c com a b c R a + + = [ .
Essa uma equao do segundo grau, cuja resoluo calculamos com a
chamada frmula de Bhashara (um matemtico hindu do sculo XII):

2
1 2
4
,
2
b b ac
x x
a

=
A expresso
2
: 4 D b ac = chama-se discriminante. Usando a discriminante,
podemos escrever a resoluo na forma


89
,
2 2
b D b D
S
a a

+
=
`

)


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 f
x
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 2x
2
+ 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


2 2 2 2
e
ac bd bc ad
x y
c d c d
+
= =
+ +




96
Para determinar a forma polar, (cos ) z r i sen = + , do nmero complexo z ,
preciso calcular o mdulo
2 2
r a b = + e o ngulo
1
tan ( )
b
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 = -45
o
em
vez dos 135
o
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,69
o
(=
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. z
n
= r
n
(cosn + i senn) (De Moivre,1667-1754)
2. e
z
= e
a
(cosb + i senb)
3. lnz = ln r + i; (- < <= )
4. senz = 0.5(e
b
+ e
-b
) sena + 0.5(e
b
e
-b
) cosai
5. cosz = 0.5(e
b
+ e
-b
) cosa - 0.5(e
b
e
-b
) senai
6. z
z1
= hcosk+hsenki; onde z1 = c+id e h = r
c
e
-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
3 2
0 x ax bx c + + + = precisamos da
discriminante
2 3
2
3
2
com e / 3
2 3 3 27
q p a
D p b q c a ab
| | | |
= + = = +
| |
\ \

2. Se D for positiva, resultaro uma soluo real e duas solues complexas
conjugadas
1
2
/ 3
( ) / 2 / 3 3( ) / 2
x u v a
x u v a i u v
= +
= +

3. As constantes u e v so dadas por
1 1
3 3
( ) ; ( )
2 2
q q
u D v D = + =
4. Se D <= 0, teremos as seguintes solues reais
1
2
3
2 cos( )
3 3
2 cos( 120 )
3 3
2 cos( 240 )
3 3
o
o
p a
x
p a
x
p a
x

=
= +
= +

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






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
1 0
5
x
x
e

+ =

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 x
4
- 4 x
3
- x + 5
= 0 ou 2e
x
- 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
x
0
, tambm designada iterada inicial, e num processo de obter sucessiva-
mente novas iteradas x
n+1
a partir das anteriores x
n
,... 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 x
1
= 1 como primeira estimativa para N
1/2
.
Depois calcula-se com a frmula
2 1
1
1
2
N
x x
x

= +



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

que contm na coluna A os valores x
n
e na coluna B os novos valores x
n+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(x
2
-x
1
) for menor ou igual a . O ltimo valor de x
2
representa a
raiz quadrada de N com a preciso estabelecida pelo .
Geralmente, escreve-se a frmula de Heron na forma
1
1
, onde 0,1, 2,...
2
n n
n
a
x x n
x
+

= + =



x
0
a aproximao inicial. Para calcular a p-sima raiz de um nmero positivo
a, podemos utilizar a seguinte frmula de iterao


103
1
1
1
( 1)
n n
p
n
a
x p x
p
x
+


= +



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) = x
2
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)

1
( )
'( )
n
n n
n
f x
x x
f x
+
=


onde x
n
um valor aproximativo da raiz buscada e x
n+1
uma melhoria de x
n
.
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 {x
n
} 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(x
n
) = x
n
2
a f'(x
n
) = 2 x
n
, 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

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


partindo com a aproximao x
0
.
Como exemplo particular, calculamos a raiz de f(x) = x
3
- 5x
2
+ x + 3 com x
0

= 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
5
0, 2 0 x x = .

Sabemos (grfico!) que elas devem ficar perto de -0,5; 1; -1. Na planilha
buscamos a terceira raiz utilizando como valor initial x
0
= -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
1 0
5
x
x
e

+ =

ou =A7^3-2*A7-5 para a famosa equao de Wallis
3
2 5 0 x x =
(soluo:
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
(ln( ) ln( )) / ln2 1 N b a

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 ( )
n
n n
b a b a = .
Isso podemos expressar como
1
1
2
n n
n
b a
x x

=

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
( 1)ln2 ln
b a
n


+




ln
1
ln 2
b a
n





.


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: x
1
e x
2
, posicionados de tal maneira que a raiz exata da
equao f(x) = 0 esteja no intervalo [x
1,
x
2
], ou seja, que se cumpra a
desigualdade f(x
1
)f(x
2
) < 0, porque as ordenadas f(x
1
) e f(x
2
) tm sinais
opostos. (Trata-se dum mtodo de bisseo junto com uma interpolao
linear.)
A distncia entre x
1
e x
2
deve ser o suficientemente pequena para que
possamos estar seguros de que no fique outra raiz no intervalo [x
1
,x
2
]. Por
meio da seguinte frmula de iterao
1
2
1
( )
( ) ( )
n n
n n n
n n
x x
x x f x
f x f x
+
+
+


calculamos uma srie de novas posies x
i
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 2 69
2 10 63
4 43
x y z
x y z
x y z
+ + =
+ + =
+ + =




113
Primeiro, extramos as variveis da forma
(69 2 ) / 25
(63 2 ) /10
(43 ) / 4
x y z
y x z
z x y
=
=
=

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:
(1) (0) (0)
(1) (1) (0)
(1) (1) (1)
(69 2 ) / 25 2, 76
(63 2 ) /10 5, 748
(43 ) / 4 8, 623
x y z
y x z
z x y
= =
= =
= =

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}
2 6
3 2 1
3 4 3 1
x y z
x y z
x y z
=
+ + =
+ + =

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):
2 2
2 2
0
T T
x y

+ =

(1)
ou tambm na forma

2
0 T =

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
( , ) ( (10 ))
( ) 10 10
n
n n x
T x y senh y sen
n senh n

(2)
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
( ) ( ) / 2
x x
senh x e e

= (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:
2
0 1 2
...
n
n n
S a a x a x a x = + + + + (1)
Os termos das sries de potncias so funes de x da forma
i
i i
b a x = . Os
polinmios (1) so as somas parciais das sries de potncias. Funes como
e
x
, sen(x), cos(x) e outras podem ser escritas na forma dum desenvolvimento
em uma srie de potncias
2
0 1 2
( ) ... f x a a x a x = + + + (2)
Como primeiro exemplo consideramos o seguinte desenvolvimento para a
funo sen(x), que ser vlido para todos os x
3 5 7
( ) ...
3! 5! 7!
x x x
sen x x = + + (3)

sendo x o ngulo em radianos. O smbolo ! a fatorial, ou seja n! = 123n
o produto dos primeiros n inteiros. Os termos x
n
/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 1
o
(= /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 (1
o
) = 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 = -x
2
/(23)y1. Do
segundo termo obtemos y3 = -x
2
/(45)y2 ...
Este processo podemos escrever da seguinte maneira

2
1 1
, , 1, 2,..., 1
2 (2 1)
k
x
y x y k n
k k
+
= = =
+
(4)




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
2 3
ln(1 ) ..., vlido para 1 1
2 3
x x
x x x + = + < (5)
3 5
1
ln( ) 2( ...), com , z >0
3 5 1
x x z
z x x
z

= + + + =
+
(6)
2 3
1 ..., vlido para todos os
1! 2! 3!
x
x x x
e x = + + + + (7)
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 e
x
somando n+1 termos da srie
(7). Para x = 1 obteremos para n = 10 o valor e
1
= 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 e
x

era
considerada meramente como o inverso da funo logartmica. Euler colocou as
duas funes numa base igual, dando-lhes definies independentes:
1
lim(1 )
ln lim ( 1)
x n
n
n
n
x
e
n
x n x

= +
=
(8)


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) = 4x
3
2x
2
+ 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)x
n
+ A(1) x
n-1
+
...+A(n-1)x+A(n).
Exemplo: Seja P(x) = 3x
4
-6x
3
2x
2
+ 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
4
2 s = ,
um polgono com 8 lados tem
2 8 4 4
2 4 2 2
n
s s s s = = = . Para um
polgono de 16 lados resulta
2 16 8 8
2 4 2 2 2
n
s s s s = = = + .
Assim, podemos escrever em forma geral
2
2 4
n n n
s s s = (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 s s s = por
2 4
2 4
s s
s s
+
+
. Obteremos, assim, a seguinte
formula
2
2 4
n
n
n n
s
s
s s
=
+
(2)


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 1 ( 1)
4(1 ...) 4
3 5 7 2 1
n
n
n

= + + =

(3)

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

1 1
4
4
n n
n n
A B


= =
=

(4)

Os coeficientes so
1 1
2 1 2 1
( 1) ( 1)
,
(2 1)5 (2 1)239
n n
n n
n n
A B
n n



= =



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:

0
0
4
4
1
4
4
4 2 3 2
1 1 1 1 1
2 1
6 4 2
1 1
1 1
(1 ) 2 (1 )
k
k
k
k
k k k k k k
y
a
y
y
y
a a y y y y
+
+
+ + + + +
=
=

=
+
= + + +


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 2
1/2
, a conver-
gncia surpreendentemente rpida. A potncia 2
2k+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 a
i
dos termos do polinmio.
Exemplo:
A srie da funo cos dada por
2 4
cos( ) 1 ...
2! 4!
x x
x = +
Se queremos calcular cos(2), escrevemos x = 2. A potncia inicial n = 0, pois
x
0
= 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
3 5 7
( ) ...
3! 5! 7!
x x x
sen x x = + +
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 f
x
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 f
x
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 = [a
ij
] e B = [b
ij
] calculado
pela frmula
1 1 2 2
1
...
p
ij i j i j ip pj ik kj
k
c a b a b a b a b
=
= + + + =

(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
1
1
n
i i
i
c
n
i
i
m x
x
m
=
=
=

(1)


144
No ponto C pode-se considerar concentrada toda a massa
1
n
i
i
M m
=
=

.
Podemos reescrever a primeira frmula introduzindo os pesos p
i
= m
i
/M:
1 1 1
e com 1
n n n
c i i c i i i
i i i
x p x y p y p
= = =
= = =

(2)


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.
Seja
3 2
9 7
6 2 2 8
x y z
x y
x y z
+ =
=
+ =
um sistema linear com A =
3 1 1
9 1 0
6 2 2



Numa forma concisa escreve-se isso como Ax = b com a soluo x = A
-1
b. 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 f
x
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 R
3

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
2x
1
+ 3x
2
x
3
= 5 (1)
4x
1
+4x
2
-3x
3
= 3 (2)
2x
1
3x
2
+ x
3
= -1 (3)
Os passos a executar so:
1. Formar a matriz ampliada do sistema

0
2 3 1 5
4 4 3 3
2 3 1 1
B



=





2. Consideraremos como piv a primeira linha, L
1
0
= (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 m
21
0
= - (a
21
0
/ a
11
0
) =- 4/2 = -2 (passo 1)
5. Vamos somar 2
a
equao a 1
a
, multiplicada pelo coeficiente m
21
0
=-2, e
colocar o resultado na 2
a
linha, isto no altera a soluo do sistema.
Resulta uma nova segunda linha: L
2
1
= (0, -2, -1, -7) com a
21
1
= 0. A
primeira linha no sofre mudana.
6. Falta, agora anular o elemento a
31
0
= 2 em B
0
. Para isso, repetimos o
procedimento (passo 2): m
31
0
= -(a
31
0
/a
11
0
) =- 2/2 = -1. Somamos,
agora, 3
a
equao a 1
a
, multiplicada pelo coeficiente m
31
0
=-1. A nova
terceira linha ser L
3
1
= (0, -6, 2, -6). E a matriz B
1
tem a forma


151
1
2 3 1 5
0 2 1 7
0 6 2 6
B



=






Falta anular a
32
1
= -6.
6. Determinamos m
32
1
= -(a
32
1
/a
22
1
) = -(-6/-2) = -3 (passo 3)

7. Chegamos, assim, nova matriz ampliada B
1

2
2 3 1 5
0 2 1 7
0 0 5 15
B



=




Vemos que o sistema original foi reduzido a um sistema triangular equivalente
ao sistema original, e cuja matriz uma matriz em escada.
2x
1
+ 3x
2
x
3
= 5 (4)
-2x
2
- x
3
= -7 (5)
5x
3
= 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: x
3
= 3; x
2
= 2; x
1
= 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
= x
0
e x = b = x
n
em n faixas da mesma largura h = (b-a)/n. A integral ser
aproximada pela seguinte soma de reas de trapzios:
0 1 1 2
1
0 1 2 1
( ) ( ( ) ( )) ( ( ) ( )) ...
2 2
( ( ) ( ))
2
( ( ) ( )) ( ( ) ( ) ... ( ))
2
b
a
n n
n n
h h
f x dx f x f x f x f x
h
f x f x
h
f x f x h f x f x f x

= + + + +
+ =
+ + + + +

(1)
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
calcular
2
2
1
ln( )
1
x
x +

, usando 6 faixas, a macro deve ser chamada como


=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
0 1 2 3 4
2 1
( ) ( 4 2 4 2 ...
3
2 4 )
b
a
n n n
h
f x dx y y y y y
y y y

+ + + + +
+ + +

(2)

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
Uma srie de senos e co-senos do tipo
0
1
( cos )
2
n n
n
a
a nx b sen nx

=
+ +


chamada de srie trigonomtrica. Se esta srie converge, ela representa ento
uma certa funo f(x) que se pode escrever como
0
1
( ) ( cos )
2
n n
n
a
f x a nx b sen nx

=
= + +

(3)
Podemos calcular os coeficientes a
n
e b
n
, se conhecemos f(x). As frmulas so
0
1
( ) a f x dx

=

(4)
1
( )cos ( 0)
1
( )sen ( 0)
n
n
a f x nx dx n
b f x nx dx n

=
= >

(5),(6)
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) = x
2
. Queremos, ento, desenvolver a
funo f(x) = x
2
em uma srie de Fourier em co-senos no intervalo (-,+). (Os
coeficientes b
n
se anulam todos, se f(x) for par. Isso certo para f(x) = x
2
.)
Utilizando o programa Simpson (ou Simpson1) podemos calcular os coeficien-
tes a
n
na tabela a seguir. Os resultados analticos so a
0
= 2
2
/3 e a
n
= (-1)
n
(4/n
2
) para n > 0.
numrico analtico
A
0
= 3,2899 3,2899
A
1
= -3,9999 -4,0000
A
2
= 0,9995 1,0000
A
3
= -0,4432 -0,4444
A
4
= 0,2477 0,2500
A
5
= -0,1560 -0,1600
A
6
= 0,1046 0,1111
A
7
= -0,0715 -0,0816

Aqui temos um exemplo: queremos calcular com Simpson1 o coeficiente A
5
:


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) = x
2
em uma srie de Fourier em co-senos
no intervalo (-,+) podemos escrever, ento, assim
f(x) = x
2
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)
S
i
= (y
0
+ y
1
+ y
2
+ ... + y
n-1
)h
Na figura temos n = 10 e a funo a parbola y = x
2
. x
0
= 0 e x
10
= 1.0


159
Para S
i
obtm-se o valor de 0.285 unidades de rea.



A soma superior, S
u
, dada por
S
u
= (y
1
+ y
2
+ y
3
+ ... + y
n
)h
Fazendo o clculo, obtemos S
u
= 0.385. O valor exato da integral 1/3, e o
valor mdio S
m
= (S
i
+ S
u
)/2 = 0,335 muito prximo ao valor exato. fcil
comprovar que este valor mdio, S
m
, coincide com a frmula dos trapzios.
Uma melhoria obteremos tambm, se usamos sempre duas faixas e se
traamos por y
mdio
a tangente curva (ser preciso, utilizar um nmero par de
faixas!). A frmula resultante ser
S
t
= 2h(y
1
+ y
3
+ y
5
+ ... + y
n-1
)


160
Compare a planilha a seguir onde temos todas as frmulas incorporadas.


A frmula de Simpson dada pela seguinte expresso
S
imp
= (2S
m
+ S
t
)/3
A funo y = x
2
(=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
2
0
1 cos I x dx = +


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 (x
0
,y
0
), (x
1,
y
1
), ... ,(x
n
,y
n
) e
desejamos determinar um polinmio da forma
p(x) = a
0
+a
1
(x-x
0
)+a
2
(x-x
0
)(x-x
1
)+ ... +a
n
(x-x
0
)(x-x
1
)(x-x
n-1
)
Pede-se determinar os coeficientes a
0
, a
1
, ..., a
n
.
O polinmio interpolador da tabela acima tem, como demonstraremos, a forma
p(x) = -2 + (25x + 38x
2
- 7x
3
8x
4
)/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
a
0
= y
0
a
1
= (y
1
y
0
)/(x
1
x
0
) := [x0,x1,y]
a
2
= ((y
2
y
1
)/(x
2
x
1
) (y
1
y
0
)/(x
1
x
0
))/(x
2
x
0
) := [x0,x1,x2,y]
.....................
a
n
= [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 + 38x
2
7x
3
8x
4
)/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 + 38x
2
7x
3

8x
4
)/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 x
0
, x
1
, ..., x
n
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
0 0 1 1
( ) ( ) ( ) ... ( )
n n
p x y L x y L x y L x = + + +
Calculam-se os polinmios de Lagrange, L
i
(x), pela seguinte expresso:
0 1 1 1
0 1 1 1
( )( )...( )( )...( )
( )
( )( )...( )( )...( )
i i n
i
i i i i i i i n
x x x x x x x x x x
L x
x x x x x x x x x x
+
+

=


Tambm podemos escrever
0
( )
( ) ; para 0,...,
( )
n
k
i
k i k
x x
L x k i i n
x x
=

= =


As frmulas tm um aspecto pouco amigvel, mas a aplicao bastante
simples.
Na planilha utilizamos para cada L
i
(x) uma nova coluna e os coeficientes de
p(x) so os valores y
j
dos pares experimentais dados. Assim, para os trs pares
(x
0
;y
0
) = (1;4), (x
1
;y
1
) = (3;6) e (x
2
;y
2
) = (4;12), o polinmio interpolador vai
ser p(x) = 4L
0
(x) + 6L
1
(x) + 12L
2
(x).
Observe, que no clculo de L
i
(x) fica excludo, no numerador, o valor de x
i
. No
denominador aparecem todos os x
i
observados.
Exemplo: Dados os pontos experimentais (1;4), (3;6), (4;12)
Determine o polinmio de Lagrange para os pontos dados.
Resoluo: L
0
= (x-x
1
)(x-x
2
)/[(x
0
-x
1
)(x
0
-x
2
)]= (x-3)(x-4)/[(1-3)(1-4)
L
0
= (x
2
-7x+12)/6



168
L
1
(x) = (x-1)(x-4)/[(3-1)(3-4)] = (x
2
-5x+4)/(-2)
L
2
(x) = (x-1)(x-3)/[(4-1)(4-3)] = (x
2
-4x+3)/3
Assim obtemos p(x) = 4L
0
+6L
1
+12L
2
= 5x
2
/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 y
0
= 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)) (=L
0
). 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) = At
2
+ 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
o

t
v(t)dt =
o

t
(At
2
+Bt+C)dt = A(t)
3
/3 + B(t)
2
/2 + Ct
Fazendo uso de (4) e (5) resulta
o

t
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
o

t
v(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 1
a
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
2
2
1
( ) ( ) com ( )
2
t
x
x
S x f t dt f t e

= =


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

1
2
( )
( )
x a sen t
y b sen t


=
= +


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
= n
1
:n
2
onde os nmeros n
1
e n
2
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

cos( )
( ); - t<
x r t
y rsen t
=
= <


Vamos obter espirais fazendo depender o raio em forma apropriada do
parmetro t. Obtm-se as espirais arquimdicas por meio da tentativa
m m
r a t = . 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 = e
at
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,29
o
.
Isso significa que a espiral corta o eixo X sempre sob 84,29
o
, 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:
( )
cos( );
x at bsen t
y a b 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 x
s
, y
s
.
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:
x
s
= xa + (xa x')za/(z' za)
y
s
= 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 x
s
e y
s
(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:

2 2
1 2
1 2
( )
( )cos( )
( ) ( )
x y
x asen t t
y bsen t sen t
z ce


+
=
= +
=
(4)

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 x
s
e y
s
, 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 = 0
o
, 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 10
11
C/kg.
Por meio das seguintes equaes paramtricas podemos representar este
"movimento completo", fazendo uso do Excel:
( )
cos( )
( )
x rsen t
y r 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 = kt
2
, 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, tc
2
, 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:
2
; 0
( ) ln( 1) ; 0 1
ln(2) ; 1
x x
f x x x
x x

= + <
>


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) = x
2
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 f
x
, 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) = (x
2
+y
2
)/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
5
1
2
( , )
1
c
T
c
I T
e



c
1
= 5,95510
-13
Wcm
2
; c
2
= 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/cm
3
) do sdio em funo da
temperatura (
o
C):
Temperatura (
o
C) Densidade(g/cm
3
)
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:
1
2
1
( )( )
( )
n
i i
i
n
i
i
x x y y
b
x x
a y bx
=
=

=

(1)
As mdias de x e y so definidas por
1 1
1 1
; y
n n
i i
i i
x x y
n n
= =
= =

(2)


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 tc
2
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 R
2
.




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 y
i
.
Devido propagao dos erros, as incertezas nos y
i
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 R
2
, 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
2 2
1
1
( )
2
n
y i i
i
y a bx
n

=
=


(3)

Em nosso caso resulta
2
4,121 6 0, 00203
y y
E = = =
O parmetro
b
= (
2
b
)
0,5
em A2 calculamos com
2
2
2
2
1 1
y
b
n n
i i
i i
n
n x x

= =
=
| |

|
\

(4)
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
2 2
2
1
n
y i
i
a
x
D

=
=

(5)
onde D significa o denominador de (4). Resultado:
a
= 0,001582
Observe que temos tambm
2
1
1
n
a b i
i
x
n

=
=

(6)
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.
Para s
reg
temos
2
1
( )
n
reg i
i
s y y
=
=

e para s
res
temos
' 2
1
( )
n
res i i
i
s y y
=
=


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
=
(s
res
/(n-2)).
No exemplo anterior, o coeficiente de determinao, R
2
, 0,990, o que indica
uma forte relao entre variveis independentes e as densidades.
O coeficiente de determinao definido como R
2
= 1- s
res
/s
reg
, o que d 1-
2,426E-5/0,024747 = 0,9990.
Ento, quanto maior R
2
, 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
o
C
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 (=
a
2
,
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 ( 263 18)
o
a
a C = , de fato,
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
o
C 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 + cx
2
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 + cx
2
+ dx
3


Temperatura
o
C 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 + cx
2
ou y = a
1
+ a
2
x + a
3
x
2

resolvendo o seguinte sistema com respeito s incgnitas a
1
, a
2
, a
3


2
1 2 3
2 3
1 2 3
2 3 4 2
1 2 3
a n a x a x y
a x a x a x xy
a x a x a x x y
+ + =
+ + =
+ + =



(1)

A soluo deste sistema, denominado equaes normais, fcil, pois podemos
escrever (1) em forma matricial MA = B com a soluo A = M
-1
B.
M
-1
a matriz inversa da matriz M. A o vetor das incgnitas e B o vetor dos
lados direita, ou seja,


211
1
2
3
a
A a
a
(
(
=
(
(

e
2 2
:
y Sy
B xy Sxy
x y Sx y
( (
( (
= =
( (
( (

(2)
M uma matriz quadrada de ordem m = 3, dada por
2
2 3
2 3 4
n Sx Sx
M Sx Sx Sx
Sx Sx Sx
(
(
= (
(
(

(3)
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-6x
2



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 = ax
b
= 10,86Ax
-1,92
10,9Ax
-2
, pois a =
10
1,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(x
1
,...,x
n
) = a
1
x
1

+ ... + a
n
x
n
. 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:
a
11
x
1
+ a
12
x
2
+ ... + a
1n
x
n
<=/>= b
1
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 S
1
, ... ,S
n.
A sustncia S
i
contm as sustncias
bsicas B
1
, ... ,B
m
.
Suponhamos que um fabricante de comidas para animais de estimao
pretenda fabricar um produto novo pela mistura de S
1
e S
2
(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
1
m
i i
i
x f x
n
=
=

mdia amostral; =MDIA
2 2 2
1
1
( )
1
m
i i
i
s f x nx
n
=
=


varincia amostral; =VAR
s = s
2
= desvio padro amostral: =DESVAP
f
i
= freqncia absoluta =FREQNCIA, F
i
:= f
i
/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
com 1/n pode ser escrita como
2 2 2
1
m
i i
i
s x F x
=
=

. Esta , geralmente, uma


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
2
1
( )
2
1
( )
2
x
f x e

= (1)
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
numa forma padronizada
X
Z

= , pois Z tem distribuio N(0,1). Podemos,


ento, escrever ( ) ( )
x
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(x
1
<=X<=x
2
) = F(x
2
) - F(x
1
).
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(x
1
))
E7: =DIST.NORM($B$8;$B$5;$B$6;1) (= F(x
2
))
3. G6: =DIST.NORM($B$7;$B$5;$B$6;0) (= f(x
1
) segundo eq.(1))
G7: =DIST.NORM($B$8;$B$5;$B$6;0) (= f(x
1
))
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/k
2
,
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.)
Se queremos trabalhar com
X
Z

= , devemos pr = 0 e =1. Z(x


1
) =
(1,36-1,4)/0,05 = -0,8 Z(x
2
) = 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)=5x
2
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

A convergncia da seqencia
1
lim(1 )
n
n
e
n
= + muito lenta. O valor de
(1+1/1000)
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
desses pontos. O mximo de uma curva tm as coordenadas
1
( ; )
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
2
1
1
( )
1
n
i
i
s x x
n
=
=



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
(t
1-;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+bu
3
+cu
5
+du
7
+eu
9
)/(92160f
4
)
As constantes so definidas da seguinte forma:
a = 92160f
4
+23040f
3
+2880f
2
-3600f-945
b = 23-40f
3
+15360f
2
+4080f-1920
c = 4800f
2
+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+ct
2
)/(1+dt+et
2
+ft
3
) 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

= -z
1-
. 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 x
x a x a < < + onde
x
a o erro da estimativa da mdia
da populao (erro de amostragem).
x
a pode ser estimado atravs da seguinte


232
expresso
1 ; x f
s
a t
n

= , no caso de um intervalo de confiana unicaudal. No
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
correo k =
1
N n
N

.
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 X
1
, ...,X
10
. 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 H
0
: 230 contra a
hiptese alternativa H
a
: < 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 s
1
= 0,026 e s
2
= 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 s
2
1
/s
2
2
menor do que o valor
correspondente
1 2
1 ; , f f
F

da distribuio F que se obtm para = 0,05 por
meio de =INVF(0,05;7;12) (= 2,91). Este valor maior do que (s
1
/s
2
)
2
= 1,53.)
Como quantidade de teste y, utilizamos a diferena d = x
1
- x
2
:
1 2
1 2
d n n
y
s n n
=
+
. A varincia total vem dada por
2 2
2
1 1 2 2
1 2
( 1) ( 1)
2
n s n s
s
n n
+
=
+

(= pooled variance = varincia amostral combinada).
Temos como hiptese da Nulidade H
0
:
1
=
2
e como hipteses alternativas
H
a
:
1
<
2
;
1
>
2
;
1
#
2
No caso
1
>
2
rejeitamos H
0
, se y > t
1-a;f
. (Obtemos o valor de t com nossa
planilha da distribuio t.) Se escolhermos
1
<
2
, teremos como critrio de
rejeio de H
0
: y < -t
1-;f
.
Geralmente, escolhe-se
1
#
2
e rejeita-se H
0
, se |y| > t
1-/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 H
0
";"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 H
0
, 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 x
i
' dos intervalos e as freqncias absolutas observadas f
o,i
.
2. Frmula para o clculo do valor esperado para dados classificados em k
classes e n observaes:
'
1
1
k
i i
i
x x f
n
=
=


3. Frmula para a varincia amostral:
2 ' 2
1
1
( )
k
i i
i
s x x f
n
=
=


4. Frmula para
2
:
2
, , 2
1 ,
( )
k
o i e i
i e i
f f
f

; f
e
= freqncia esperada
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 Qui
2

O Qui
2
-crtico, para o nvel de 5%, com f = 8, 15,51 (=INV.QUI(0,05;8)). O
valor observado de Qui
2
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 Qui
2
-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
1 p
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 f
r
. 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 = b
1

+ b
2
x.
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 b
1
= 0,658; b
2
= 0,729.
Debaixo seguem os desvios padres de b
1
e b
2
: o desvio padro de b
1
fica em
G8: 0,689, o de b
2
em F8: 0,099. ( Entre estes desvios existe a seguinte relao
1 2
2
1
b b i
s s x
n
=

, veja o captulo anterior, frmula (6).)
Em F9 encontramos o coeficiente de determinao R
2
= 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
+
2
x.
b
1
ts
b1

1
b
1
+ ts
b1
e b
2
ts
b2

2
b
2
+ ts
b2
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 x
1
da regio das vendas, como tambm das despesas publicitrias x
2

gastas por persona. Os seguintes dados devem ser analisados para detectar
uma possvel relao.
Regio Habitantes x
1
(Milhes)
Propaganda x
2

($/persona)
Lucros y
(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 + b
1
x
1
+ b
2
x
2
.
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
anterior. Em nosso caso, s = 0,6884 com
2
2
( )
1
y y
s
n k

; n = nmero das
observaes (6), k = nmero das variveis independentes (2). O nmero dos
graus de liberdade f = n-k-1 = 3
s
2
o desvio padro de b
2
e o seu valor de 3,78 muito grande. De t = b
2
/s
2
=
3,245/3,78 = 0,858 < t
0,05;3
= 3,182 (= INVT(0,05;3)) segue que, para um
nvel de confiana de 95%, b
2
no significativamente diferente de 0. Isso
significa que a propaganda no teve xito. De fato, obtemos, utilizando
somente x
1
, um erro padro de 0,665 e a equao com = a + b
1
x
1
= 4,676 +
0,803x
1
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''',..., d
n
y/dx
n
) = 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-y
2
)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 x
o
, 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(x
0
) = y
0
.
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(x
0
) = y
0
em (x
i
,y(x
i
)) aproxima
a curva soluo sobre o intervalo [x
i
, x
i+1
].
Visto que a inclinao (ou declividade) da curva soluo em (x
i
, y(x
i
)) y'(x
i
) =
f(x
i
, y(x
i
)), a equao da reta tangente curva integral em (x
i
, y(x
i
))
y = y(x
i
) + f(x
i
, y(x
i
))(x-x
i
) (5)
Fazendo x = x
i+1
= x
i
+ h, obtemos
y
i+1
= y(x
i
) + hf(x
i
, y(x
i
)) (6)
sendo h o tamanho do passo e y
i+1
o valor de y at a reta tangente no ponto
x
i+1
. y
i+1
tomamos como uma aproximao a y(x
i+1
).
J que foi dado y(x
0
) = y
0
, podemos usar (6) com i = 0 para calcular y
1
y
1
= y(x
0
) + hf(x
0
, y(x
0
)) = y
0
+ hf(x
0
, y
0
) (7)
Agora fazemos i =1 e Eq. (6) se torna
y
2
= y(x
1
) + hf(x
1
, y(x
1
)) (8)
mas, esta equao no til, pois no conhecemos y(x
1
). (S y(x
0
) est
conhecido e o chamamos y
0
.) Bem, vem aqui a aproximao:
O valor y(x
1
), que no conhecemos, substitumos pelo valor y
1
, que s chega
at a reta tangente e que , no exemplo da figura anterior, nitidamente inferior
ao valor real da funo y(x) em x
1
.


248
y(x
2
) y
2
= y
1
+ hf(x
1
,y
1
)
No prximo passo vamos substituir y(x
2
) por y
2
:
y
3
= y
2
+ hf(x
2
,y
2
)
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(x
0
) = y
0
e calcula
y
1
, y
2
, ... y
n
por meio da frmula de recorrncia
y
i+1
= y
i
+ hf(x
i
,y
i
), 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 y
1,
y
2
, y
3
etc. so aproximaes de y(x
1
), y(x
2
), y(x
3
) etc.
Exemplo:
y' = 1-x+4y, y(0) = 1; soluo exata: y(x) =x/4 -3/16 + (19/16)e
4x
Soluo segundo Euler: (h = 0.1)
f(x,y) = 1 - x +4y
y
1
= y
0
+ hf(x
0
,y
0
) = 1 + 0.1(1-0+41) = 1+0,5 = 1,5 ; x = x
1
= h = 0.1
valor exato (ou analtico): y(0,1) = 1,609041828
y
2
= y
1
+ hf(x
1
,y
1
) = 1,5 + 0,1(1-0,1+41,5) = 1,5 +0,69 = 2,19; x = x
2
= 0,2
valor exato: y(0,2)= 2.505329853
y
3
= y
2
+ hf(x
2
,y
2
) = 2,19 + 0,956 = 3,146; x = x
3
= 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.
N
0
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) = Noe
a(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:
0
0
( )
(1 )
at
a
N t
a bN
b e
bN

+
(13)
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 y
i+1
= y
i
+ hf(x
i
,y
i
) utiliza sempre a
inclinao da reta tangente curva soluo no comeo do intervalo [x
i
, x
i+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 [x
i
, x
i+1
]. Pode-se esperar um melhoramento do
mtodo tomando a inclinao no centro do intervalo ou tomando uma mdia de
vrios inclinaes em [x
i
, x
i+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 [x
i
, x
i+1
], depois se
segue os passos que nos levaram s frmulas (5) at (9). Voltemos, ento,
Eq. (5) e substituamos a inclinao (f(x
i
, y(x
i
)) pela mdia
m
i
= (f(x
i
,y(x
i
)) + f(x
i+1
,y(x
i+1
))/2 (14)
A Eq. (6) reza agora y
i+1
= y(x
i
) + h (f(x
i
,y(x
i
)) + f(x
i+1
,y(x
i+1
)))/2 e uma aproxi-
mao a y(x
i+1
). Como antes, aproximamos y(x
i
) por seu valor aproximado y
i

quando i >0.


252
Pero y(x
i+1
) tambm ser, normalmente, desconhecido e vamos substitu-lo
pela aproximao y(x
i+1
) y
i+1
= y
i
+ h f(x
i
,y
i
).
A frmula de recorrncia do mtodo melhorado de Euler ou a frmula de Heun
fica finalmente assim

y
i+1
= y
i
+ h/2 (f(x
i
,y
i
) + f(x
i+1
, y
i
+ h f(x
i
,y
i
))) (15)

Para o clculo prtico til a introduo das seguintes expresses
k
1i
= f(x
i
,y
i
) (16)
k
2i
= f(x
i
+h, y
i
+ hk
1i
) (17)
y
i+1
= y
i
+ h (k
1i
+ k
2i
)/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 x
i
primeiro os resultados por meio de uma iterao interna antes de
avanar ao prximo ponto x
i+1
. No programa de "Heun2 " realizamos isso.
(O mtodo de Heun possui um erro de truncamento global da ordem de O(h
2
) 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(h
2
)
quer dizer que o mtodo de Heun coincide com a srie de Taylor at os termos
de ordem h
2
.)



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(h
4
)! (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.)
t
n+1
= t
n
+ h
y
n+1
= y
n
+ h<v>,
onde
<v>:= (v
1
+2v
2
+2v
3
+v
4
)/6 (19)
Calculam-se as quatro derivadas segundo o seguinte esquema:
v
1
:= f(t,y)
v
2
:= f(t + h/2, y + v
1
h/2)
v
3
:= f(t + h/2, y + v
2
h/2)
v
4
:= f(t + h, y + v
3
h) (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 k
1
B k
2
C
A, B, C so as concentraes dos participantes da reao, k
1
e k
2
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:
( )
( )
A
dA t
A t
dt
= (21)
Enquanto B decai, ela recebe permanentemente as partculas que vem da sub-
stncia-me A. Ou seja:
( )
( ) ( )
B A
dB t
B t A t
dt
= + (22)
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:
0
0
( )
( ) ( )
A
A B
t
t t
A
B A
A t A e
A
B t e e


=
=

(23)
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 d
2
x/dt
2
=
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-y
2
)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:
y
1
(x) = y(x) e y
2
(x) = y'(x).
Teremos ento o sistema
y
1
' = y
2
y
2
' = m(1-y
1
2
) y
2
- y
1
.
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) =
F
0
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(t
0
) = x
0
e x'(t
0
) = u
0
.
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(t
0
) = x
0
e y(t
0
) = y
0
. Por exemplo:
x"(t) -2 x'(t) + 2 x(t) = e
2t
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) + e
2t
sen(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 e
2t
(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):
t
n+1
= t
n
+ h
y
n+1
= y
n
+ h<v>
v
n+1
= v
n
+ h<a>
<v> e <a> so valores mdios de v e a no intervalo [t
n
, t
n+1
] apropriadamente
definidos. No esquema de Runge Kutta temos
<v>:= (v
1
+2v
2
+2v
3
+v
4
)/6
<a>:= (a
1
+2a
2
+2a
3
+a
4
)/6

As derivadas calculam-se usando o seguinte esquema:
v
1
:= v
v
2
:= v + a
1
h/2
v
3
:= v + a
2
h/2
v
4
:= v + a
3
h
a
1
:= f(t,y,v)
a
2
:= f(t+h/2, y + v
1
h/2, v
2
)
a
3
:= f(t+h/2, y + v
2
h/2, v
3
)
a
4
:= f(t+h, y + v
3
h, v
4
)


266
Podemos calcular os valores de y e v tambm pelas relaes
y = y + hv + h
2
(a
1
+ a
2
+ a
3
)/6
v = v + h(a
1
+ 2a
2
+ 2a
3
+ a
4
)/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+F
0
cos(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 F
x
= mx" = -Cm x/r
3
e F
y
= my" =- Cmy/r
3
. Para a
acelerao obtemos as seguintes equaes:
x" = - C x / r
3
e y" = -C y / r
3
(1)
onde significam x" = d
2
x/dt
2
, C := GM e r=(x
2
+ y
2
)
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 x
0
e t
0
, cujos valores devemos ainda fixar.
Escrevemos x = Xx
0
, r = Rx
0
e t = Tt
0
. As novas variveis X, R e T no tm
unidades.
A velocidade v = dx/dt toma a forma v = dx/dt = x
0
/t
0
dX/dT e a acelerao
a = d
2
x/dt
2
= x
0
/t
0
2
d
2
X/dT
2
. V = dX/dT = v t
0
/x
0
.
A nova forma da equao x" = - C x / r
3
ser
d
2
x/dt
2
= x
0
/t
0
d
2
X/dT
2
= - C/x
0
2
X/R
3
ou seja
d
2
X/dT
2
= - Ct
0
2
/x
0
3
X/R
3
(2)
S precisamos pr Ct
0
2
/x
0
3
:= 1 (3), para obter a equao do movimento
sem constantes
d
2
X/dT
2
= - X/R
3
(4)
J que queremos traar a rbita do Mercrio, razovel tomar x
0
igual ao raio
da rbita da Terra, que chamado unidade astronmica (A.u.)
x
0
= 1,49610
11
m (5)



269
Nossa nova unidade do tempo ser, ento,
t
0
= (x
0
3
/C)
1/2
= 5,02710
6
s (6)
O perodo do Mercrio (durao de um ano) de 88 dias terrestres. Os dados
do perihlio so v
0
= 58,9 km/s e r
0
= 46,0 10
6
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 = Tt
0
= 0.05t
0
= 0.055,02710
6
s = 2.91
dias. Uma rbita completa corresponder a 88 dias.
As condies iniciais so:
X(0) = x(0)/x
0
= 4610
9
m/x
0
= 0,3075
Y(0) = 0,
dX(0)/dT = 0,
dY(0)/dT = v
0
t
0
/x
0
= 58,910
3
m/st
0
/x
0
= 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.
A fora que atua sobre a partcula Alfa
1 2
2
0
1
4
QQ
F
r

= . Introduzimos uma
constante C pela relao
3
1 2
2
0
5, 486
4
Q Q m
C
m
s

= = . m = 6,65E-27kg a massa
da partcula Alfa com a carga Q
1
= 2e. O ncleo de ouro tem a carga Q
2
= 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 y
0
o parmetro de impacto b. Na figura usamos y
0
= 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/(2
0
) r
-1

A constante
0
denominada permissividade eltrica do vcuo. No SI de
unidades seu valor 8,85410
-12
C
2
N
-1
m
-2
.
Para a fora que atua sobre o eltron obtemos
F(r) = - qe/(2
0
) r
-1



274
As duas componentes cartesianas da acelerao so
x" = - Cx r
-2
e y" = - Cy r
-2

onde C = q e /(2
0
m
e
) e r = (x
2
+ y
2
)
1/2


(Compare com x" = Cxr
-3
; y" = Cyr
-3
do pargrafo anterior !)
e = carga elementar: 1,60217710
-19
C
m
e
= massa do eltron: 9,1093910
-31
kg
e/m
e
= razo carga/massa para o eltron: 1,758810
11
C/kg
Para que o eltron se mova sobre uma rbita circular, deve ser F(r) = -mv
2
/r.
Desta relao resulta a seguinte equao para a velocidade v
0
2
e
qe
v C
m
= =
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 x
0
= 10
-2
m e t
0
=10
-6
s.
Uma unidade natural para a velocidade seria v
0
= 10
4
m/s. Esta escolha tem
como conseqncia que C= 10
8
m
2
s
-2
. Para que C tenha este valor, temos que
tomar q = 3,16310
-14
C/m. Utilizando estes valores, obtemos Ct
0
2
/x
0
2
= 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 10
4
m/s. O intervalo h
= 0.5 , na realidade, igual a 510
-7
s.




275


Vemos a trajetria circular para v = 10
4
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:
[ [[ [ ] ]] ]
2 2
2
2
r
R
) 1 l ( l R ) r ( U E
2
dr
dR
r
dr
d
r
1
+ ++ + = == =

+ ++ +





h
(1)


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/r
2
. 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/na
0
r := r (2)
O nmero quntico, n, definido por
E:= - e
4
Z
2
/(4
0
)
2
2
2
n
-2
(3)
a
0
=
0
h
2
/e
2
ou a
0
=
2
/e
2
(cgs) 0,52910
-8
cm o primeiro raio de Bohr.
Para expressar E no sistema cgs preciso substituir
0
por 1/4: E
cgs
= -
e
4
Z
2
/(2
2
n
2
).
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/na
0
.
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/a
0
por 3/2. Isso significa que e
-r/3ao
= e
-/2
.
O programa calcula a densidade de probabilidade radial R(r)
2
r
2
. 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/3a
0
)
3/2
(1 - 2/3 r/a
0
+ 2/27 (r/a
0
)
2
) e
-r/3a0
ou R() = a
o
-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,5a
0
13.5 0,52910
-8
cm = 7,1410
-8
cm. A teoria d para a distncia
mais provvel (valor esperado) a expresso

2
0
2
1 ( 1)
1 1
2
nl
n a l l
r
Z
n
+ ( | |
< >= +
|
(
\

(5)
Em nosso caso, obtemos desta equao tambm <r
30
> = 9a
0
(1+0.5)= 13.5a
0
.
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 (v
i
+ v
j
)/2.
Ao longo de cada intervalo, consideramos a acelerao como sendo constante.
A acelerao no intervalo nmero j (= intervalo-j) dada por
a
j
:= (v
j
- v
i
)/(t
j
- t
i
) = g[u-((v
i
+v
j
)/(2v
1
))
2
] (1)

A constante v
1
definida por v
1
2
:= 8Rg
c
/(3C) onde = densidade do fluido
(1000 kg/m
3
para gua),
c
= densidade da esfera (7800kg/m
3
), R = raio (4mm),
C = 0.4 e g = 9.81m/s
2
.
O tempo de cada pelo intervalo-j
t
j
- t
i
= (2h)/(v
i
+ v
j
) (2)
Esta expresso introduzimos em equao (1), juntamente com a abreviatura
b:= g*h/(2v
1
)
2
(3)
Chegamos, assim, seguinte frmula de iterao:
v
i+1
= [(v
i
2
+ 4buv
1
2
(1+b))
1/2
-bv
i
]/(1+ b) (4)


284
Em vez de v
j
temos escrito v
i+1,
alm disso temos u := 1-/
c
. Para determinar o
tempo de queda, temos que somar os tempos parciais t
j
, 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:= T
o
K
o
onde K
o
um fator de correo,
dependendo do ngulo
o
, e T
o
= 2 (L/g)
1/2
o perodo do pndulo simples.
Suponhamos que a acelerao tangencial seja constante no intervalo t. Temos
a
t
= (v
i+1
- v
i
)/t = gsen (6)
A velocidade mdia no intervalo t (v
i
+ v
i+1
)/2, e o arco, passado pelo
pndulo em t segundos, ser s = (v
i
+ v
i+1
) t/2 = L . Assim, obtemos
v
i+1
= v
i
+ g t sen (7)
t = 2 L /(v
i
+ v
i+1
) (8)
Substituindo t da primeira equao pelo t da segunda, resulta a seguinte
frmula de iterao para a velocidade
v
i+1
= (v
i
2
+ 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)
K
o
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 v
i
+ v
i+1
= (g L)
1/2
(u
i
+ u
i+1
), onde
pusemos
u
i+1
:= (u
i
2
+ 2 sen)
1/2
.




286
Finalmente, resulta
(13)



Resultado: K
0
= 1,01742 para
0
= 30 graus. T = K
0
T
0

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 m
3
que se move no campo gravitacional da Terra m
1
e da Lua
m
2
. 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 b
1
= md, sendo m := m
2
/(m
1
+ m
2
). A distncia
entre Sol e Lua b
2
= 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 (m
1
+ m
2
)/d
3
.
Num sistema inercial, a segunda Lei de Newton rezaria m
3
a = F
1
+ F
2
, onde F
1

e F
2
so as foras devido a m
1
e m
2
. Em nosso sistema, no inercial, temos que
introduzir duas foras "inerciais". So a fora centrfuga: F
c
= -m
3
x ( x r) e
a fora CORIOLIS F
cor
= -2 m
3
x v
rel
.
As equaes de movimento para as duas coordenadas de m
3
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 d
1
e d
2
so
d
1
2
= (b
1
+ x)
2
+ y
2
= (md + x)
2
+ y
2
(8)
d
2
2
= (b
2
- x)
2
+ y
2
= (md - x)
2
+ y
2
(9)
A massa ser m = 0.012277471, se tomarmos d = 1.
As condies iniciais sero x
0
= 0.994 (ou seja, do lado direito da Lua),
y
0
=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 m
1
e m
2
so presas uma outra e a paredes fixas
por molas. No estado relaxado, as molas tm os comprimentos l
01
,l
0
e l
02
.
Na posio de equilbrio, elas tm o comprimento l
1
e l
2
(neste estado as molas
sim podem ser esticadas, ou seja, l
1
no necessariamente igual a l
01
, etc.).
Sobre a massa m
1
atuam quatro foras: m
1
g, N
1
, T
1
e T
1
'
, analogamente para
m
2
.
A segunda lei de Newton para m
1
e m
2
reza:
m
1
g + N
1
+ T
1
+ T
1
'
= m
1
a
1
(1)
m
2
g + N
2
+ T
2
+ T
2
'
= m
2
a
2
(2)
Para os deslocamentos (supomos que x
2
> x
1
) podemos escrever
m
1
x
1
"
= -k
1
(s
1
+ x
1
) + k(s + x
2
-x
1
) (3)
m
2
x
2
"
= -k(s + x
2
- x
1
) + k
2
(s
2
- x
2
) (4)
Os coeficientes significam s = l - l
0
, s
1
= l
1
- l
01
, s
2
= l
2
- l
02
, 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
E
p
= k
1
(s
1
+ x
1
)
2
/2 + k(s + x
2
-x
1
)
2
/2 + k
2
(s
2
- x
2
)
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
x
1
" = - ax
1
+ bx
2
(6)
x
2
" = - cx
2
+ dx
1
(7)
A equao para x
1
contm com x
1
tambm x
2
, e na equao para x
2
parecem
tanto x
2
quanto x
1
. 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 + k
1
)/m
1,
b:= k/m
1
,
c:= (k + k
2
)/m
2
,
d:= k/m
2
(8)
Resolveremos o sistema (6)-(7) numericamente. (Nos limitaremos a considerar
o caso particular de duas massas iguais, tomando k
1
= k
2
:= k
0
e a = c =
(k+k
0
)/m e b = d = k/m.)
No comeo, a massa m
2
foi deslocada por x
2
(0) = 1 e logo liberada, enquanto
m
1
estava em x
1
(0) = 0 (temos m
1
= m
2
). Logo de soltar o segundo oscilador,
observamos como as suas oscilaes so transmitidas para o primeiro e que a
fase de deslocamento do oscilador m
1
est sempre atrasada de um ngulo de
90
o
em relao ao oscilador 2, que comea o movimento. (Precisa-se mover o
grfico de m
1
de 90
o
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 m
1
e m
2
superpostos no
mesmo grfico. (x
1
(0) = 0, x
2
(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 0
o
ou 180
o

e nos quais no h transferncia de energia.
O primeiro modo normal temos quando x
1
(0) = x
2
(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
=
(k
0
/m)
1/2
.
No segundo modo normal, os dois osciladores movem-se em oposio de fase
(temos uma diferena de fase de ) com x
1
(0) = -A e x
2
(0) = A (=1). A
freqncia agora maior do que a freqncia sem acoplamento = (
0
2
+
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 ct
2
/2 + v
0
.
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 inch
2

(= 0,456 cm
2
).
Na planilha, encontramos o perfil da distribuio de presso ao longo do cano.





295
Da lei de conservao da energia no intervalo [x
i
,x
i+1
] resulta para a velocidade
1 2
1
2
( )
i
i
x
i i
x
A
x x p x dx
m
+
+
= +

& &
Para o tempo obtemos uma frmula de recurso:
1 1
1
i
i
x
i i
x
t t x dx
+
+
= +

&
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
2
31073
T
pd
=
d = dimetro da molcula e so expressados em Angstrm (10
-10
m)
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
distribuio exponencial e que a funo densidade ( ) /
x
f x e

= .
Finalmente, a molcula encontra-se na distncia
2 2
N N
L x y = + 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 E
c
= 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/E
0
(= comprimento de onda de
Compton) e E
0
= m
0
c
2

' = comprimento de onda do fton aps da coliso
2. E
c
= hc/ hc/' (=energia cintica do eltron)
3. pc de (pc)
2
= E
c
2
+2E
0
E
c

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, E
0

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

2 2
2 2
1 ( )
| |
1
( )
R L
Z
C
R L
C

+
=
+


A defasagem entre a tenso U e a corrente I dada pela seguinte relao


301
2
tan (1 )
L
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

2
2
2
1
res
R
LC
L
=

Na maioria dos casos, temos R
2
C/L << 1 e
res
(1/LC)
1/2
.
As correntes parciais, I
L
e I
C
, 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:

R
1
, L
1
: Z
1
= R
1
+ L
1
i; R
1
= R
R
2
, L
2
: Z
2
= R
2
+ L
2
i; R
2
= 0
R
3
, C : Z
3
= R
3
- 1/(C)i; R
3
= 0

Ns calculamos a impedncia do circuito paralelo com Z
p
= Z
1
Z
2
/(Z
1
+Z
2
)

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:

( , ) / !
x
p
f x e x



= (1)

O mdio aritmtico fornece uma estimativa para . As freqncias
esperadas calculamos com f
i,e
= Nf
p
(x
i
,). N = soma das freqncias
observadas f
i,o
.

2. Para o clculo do valor crtico de Qui
2
, podemos utilizar a funo INV.QUI
do Excel ou a seguinte expresso:

3
2 2
4 2
2 7
2 ( 1)
3 9 2
(6 14 32) /(405 )
z z
f z f z
f
z z f


+ + +
+
(2)

z = 1- (nvel de confiana) da distribuio Padro Normal


304


Para f > 30 pode-se usar uma frmula mais curta:

2 3
2 2
(1 )
9 9
f z
f f
+ (3)

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 Qui
2
)
J que esta quantidade menor do que o valor crtico de Qui
2

(=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 Qui
2
. 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.

Potrebbero piacerti anche