Minimization Methods for Non-Differentiable Functions