steepest descent minimization