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

f a 2 ∙ f x 3 = 0.4597 ∙ - 0.0088 < 0

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

a 3 , b 3 = a 2 , x 3 = - 1 , - 0.8625

Critério de Parada:

b 3 - a 3 = - 0.8625 - - 1 = 0.1374 > 0.0 01

f a 3 = 0.4597 > 0 . 001

f b 3 = 0.0088 > 0 . 001

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

a 3 , b 3 = - 1 , - 0.8625

ε 1 = ε 2 = 0.0 01

Iteração 4 :

x 4 = a 3 f b 3 - b 3 f a 3 f b 3 - f a 3 = 0 . 4053 - 0.4685 = - 0.8651

f x 4 = f - 0.8651 ≅ - 0.0012

f a 3 ∙ f x 4 = 0.4597 ∙ - 0.0010 < 0

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

a 4 , b 4 = a 3 , x 4 = - 1 , - 0.8651

Critério de Parada:

b 4 - a 4 = - 0.8651 - - 1 = 0.1349 > 0.0 01

f a 4 = 0.4597 > 0 . 001

f b 4 = 0.0012 > 0.0 01

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

a 4 , b 4 = - 1 , - 0.8651

ε 1 = ε 2 = 0 . 001

Iteração 5 :

x 5 = a 4 f b 4 - b 4 f a 4 f b 4 - f a 4 = 0.3987 - 0.4608 = - 0.8654

f x 5 = f - 0.8654 ≅ - 0.0001

f a 4 ∙ f x 5 = 0.4597 ∙ - 0.0001 < 0

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

a 5 , b 5 = a 4 , x 5 = - 1 , - 0.8654

Critério de Parada:

b 5 - a 5 = - 0.8654 - - 1 = 0.1346 > 0.00001

f a 5 = 0.4597 > 0 . 001

f b 5 = 0.0001 < 0.00 1

Beleza, alcançamos o critério de parada! Então nossa aproximação é x - = - 0.8654 .

Resposta

x - = - 0.8654 .

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

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Beleza, vamos aplicar nosso algoritmo:

a 0 , b 0 = 0 , π 2

ε 1 = ε 2 = 0.0001

Iteração 1 :

x 1 = a 0 f b 0 - b 0 f a 0 f b 0 - f a 0 = 1.25663 1.3708 = 0.91672

f x 1 = f 0.91672 ≅ - 0.042

f a 0 ∙ f x 1 = - 0.8 ∙ - 0.042 > 0

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

a 1 , b 1 = x 1 , b 0 = 0.91672 , π 2

Critério de Parada:

b 1 - a 1 = π 2 - 0.91672 = 0.65408 > 0.0001

f a 1 = 0.042 > 0.0001

f b 1 = 0.5708 > 0.0001

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

a 1 , b 1 = 0.91672 , π 2

ε 1 = ε 2 = 0.0001

Iteração 2 :

x 2 = a 1 f b 1 - b 1 f a 1 f b 1 - f a 1 = 0.58924 0.6128 = 0.96155

f x 2 = f 0.96155 ≅ - 0.00246

f a 1 ∙ f x 2 = - 0.042 ∙ - 0.00246 > 0

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

a 2 , b 2 = x 2 , b 1 = 0.96155 , π 2

Critério de Parada:

b 2 - a 2 = π 2 - 0.96155 = 0.60925 > 0.0001

f a 2 = 0.00246 > 0.0001

f b 2 = 0.5708 > 0.0001

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

a 2 , b 2 = 0.96155 , π 2

ε 1 = ε 2 = 0.0001

Iteração 3 :

x 3 = a 2 f b 2 - b 2 f a 2 f b 2 - f a 2 = 0.55272 0.57326 = 0.96417

f x 3 = f 0.96417 ≅ - 0.00014

f a 2 ∙ f x 3 = - 0.00246 ∙ - 0.00014 > 0

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

a 3 , b 3 = x 3 , b 2 = 0.96417 , π 2

Critério de Parada:

b 3 - a 3 = π 2 - 0.96417 = 0.60663 > 0.0001

f a 3 = 0.00014 > 0.0001

f b 3 = 0.5708 > 0.0001

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

a 3 , b 3 = 0.96417 , π 2

ε 1 = ε 2 = 0 . 0001

Iteração 4 :

x 4 = a 3 f b 3 - b 3 f a 3 f b 3 - f a 3 = 0.55057 0.57094 = 0.96432

f x 4 = f 0.96432 ≅ - 0.000008

f a 3 ∙ f x 4 = - 0.00014 ∙ - 0.000008 > 0

Logo, nosso novo intervalo será formado por x 4 e b 3 . Temos então que:

a 4 , b 4 = x 4 , b 3 = 0.96432 , π 2

Critério de Parada:

b 4 - a 4 = π 2 - 0.96432 = 0.60647 > 0.0 001

f a 4 = 0.000008 = 8 ∙ 10 - 6 < 0.00 01

f b 4 = 0.5708 > 0.00 01

Beleza, ultrapassamos nosso critério de parada! Então uma aproximação para a nossa raiz é x - = 0.96432 .

Resposta

x - = 0.96432 .

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

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Beleza, vamos aplicar nosso algoritmo:

a 0 , b 0 = 1,2

ε 1 = ε 2 = 0.0001

Iteração 1 :

x 1 = a 0 f b 0 - b 0 f a 0 f b 0 - f a 0 = 4.2089 9 2.50788 = 1.67831

f x 1 = f 1.67831 ≅ - 0.54567