def secant(base, exp=2, it=20):
def f(x):
return x**exp - base
eps = 1e-9
x1 = base / float(exp**2)
xnm1 = x1 - 5
xnm2 = x1 + 5
xn = 0
for n in range(it):
if abs(xnm1-xnm2) <= eps: break
q = (xnm1-xnm2)/(f(xnm1)-f(xnm2))
xn = xnm1 - (f(xnm1)*q)
print xnm1, xnm2, q
xnm1, xnm2 = xn, xnm1
return xn
print secant(2, 2)