arenga; newton raphson excel vba

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

Upload: magno-felipe-teixeira

Post on 04-Jul-2015

724 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: ARENGA; Newton Raphson Excel Vba

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

Page 2: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

2

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

Page 3: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

3

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

Page 4: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

4

Í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

Page 5: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

5

Í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

Page 6: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

6

Acrónimos, Inicialismos e Abreviaturas

VBA Visual Basic for Applications

Page 7: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

7

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.

Page 8: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

8

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 é

contínua) então pode-se escrever um desenvolvimento limitado de 1 a 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)

n

nnn

xf

xfxx

´1

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

Page 9: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

9

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*) + n

2 f''(x*)/2 + O(3)

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

n+1 = n - [ n f'(x*) + n

2 f''(x*)/2] / [f'(x*) + n f''(x*)]

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

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

Page 10: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

10

(é 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

Page 11: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

11

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.

Page 12: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

12

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 é:

Page 13: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

13

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

Page 14: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

14

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

Page 15: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

15

Figura 4 – Exemplo 1.

Page 16: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

16

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.

Page 17: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

17

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

Page 18: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

18

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

Page 19: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

19

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

Page 20: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

20

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"

Page 21: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

21

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

Page 22: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

22

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

Page 23: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

23

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

Page 24: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

24

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

Page 25: ARENGA; Newton Raphson Excel Vba

Métodos Numéricos – 2007/2008

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

25

.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