Método da bissecção
Como aproximar a solução de uma equação espremendo-a em um intervalo
Vamos lá?
O método da bissecção é o método mais simples para estimar a solução ou raiz de uma equação não linear escalar. Nesta aula eu apresento o método de forma construtiva e mostro um exemplo.
- 1
- 2
- 3
- 4
Quando o intervalo é repartido em dois subintervalos, podemos dizer que...
Em cada passo do método, quantas vezes a função precisa ser avaliada?
Qual a principal dificuldade para usar o método da bissecção?
No método da bissecção, parte-se de um intervalo inicial
Dessa forma, sucessivamente o intervalo de confinamento do zero da função é contraı́do. A cada iteração a melhor escolha possível para aproximar o zero da função é o ponto médio do intervalo,
Como exemplo, considere a função
f = @(x) x.^2 - exp(x/2); # definição da função a = 0; b = 2; m = (a+b)/2; # extremos do intervalo e ponto médio # exibe a,m e b e os valores de f nos extremos e no ponto médio [a m b; f(a) f(m) f(b)] ans = 0 1.0000 2.0000 -1.0000 -0.6487 1.2817 # como f(m)·f(b) < 0, a é atualizado para m a = m; m = (a+b)/2; [a m b; f(a) f(m) f(b)] ans = 1.0000 1.5000 2.0000 -0.6487 0.1330 1.2817 # como f(a)·f(m) < 0, b é atualizado para m b = m; m = (a+b)/2; [a m b; f(a) f(m) f(b)] ans = 1.0000 1.2500 1.5000 -0.6487 -0.3057 0.1330 # como f(m)·f(b) < 0, a é atualizado para m a = m; m = (a+b)/2; [a m b; f(a) f(m) f(b)] ans = 1.250000 1.375000 1.500000 -0.305746 -0.098112 0.133000 # como f(m)·f(b) < 0, a é atualizado para m a = m; m = (a+b)/2; [a m b; f(a) f(m) f(b)] ans = 1.375000 1.437500 1.500000 -0.098112 0.014539 0.133000 # como f(a)·f(m) < 0, b é atualizado para m b = m; m = (a+b)/2; [a m b; f(a) f(m) f(b)] ans = 1.375000 1.406250 1.437500 -0.098112 -0.042516 0.014539
Ao cabo de seis iterações, descobrimos que um zero de
Uma dificuldade para a aplicação do método da bissecção é a sua inicialização, que requer a determinação de um intervalo
Uma vez iniciado, o método a bissecção tem convergência assegurada, ou seja,
Abaixo vemos como todas essas ideias podem ser transcritas em um algoritmo , que pode ser implementado, para evitar executar manualmente cada passo do método, como foi feito no exemplo acima.
- Sejam
, tais que , e . -
- Enquanto
e , faça -
- Se
então é a solução. FIM. - Se
, então -
-
-
- Retorne
como melhor aproximação.
A obtenção de uma aproximação com a precisão desejada pode demandar uma grande quantidade de iterações (no exemplo acima, depois de 6 iterações, só era possível garantir que a aproximação conseguida tinha uma casa decimal correta). O problema disso é que, em algumas situações de interesse, a avaliação da função pode ser muito cara. Por isto, o algoritmo acima utiliza também como critério de parada um limite máximo para o número de iterações.
Implementação computacional
Sobre o algoritmo acima, alguns cuidados podem e devem ser tomados caso ele seja implementado. Por exemplo, quando se pergunta se
Sobre o critério de parada, é saudável incluir também um limite para o número máximo de iterações. Mesmo sabendo que o método da bissecção tem convergência assegurada, isto evita que o algoritmo execute um número inviável de iterações, por exemplo quando o intervalo inicial é grande demais. Isto também evita a situação onde o critério para declarar convergência, eventualmente, não pode ser atingido por problemas numéricos.
Por fim, como alternativa ao método da bissecção, há métodos que utilizam mais informação sobre a função e, portanto, são mais rápidos. Isso é assunto para outra aula.
1. Determine um intervalo fechado de comprimento máximo
Construíndo o gráfico da função, rapidamente percebemos que o intervalo
2. Utilizando o método da bissecção e o critério de parada
em em em
(a)
3. Seja
O número mínimo de iterações deve ser maior que
4. Como o algoritmo apresentado poderia ser mais bem detalhado para evitar avaliações desnecessárias da função