Add definite integration to all poly. instances (Issue #111).
- The abstract polynomial class has been updated with the method
integrate_over()
to carry out definite integration over the domain (canonically,[-1, 1]^M
) or optionally, specified bounds (\subseteq [-1, 1]^M
). - The method works for all the currently supported polynomial bases: Lagrange, Newton, and canonical.
- The method works (and has been tested) for a polynomial with multiple sets of coefficients (multiple polynomials with living on the same grid).
- The test suite has been accordingly extended.
- A couple of usage examples have now been added to the docs as part of the How-To guides.
- Polynomial utility functions are now included in the docs.
This MR should resolve Issue #111 (closed).
For a series of sanity and performance checks, have a look at the following notebooks in the minterpy-benchmark
repository:
In the performance checks, the transformation to the required basis from the Lagrange basis (typically the starting point of creating a polynomial interpolant) is included in the timer. The transformation from Lagrange to canonical basis is apparently the most expensive. Also as a reminder, the canonical basis becomes unstable for high polynomial degree.
I'm assigning this @hernan68 and requesting review from @thekke48 (I'm not sure of your availability so let us know whether you can or cannot; and thanks a lot in any case