Você está na página 1de 25

UNIVERSIDADE AUTÓNOMA DE LISBOA

Departamento de Ciências e Tecnologias

Relatório Técnico

Métodos Numéricos

Newton-Raphson

Realizado por

Mário Arenga, nº 2007 0263

Aluno da Licenciatura em Informática

Lisboa, 14 de Dezembro de 2007


Métodos Numéricos – 2007/2008

Relatório Técnico – Método de Newton-Raphson

Relatório Técnico da disciplina

de Métodos Numéricos

Realizado por

Mário Arenga

Alunos da Licenciatura em Informática

Orientado por

Prof. João Ernesto Vela Bastos

Professor Auxiliar do

Departamento de Ciências e Tecnologias

da

Universidade Autónoma de Lisboa

Lisboa

14 de Dezembro de 2007

2
Métodos Numéricos – 2007/2008
Relatório Técnico – Método de Newton-Raphson

SUMÁRIO

Este trabalho descreve o método de Newton-Raphson e o trabalho


aplicacional, efectuado em Excel – VBA, de modo a calcular as
raízes de uma função pelo método de Newton-Raphson. Este
trabalho foi dado pelo Professor da disciplina de Métodos
Numéricos (2º ano, 1º semestre, Lic. Informática, UAL).

3
Métodos Numéricos – 2007/2008

Relatório Técnico – Método de Newton-Raphson

Índice

1- INTRODUÇÃO................................................................................................................. 7

1.1 INTRODUÇÃO .......................................................................................................................... 7

1.2 OBJECTIVOS............................................................................................................................ 7

2- MÉTODO NEWTON-RAPHSON .................................................................................... 8

3- TRABALHO APLICACIONAL ..................................................................................... 11

3.1 INTRODUÇÃO ........................................................................................................................ 11

3.2 ESTUDO DA FUNÇÃO UTILIZADA........................................................................................... 12

3.3 ESTUDO DOS RESULTADOS EFECTUADOS PELA APLICAÇÃO................................................... 14

4- CONCLUSÃO................................................................................................................. 17

4.1 CONCLUSÃO ......................................................................................................................... 17

ANEXO A – CÓDIGO DESENVOLVIDO.............................................................................. 18

CÓDIGO PARA CALCULAR A NEWTON-RAPHSON ............................................................................ 18

4
Métodos Numéricos – 2007/2008
Relatório Técnico – Método de Newton-Raphson

Índice de Figuras e Tabelas

FIGURA 1 – EXEMPLO DO MÉTODO DE NEWTON-RAPHSON ............................................................ 10

FIGURA 2 – IMAGEM DO TRABALHO APLICACIONAL DESENVOLVIDO. ....................................... 11

FIGURA 3 – RESULTADOS DO PROGRAMA APLICACIONAL.............................................................. 14

FIGURA 4 – EXEMPLO 1. ............................................................................................................................. 15

FIGURA 5 – EXEMPLO 2. ............................................................................................................................. 16

5
Métodos Numéricos – 2007/2008

Relatório Técnico – Método de Newton-Raphson

Acrónimos, Inicialismos e Abreviaturas

VBA Visual Basic for Applications

6
Métodos Numéricos – 2007/2008
Relatório Técnico – Método de Newton-Raphson

1 - INTRODUÇÃO

1.1 Introdução

Um método numérico é um método não analítico, que tem como objectivo


determinar um ou mais valores numéricos, que são as soluções de um problema.

Ao contrário das metodologias analíticas, que conduzem a soluções exactas para os


problemas, os métodos numéricos produzem, em geral, apenas soluções aproximadas. Por
este facto, antes da utilização de qualquer método numérico é necessário decidir qual a
precisão dos cálculos com que se pretende obter a solução numérica desejada. A precisão
dos cálculos numéricos é também, um importante critério para a selecção de um algoritmo
particular na resolução de um dado problema.

A diferença entre o valor obtido (aproximado) e o valor exacto chama-se erro.

Neste trabalho, será apresentada a o método de Newton-Raphson, e complementar


ao trabalho será apresentado uma aplicação concebida em Excel – VBA (Visual Basic for
Applications). Nessa aplicação poderá ser possível verificar o explicado teoricamente neste
trabalho.

1.2 Objectivos

Escolher uma equação e proceder à determinação das raízes num dado intervalo,
utilizando um dos métodos estudados - trabalho a ser executado em Excel-Vba. O método
escolhido foi o de Newton-Raphson.

7
Métodos Numéricos – 2007/2008

Relatório Técnico – Método de Newton-Raphson

2 - Método Newton-Raphson

O método de Newton-Raphson é um de vários métodos existentes, sendo este um


dos mais conhecidos e poderosos para a obtenção de raízes de equações não lineares.

Se a função em estudo for de classe C1 (i.e. a derivada de 1 a


ordem existe e é
a
contínua) então pode-se escrever um desenvolvimento limitado de 1 ordem (uma
aproximação linear à função) em torno dum ponto x0:

f(x) = f(x0)+f'(x0)(x-x0)+O(2)

Se desprezarmos os termos de segunda ordem e resolvermos a equação para um


zero da função, resulta:

0 = f(x0)+f'(x0)(x1-x0) 

f xn 
xn  1  xn 
f ´xn 

Esta é a fórmula de Newton-Raphson que poderá ser interpretada do seguinte modo:

Calculado um ponto x0 obtém-se uma aproximação linear, através da tangente à


curva, para um zero da função (f(x1)  0). Se não aconteceram erros então é possível repetir
o processo neste novo ponto x1 sendo agora os termos de segunda ordem O(2), ainda
menores, pelo que o resultado é uma nova estimativa x2, ainda melhor que as anteriores.
Assim o processo é repetido (iterado) até se obter um zero com a precisão desejada.

As condições de convergência podem ser descritas de modo mais ou menos vago


pela afirmação:

“Se a derivada da função não se anula no domínio em estudo então o método


iterativo de Newton-Raphson converge para um zero da função desde que a estimativa

8
Métodos Numéricos – 2007/2008
Relatório Técnico – Método de Newton-Raphson
inicial seja suficientemente próxima.”

É importante referir que com pequenas variações na estimativa inicial é possível produzir
enormes diferenças no número de passos até se obter uma solução, tornando ainda mais
confuso o conceito de estimativa inicial suficientemente próxima.

Existem teoremas mais construtivos sobre o método (o de Kantorovitch por


exemplo) mas será suficiente referir que este método é, pelo menos suficientemente
próximo de um zero, de convergência quadrática. De facto, se subtrairmos a ambos os
membros da expressão de Newton-Raphson o verdadeiro valor do zero (x*) obtemos uma
expressão no erro

xn+1-x* = xn - x* - f(xn)/f'(xn) 
 n+1 =  n - f(xn)/f'(xn)

Expandindo a função e a sua derivada no ponto xn e substituindo na expressão


acima obtém-se

f(xn) = f(x*+ n) = f(x*) +  n f'(x*) +  n2 f''(x*)/2 + O(3)

f'(xn) = f'(x*+ n) = f'(x*) +  n f''(x*) + O(2)

 n+1 =  n - [ n f'(x*) +  n2 f''(x*)/2] / [f'(x*) +  n f''(x*)] 


2
 n+1 =  n f''(x*)/[2 f'(x*)] + O(3)

Ou seja, suficientemente próximo de um zero o método quadra o erro em cada passo

9
Métodos Numéricos – 2007/2008

Relatório Técnico – Método de Newton-Raphson


(é um algoritmo quadrático ou de convergência quadrática).

Poderá ser visualizado na figura seguinte, um cálculo de raízes, efectuado por este
método:

Figura 1 – Exemplo do Método de Newton-Raphson

10
Métodos Numéricos – 2007/2008
Relatório Técnico – Método de Newton-Raphson

3 - Trabalho Aplicacional

3.1 Introdução

Para a visualização e melhor entender a Newton-Raphson foi desenvolvida uma


aplicação em Excel, utilizando as potencialidades de programação incutidas no Excel, mais
precisamente no Visual Basic for Applications.

O código desta aplicação, poderá ser consultada no Anexo A deste trabalho.

Figura 2 – Imagem do trabalho Aplicacional Desenvolvido.

11
Métodos Numéricos – 2007/2008

Relatório Técnico – Método de Newton-Raphson


No trabalho prático, foram adicionados botões de modo a ser visualizada uma
pequena introdução ao método, ou então serem efectuados os cálculos do método.
Relativamente aos cálculos, poderão ser efectuados todos os cálculos, só os cálculo com a
respectiva iteração, ou então ser efectuada a verificação ou visualizados quais o número de
iterações necessárias para utilizar este método para uma determinada função.

De modo a limpar todos os valores calculados, escritos na folha de cálculo, deverá


ser pressionado o botão “Limpar Área de Cálculos.

De modo a alterar os parâmetros de entrada ao programa, deverão ser alteradas as


seguintes células:

Estimativa Inicial célula H13

Erro pretendido célula H14

3.2 Estudo da Função utilizada

Para a realização deste trabalho foi utilizada a função:

O gráfico para esta função é:

12
Métodos Numéricos – 2007/2008
Relatório Técnico – Método de Newton-Raphson

Esta é uma função que vai convergindo para zero, tendo várias raízes ao longo do
eixo.

Para o estudo desta função, através da aplicação, foram utilizados os seguintes


parâmetros de entrada:

Estimativa Inicial = 0,4

Erro pretendido = 0,000000001

13
Métodos Numéricos – 2007/2008

Relatório Técnico – Método de Newton-Raphson

3.3 Estudo dos resultados efectuados pela aplicação

Os cálculos efectuados pelo programa aplicacional, foram os seguintes:

Figura 3 – Resultados do Programa Aplicacional

Ao alterar o erro pretendido foi possível verificar que o número de iterações era
alterado. Quando colocado um erro inferior, o número de iterações era bastante reduzido,
acontecendo o contrário quando aumentado o número de iterações

14
Métodos Numéricos – 2007/2008
Relatório Técnico – Método de Newton-Raphson

Figura 4 – Exemplo 1.

15
Métodos Numéricos – 2007/2008

Relatório Técnico – Método de Newton-Raphson

Figura 5 – Exemplo 2.

Foi possível verificar que alterando a estimativa inicial para um valor mais distante
do ponto onde estaria a raiz, o número de iterações aumentou até ser ter descoberta qual a
raiz.

16
Métodos Numéricos – 2007/2008
Relatório Técnico – Método de Newton-Raphson

4 - Conclusão

4.1 Conclusão

Através da elaboração deste trabalho, podemos concluir que a o Método de Newton-


Raphson é um método bastante rápido e eficaz para o cálculo das raízes de uma
determinada função.

As desvantagens deste método são a de nem sempre convergir e para o utilizar é


necessário o cálculo da derivada da função, o que por vezes poderá se tornar difícil, ou
dificilmente computável

17
Métodos Numéricos – 2007/2008

Relatório Técnico – Método de Newton-Raphson

ANEXO A – Código Desenvolvido

Código para calcular a Newton-Raphson

Dim x1 As Double ' 1ª Estimativa

Dim es As Double ' Erro especificado

Function Formula(x As Double) As Double

Formula = (3 * x) - (Exp(x) * Cos(x))

End Function

Function FormulaDerivada(x As Double) As Double

FormulaDerivada = 3 - ((Exp(x) * Cos(x)) - (Sin(x) *


Exp(x)))

End Function

Function x2(x1 As Double) As Double

x2 = x1 - Formula(x1) / FormulaDerivada(x1)

End Function

Function erro(x1 As Double, x2 As Double) As Double

erro = Abs((x2 - x1) / x2)

End Function

Sub EscreverValores(linha As Integer, x1 As Double, erro As


Double)

With Worksheets("Trabalho2MN")

.Cells(linha + 26, 5) = linha

.Cells(linha + 26, 6) = x1

.Cells(linha + 26, 7) = erro

18
Métodos Numéricos – 2007/2008
Relatório Técnico – Método de Newton-Raphson

.Cells(linha + 26, 7).NumberFormat = "0.000000000"

.Cells(linha + 26, 8) = "%"

End With

End Sub

Sub EscreverValores1(linha As Integer, x1 As Double, erro As


Double)

With Worksheets("Trabalho2MN")

.Cells(linha + 17, 5) = linha

.Cells(linha + 17, 6) = x1

.Cells(linha + 17, 7) = erro

.Cells(linha + 17, 7).NumberFormat = "0.000000000"

.Cells(linha + 17, 8) = "%"

End With

End Sub

Private Sub cmdCalcular_Click()

Worksheets("Trabalho2MN").Range("E17:K37").Clear
'Limpar...

Range("E17") = "Introdução"

Range("E18") = "fdsjokfdsjlkdsfjklfsdjklsfdjklsfd jkjsdlf


sfd sdlkj sljdf ljsd fljs fljsd fl"

End Sub

Private Sub CommandButton1_Click()

With Worksheets("Trabalho2MN")

19
Métodos Numéricos – 2007/2008

Relatório Técnico – Método de Newton-Raphson

x1 = .Range("H13").Value

es = .Range("H14").Value

End With

Dim cont As Integer

cont = 1

Worksheets("Trabalho2MN").Range("E17:K50").Clear
'Limpar...

' EscreverValores cont, x1, erro(x1, x2(x1))

Do While erro(x1, x2(x1)) > es

x1 = x2(x1)

cont = cont + 1

' EscreverValores cont, x1, erro(x1, x2(x1))

Loop

With Worksheets("Trabalho2MN")

.Range("E17") = "Resultados:"

.Range("E18") = "Verificação:"

.Range("E19") = "Valor de x Calculado"

20
Métodos Numéricos – 2007/2008
Relatório Técnico – Método de Newton-Raphson

.Range("F19") = x2(x1)

.Range("F20") = Formula(x2(x1))

.Range("F20").NumberFormat = "0.000000000"

.Range("G20") = "%"

End With

End Sub

Private Sub CommandButton2_Click()

With Worksheets("Trabalho2MN")

x1 = .Range("H13").Value

es = .Range("H14").Value

End With

Dim cont As Integer

cont = 1

Worksheets("Trabalho2MN").Range("E17:K50").Clear
'Limpar...

EscreverValores1 cont, x1, erro(x1, x2(x1))

21
Métodos Numéricos – 2007/2008

Relatório Técnico – Método de Newton-Raphson

Do While erro(x1, x2(x1)) > es

x1 = x2(x1)

cont = cont + 1

EscreverValores1 cont, x1, erro(x1, x2(x1))

Loop

With Worksheets("Trabalho2MN")

.Range("E17") = "Resultados:"

End With

End Sub

Private Sub CommandButton3_Click()

Worksheets("Trabalho2MN").Range("E17:K50").Clear
'Limpar...

End Sub

Private Sub CommandButton4_Click()

With Worksheets("Trabalho2MN")

x1 = .Range("H13").Value

es = .Range("H14").Value

End With

Dim cont As Integer

22
Métodos Numéricos – 2007/2008
Relatório Técnico – Método de Newton-Raphson

cont = 1

Worksheets("Trabalho2MN").Range("E17:K50").Clear
'Limpar...

' EscreverValores cont, x1, erro(x1, x2(x1))

Do While erro(x1, x2(x1)) > es

x1 = x2(x1)

cont = cont + 1

' EscreverValores cont, x1, erro(x1, x2(x1))

Loop

With Worksheets("Trabalho2MN")

.Range("E17") = "Resultados:"

.Range("E18") = "Número de Iteracções"

.Range("F18") = cont

End With

End Sub

Private Sub CommandButton5_Click()

With Worksheets("Trabalho2MN")

23
Métodos Numéricos – 2007/2008

Relatório Técnico – Método de Newton-Raphson

x1 = .Range("H13").Value

es = .Range("H14").Value

End With

Dim cont As Integer

cont = 1

Worksheets("Trabalho2MN").Range("E17:K50").Clear
'Limpar...

EscreverValores cont, x1, erro(x1, x2(x1))

Do While erro(x1, x2(x1)) > es

x1 = x2(x1)

cont = cont + 1

EscreverValores cont, x1, erro(x1, x2(x1))

Loop

With Worksheets("Trabalho2MN")

.Range("E17") = "Resultados:"

.Range("E18") = "Número de Iteracções"

.Range("F18") = cont

24
Métodos Numéricos – 2007/2008
Relatório Técnico – Método de Newton-Raphson

.Range("E19") = "Valor de x Calculado"

.Range("F19") = x2(x1)

.Range("E21") = "Verificação:"

.Range("E22") = "Valor de x Calculado"

.Range("F22") = x2(x1)

.Range("F23") = Formula(x2(x1))

.Range("F23").NumberFormat = "0.000000000"

.Range("G23") = "%"

.Range("E25") = "Cálculos Efectuados:"

.Range("E26") = "N. da Iteracção:"

.Range("F26") = "xi:"

.Range("G26") = "Erro:"

End With

End Sub

25