1#ifndef PENALTY_FUNCTIONS_HH
2#define PENALTY_FUNCTIONS_HH
23 double d0(
double t)
const {
return c*t*t + d*log(t);}
24 double d1(
double t)
const {
return 2*c*t + d/t; }
25 double d2(
double t)
const {
return 2*c - d/(t*t); }
26 double d3(
double t)
const {
return 2*d/(t*t*t); }
29void init(
double c_,
double d_)
37 double c = 1, d = 1, e = 0;
42 template <
size_t k1,
int k2>
57 double d0(
double t)
const {
return c*pow(t,k1) + d*pow(t,k2) + e; }
58 double d1(
double t)
const {
return c*k1*pow(t,k1-1) + d*k2*pow(t,k2-1); }
59 double d2(
double t)
const {
return c*k1*(k1-1)*pow(t,k1-2) + d*k2*(k2-1)*pow(t,k2-2); }
60 double d3(
double t)
const {
return c*k1*(k1-1)*(k1-2)*pow(t,k1-3) + d*k2*(k2-1)*(k2-2)*pow(t,k2-3); }
Sets a function to std::numeric_limits<double>::max() for negative arguments.
Polynomial(Polynomial const &)=default
double d0(double t) const
Polynomial & operator=(Polynomial const &)=default
double d3(double t) const
double d2(double t) const
Polynomial(double c_, double d_)
double d1(double t) const
QuadraticAndLogBase(double c_, double d_)
double d2(double t) const
double d1(double t) const
double d0(double t) const
double d3(double t) const
QuadraticAndLogBase(QuadraticAndLogBase const &)=default
QuadraticAndLogBase & operator=(QuadraticAndLogBase const &)=default
PenaltyFunction< Polynomial< 5,-5 > > Hartmann03
PenaltyFunction< QuadraticAndLogBase > QuadraticAndLog
PenaltyFunction< Polynomial< 2,-2 > > QuadQuad