Polynomial2D.h
1//-*-C++-*-
2/***************************************************************************
3 *
4 * Copyright (C) 2022 by Willem van Straten
5 * Licensed under the Academic Free License version 2.1
6 *
7 ***************************************************************************/
8
9// psrchive/More/MEAL/MEAL/Polynomial2D.h
10
11#ifndef __MEAL_Polynomial2D_H
12#define __MEAL_Polynomial2D_H
13
14#include "MEAL/Multivariate.h"
15#include "MEAL/ChainRule.h"
16#include "MEAL/Polynomial.h"
17
18namespace MEAL {
19
21 class Polynomial2D : public Multivariate<Scalar>
22 {
23 std::pair<unsigned, unsigned> ncoef;
24
25 public:
26
27 Polynomial2D (unsigned ncoeff = 0, unsigned mcoeff = 0);
28
29 Polynomial2D (const Polynomial2D& copy);
30
31 const Polynomial2D& operator = (const Polynomial2D& copy);
32
34 Polynomial2D* clone () const { return new Polynomial2D(*this); }
35
36 std::string get_name() const;
37
39 class Interface;
40
43
44 const std::pair<unsigned,unsigned>& get_ncoef () const
45 { return ncoef; }
46
47 void set_ncoef (const std::pair<unsigned,unsigned>& nc)
48 { resize (nc.first, nc.second); }
49
50 void resize (unsigned ncoeff, unsigned mcoeff);
51
53 void set_abscissa_value (unsigned dim, double value);
54
56 void set_abscissa_offset (unsigned dim, double x0);
57
58 protected:
59 MEAL::ChainRule<MEAL::Scalar> chain;
60
63
65 std::vector<MEAL::Polynomial> coefficients;
66
67 void init ();
68
69 void calculate (double& result, std::vector<double>* grad)
70 { result = evaluation_policy->evaluate (grad); }
71
72 };
73
74}
75
76#endif
Reference::To< EvaluationPolicy< double > > evaluation_policy
Definition Evaluable.h:102
virtual void copy(const Function *model)
Does the work for operator =.
Definition Function.C:58
Multivariate(unsigned _ndim)
Definition Multivariate.h:30
void calculate(double &result, std::vector< double > *grad)
Calculate the complex value and its gradient.
Definition Polynomial2D.h:69
const Polynomial2D & operator=(const Polynomial2D &copy)
Assignment operator.
Definition Polynomial2D.C:97
std::vector< MEAL::Polynomial > coefficients
Polynomial variation of polynomial coefficients along second abscissa.
Definition Polynomial2D.h:65
TextInterface::Parser * get_interface()
Return a text interface that can be used to access this instance.
Definition Polynomial2D.C:136
void set_abscissa_value(unsigned dim, double value)
Set the abscissa value.
Definition Polynomial2D.C:60
MEAL::Polynomial poly
Polynomial along first abscissa.
Definition Polynomial2D.h:62
Polynomial2D * clone() const
Clone operator.
Definition Polynomial2D.h:34
void set_abscissa_offset(unsigned dim, double x0)
Set the abscissa offset.
Definition Polynomial2D.C:75
std::string get_name() const
Return the name of the class.
Definition Polynomial2D.C:112
Polynomial function with an arbitrary number of coefficients.
Definition Polynomial.h:21
Namespace in which all modeling and calibration related code is declared.
Definition ExampleComplex2.h:16

Generated using doxygen 1.14.0