*/
@Override
public DoubleMatrix1D minimize(final Function1D<DoubleMatrix1D, Double> f, final DoubleMatrix1D initialPoint) {
Validate.notNull(f, "function");
Validate.notNull(initialPoint, "initial point");
final MultivariateRealOptimizer optimizer = new MultiDirectional();
final MultivariateRealFunction commons = CommonsMathWrapper.wrapMultivariate(f);
try {
return new DoubleMatrix1D(CommonsMathWrapper.unwrap(optimizer.optimize(commons, MINIMIZER, initialPoint.getData())));
} catch (final ConvergenceException e) {
throw new MathException(e);
} catch (final FunctionEvaluationException e) {
throw new MathException(e);
}