Método de Brent

Origem: Wikipédia, a enciclopédia livre.

O método de Brent, conhecido como Brent-Dekker, é um método misto que tem como intuito combinar abordagens de enquadramento e busca. Criado por Richard Peirce Brent, ele tem como objetivo encontrar raízes de funções a partir da associação de três métodos. O algoritmo hibrido combina o método da bissecção, o método das secantes e a interpolação quadrática inversa.

Método de Dekker[editar | editar código-fonte]

A ideia de combinar o método de bisseção com o método secante remonta a Dekker (1969).

Suponha que queremos resolver a equação f(x) = 0. Assim como no método de bisseção, precisamos inicializar o método de Dekker com dois pontos, digamos a0 e b0, de tal forma que f(a0) e f(b0) têm sinais opostos. Se f for contínuo em [a0, b0], o teorema do valor intermediário garante a existência de uma solução entre 0 e b0.

Três pontos estão envolvidos em cada iteração:

  • bk é o iterado atual, ou seja, o palpite atual para a raiz de f.
  • ak é o "contraponto", ou seja, um ponto de tal forma que f(ak) e f(bk) têm sinais opostos, de modo que o intervalo [ak, bk] contém a solução. Além disso, | f(bk)| deve ser menor ou igual a | f(ak)|, de modo que bk é um palpite melhor para a solução desconhecida do que ak.
  • bk−1 é o iterado anterior (para a primeira iteração, definimos bk−1 = a0).

Dois valores provisórios para o próximo iterado são computados. O primeiro é dado pela interpolação linear, também conhecido como método secante:

e o segundo é dado pelo método de bisseção

Se o resultado do método secante, s, fica estritamente entre bk e m, então ele se torna o próximo iterado (bk+1 = s), caso contrário o ponto médio é usado (bk+1 = m).

Em seguida, o valor do novo contraponto é escolhido de tal forma que f(ak+1) e f(bk+1) têm sinais opostos. Se f(ak) e f(bk+1) têm sinais opostos, então o contraponto permanece o mesmo: ak+1 = ak. Caso contrário, f(bk+1) e f(bk) têm sinais opostos, de modo que o novo contraponto se torna umk+1 = bk.

Finalmente, se | f(ak+1)| < | f(bk+1)|, então umk+1 é provavelmente um palpite melhor para a solução do que bk+1, e, portanto, os valores de umk+1 e bk+1 são trocados.

Isso termina a descrição de uma única iteração do método de Dekker.

O método de Dekker funciona bem se a função f for razoavelmente bem comportada. No entanto, há circunstâncias em que cada iteração emprega o método secante, mas os iterados bk convergem muito lentamente (em particular, | bkbk−1| pode ser arbitrariamente pequeno). O método de Dekker requer muito mais iterações do que o método de bisseção neste caso.[1]

Método de Brent[editar | editar código-fonte]

1.   MÉTODO DA BISSEÇÃO

  • Garante a convergência desde que no intervalo escolhido [A,B] exista uma raiz.
  • Calcula-se o ponto médio do intervalo, analisando o sinal do novo .

  • A partir do sinal de , avalia-se o novo intervalo, podendo ser [A,C] ou [C,B].
  • Repete-se o processo até que o erro seja menor que a precisão desejada

2.    MÉTODO DA SECANTE

  • Uma vez determinado o intervalo inicial, é calculada uma reta secante que passa por esses pontos.
  • A partir da equação de recorrência, encontra-se um novo x que será utilizado na próxima iteração
  • O erro pode ser calculado pela diferença entre o x encontrado e o anterior.

3.    MÉTODO DA INTERPOLAÇÃO QUADRÁTICA INVERSA

  • Baseia-se na fórmula de Lagrange, onde é preciso de três valores iniciais:
  • Igualando-se a equação encontrada a zero, a raiz pode ser obtida.


O terceiro método foi inserido como um teste adicional que deve ser satisfeito antes que o resultado do método secante seja aceito como próximo. Duas desigualdades devem ser simultaneamente satisfeitas:

  • Se na etapa anterior utilizar o método de bisseção, a desigualdade deve permanecer para que seja possível fazer a interpolação, caso contrario o método de bisseção é realizado e seu resultado usado para a próxima iteração

  • Se na etapa anterior utilizar o método interpolação, então a desigualdade é utilizado em vez de realizar a próxima ação. Quando a desigualdade é verdadeira utiliza-se o método da interpolação, quando a desigualdade é falsa, utiliza-se o método da bisseção.

  • Se a etapa anterior utilizar o método de bisseção, a desigualdade deve existir, caso contrário, o método é realizado e seu resultado é utilizado para a próxima iteração.

  • Se a etapa anterior realizou a interpolação, então a desigualdade é utilizada.

Algoritmo[editar | editar código-fonte]

input a, b, and (a pointer to) a function for f
calculate f(a)
calculate f(b)
if f(a)f(b) ≥ 0 then 
    exit function because the root is not bracketed.
end if
if |f(a)| < |f(b)| then
    swap (a,b)
end if
c := a
set mflag
repeat until f(b or s) = 0 or |ba| is small enough (convergence)
    if f(a) ≠ f(c) and f(b) ≠ f(c) then
         (inverse quadratic interpolation)
    else
         (secant method)
    end if
    if (condition 1) s is not between  and b or
       (condition 2) (mflag is set and |sb| ≥ |bc|/2) or
       (condition 3) (mflag is cleared and |sb| ≥ |cd|/2) or
       (condition 4) (mflag is set and |bc| < |δ|) or
       (condition 5) (mflag is cleared and |cd| < |δ|) then
         (bisection method)
        set mflag
    else
        clear mflag
    end if
    calculate f(s)
    d := c  (d is assigned for the first time here; it won't be used above on the first iteration because mflag is set)
    c := b
    if f(a)f(s) < 0 then
        b := s 
    else
        a := s 
    end if
    if |f(a)| < |f(b)| then
        swap (a,b) 
    end if
end repeat 
output b or s (return the root).

Principais características[editar | editar código-fonte]

O método de Brent se destaca pelas seguintes vantagens:

  • Convergir rapidamente se as condições iniciais forem "favoráveis".
  • Não é necessário o cálculo da derivada.
  • Na maioria dos casos o método converge para a solução.

A sua principal desvantagem é que o algoritmo exige que a raiz procurada esteja no intervalo inicialmente fornecido.

Referências

  1. «Brent's method». Wikipedia (em inglês). 5 de março de 2021. Consultado em 27 de março de 2021 
Ícone de esboço Este artigo sobre matemática é um esboço. Você pode ajudar a Wikipédia expandindo-o.