map214b.py

''' Metodo de Newton para computar o zero de uma funcao
Entradas: f,df, eps, itmax, x0
saida: [raiz, iter, erraval]'''
from math import *

def newton(f,df,x0,eps,itmax):
    L=range(1,itmax+1)
    iteracao=0
    a=x0
    for i in L:
        raiz=a
        if df(raiz) <> 0: # se a derivada for zero sai    
            raiz=raiz-f(raiz)/df(raiz)
            erro=raiz-a
            a=raiz
            iteracao=i
        else:
            iteracao = itmax+1
            break
        if abs(erro) <= eps:
            break
    if iteracao > itmax:
        iteracao = 0.25
    elif iteracao == itmax:
        iteracao = 0.75
    return [raiz, erro, iteracao]

# teste :
f= lambda x: x**6 -x -1
df= lambda x: 6*x**5-1

L=newton(f,df,1.5,0.0001,100)
print L
Última atualização: terça, 2 março 2010, 20:47