1.2.3 Raízes de Equações — Métodos Abertos — Método da Secante

March 9th, 2010 by SAWP | Filed under Métodos Computacionais

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 \left( xi, f(xi) \right) 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 x_{i} . 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:

  1. def secante(F, x0=1.0, xminus1=0.0, errto=0.001, imax=100):
  2.     """
  3.    return the root of a function (using the Secant Method)
  4.  
  5.    secante(F, x0=1.0, xminus1=0.0, errto=0.001, imax=100)
  6.  
  7.    * F: Function where find the roots
  8.    * x0: next point (estimative)
  9.    * xminus: xi-1, used to define another bound
  10.    * errto: tolerated error
  11.    * imax: max of iterations allowed
  12.  
  13.    Author: Pedro Garcia [sawp@sawp.com.br]
  14.    see: http://www.sawp.com.br
  15.    License: Creative Commons
  16.  
  17.    Dec 2009
  18.    """
  19.  
  20.     iterCount = 0
  21.     errno = errto + 1
  22.     x1 = x0
  23.     x0 = xminus1
  24.  
  25.     while errno > errto and iterCount < imax:
  26.         xminus1 = x0
  27.         x0 = x1
  28.  
  29.         # in Newton-Raphson will be x1 = x0 – G(x0)/diffG(x0)
  30.         # in fixed point will be x1 = G(x0)
  31.         x1 = x0 – (F(x0)*(xminus1 – x0))/(F(xminus1) – F(x0))
  32.  
  33.         iterCount += 1
  34.  
  35.         if x1 != 0:
  36.             errno = fabs((x1 – x0)/x1)
  37.  
  38.     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/.

Tags: tag_icon [ Métodos Computacionais ]

Você pode ler as eventuais respostas desta entrada através do RSS 2.0 feed.
As respostas estão encerradas, mas você pode trackback a partir do seu próprio site.