Constructs an exotic quadrature from a sparse grid object.
Constructs a set of one dimensional quadrature rules with respect to a 1D weight function approximated by grid.
- Parameters
-
num_levels | is the number of levels that should be computed |
shift | is a real-valued scalar that needs to be added to the weight function to make it positive |
grid | has dimension 1 and at least one loaded point, should use as many points as possible for better accuracy (up to some point where numerical stability is lost) |
description | is a human readable string that can be used to identify the quadrature rule (could be empty) |
is_symmetric | indicates whether to assume that the weight is symmetric, which allows for some stability improvements; symmetric means "even" on [-1, 1], which leads to all odd power polynomials integrating to zero; the same holds for shifted domains so long as the weight is "even" with respect to the mid-point of the domain. |
- Returns
- TasGrid::CustomTabulated object holding the points and weights for the different levels of the quadrature
- Exceptions
-
std::invalid_argument | if grid doesn't have a single input and output or no loaded points, or if the value of the weight function plus the shift is not non-negative |
The grid object is used in two ways: first, it defines a reference quadrature that will be used to compute the inner-product integrals that define orthogonal polynomials; second, it defines the values of the weight function
at the quadrature points. Note that the values of the weight function will not be interpolated between the reference points.
Examples of symmetric weight functions are
,
, constant weight, and the Gauss-Chebyshev weights. On the other hand,
is not symmetric in the context of this algorithm due to the shift that must be applied.