import numpy as np def newton_method(x0, N, f, df): x = x0; x_list = [x0]; for i in range(N): x = x - f(x)/df(x); x_list.append(x) return x, x_list N = 5; x0 = 4 f = lambda x: (x-2)**3 df = lambda x: 3*(x-2)**2 x_true = 2 x, x_list = newton_method(x0, N, f, df); for i in range(len(x_list)): rel_err = (x_list[i]-x_true)/x_true ei = abs(x_list[i]-x_true) print("i: %2d, x: %15.13f rel err: %10e, e_{i} %10e" % (i, x_list[i], rel_err, ei));