cálculo numérico / métodos numéricos solução de equações

17
13:53 Cálculo Numérico / Métodos Numéricos Solução de equações: Método da bissecção

Upload: others

Post on 15-Mar-2022

9 views

Category:

Documents


0 download

TRANSCRIPT

13:53

Cálculo Numérico / Métodos Numéricos

Solução de equações:

Método da bissecção

14:29

Exemplos: f: R → R; f(x) = (x+1)2ex2-2 -1=0

14:29

Idéia da bisseção

x -3 -2 -1 0 1 2 3

f(x) 4385.5 6.4 -1 -0.9 0.5 65.5 17545.1

f(-1.5) = + ou - ?

14:29

Bissecção (algoritmo)

� Dado um intervalo ]a,b[ com f(a) . f(b) < 0� Escolha c = (a+b)/2

� Se f(c) = 0 → FIM� Se f(c) . f(a) < 0

� Existe uma raiz no intervalo ]a,c[

� Se f(c) . f(b) < 0� Existe uma raiz no intervalo ]c,b[

Podemos recomeçar com o novo intervalo e melhorar a aproximação da raiz!

14:29

Bissecção (Exemplo)

� Achar a raiz cúbica de 5� f(x) = x3 -5 =0

existe raiz entre x=1 e x=2f(x=1) = -4f(x=2) = 3

14:29

Programando a bissecção

� exemplo: Excell e f(x) = (x/2)2 - sen(x)

14:29

Programando a bissecção

� exemplo: Excell e f(x) = (x/2)2 - sen(x)

Iter a b c f(a) f(b) f(c) f(a)xf(c)1 1,50000 2,00000 1,75000 -0,434995 0,0907026 -0,218361 0,0949859172 1,75000 2,00000 1,87500 -0,2183609 0,0907026 -0,07518 0,0164162743 1,87500 2,00000 1,93750 -0,0751795 0,0907026 0,0049623 -0,0003730624 1,87500 1,93750 1,90625 -0,0751795 0,0049623 -0,035814 0,0026924645 1,90625 1,93750 1,92188 -0,0358138 0,0049623 -0,015601 0,0005587466 1,92188 1,93750 1,92969 -0,0156014 0,0049623 -0,005363 8,36766E-057 1,92969 1,93750 1,93359 -0,0053634 0,0049623 -0,000212 1,13439E-068 1,93359 1,93750 1,93555 -0,0002115 0,0049623 0,0023727 -5,01829E-079 1,93359 1,93555 1,93457 -0,0002115 0,0023727 0,0010799 -2,28402E-0710 1,93359 1,93457 1,93408 -0,0002115 0,0010799 0,000434 -9,17978E-08

14:29

Bissecção encontra uma raiz!

14:29

Critérios de parada

� |a-b| < ε1

� |f(c)| < ε2

14:29

Erro relativo

� Pode ser mais interessante considerar-se o erro relativo.

|xk+1 - xk|

|xk+1|< ε

Escrevemos esse erro na forma:

|xk+1-xk| < ε . max{1,|xk+1|}

(Por que ?)

14:29

Estudo da convergência (1/3)

� Ruggiero e Lopes Cap. 2

[a0,b0]

[a1,b1]

[a2,b2]

[ak,bk]

...

{ak}: não decrescente e limitada superiormente por b0

{bk}: não crescente e limitada inferiormente por a0

{ } kbxaba

xconstruçãoporx kkkkk

kk ∀<<

+= ,,2

14:29

Estudo da convergência (2/3)

� A cada iteração, a amplitude do intervalo é dividida pela metade:

= x*

temos que provar que f(x*) = 0

ambos convergentes {ak} e {bk}

14:29

Estudo da convergência (3/3)

� em cada iteração temos f(ak).f(bk) ≤ 0

f(x*) = 0

� Convergência lenta pois se b0-a0>> e se ∋ for muito pequeno, o numero de iterações tende a ser muito grande.

Dada uma precisão ε e um intervalo inicial [a,b], é possível estimar, a priori,

o numero de iterações que serão efetuadas pelo método da bissecção até que

se obtenha b-a < ε .

k001k1k

kk2

ab

2

abab

−=−=− −− ,

deve-se obter um valor de k tam que bk-ak< ε , ou seja,

)log()ablog()2log(kab

22

ab00

00kk

00 ε−−>⇒ε−>⇒ε<−

)2log(

)log()ablog(k 00 ε−−>⇒ .

Por exemplo, se desejamos encontrar z, o zero da função f(x)=xlog(x)-1 que

está no intervalo [2,3], com precisão 210−=ε , quantas iterações, no mínimo,

devemos efetuar? K=7.

Faça aao = e bbo = e calculamos 2

)ba(x1

+= .

Se f(x1)=0, então 1xxz ==

Senão

Se f(x1) tem o mesmo sinal de f(ao) então [ ]01 b,xz∈ e então faça

11 xa = e 01 bb =

Se f(x1) tem o mesmo sinal de f(b) então [ ]10 x,az∈ e então faça

01 aa = e 11 xb =

Desta maneira conseguimos um novo intervalo [a1,b1] onde se encontra a raiz

z. Para encontrarmos um novo intervalo [a2,b2] basta aplicar o mesmo

procedimento.

14:29

Pseudo-código

Retirado de Chapra&Canale, Métodos numéricos para engenharia

14:29

Pseudo-código II

Retirado de Chapra&Canale, Métodos numéricos para engenharia