Você está na página 1de 6

PRINCPIOS DE PROGRAMAO PRTICA 01

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.

Sucintamente, o que a figura acima descreve o seguinte algoritmo:


1. arbitra-se um valor inicial para x como primeira aproximao - x 0 - dentro de um intervalo [a,b],
conhecido, que contm o zero;
2. levanta-se a tangente curva nesse ponto x;
3. a tangente cruza o eixo x num ponto que mais prximo do zero - x1;
4. nesse novo ponto levanta-se outra tangente a curva;

346360048.doc - 13/02/2012 10:32:00 AM Prof. Dalton Vinicius Kozak 1/6


PRINCPIOS DE PROGRAMAO PRTICA 01

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

346360048.doc - 13/02/2012 10:32:00 AM Prof. Dalton Vinicius Kozak 2/6


PRINCPIOS DE PROGRAMAO PRTICA 01

Ateno: ao digitar as definies das


funes, a janela mostrando o projeto aqui aparecer o
nome que foi
([ctrl] [R]) de sua pasta deve indicar utilizado para
Mdulo 1 selecionado. salvar a pasta

Se voc digitar as funes com outra


coisa selecionada, como Plan1 (Plan1),
no vai funcionar !

2.4.3 Definir as funes desejadas. Para a nossa aula, vamos definir as funes mostradas abaixo.

Function Func(X As Double) As Double


Func = x^2 - 3*x
End Function
Function dFdx(X As Double) As Double
dFdx = (Func(X + 1e-6) - Func(X)) / 1e-6
End Function

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.

346360048.doc - 13/02/2012 10:32:00 AM Prof. Dalton Vinicius Kozak 3/6


PRINCPIOS DE PROGRAMAO PRTICA 01

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)

346360048.doc - 13/02/2012 10:32:00 AM Prof. Dalton Vinicius Kozak 4/6


Princpios de Programao Prtica 01

5. MAIS SOBRE A PLANILHA EXCEL


5.1 Sobre o Ambiente VBA
O Editor do VBA permite associar cdigo (programas) aos
diversos elementos constituintes de um projeto.
Um projeto VBA (VBAProject) composto de objetos do
MS-Excel associados a uma determinada pasta de trabalho
(<nome>.xls), com suas planilhas e objetos inclusos, e outros
componentes como mdulos, formulrios e mdulos de classe.
Na figura ao lado possvel visualizar dois projetos com seus
diversos objetos e componentes.
Aos objetos do MS-Excel (a pasta de trabalho, as planilhas
e outros objetos inclusos nas planilhas) possvel associar
programas cuja execuo est ligada a eventos aos quais
cada objeto responde. Como exemplo, uma planilha pode
responder a um duplo clique do mouse com uma ao
especfica antes da ao de duplo clique padro. Os outros
componentes incluem os formulrios, os mdulos de classe e
os mdulos de programa comuns.
No escopo desse curso entrar em detalhes da programao associada a objetos inclusos nas
planilhas e a programao de eventos 3. Para o objetivo desse curso, que programao bsica,
basta sabermos como criar uma funo no VBA e utiliz-la posteriormente na planilha.
5.2 Depurando o Cdigo
Ao construir as funes no editor do VBA, eventualmente erros podero ser cometidos, tanto de
sintaxe quanto de lgica. Os de sintaxe o prprio compilador do VB identifica, porm os de lgica s
o programador ter condies de identificar. Para facilitar esse processo de correo de erros de
lgica, tambm chamado de depurao de cdigo, o editor do VBA disponibiliza uma barra de
ferramentas de depurao, que
pode ser ativa clicando sobre
qualquer outra barra de
ferramenta com o boto direito
do mouse e habilitando a barra
Depurar (veja figura ao lado).
Na figura da pgina seguinte so mostradas algumas das opes da barra Depurar, e cujas
explicaes so dadas na tabela abaixo.

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.

346360048.doc - 13/02/2012 10:32:00 AM Prof. Dalton Vinicius Kozak 5/6


Princpios de Programao Prtica 01

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

346360048.doc - 13/02/2012 10:32:00 AM Prof. Dalton Vinicius Kozak 6/6

Você também pode gostar