Método da bisseção

Método da bisseção.

O método da bisseção (português brasileiro) ou método da bissecção (português europeu) é um método de busca de raízes que bissecta repetidamente um intervalo e então seleciona um subintervalo contendo a raiz para processamento adicional.[1] Trata-se de um método simples e robusto, mas relativamente lento quando comparado a métodos como o método de Newton ou o método das secantes.[2] Por este motivo, ele é usado frequentemente para obter uma primeira aproximação de uma solução, a qual é então utilizada como ponto inicial para métodos que convergem mais rapidamente.[3] O método também é chamado de método da pesquisa binária,[4] ou método da dicotomia.[5]

O método

Bisseção do intervalo [ a , b ] {\textstyle [a,b]} e os elementos envolvidos.

Este método pode ser usado para encontrar as raízes de uma função contínua f : [ a , b ] R {\textstyle f:[a,b]\to \mathbb {R} } , y = f ( x ) {\textstyle y=f(x)} , tendo f ( a ) {\textstyle f(a)} e f ( b ) {\textstyle f(b)} sinais opostos, ou seja, f ( a ) f ( b ) < 0 {\displaystyle f(a)\cdot f(b)<0} . Nestas condições, o teorema do valor intermediário garante a existência de uma raiz no intervalo ( a , b ) {\displaystyle (a,b)} . O método consiste em dividir o intervalo no seu ponto médio c = ( a + b ) / 2 {\displaystyle c=(a+b)/2} , e então verificar em qual dos dois subintervalos garante-se a existência de uma raiz. Para tanto, basta verificar se f ( a ) f ( c ) < 0 {\textstyle f(a)\cdot f(c)<0} . Caso afirmativo, existe pelo menos uma raiz no intervalo ( a , c ) {\textstyle (a,c)} , caso contrário garante-se a existência de uma raiz no intervalo [ c , b ) {\textstyle [c,b)} . O procedimento é, então, repetido para o subintervalo correspondente à raiz até que c {\textstyle c} aproxime a raiz com a precisão desejada.[2][6]

Análise

A cada passo, o erro absoluto é reduzido pela metade, e assim o método converge linearmente. Especificamente, se c 1 = ( a + b ) / 2 {\displaystyle c_{1}=(a+b)/2} é o ponto médio do intervalo, e c n {\displaystyle c_{n}} é o ponto médio do intervalo da n {\displaystyle n} -ésima iteração, então a diferença entre c n {\displaystyle c_{n}} e uma solução c {\displaystyle c} é limitada por[7][6]

| c n c | | b a | 2 n . {\displaystyle |c_{n}-c|\leq {\frac {|b-a|}{2^{n}}}.}

Assim, se ϵ n {\displaystyle \epsilon _{n}} for a estimativa do erro absoluto na n {\displaystyle n} -ésima iteração, então

ϵ n + 1 ϵ n / 2 {\displaystyle \epsilon _{n+1}\leq \epsilon _{n}/2}

e o método da bisseção tem convergência linear, o que é comparativamente lento.

Esta fórmula também pode ser utilizada para determinar de antemão o número n {\displaystyle n} máximo de iterações que seriam necessárias para que a aproximação fornecida pelo método estivesse dentro de uma determinada margem de erro (ou tolerância) ϵ {\displaystyle \epsilon } :

n = log 2 ( ϵ 0 ϵ ) = log ϵ 0 log ϵ log 2 , {\displaystyle n=\log _{2}\left({\frac {\epsilon _{0}}{\epsilon }}\right)={\frac {\log \epsilon _{0}-\log \epsilon }{\log 2}},}
sendo ϵ 0 {\displaystyle \epsilon _{0}} o tamanho do intervalo inicial, isto é, ϵ 0 = b a . {\displaystyle \epsilon _{0}=b-a.}

Algoritmo

Com o método da bisseção podemos construir um algoritmo para aproximar a raiz de uma função. Por exemplo, temos o seguinte pseudocódigo:[2]

ENTRADA: Função f, extremos do intervalo a, b, tolerância TOL, número máximo de iterações NMAX
CONDIÇÕES: a < b, ou f(a) < 0 e f(b) > 0 ou f(a) > 0 e f(b) < 0
SAÍDA: valor que difere de uma raiz de f(x)=0 por menos do que TOL
N ← 1
Enquanto NNMAX # limita o número de iterações para prevenir um loop infinito
  c ← (a + b)/2 # novo ponto médio
  Se f(c) = 0 ou (ba)/2 < TOL então # solução encontrada
    Retorne(c)
    Pare
  Fim
  NN + 1 # incrementa o contador de iterações
  Se sinal(f(c)) = sinal(f(a)) então ac senão bc # novo intervalo
Fim
Retorne("O algoritmo falhou.") # núm. máximo de iterações excedido

Exemplo

Calculemos os zeros da função

f ( x ) = x 3 x 2 {\displaystyle f(x)=x^{3}-x-2}

De início temos de achar valores para a {\displaystyle a} e b {\displaystyle b} tais que f ( a ) {\displaystyle f(a)} e f ( b ) {\displaystyle f(b)} tenham sinais contrários. a = 1 {\displaystyle a=1} e b = 2 {\displaystyle b=2} respeitam esta condição.

f ( 1 ) = 2 {\displaystyle f(1)=-2} e f ( 2 ) = + 4 {\displaystyle f(2)=+4}

Como a função é contínua, sabemos que existe uma raiz no intervalo ( 1 , 2 ) {\textstyle (1,2)} . A primeira iteração gera c = 1.5 {\displaystyle c=1.5} , e f ( 1.5 ) = 0.125 {\displaystyle f(1.5)=-0.125} . Como f ( c ) {\textstyle f(c)} é negativa, c {\textstyle c} se tornará nosso novo a {\textstyle a} para que continuemos tendo f ( a ) {\displaystyle f(a)} e f ( b ) {\displaystyle f(b)} com sinais opostos, e com isso saber que a raiz se encontra em ( 1.5 , 2 ) {\textstyle (1.5,2)} . Repetindo esses passos, teremos intervalos cada vez menores até que o valor de c {\textstyle c} convirja para o zero de nossa equação. Veja os valores plotados na tabela abaixo:

Iteração a n {\displaystyle a_{n}} b n {\displaystyle b_{n}} c n {\displaystyle c_{n}} f ( c n ) {\displaystyle f(c_{n})}
1 1 2 1.5 −0.125
2 1.5 2 1.75 1.6093750
3 1.5 1.75 1.625 0.6660156
4 1.5 1.625 1.5625 0.2521973
5 1.5 1.5625 1.5312500 0.0591125
6 1.5 1.5312500 1.5156250 −0.0340538
7 1.5156250 1.5312500 1.5234375 0.0122504
8 1.5156250 1.5234375 1.5195313 −0.0109712
9 1.5195313 1.5234375 1.5214844 0.0006222
10 1.5195313 1.5214844 1.5205078 −0.0051789
11 1.5205078 1.5214844 1.5209961 −0.0022794
12 1.5209961 1.5214844 1.5212402 −0.0008289
13 1.5212402 1.5214844 1.5213623 −0.0001034
14 1.5213623 1.5214844 1.5214233 0.0002594
15 1.5213623 1.5214233 1.5213928 0.0000780

Como podemos ver, a partir da 13º iteração o valor de c {\textstyle c} já tem 4 dígitos significativos corretos.

Ver também

Referências

  1. «Bissecção». Dicionário Online Priberam. Consultado em 17 de novembro de 2021 
  2. a b c Burden, Richard (2008). Análise Numérica - Tradução da 8ª Edição Norte-Americana. [S.l.: s.n.] ISBN 9788522106011 
  3. Burden & Faires 1985, p. 31
  4. Burden & Faires 1985, p. 28
  5. «Dichotomy method - Encyclopedia of Mathematics». www.encyclopediaofmath.org. Consultado em 21 de dezembro de 2015 
  6. a b Francisco Satuf. «"Método da Bisseção"» (PDF). Consultado em 2 de outubro de 2013. Arquivado do original (PDF) em 5 de outubro de 2013 
  7. Burden & Faires 1985, p. 31, Theorem 2.1
  • Burden, Richard L.; Faires, J. Douglas (1985), «2.1 The Bisection Algorithm», Numerical Analysis, ISBN 0-87150-857-5 3rd ed. , PWS Publishers