DUNE-FUNCTIONS (2.7)

polynomial.hh
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2// vi: set et ts=4 sw=2 sts=2:
3#ifndef DUNE_FUNCTIONS_ANALYTICFUNCTIONS_POLYNOMIAL_HH
4#define DUNE_FUNCTIONS_ANALYTICFUNCTIONS_POLYNOMIAL_HH
5
6#include <cmath>
7#include <initializer_list>
8#include <vector>
9
10namespace Dune {
11namespace Functions {
12
13
24template<class K>
26{
27public:
28
30 Polynomial() = default;
31
33 Polynomial(const Polynomial& other) = default;
34
36 Polynomial(Polynomial&& other) = default;
37
44 Polynomial(std::initializer_list<double> coefficients) :
45 coefficients_(coefficients)
46 {}
47
55 Polynomial(std::vector<K>&& coefficients) :
56 coefficients_(std::move(coefficients))
57 {}
58
66 Polynomial(const std::vector<K>& coefficients) :
67 coefficients_(coefficients)
68 {}
69
71 K operator() (const K& x) const
72 {
73 auto y = K(0);
74 for (size_t i=0; i<coefficients_.size(); ++i)
75 y += coefficients_[i] * std::pow(x, i);
76 return y;
77 }
78
89 {
90 std::vector<K> dpCoefficients(p.coefficients().size()-1);
91 for (size_t i=1; i<p.coefficients_.size(); ++i)
92 dpCoefficients[i-1] = p.coefficients()[i]*i;
93 return Polynomial(std::move(dpCoefficients));
94 }
95
97 const std::vector<K>& coefficients() const
98 {
99 return coefficients_;
100 }
101
102private:
103 std::vector<K> coefficients_;
104};
105
106
107
108}} // namespace Dune::Functions
109
110
111
112#endif // DUNE_FUNCTIONS_ANALYTICFUNCTIONS_POLYNOMIAL_HH
A scalar polynomial implementation.
Definition: polynomial.hh:26
Polynomial()=default
Default constructor.
const std::vector< K > & coefficients() const
Obtain reference to coefficient vector.
Definition: polynomial.hh:97
K operator()(const K &x) const
Evaluate polynomial.
Definition: polynomial.hh:71
Polynomial(const Polynomial &other)=default
Copy constructor.
Polynomial(Polynomial &&other)=default
Move constructor.
Polynomial(const std::vector< K > &coefficients)
Create from list of coefficients.
Definition: polynomial.hh:66
Polynomial(std::initializer_list< double > coefficients)
Create from list of coefficients.
Definition: polynomial.hh:44
Polynomial(std::vector< K > &&coefficients)
Create from list of coefficients.
Definition: polynomial.hh:55
friend Polynomial derivative(const Polynomial &p)
Obtain derivative of Polynomial function.
Definition: polynomial.hh:88
Definition: polynomial.hh:10
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Jul 15, 22:36, 2024)