Skip to content

Instantly share code, notes, and snippets.

@douglascamata
Created December 7, 2011 22:06
Show Gist options
  • Save douglascamata/1444920 to your computer and use it in GitHub Desktop.
Save douglascamata/1444920 to your computer and use it in GitHub Desktop.
Método do ponto fixo para encontrar raízes de uma função
#encoding: utf-8
def ponto_fixo(f, ponto_atual, epsilon=1e-8, maxiter=500):
k = 0
ponto_proximo = f(ponto_atual)
while k < maxiter:
k += 1
ponto_anterior = ponto_atual
ponto_atual = ponto_proximo
ponto_proximo = f(ponto_atual)
diferenca_atual = ponto_proximo - ponto_atual
erro_absoluto = abs(diferenca_atual)
if erro_absoluto < epsilon:
break
diferenca_anterior = ponto_atual - ponto_anterior
inclinacao = diferenca_atual/diferenca_anterior
if inclinacao > 1:
print "Sequência divergindo em %d iterações." % k
else:
print "Sequência convergindo em %d iterações." % k
return ponto_proximo
if __name__ == '__main__':
def f(x):
return pi + atan(x)
x0 = 1.0/5.0
print ponto_fixo(f, x0, epsilon=10e-6) # o resultado deve convergir para algo próximo de 4.493409457909064175307880927
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment