19#ifndef _GIMLI_CURVEFITTING__H
20#define _GIMLI_CURVEFITTING__H
24#include "polynomial.h"
29template <
class ArgType ,
class ValueType >
class DLLEXPORT Function {
33 virtual ~Function() { }
35 Function(
const Function & funct){ copy_(funct); }
37 Function & operator = (
const Function & funct){
43 inline ValueType operator() (
const ArgType & arg)
const {
return this->getValue(arg); }
45 inline Vector < ValueType > operator() (
const Vector < ArgType > & arg)
const {
return this->getValue(arg); }
47 virtual ValueType getValue(
const ArgType & arg)
const = 0;
49 virtual Vector < ValueType > getValue(
const Vector < ArgType > & arg)
const = 0;
52 virtual void copy_(
const Function & funct) { };
55class DLLEXPORT HarmonicFunction :
public Function< double, double >{
57 HarmonicFunction(
const RVector & coeff,
double xmin,
double xmax);
59 virtual ~HarmonicFunction();
61 virtual double getValue(
const double & arg)
const;
63 virtual RVector getValue(
const RVector & arg)
const;
65 void setCoefficients(
const RVector & coeff);
67 inline const RVector & coefficients()
const {
return coeff_; }
69 inline void setXMin(
double xmin){ xMin_ = xmin; }
71 inline double xMin()
const {
return xMin_; }
73 inline void setXMax(
double xmax){ xMax_ = xmax; }
75 inline double xMax()
const {
return xMax_; }
78 virtual void copy_(
const HarmonicFunction & funct);
94 virtual RVector
response(
const RVector & par);
97 virtual RVector
response(
const RVector & par,
const RVector tvec);
103 inline virtual RVector
startModel(){
return RVector(np_, 0.0); }
111 size_t nh_, nt_, np_;
116class DLLEXPORT PolynomialModelling :
public ModellingBase {
119 PolynomialModelling(uint dim, uint nCoeffizient,
const std::vector < RVector3 > & referencePoints,
122 virtual RVector response(
const RVector & par);
142 void setPowCombinationTmp(
int i) { powCombination_ = i; }
146 std::vector < RVector3 > referencePoints_;
148 PolynomialFunction< double > f_;
150 bool pascalTriangle_;
151 bool serendipityStyle_;
152 uint powCombination_;
virtual RVector response(const RVector &par)
Definition curvefitting.cpp:111
RMatrix A_
abscissa vector x
Definition curvefitting.h:108
virtual void createJacobian(const RVector &model)
Definition curvefitting.cpp:129
double tMin_
function matrix
Definition curvefitting.h:109
HarmonicModelling(size_t nh, const RVector &tvec, bool verbose=false)
Definition curvefitting.cpp:83
virtual RVector startModel()
Definition curvefitting.h:103
bool verbose() const
Definition modellingbase.h:48
virtual RVector startModel()
Definition curvefitting.cpp:162
void setSerendipityStyle(bool is)
Definition curvefitting.h:140
const PolynomialFunction< double > & polynomialFunction() const
Definition curvefitting.h:132
void setPascalsStyle(bool is)
Definition curvefitting.h:135
GIMLi main namespace for the Geophyiscal Inversion and Modelling Library.
Definition baseentity.h:24