arenga; newton raphson excel vba
TRANSCRIPT
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
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
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).
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
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
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
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.
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
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
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
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.
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 é:
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
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
Métodos Numéricos – 2007/2008
Relatório Técnico – Método de Newton-Raphson
15
Figura 4 – Exemplo 1.
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.
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
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
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")
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"
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))
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
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")
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
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