Escolar Documentos
Profissional Documentos
Cultura Documentos
1. OBJETIVO
O objetivo desta aula utilizar a planilha eletrnica MS-Excel para implementar um algoritmo do
clculo numrico: obter o zero de uma funo pelo mtodo de Newton-Raphson.
2. BASE TERICA
2.1 Clculo de Zero de Funes
Um nmero real qualquer dito zero de uma funo f(x), ou raiz da equao f(x) = 0, se f() = 0.
Como exemplo, seja a funo quadrtica abaixo:
f(x) = ax2 + bx + c
Determinar o zero dessa funo significa resolver a equao de 2o grau f(x) = 0, cuja soluo
analtica e bem conhecida. O mtodo de soluo mais conhecido o de Bhaskara, onde:
b b
> 0 x1 = ; x2 = ;
2a 2a
= b2 - 4ac b
= 0 x1 = x2 = ;
2a
< 0 no h soluo real.
Entretanto, existe uma quantidade muito grande de funes que no possuem soluo analtica,
ou cuja soluo desse tipo muito difcil de se obter. Nesse caso, faz-se uso de mtodos
(algoritmos) numricos para se obter uma soluo aproximada, to perto quanto se queira da
soluo exata. Um dos mtodos mais conhecidos ser visto a seguir.
2.2 Mtodo de Newton-Raphson
Esse mtodo bastante utilizado, podendo ser derivado formalmente a partir da expanso de
uma funo em srie de Taylor, retendo os termos de primeira ordem. Esse formalismo matemtico
no nos interessa aqui, e a justificativa geomtrica bem mais fcil de entender e pode ser vista na
figura abaixo, onde, por aproximaes sucessivas, chega-se ao zero da funo.
F(x)
F(xk ) F(xk )
F(xk )
y
x2 x1 x0
x
xk+1 xk
Aproximaes sucessivas fazem
xk+1 = xk - F(xk )/F(xk ) xk, k=0,1,2,..., tender ao valor
do zero.
5. a nova tangente cruza o eixo x num ponto ainda mais prximo do zero - x2;
6. repete-se o procedimento at que a diferena entre a aproximao e o valor exato seja
suficientemente pequena, quando f(xk) 0.
A relao para estimativa do prximo valor de x a partir de uma aproximao ("chute") inicial
obtida matematicamente da seguinte relao, dedutvel a partir da figura anterior:
y F( xk ) F( x k ) incio
tg = = F'(xk) x k 1 x k (A)
x xk xk 1 F' ( x k ) a, b,
k 0
Na expresso acima, F'(xk) a derivada de F(x) no ponto xk, que
nada mais do que a inclinao da tangente nesse ponto: y/x. x (a + b) / 2
Trata-se, portanto, de um mtodo iterativo: arbitra-se um valor
inicial para o zero e, sucessivamente, essa estimativa melhorada |F(x )|
at ficar suficientemente prxima V
Critrios de Parada do valor real. O algoritmo
equivalente, em fluxograma, x x - F(x) / dFdx(x) F
zero = x | x [ - , + ] mostrado direita. Para aplicar o
k k+1
mtodo, necessrio primeiro
- +
conhecer o intervalo [a, b] que
y contenha uma raiz da equao "Zero = ", x
F(x)
f(x) = 0 (aplicando-se o teorema
de Bolzano 1), e definir um critrio fim
x
para interromper as iteraes ( |
xk+1 - xk| < e/ou |F(x)| < por
exemplo - veja a figura esquerda). A primeira estimativa para o
zero pode ser tomada, por exemplo, como sendo o ponto mdio do
zero = x | F(x) [- , ]
intervalo [a, b]; mas poderia ser qualquer ponto nesse intervalo.
y 2.3 Funes
F(x) Numa linguagem de programao, como o Visual Basic, uma
funo um trecho de programa que, a partir de valores dados,
- x executa algum tipo de clculo que resulta em um nico valor, que
o valor retornado pela funo. Conceitualmente, a mesma coisa
que as funes vistas na matemtica. Exemplo: a funo sen(x)
retorna como resultado o valor do seno do ngulo x.
O valor de retorno de uma funo "colocado" no ponto onde a funo requisitada (ou
chamada), sendo ali utilizado.
2.4 Definindo Funes no Excel
Para se poder implementar o algoritmo para o clculo do zero de funes utilizando a planilha
Excel, necessrio saber antes como definir uma funo. Isso possvel utilizando o editor do Visual
Basic for Applications (VBA - linguagem de programao embutida no Excel), seguindo os passos
descritos a seguir.
2.4.1 Habilitar a barra de ferramentas do Visual Basic atravs da opo
Exibir/Barra de ferramentas (veja a figura ao lado).
2.4.2 Entrar no editor do Visual Basic e selecionar a opo Inserir/Mdulo. Nesse
momento, aparece uma janela em branco onde as funes podem ser digitadas.
1
Esse teorema diz, resumidamente, o seguinte: se f(x) contnua num intervalo [a, b], e se f(a)f(b) < 0 (troca de sinal das
ordenadas nos extremos), ento esse intervalo contm pelo menos um zero da funo f(x).
2.4.3 Definir as funes desejadas. Para a nossa aula, vamos definir as funes mostradas abaixo.
No Mdulo1 dever ser digitado exatamente as funes mostradas acima, uma aps a outra. Note
que a funo dFdx(x) a derivada primeira da funo Func, porm calculada numericamente atravs
da prpria definio de derivada, que :
df f ( x e) f ( x )
lim
dx e 0 e
Na funo dFdx(x), arbitrou-se um valor muito pequeno para e: 10-6 - isso uma "aproximao de
engenharia 2".
Aps digitar essas funes, pode-se voltar para a planilha Excel (cone ao lado). Para
utilizar as funes assim definidas, basta fazer como para qualquer outra funo do Excel:
elas tambm estaro disponveis na opo Inserir/Funo... (ou pelo cone do assistente
de funo, fx ), categoria Definida pelo usurio.
3. SEQNCIA DA PRTICA
3.1 Ler atentamente a base terica dessa prtica.
3.2 Fazer o exerccio.
4. EXERCCIO
4.1 Monte a planilha mostrada abaixo, onde o zero da funo foi calculado para a funo
f(x) = x2 - 3x. Faa referncia s equaes do item 2.2 para construir as frmulas nas tabelas.
Note que x0 ser o "chute" inicial, obtido a partir de a e b (como? releia-a a base terica). Os
outros valores de xk, k = 1,2,..., so valores calculados a partir da relao (A); a coluna com ttulo xk+1
construda a partir dessa relao: nas clulas dessa coluna aparecer uma expresso do tipo
=B8-C8/... (use as funes criadas no VBA).
2
Os matemticos puristas ficam arrepiados ao ver esse tipo de simplificao, mas elas funcionam.
Para construir a coluna com o ttulo |F(x k+1)| < utilize a funo do Excel chamada SE, categoria
lgica (consulte o help da funo e descubra como ela funciona). A funo mdulo de x ( | x | )
tambm existe no Excel: ABS(X). Essa coluna indica quando o critrio de convergncia foi verificado,
e a linha onde isso acontece contm o zero. Assim sendo, na planilha baixo, supondo que ela
contivesse apenas o nmero de iteraes necessrias para calcular o zero (ele tem mais linhas do
que preciso), qual clula conteria o zero aproximado ?
Aps montar a planilha acima, utilize-a para completar a tabela abaixo, sempre considerando
= 1e-5.
Ateno: use a mesma planilha, modificando apenas a definio da funo !
funo a b zero
x2 - x - 7 -6 0 -2,192582
5
x - 9 1 4 1,551846
x
e - 12 0 8 2,995732
x
Obs.: a funo e no Excel possui a sintaxe EXP(X)
no Descrio
1 O nome do mdulo que est sendo editado. Esse nome pode ser alterado atravs da janela de
propriedade (se ela no estiver aberta, pressione a tecla F4).
2 Nome da funo que est sendo editada/modificada.
3 cone da opo Redefinir. Toda vez que o programa acusar algum erro em alguma funo, ou
a planilha Excel parecer "travada", volte ao editor do VBA e clique sobre esse cone para poder
destravar a planilha e redefinir o cdigo, corrigindo o(s) erro(s).
4 Opo para ativar um "break point". O programa ser executado at esse ponto. Deve ser utilizado
conjuntamente com as opes de Depurao Total e Depurao Parcial, explicadas a seguir
3
Para que quiser se aprofundar no estudo do VBA, a seguinte referncia, existente na biblioteca da PUC, pode ser til:
Wells, E.: Desenvolvimento Solues e Aplicaes em Excel 7.0/Visual Basic , So Paulo, Makron Books, 1997.
no Descrio
5 Depurao Total. Clicando sobre esse cone o programa executado passo a passo (linha por linha).
Ao encontrar uma chamada a uma outra funo, tambm o cdigo dessa funo executado passo
a passo.
6 Depurao Parcial. Clicando sobre esse cone o programa executado passo a passo (linha por
linha). Ao encontrar uma chamada a uma outra funo, o cdigo desta no executado passo a
passo, ou seja, a depurao ocorre s no cdigo da funo atual.
7 Janela locais. Mostra o valor de todas as variveis locais da funo (ou subrotina) sendo depurada.
8 Janela imediata. Permite, entre outras coisas, alterar o valor de variveis durante a depurao.
Nessa figura, o valor da varivel R foi alterada de 1 para 3 durante a execuo do programa.
9 Janela de Inspeo de variveis. Mostra o valor corrente da varivel que nela for inserida
atravs da opo de inspeo rpida (cone ao lado) quando for pedido para adicionar janela
de inspeo.
1 3
4
5
6
7
8
9