Método da Posição Falsa
Teoria
E aí meus consagrados, estamos começando mais um tópico para resolução de proble utilizando métodos Numéricos. E maaaais um vez vamos usar os conceitos de métodos iterativos que basicamente consiste em dar um intervalo inicial meio grosseio e refinar através de uma série de iterações até atender ao critério de parada. Se liga nesse esqueminha pra da aquela relembrada em métodos iterativos:
O que esse método precisa?
Ele precisa de um intervalo que contenha a raiz que se deseja obter, de tal forma que . Novamente isso a gente tira lá do isolamento de raízes! E ele precisa daquele erro que vai servir pro nosso critério de parada.
Próxima pergunta: Qual o algoritmo desse método?
No método da Bisseção nós vimos um algoritmo nada refinado né? Era só ir tirando a média haha, o que fazia com que perdêssemos um tempinho. Aqui a conta é um pouquinho mais complexa. No método da Posição Falsa vamos encontrar nossa estimativa de cada iteração fazendo:
Mas quem diabos inventou isso? Calma, vou te explicar dá onde saiu essa coisa. Imagina o seguinte, nós temos um intervalo . E digamos que e . Como está mais próximo de que é mais provável que esteja mais próxima da raiz que concorda?
E é daí que saiu essa fórmula! Ao invés de tirarmos a média aritmética entre e , nós tiramos uma média ponderada com pesos e . Assim nosso ponto vai tender mais para o que estiver mais próximo do zero! Inteligente né? Vamos dar uma olhadinha no gráfico para ver como fica:
Perceba que, quando usamos a média ponderada, o intervalo vai convergindo mais rápido pra raiz real da função! A diferença é que aqui esses intervalos não vão ter o mesmo tamanho e provavelmente a raiz vai estar sempre no menor, o que facilita a nossa vida já que os intervalos diminuem mais rápido!
De resto é tudo igual! Continuamos as iterações até que o critério de parada seja atingido! Opa, e que critério de parada usamos aqui? Aqui é comum usarmos dois critérios e muitas vezes recebemos dois erros . O e o , de modo que paramos se algum desses critérios for satisfeito:
. Nesse caso basta escolhermos algum dentro de
ou . Nesse caso escolhemos ou como e fim de papo.
Nós costumamos fazer isso aqui pois precisamos calcular e para o cálculo de , então não custa nada usar eles haha. No entanto, no final das contas podemos usar qualquer outro critério de parada ou só um desses aí.
Vamos resolver o mesmo problema que fizemos no método da bisseção. Vamos achar uma aproximação para a raiz de entre com erros
Iteração :
Logo, nosso novo intervalo será formado por e . Temos então que:
Critério de Parada:
Como não alcançamos o critério de parada continuamos as iterações.
Vamos organizar na tabelinha marota pra organizar o conteúdo e as iterações e ver como fica, Lembrando:
Da uma olhadinha nesse intervalo, percebeu o que aconteceu? Os resultados foram convergindo mais rápido que no método da bissecção, e nesse caso nós fizemos muito menos iterações para chegar no valor desejado. Bem melhor né?
A dica que eu dou, é fazer os cálculos e sempre organizar na tabela que te garanto que é sucesso. Aí fica mais difícil se perder em qual iteração nós estamos! Nessa sequência: Calcula os valores, joga na tabela e compara.
Só por fins comparativos, com essa precisão aí que a gente queria seriam necessárias iterações no método da bisseção! Mais do dobro do que precisamos nesse ;)
Algoritmo
Novamente vou deixar a parte da programação o mais simples possível com o algoritmo desse método prontinho pra ser passado para a linguagem da máquina:
Passo 1. Dados iniciais (o que seu programa vai receber de você):
a. Intervalo inicial contendo a raiz
b. Precisão do resultado final e
Passo 2. Definimos um contador de iterações .
Passo 3. Se , então seu intervalo já está ótimo. Escolha um qualquer entre (normalmente se escolhe o ponto médio) e FIM. Caso contrário, continue para o Passo 4.
Passo 4. Se , escolha como e FIM. Se , escolha como e FIM. Caso contrário, continue para o Passo 5.
Passo 5. , aumentamos uma iteração no contador.
Passo 6.
Passo 7. Se , fazemos . Caso contrário, fazemos .
Passo 8. Voltamos para o Passo .
Novamente um bom critério de parada para se adicionar também é um número máximo de iterações. Ele pode ser adicionado Logo depois do Passo por exemplo.
Estudo da Convergência
Repare que esse método é praticamente igual ao da bisseção né? O que muda é como escolhemos o ponto a cada iteração. Não só os métodos são muito parecidos como têm os mesmos critérios de convergência!
Se é contínua no intervalo com então o método da Posição Falsa converge para a raiz de .
Devido ao modo como escolhemos o , esse método normalmente vai encontrar uma aproximação para a raiz pelo critério de parada que compara o valor da função em e em sem que o intervalo seja pequeno! No exemplo que vimos aqui em cima o intervalo ainda estava bem grande mas já tínhamos uma ótima aproximação para a raiz. Por essa razão é recomendável usar esse critério de parada nesse método, caso contrário ele pode acabar precisando de mais iterações que o da Bisseção.
Outra desvantagem é que diferente do método da Bisseção, aqui não temos como calcular ou estimar o número de iterações necessárias já que isso vai depender da função estudada.
Observações
Nesse método temos aquele mesmo problema de raízes invisíveis que tínhamos no método da Bisseção. É impossível encontrarmos uma raiz onde a função não cruze o eixo e troque de sinal.
A vantagem é que em geral esse método é consideravelmente mais rápido que o anterior se usarmos os critérios de parada adequados.
No entanto, muitas vezes o tempo que economizamos nas iterações é compensado nas contas já que o algoritmo para calcularmos o é bem mais complicado.
Algoritmo
Estudo da Convergência
Observações
Exercícios Resolvidos
Exercício Resolvido #1
Richard L. Burden e J. Douglas Faires, Numerical Analysis, 9ª ed. Brooks/Cole, Cengage Learning, pag 75, exercício 4 adaptado
Seja com zero no intervalo . Use o método da posição falsa para encontrar uma aproximação para a raiz de com precisão de .
Passo 1
Iteração :
Logo, nosso novo intervalo será formado por e . Temos então que:
Critério de Parada:
Como não alcançamos o critério de parada continuamos as iterações.
Iteração :
Logo, nosso novo intervalo será formado por e . Temos então que:
Critério de Parada:
Como não alcançamos o critério de parada continuamos as iterações.
Iteração :
Logo, nosso novo intervalo será formado por e . Temos então que:
Critério de Parada:
Como não alcançamos o critério de parada continuamos as iterações.
Iteração :
Logo, nosso novo intervalo será formado por e . Temos então que:
Critério de Parada:
Como não alcançamos o critério de parada continuamos as iterações.
Iteração :
Logo, nosso novo intervalo será formado por e . Temos então que:
Critério de Parada:
Beleza, alcançamos o critério de parada! Então nossa aproximação é .
Resposta
.
Exercício Resolvido #2
Richard L. Burden e J. Douglas Faires, Numerical Analysis, 9ª ed. Brooks/Cole, Cengage Learning, pag 75, exercício 5d adaptado
Seja com zero no intervalo . Use o método da posição falsa para encontrar uma aproximação para a raiz de com precisão de .
Passo 1
Beleza, vamos aplicar nosso algoritmo:
Iteração :
Logo, nosso novo intervalo será formado por e . Temos então que:
Critério de Parada:
Como não alcançamos o critério de parada continuamos as iterações.
Iteração :
Logo, nosso novo intervalo será formado por e . Temos então que:
Critério de Parada:
Como não alcançamos o critério de parada continuamos as iterações.
Iteração :
Logo, nosso novo intervalo será formado por e . Temos então que:
Critério de Parada:
Como não alcançamos o critério de parada continuamos as iterações.
Iteração :
Logo, nosso novo intervalo será formado por e . Temos então que:
Critério de Parada:
Beleza, ultrapassamos nosso critério de parada! Então uma aproximação para a nossa raiz é .
Resposta
.
Exercício Resolvido #3
Richard L. Burden e J. Douglas Faires, Numerical Analysis, 9ª ed. Brooks/Cole, Cengage Learning, pag 75, exercício 6a adaptado
Seja com zero no intervalo . Use o método da posição falsa para encontrar uma aproximação para a raiz de com precisão de .
Passo 1
Beleza, vamos aplicar nosso algoritmo: