21 #ifndef DIFF_GRADIENT_H
22 #define DIFF_GRADIENT_H
45 template<
class Func,
class Model,
class Adapter>
50 const std::vector<double>& dx,
51 const Adapter& adapter
54 const size_t D = adapter.size(&x);
59 for(
size_t i = 0;
i <
D;
i++)
61 double yi = adapter.get(&y,
i);
69 G[
i] = (fxp - fxm) / (2*dx[i]);
72 adapter.
set(&y, i, yi);
88 template<
class Func,
class Vec>
94 const std::vector<double>& dx
115 template<
class Func,
class Model,
class Adapter>
120 const std::vector<double>& dx,
121 const Adapter& adapter
124 const size_t D = adapter.size(&x);
130 for(
size_t i = 0;
i <
D;
i++)
132 double yi = adapter.get(&y,
i);
137 G[
i] = (fxp - fx) / dx[i];
142 adapter.
set(&y, i, yi);
158 template<
class Func,
class Vec>
164 const std::vector<double>& dx
198 template<
class Func,
class Model,
class Adapter>
203 const std::vector<double>& dx,
204 const Adapter& adapter
207 const size_t D = adapter.size(&x);
212 for(
size_t i = 0;
i <
D;
i++)
214 double yi = adapter.get(&y,
i);
217 double fxp = f(y, i);
220 double fxm = f(y, i);
222 G[
i] = (fxp - fxm) / (2*dx[i]);
225 adapter.
set(&y, i, yi);
243 template<
class Func,
class Vec>
249 const std::vector<double>& dx
void move_param(Model &x, size_t i, double dv, const Adapter &aptr)
Helper function that moves a parameter by an amount.
Definition: diff_util.h:102
This class implements vectors, in the linear-algebra sense, with real-valued elements.
Definition: m_vector.h:87
x
Definition: APPgetLargeConnectedEdges.m:100
Vector & set(Value_type val)
Clone of zero_out(int)
Definition: m_vector.h:707
Vector gradient_cfd(const Func &f, const Model &x, const std::vector< double > &dx, const Adapter &adapter)
Computes the gradient of a function, evaluated at a point, using central finite differences.
Definition: diff_gradient.h:47
Default adapter for the hessian function.
Definition: diff_util.h:42
Vector gradient_ffd(const Func &f, const Model &x, const std::vector< double > &dx, const Adapter &adapter)
Computes the gradient of a function, evaluated at a point, using forward finite differences.
Definition: diff_gradient.h:117
get the indices of edges in each direction for i
Definition: APPgetLargeConnectedEdges.m:48
D
Definition: APPgetLargeConnectedEdges.m:106
Vector gradient_ind_cfd(const Func &f, const Model &x, const std::vector< double > &dx, const Adapter &adapter)
Computes the gradient of a function, evaluated at a point, using central finite differences.
Definition: diff_gradient.h:200
Definition for the Vector class, a thin wrapper on the KJB Vector struct and its related functionalit...