L'idée de cet algorithme (voir [13]) est de remplacer la hessienne (ou son inverse ) par une suite d'approximations symétriques définies positives, que l'on met à jour à chaque itération, pour un coût relativement faible. La mise à jour de cette approximation lors d'une étape de l'algorithme est en général une correction de rang 2 : pour passer de l'étape à l'étape , on pose
où et sont des scalaires, et et des vecteurs.
L'algorithme est donc le suivant :
Toute la difficulté consiste alors à trouver une bonne formule de mise à jour.