chriscoey / AlgebraicIntegration.jl

calculating integrals of polynomials over basic semialgebraic sets
Other
4 stars 1 forks source link

interface #2

Open chriscoey opened 5 years ago

chriscoey commented 5 years ago

fundamentally it seems we need to be able to access (approximate) quadrature weights for a given semialgebraic set. this gives the power to calculate (bounds on) the volume of the set or the integral of a polynomial function over the set.

so the main functions we want are:

for some canonical sets, we have simple formulae for weights and volume and integrals. these need to be defined as types:

polynomials can be specified using MultivariatePolynomials.jl. generic basic semialgebraic sets (BSSs) can be specified using SemialgebraicSets.jl.

for calculating the weights (and volume and integrals) over generic BSSs, we need to solve a polynomial/moment optimization problem. we can approximate the problem by solving a sum-of-squares conic problem formulated with PolyJuMP.jl and SumOfSquares.jl (or solve a sequence of such problems if we want to converge to the true values). this means the dependencies of this package need to be fairly heavy.

integration for generic p and BSS s requires that the user specify whatever is needed to formulate and solve this optimization problem, including the degree of the approximation and a basis for which to generate the weights for, and a canonical set (for which quadrature weights are known) that is known to contain the BSS (see the #1 "Approximate volume and integration for basic semialgebraic sets.").

blegat commented 5 years ago

For canonical sets, we can use the definitions in https://github.com/JuliaReach/MathematicalSets.jl