16 #ifndef dealii__polynomial_h 17 #define dealii__polynomial_h 21 #include <deal.II/base/config.h> 22 #include <deal.II/base/exceptions.h> 23 #include <deal.II/base/subscriptor.h> 24 #include <deal.II/base/point.h> 25 #include <deal.II/base/std_cxx11/shared_ptr.h> 29 DEAL_II_NAMESPACE_OPEN
61 template <
typename number>
88 const unsigned int evaluation_point);
102 number
value (
const number x)
const;
114 void value (
const number x,
115 std::vector<number> &values)
const;
128 void value (
const number x,
129 const unsigned int n_derivatives,
130 number *values)
const;
137 unsigned int degree ()
const;
146 void scale (
const number factor);
163 template <
typename number2>
164 void shift (
const number2 offset);
205 void print(std::ostream &out)
const;
211 template <
class Archive>
212 void serialize (Archive &ar,
const unsigned int version);
219 static void scale (std::vector<number> &coefficients,
220 const number factor);
225 template <
typename number2>
226 static void shift (std::vector<number> &coefficients,
227 const number2 shift);
232 static void multiply (std::vector<number> &coefficients,
233 const number factor);
278 template <
typename number>
287 const double coefficient = 1.);
296 std::vector<Polynomial<number> >
297 generate_complete_basis (
const unsigned int degree);
303 static std::vector<number> make_vector(
unsigned int n,
304 const double coefficient);
334 const unsigned int support_point);
345 std::vector<Polynomial<double> >
346 generate_complete_basis (
const unsigned int degree);
356 compute_coefficients (
const unsigned int n,
357 const unsigned int support_point,
358 std::vector<double> &a);
369 std::vector<Polynomial<double> >
404 std::vector<Polynomial<double> >
405 generate_complete_basis (
const unsigned int degree);
436 Lobatto (
const unsigned int p = 0);
442 static std::vector<Polynomial<double> >
443 generate_complete_basis (
const unsigned int p);
449 std::vector<double> compute_coefficients (
const unsigned int p);
513 std::vector<Polynomial<double> >
514 generate_complete_basis (
const unsigned int degree);
520 static void compute_coefficients (
const unsigned int p);
526 static const std::vector<double> &
527 get_coefficients (
const unsigned int p);
585 static std::vector<Polynomial<double> >
586 generate_complete_basis (
const unsigned int p);
597 template <
typename number>
607 template <
typename number>
625 template <
typename number>
637 for (
int k=m-2; k>=0; --k)
646 for (
unsigned int j=0; j<m; ++j)
655 template <
typename number>
656 template <
class Archive>
670 DEAL_II_NAMESPACE_CLOSE
void serialize(Archive &ar, const unsigned int version)
Polynomial< number > & operator*=(const double s)
void scale(const number factor)
void transform_into_standard_form()
void shift(const number2 offset)
Polynomial< number > & operator-=(const Polynomial< number > &p)
std::vector< Polynomial< double > > generate_complete_Lagrange_basis(const std::vector< Point< 1 > > &points)
bool in_lagrange_product_form
bool operator==(const Polynomial< number > &p) const
number value(const number x) const
static void multiply(std::vector< number > &coefficients, const number factor)
#define Assert(cond, exc)
Polynomial< number > & operator+=(const Polynomial< number > &p)
Polynomial< number > primitive() const
std::vector< number > coefficients
void print(std::ostream &out) const
Polynomial< number > derivative() const
std::vector< number > lagrange_support_points
static::ExceptionBase & ExcEmptyObject()
unsigned int degree() const
static std::vector< std_cxx11::shared_ptr< const std::vector< double > > > recursive_coefficients