improve steepest descent method