15template <
typename EvaluationMethod>
31 std::vector<double> minusStep(nData), plusStep(nData);
32 eval1D(minusStep.data(), xValues, nData);
35 const size_t nParam =
nParams();
36 for (
size_t iP = 0; iP < nParam; iP++) {
41 const double paramPstep = val + step;
44 eval1D(plusStep.data(), xValues, nData);
48 step = paramPstep - val;
49 for (
size_t i = 0; i < nData; i++) {
50 jacobian->
set(i, iP, (plusStep[i] - minusStep[i]) / step);
void calcNumericalDerivative1D(Jacobian *jacobian, EvaluationMethod func1D, const double *xValues, const size_t nData)
Calculate a numerical derivative for the 1D data.
virtual size_t nParams() const =0
Total number of parameters.
bool isActive(size_t i) const
Check if an active parameter i is actually active.
double calculateStepSize(const double parameterValue) const
Calculate step size for the given parameter value.
virtual void applyTies()
Apply the ties.
virtual double activeParameter(size_t i) const
Value of i-th active parameter.
virtual void setActiveParameter(size_t i, double value)
Set new value of i-th active parameter.
Represents the Jacobian in IFitFunction::functionDeriv.
virtual void set(size_t iY, size_t iP, double value)=0
Set a value to a Jacobian matrix element.
Helper class which provides the Collimation Length for SANS instruments.