O método da bisseção
A Beatriz quer saber quanto vale $\sqrt{2}$ sem usar a tecla da calculadora. Sabe que $\sqrt{2}$ é a solução positiva de $x^2 = 2$, mas não sabe resolver a equação de forma exata com os números que conhece. Será possível, pelo menos, cercar a solução cada vez mais de perto? Neste apartado vais ver que sim, e com uma garantia de quão perto estás.
Garantir que existe um zero
Imagina que sais de casa a andar sobre uma linha contínua: começas abaixo do eixo $Ox$ e acabas acima dele. Sem saltar, tens de o atravessar, pelo menos uma vez. É esta ideia, sem saltos, que está por trás do teorema seguinte.
Porquê exigir a continuidade? Porque, sem ela, o gráfico pode «saltar» por cima do eixo sem o tocar. Os polinómios, as exponenciais e os logaritmos (no seu domínio) são contínuos, e as somas, os produtos e as composições destas funções também. Por isso, ao justificares o uso do teorema, escreve sempre: «$f$ é contínua em $[a, b]$ porque é…».
Considera a função $f(x) = x^3 - x - 2$. a) Calcula $f(1)$ e $f(2)$. b) Tendo em conta que $f$ é contínua, o que podes concluir, pelo teorema de Bolzano, sobre a…
Considera a função $f(x) = x^3 - x - 2$.
- a) Calcula $f(1)$ e $f(2)$.
- b) Tendo em conta que $f$ é contínua, o que podes concluir, pelo teorema de Bolzano, sobre a existência de um zero de $f$ no intervalo $]1, 2[$? Justifica.
- c) Calcula $f(1{,}5)$ e usa o resultado para indicar um intervalo de amplitude $0{,}5$ onde se encontra esse zero.
O método da bisseção
O teorema diz que há um zero, mas não diz onde. O método da bisseção usa-o repetidamente: divide o intervalo ao meio e fica com a metade onde ainda há troca de sinal.
Dada $f$ contínua em $[a, b]$ com $f(a) \cdot f(b) < 0$:
-
Calcula o ponto médio $m = \dfrac{a + b}{2}$ e o valor $f(m)$.
-
Se $f(m) = 0$, encontraste o zero. Caso contrário, escolhe a metade onde há troca de sinal:
-
se $f(a) \cdot f(m) < 0$, o zero está em $]a, m[$;
-
se $f(m) \cdot f(b) < 0$, o zero está em $]m, b[$.
-
Repete com o novo intervalo, cuja amplitude é metade da anterior.
Os cálculos organizam-se numa tabela. Repara que, em cada linha, o sinal de $f(m)$ decide que extremo é substituído.
Considera a função $f(x) = x^3 + x - 1$. a) Mostra que $f$ tem um zero no intervalo $]0, 1[$. b) Aplica duas iterações do método da bissecção, apresentando os cálculos…
Considera a função $f(x) = x^3 + x - 1$.
- a) Mostra que $f$ tem um zero no intervalo $]0, 1[$.
- b) Aplica duas iterações do método da bissecção, apresentando os cálculos numa tabela com o intervalo, o ponto médio e o sinal de $f$ no ponto médio. Indica o intervalo onde se encontra o zero após essas duas iterações.
- c) Indica um valor aproximado do zero e majora o erro cometido.
A equação $e^x + x = 3$ tem uma única solução. Considera a função $f(x) = e^x + x - 3$. a) Calcula $f(0)$ e $f(1)$ e mostra que a solução da equação pertence ao…
A equação $e^x + x = 3$ tem uma única solução. Considera a função $f(x) = e^x + x - 3$.
- a) Calcula $f(0)$ e $f(1)$ e mostra que a solução da equação pertence ao intervalo $]0, 1[$.
- b) Aplica três iterações do método da bisseção, registando os valores numa tabela (usa três casas decimais nos cálculos).
- c) Indica uma aproximação da solução com erro inferior a $0{,}1$ e justifica a tua escolha.
Quão perto estamos?
Cada iteração divide a amplitude do intervalo por $2$. Se partires de $[a, b]$, depois de $n$ iterações o intervalo tem amplitude $\dfrac{b - a}{2^n}$.
O zero está dentro desse intervalo. Qualquer ponto do intervalo (por exemplo, o seu ponto médio) é uma aproximação do zero, e o erro é inferior à amplitude do intervalo.
Esta fórmula serve para duas coisas:
-
Majorar o erro depois de um certo número de iterações. No exemplo anterior, depois de 3 iterações a partir de $[1, 2]$, o erro é inferior a $\dfrac{1}{2^3} = 0{,}125$.
-
Decidir quantas iterações fazer para atingir uma precisão pedida.
O método é lento mas seguro: cada iteração ganha uma casa binária de precisão, e funciona sempre que o teorema se aplica. Por isso se programa com facilidade, por exemplo em Python:
def bisseccao(f, a, b, n):
for _ in range(n):
m = (a + b) / 2
if f(a) * f(m) <= 0:
b = m
else:
a = m
return a, b
Também podes usar a calculadora gráfica ou uma folha de cálculo, com uma coluna para $a$, outra para $b$, outra para $m$ e outra para $f(m)$. Os valores que obténs não são exatos, mas o erro continua controlado pela fórmula acima.
Considera a função $f(x) = x - \cos x$ (com $x$ em radianos), definida no intervalo $[0, 1]$. a) Mostra que $f$ tem um zero em $]0, 1[$. b) Sabendo que, após $n$…
Considera a função $f(x) = x - \cos x$ (com $x$ em radianos), definida no intervalo $[0, 1]$.
- a) Mostra que $f$ tem um zero em $]0, 1[$.
- b) Sabendo que, após $n$ iterações do método da bisseção num intervalo $[a, b]$, o erro da aproximação é inferior a $\frac{b - a}{2^n}$, determina quantas iterações são necessárias para garantir um erro inferior a $0{,}01$, partindo de $[0, 1]$.
- c) Efetua três iterações do método da bisseção e indica o intervalo onde se encontra o zero.
- d) Relaciona o número de iterações calculado em b) com o erro obtido após as três iterações de c) e comenta a eficiência do método.
Voltando à Beatriz: depois de três iterações sabe que $\sqrt{2} \in ]1{,}375 ; 1{,}5[$, com erro inferior a $0{,}125$. Com mais iterações, a aproximação melhora tanto quanto ela quiser.
Em resumo
-
Bolzano-Cauchy: se $f$ é contínua em $[a, b]$ e $f(a) \cdot f(b) < 0$, existe $c \in ]a, b[$ com $f(c) = 0$. Justifica sempre a continuidade.
-
Bisseção: calcula $m = \dfrac{a + b}{2}$ e fica com a metade onde os sinais nos extremos são contrários. Repete.
-
Organiza os cálculos numa tabela com o intervalo, o ponto médio e o sinal de $f(m)$.
-
Erro: após $n$ iterações, o erro é inferior a $\dfrac{b - a}{2^n}$.
-
Para um erro inferior a $\varepsilon$, resolve $2^n > \dfrac{b - a}{\varepsilon}$ e arredonda $n$ por excesso.