1.2.3 Raízes de Equações — Métodos Abertos — Método da Secante
1. Introdução
Como visto no Método de Newton-Raphson, as implementações dependem da derivada para encontrar as raízes. O problema nisso é que nem sempre é possível encontrar uma expressão para derivadas.
Outro inconveniente do Método de Newton-Raphson é que ele depende de duas funções: a própria função, cuja raiz se quer encontrar, e a função da derivada. Dependendo da natureza da função, a obtenção da sua derivada pode ser difícil de se obter, ou então ser uma tarefa computacionalmente custosa, o que implicaria em uma perda de eficiência.
Contudo, é possível aproximar a derivada — que fornece uma tangente — por uma secante.
2. Desenvolvimento do Método
A Figura metodo ilustra a descrição gráfica do Método da Secante (verde) e o de Newton-Raphson (em azul), sendo possível observar que ambas técnicas são muito semelhantes entre si, uma vez que as duas estimam a raiz extrapolando-se uma tangente da função no ponto até o eixo abscisso. Logo, no caso de Newton-Raphson a inclinação da tangente é dada pela própria derivada, enquanto no da Secante usa-se uma diferença dividida para estimar a inclinação.
A aproximação da secante é dada pela seguinte relação:
$$ \dfrac{d}{dx} f(x_{i}) = \dfrac{ f(x_{i-1}) – f(x_{i}) }{ x_{i-1} – x_{i} } $$
A aproximação desta derivada é substituída na equação do Método de Newton-Raphson:
$$ x_{i+1} = x_{i} – \dfrac{ f(x_{i}) }{ \dfrac{d}{d x} f(x_{i}) } $$
$$\Downarrow $$
$$ x_{i+1} = x_{i} – \dfrac{ f(x_{i}) ~ \left( x_{i-1} – x_{i} \right) }{f(x_{i-1}) – f(x_{i}) } $$
A Equação 3 acima é a fórmula do Método da Secante, sendo intimamente relacionado com o Método de Newton, pois o primeiro é uma modificação do segundo. Contudo, a abordagem da secante tem a vantagem de não necessitar da derivada da função, exigindo apenas uma estimativa inicial de x.
Ainda pelo gráfico, visualizamos que a aproximação da secante está mais distante que a de Newton para um mesmo . Isso ocorre porque o método de Newton-Raphson converge muito mais rapidamente. Sendo assim, concluimos que o Método da Secante deva ser preferido apenas quando não for possível obter a derivada da função.
3. Implementação
Como na implementação de Newton-Raphson, o Método da Secante consiste em modificar o do Ponto Fixo, utilizando a equação deduzida neste artigo para calcular a raiz:
def secante(F, x0=1.0, xminus1=0.0, errto=0.001, imax=100):
"""
return the root of a function (using the Secant Method)
secante(F, x0=1.0, xminus1=0.0, errto=0.001, imax=100)
* F: Function where find the roots
* x0: next point (estimative)
* xminus: xi-1, used to define another bound
* errto: tolerated error
* imax: max of iterations allowed
Author: Pedro Garcia [sawp@sawp.com.br]
see: http://www.sawp.com.br
License: Creative Commons
Dec 2009
"""
iterCount = 0
errno = errto + 1
x1 = x0
x0 = xminus1
while errno > errto and iterCount < imax:
xminus1 = x0
x0 = x1
# in Newton-Raphson will be x1 = x0 - G(x0)/diffG(x0)
# in fixed point will be x1 = G(x0)
x1 = x0 - (F(x0)*(xminus1 - x0))/(F(xminus1) - F(x0))
iterCount += 1
if x1 != 0:
errno = fabs((x1 - x0)/x1)
return x1
Um exemplo de utilização desta função pode ser encontrado em http://www.sawp.com.br/code/rootfind/secante.py
4. Copyright
Este documento está disponível sob a licença Creative Commons. As regras dos direitos de cópia deste conteúdo estão acessíveis em http://creativecommons.org/licenses/by-nc-nd/2.5/br/.