Método da Posição Falsa

Teoria Completa

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 a , b que contenha a raiz que se deseja obter, de tal forma que f a ∙ f b < 0 . 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 x de cada iteração fazendo:

x = a f b + b f a f b + f a = a f b - b f a f b - f a

Mas quem diabos inventou isso? Calma, vou te explicar dá onde saiu essa coisa. Imagina o seguinte, nós temos um intervalo a , b . E digamos que f a = - 0.001 e f b = 2.7 . Como f a está mais próximo de 0 que f b é mais provável que a esteja mais próxima da raiz que b concorda?

E é daí que saiu essa fórmula! Ao invés de tirarmos a média aritmética entre a e b , nós tiramos uma média ponderada com pesos f b e f a . Assim nosso ponto x 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 ε 1 e o ε 2 , de modo que paramos se algum desses critérios for satisfeito:

b - a < ε 1 . Nesse caso basta escolhermos algum x - dentro de a , b

f a < ε 2 ou f b < ε 2 . Nesse caso escolhemos a ou b como x - e fim de papo.

Nós costumamos fazer isso aqui pois precisamos calcular f a e f b para o cálculo de x , 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 f x = ( x - 2 ) 2 - l n ⁡ ( x ) entre 1,2 com erros ε 1 = ε 2 = 0,01

a 0 , b 0 = 1,2

ε 1 = ε 2 = 0.01

Iteração 1 :

x 1 = a 0 f b 0 - b 0 f a 0 f b 0 - f a 0 = 1 - 0,6931 - 2 ( 1 ) - 0,6931 - 1 = - 1,5906

f x 1 = f 1.5906 =   - 0,2965

f a 0 ∙ f x 1 = 1 ∙ - 0,2965 = - 0,2965 < 0

Logo, nosso novo intervalo será formado por a 0 e x 1 . Temos então que:

a 1 , b 1 = a 0 , x 1 = 1 ; 1,5906

Critério de Parada:

| b 1 - a 1 | = 1,5906 - 1 = | - 0.5906 | > 0.01

Como não alcançamos o critério de parada continuamos as iterações.

a 1 , b 1 =   1 ; 1,5906

ε 1 = ε 2 = 0.01

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 7 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 a , b contendo a raiz

b. Precisão do resultado final ε 1 e ε 2

Passo 2. Definimos um contador de iterações k = 0 .

Passo 3. Se b - a < ε 1 , então seu intervalo já está ótimo. Escolha um x qualquer entre a , b (normalmente se escolhe o ponto médio) e FIM. Caso contrário, continue para o Passo 4.

Passo 4. Se f a < ε 2 , escolha a como x - e FIM. Se f b < ε 2 , escolha b como x - e FIM. Caso contrário, continue para o Passo 5.

Passo 5. k = k + 1 , aumentamos uma iteração no contador.

Passo 6. x = a f b - b f a f b - f a

Passo 7. Se f a ∙ f x > 0 , fazemos a = x . Caso contrário, fazemos b = x .

Passo 8. Voltamos para o Passo 3 .

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 4 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 x 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 f x é contínua no intervalo a , b com f a ∙ f b < 0 então o método da Posição Falsa converge para a raiz de f .

Devido ao modo como escolhemos o x , 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 a e em b sem que o intervalo a , b seja pequeno! No exemplo que vimos aqui em cima o intervalo a , b 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 x 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 x é bem mais complicado.

Expandir

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 f x = - x 3 - cos ⁡ x com zero no intervalo - 1,0 . Use o método da posição falsa para encontrar uma aproximação para a raiz de f com precisão de 10 - 3 .

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

a 0 , b 0 = - 1,0

ε 1 = ε 2 = 0.001

Iteração 1 :

x 1 = a 0 f b 0 - b 0 f a 0 f b 0 - f a 0 = 1 - 1.4596 = - 0.6851

f x 1 = f - 0.6851 ≅ - 0.4529

f a 0 ∙ f x 1 = 0.4597 ∙ - 0.4529 < 0

Logo, nosso novo intervalo será formado por a 0 e x 1 . Temos então que:

a 1 , b 1 = a 0 , x 1 = - 1 , - 0.6851

Critério de Parada:

b 1 - a 1 = - 0.6851 - - 1 = 0.3149 > 0.001

f a 1 = 0.4597 > 0.001

f b 1 = 0.4529 > 0.001

Como não alcançamos o critério de parada continuamos as iterações.

a 1 , b 1 = - 1 , - 0.6851

ε 1 = ε 2 = 0.001

Iteração 2 :

x 2 = a 1 f b 1 - b 1 f a 1 f b 1 - f a 1 = 0.7678 - 0.9125 = - 0.8414

f x 2 = f - 0.8414 ≅ - 0.0709

f a 1 ∙ f x 2 = 0.4597 ∙ - 0.0709 < 0

Logo, nosso novo intervalo será formado por a 1 e x 2 . Temos então que:

a 2 , b 2 = a 1 , x 2 = - 1 , - 0.8414

Critério de Parada:

b 2 - a 2 = - 0.8414 - - 1 = 0.1586 > 0.0 01

f a 2 = 0.4597 > 0 . 001

f b 2 = 0.0709 > 0.0 01

Como não alcançamos o critério de parada continuamos as iterações.

a 2 , b 2 = - 1 , - 0.8414

ε 1 = ε 2 = 0 . 001

Iteração 3 :

x 3 = a 2 f b 2 - b 2 f a 2 f b 2 - f a 2 = 0.4576 - 0.5306 = - 0.8625

f x 3 = f - 0.8625 ≅ - 0.0088