Você está na página 1de 1

IPython Notebook http://127.0.0.1:8888/9f9c4c19-ef3d-4fa8-94b1-42b1da2...

O Método de Dekker
Este é um método para o cálculo de zero de uma função f (x), que usa uma combinação do método da bissecção e
secante.

Começamos com a função f e pontos a0 e b0 , tal que f (a0 )f (b0 ) < 0


Em cada iteração temos os seguintes pontos:
bk é a estimativa atual da raiz no k-ésimo passo.
ak é o contraponto no k-ésimo passo, isto é, um ponto tal que f (ak )f (bk ) < 0 e |f (bk )| < |f (ak )|
bk−1 é a estimativa anterior (b−1 = a0 )
Para construir o par ak+1 , bk+1 para a próxima iteração fazemos assim:
definimos m = (ak + bk )/2
definimos s = bk − f (bk )(bk − bk−1 )/(f (bk ) − f (bk−1 ))
se o denominador der zero faremos s = m.
se m < s < bk ou bk < s < m então bk+1 = s senão bk+1 = m
ak+1 é ak se f (ak )f (bk+1 ) < 0 senão é bk
Se |f (bk+1 )| > |f (ak+1 )| troca ak+1 e bk+1 e faça a proxima iteração. Repete-se as iterações até que
f (bk ) = 0 ou |bk − ak | < ϵ

O programa
O exercício será implementar em python a função dekkersolver(f,a,b,eps) que recebe como parametros a função f
o intervalo [a, b] e a tolerância eps e devolve a raiz e a quantidade de iterações de dekker. No caso de f(a)f(b)
maior que zero a função deve avisar do problema. O seguinte teste deverá funcionar:

In [1]: import arquivo as ep1


f = lambda x: x**2 -2
eps=0.0001
[z,k] = ep1.dekkersolver(f,1,2,eps)
print ([z,k])

---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-c3d063f6d37d> in <module>()
----> 1 import arquivo as ep1
2 f = lambda x: x**2 -2
3 eps=0.0001
4 [z,k] = ep1.dekkersolver(f,1,2,eps)
5 print ([z,k])

ImportError: No module named arquivo

In [ ]:

1 de 1 04-04-2013 00:43