Sie sind auf Seite 1von 2

def newton():

"""Mtodo de Newton"""
Pass
>>> import ceros
>>> dir(ceros)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'newton']
>>> print ceros.__doc__
def newton(f, df, x_0, maxiter=50, xtol=1.0e-6, ftol=1.0e-6):
"""Mtodo de Newton
Halla la raz de la funcin f en el entorno de x_0 mediante el mtodo de
Newton.
Argumen
f - Funcin
df - Funcin, debe ser la funcin derivada de f
x_0 - Punto de partida del mtodo
maxiter (opcional) - Nmero mximo de iteraciones
xtol (opcional) - Cota para el error relativo para la raz
ftol (opcional) - Cota para el valor de la funcin
Devuelve
-------x - Raz de la ecuacin en el entorno de x_0
Excepciones
----------RuntimeError - No hubo convergencia superado el nmero mximo de
iteraciones
ZeroDivisionError - La derivada se anul en algn punto
Exception - El valor de x se sale del dominio de definicin de f
Ejemplos
------->>> def f(x): return x ** 2 - 1
...
>>> def df(x): return 2 * x
...
>>> newton(f, df, 2)
1.000000000000001
>>> newton(f, df, 5)
1.0
>>> newton(f, df, 0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "ceros.py", line 102, in newton

dx = -f(x) / df(x) # Aqu se puede producir una divisin por cero!


ZeroDivisionError: float division by zero
"""
x = float(x_0) # Se convierte a nmero de coma flotante
for i in xrange(maxiter):
dx = -f(x) / df(x) # Aqu se puede producir una divisin por cero!
# Tambin x puede haber quedado fuera del dominio
x = x + dx
if abs(dx / x) < xtol and abs(f(x)) < ftol:
return x
raise RuntimeError("No hubo convergencia despus de {}
iteraciones".format(maxiter))

Das könnte Ihnen auch gefallen