var('t')
def myDescente(f, prec, x0,y0):
Df = f.gradient()
print "Point d'évalution :", (x0,y0)
print "Valeur de la fonction objectif:", f(x0,y0).n(digits=6)
if norm(Df(x0,y0)) < prec :
print "Norme du gradient = ", norm(Df(x0,y0)), ". Valeur minimale trouvée :", f(x0,y0).n(digits=6)
else:
F(t) = f(x0-t*Df(x0,y0)[0],y0-t*Df(x0,y0)[1])
t0 = F.find_local_minimum(0,1)[1]
print "Norme du gradient = ", norm(Df(x0,y0)).n(digits=6), ". On va ailleurs. Longueur du pas (en fraction du gradient) : ", t0
myDescente(f,prec,x0-t0*Df(x0,y0)[0], y0-t0*Df(x0,y0)[1])