from math import * def halveringsmetoden(f, a, b, N, epsilon): i = 0 m = (a + b)/2.0 abserr = (b-a)/2.0 while i <= N and abserr > epsilon*abs(m): if f(m) == 0: a = m b = m if f(a)*f(m) < 0: b = m else: a = m i = i + 1 #print "i: %2d, |m - c|: %e" %( i, abs(m - sqrt(2))) m = (a + b)/2.0 abserr = (b-a)/2.0 return m f = lambda x: x*x - 2.0 a = 1 b = 2 epsilon = 1e-10 N = 60; halveringsmetoden(f, a, b, N, epsilon)