14 template<
typename precision>
18 if (this->num_nodes < 2) {
19 throw invalid_argument(
"Gauss-Lobatto quadrature requires at least two quadrature nodes.");
25 template<
typename precision>
31 template<
typename precision>
37 template<
typename precision>
40 this->nodes = vector<precision>(this->num_nodes, precision(0.0));
43 for (
size_t j = 0; j < this->num_nodes - 2; j++) {
44 this->nodes[j + 1] = 0.5 * (1.0 + roots[j]);
46 this->nodes.front() = 0.0;
47 this->nodes.back() = 1.0;
virtual void compute_nodes() override
Interface for quadrature handlers.
virtual bool left_is_node() const override
Quadrature handler for Gauss-Lobatto quadrature.
virtual bool right_is_node() const override
static Polynomial< CoeffT > legendre(const size_t order)
Computes the Legendre polynomial of given order.
virtual void compute_weights()