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

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