2.1 Algoritmo de Bisseção
O algoritmo de bisseção é um método simples para encontrar as raízes de funções unidimensionais. O objetivo é encontrar uma raiz \(x_0) tal que \(f(x_0)=0). O algoritmo começa com um grande intervalo, conhecido por conter \\(x_0\), e depois reduz sucessivamente o tamanho do intervalo até que ele entrelaça a raiz. A base teórica do algoritmo é o teorema de valores intermediários que afirma que se uma função contínua toma valores entre f(a)} e f(b)} nos pontos finais do intervalo, então f(f)} deve tomar todos os valores entre f(a)} e f(b)} algures no intervalo. Então, se f(a) < f(a) < f(b)}), então existe uma c(c) tal que (f(c)=gamma).
Usando esta informação, podemos apresentar o algoritmo de bisseção. Primeiro temos de verificar se existe um texto (f(a)). \um texto (f(b))-(f(b))-(f(b) Caso contrário, o intervalo não contém a raiz e pode precisar ser ampliado. Então podemos prosseguir:
-
Let \(c = \frac{a + b}{2}}.
-
Se \(f(c) = 0\), parar e retornar \(c).
-
Se {sign{sign}(f(a))|netext{sign}(f(c)){sign}), então defina {b>leftarrow c}). Caso contrário, defina 5457
5723
Goto o início e repita até à convergência (ver abaixo).
Após as iterações, o tamanho do intervalo entre parênteses da raiz será \(2^{-n}(b-a)\).
O algoritmo de bissecção é útil, conceitualmente simples e fácil de implementar. Em particular, você não precisa de nenhuma informação especial sobre a função \(f\) exceto a habilidade de avaliá-la em vários pontos do intervalo. As desvantagens são que ele só é útil em uma dimensão e sua convergência é linear, que é a taxa de convergência mais lenta para algoritmos que vamos discutir (mais sobre isso mais tarde).
O algoritmo de bissecção pode encontrar problemas em situações onde a função \(f\) não é bem comportada. A situação ideal para o algoritmo de bissecção parece algo parecido com isto.
Configuração ideal para o algoritmo de bissecção.
Aqui, \(f(a)\) e \(f(b)\) são de sinais opostos e a raiz está claramente entre \(a)e \(b)).
No cenário abaixo, o algoritmo não iniciará porque \(f(a)>0\) e \(f(b)>0\).
Derivado de \(f\) na raiz é \(0\).
Neste próximo cenário, há duas raízes entre a(a)e a(b), além de ter a(f(a)>0} e a(f(b)>0}. Seria necessário reduzir o comprimento do intervalo inicial para encontrar uma raiz.
Duas raízes dentro do intervalo.
No cenário abaixo, o algoritmo começará porque \(f(a)\) e \(f(b)\) são de sinal oposto, mas não há raiz.
Intervalo contém uma assímptota mas sem raiz.
Convergência do algoritmo de bissecção pode ser determinada tendo \(|b-a|<\varepsilon) para algum pequeno \(\varepsilon) ou tendo \(|f(b)-f(a)|<\varepsilon). O critério que você usa dependerá da aplicação específica e dos tipos de tolerâncias necessárias.
2.1.1 Exemplo: Quantis
Dado uma função de distribuição cumulativa \(F(x)\) e um número \(p\in (0, 1)\), um quantil de \(F\) é um número \(x) tal que \(F(x) = p\). O algoritmo de bisseção pode ser usado para encontrar um quantil para um dado quantil, definindo a função F(x) = F(x) – p(x) e resolvendo para o valor de F(x) que atinge F(g(x) = 0\).
Outra maneira de colocar isto é que estamos invertendo o CDF para calcular F(x = F^{-1}(p)\). Então o algoritmo de bissecção pode ser usado para inverter funções nestas situações.