4#include <gsl/gsl_multimin.h>
5#include <gsl/gsl_min.h>
43template<
typename Container,
typename U>
45 auto it = std::lower_bound(X.begin(), X.end(), x_0);
47 if (it == X.begin())
return 0;
48 if (it == X.end())
return X.size() - 1;
50 return it - X.begin();
std::function< double(double)> RealValuedFunction
std::function< double(std::vector< double >)> RealValuedForm
MinimizationResult minimize_NM(RealValuedForm f, const std::vector< double > &x0, const std::vector< double > &scales, const MinimizationContext &context)
MinimizationResult minimize_BFGS(RealValuedForm f, const std::vector< double > &x0, const std::vector< double > &scales, const MinimizationContext &context)
bool find_bracket(const RealValuedFunction &f, double x_min, double x_max, double &a, double &b, int n_samples=100)
ScalarMinimizationResult minimize_scalar(RealValuedFunction f, const ScalarMinimizationContext &context)
double brent_root(const RealValuedFunction &f, double a, double b, double xtol=1e-6, double ftol=1e-6, int max_it=100)
MinimizationResult minimize_combined(RealValuedForm f, const std::vector< double > &x0, const std::vector< double > &scales, const MinimizationContext &context)
std::size_t bisect_array(const Container &X, const U &x_0)
double f(double x)
Wilson special function f depending on x.
std::size_t bfgs_max_iter
std::size_t simplex_max_iter
double simplex_initial_step_size
double bfgs_initial_step_size
double bfgs_line_search_tol
std::vector< double > argmin
std::array< double, 2 > bracket