MultivariateBases
MultivariateBases.jl is a standardized API for multivariate polynomial bases based on the MultivariatePolynomials API.
MultivariateBases.AbstractPolynomialBasis
— Typeabstract type AbstractPolynomialBasis end
Polynomial basis of a subspace of the polynomials [Section~3.1.5, BPT12].
[BPT12] Blekherman, G.; Parrilo, P. A. & Thomas, R. R. Semidefinite Optimization and Convex Algebraic Geometry. Society for Industrial and Applied Mathematics, 2012.
MultivariateBases.maxdegree_basis
— Functionmaxdegree_basis(B::Type{<:AbstractPolynomialBasis}, variables, maxdegree::Int)
Return the basis of type B
generating all polynomials of degree up to maxdegree
with variables variables
.
MultivariateBases.basis_covering_monomials
— Functionbasis_covering_monomials(B::Type{<:AbstractPolynomialBasis}, monos::AbstractVector{<:AbstractMonomial})
Return the minimal basis of type B
that can generate all polynomials of the monomial basis generated by monos
.
Examples
For example, to generate all the polynomials with nonzero coefficients for the monomials x^4
and x^2
, we need three polynomials as otherwise, we generate polynomials with nonzero constant term.
julia> using DynamicPolynomials
+Introduction · MultivariateBases MultivariateBases
MultivariateBases.jl is a standardized API for multivariate polynomial bases based on the MultivariatePolynomials API.
MultivariateBases.AbstractPolynomialBasis
— Typeabstract type AbstractPolynomialBasis end
Polynomial basis of a subspace of the polynomials [Section~3.1.5, BPT12].
[BPT12] Blekherman, G.; Parrilo, P. A. & Thomas, R. R. Semidefinite Optimization and Convex Algebraic Geometry. Society for Industrial and Applied Mathematics, 2012.
sourceMultivariateBases.maxdegree_basis
— Functionmaxdegree_basis(B::Type{<:AbstractPolynomialBasis}, variables, maxdegree::Int)
Return the basis of type B
generating all polynomials of degree up to maxdegree
with variables variables
.
sourceMultivariateBases.basis_covering_monomials
— Functionbasis_covering_monomials(B::Type{<:AbstractPolynomialBasis}, monos::AbstractVector{<:AbstractMonomial})
Return the minimal basis of type B
that can generate all polynomials of the monomial basis generated by monos
.
Examples
For example, to generate all the polynomials with nonzero coefficients for the monomials x^4
and x^2
, we need three polynomials as otherwise, we generate polynomials with nonzero constant term.
julia> using DynamicPolynomials
julia> @polyvar x
(x,)
julia> basis_covering_monomials(ChebyshevBasis, [x^2, x^4])
-ChebyshevBasisFirstKind([1.0, -1.0 + 2.0x², 1.0 - 8.0x² + 8.0x⁴])
sourceMultivariateBases.FixedPolynomialBasis
— Typestruct FixedPolynomialBasis{PT<:MP.AbstractPolynomialLike, PV<:AbstractVector{PT}} <: AbstractPolynomialBasis
+ChebyshevBasisFirstKind([1.0, -1.0 + 2.0x², 1.0 - 8.0x² + 8.0x⁴])
sourceMultivariateBases.FixedPolynomialBasis
— Typestruct FixedPolynomialBasis{PT<:MP.AbstractPolynomialLike, PV<:AbstractVector{PT}} <: AbstractPolynomialBasis
polynomials::PV
-end
Polynomial basis with the polynomials of the vector polynomials
. For instance, FixedPolynomialBasis([1, x, 2x^2-1, 4x^3-3x])
is the Chebyshev polynomial basis for cubic polynomials in the variable x
.
sourceMultivariateBases.OrthonormalCoefficientsBasis
— Typestruct OrthonormalCoefficientsBasis{PT<:MP.AbstractPolynomialLike, PV<:AbstractVector{PT}} <: AbstractPolynomialBasis
- polynomials::PV
-end
Polynomial basis with the polynomials of the vector polynomials
that are orthonormal with respect to the inner produce derived from the inner product of their coefficients. For instance, FixedPolynomialBasis([1, x, 2x^2-1, 4x^3-3x])
is the Chebyshev polynomial basis for cubic polynomials in the variable x
.
sourceMonomial basis
MultivariateBases.MonomialBasis
— Typestruct MonomialBasis{MT<:MP.AbstractMonomial, MV<:AbstractVector{MT}} <: AbstractPolynomialBasis
+end
Polynomial basis with the polynomials of the vector polynomials
. For instance, FixedPolynomialBasis([1, x, 2x^2-1, 4x^3-3x])
is the Chebyshev polynomial basis for cubic polynomials in the variable x
.
sourceMonomial basis
MultivariateBases.MonomialBasis
— Typestruct MonomialBasis{MT<:MP.AbstractMonomial, MV<:AbstractVector{MT}} <: AbstractPolynomialBasis
monomials::MV
-end
Monomial basis with the monomials of the vector monomials
. For instance, MonomialBasis([1, x, y, x^2, x*y, y^2])
is the monomial basis for the subspace of quadratic polynomials in the variables x
, y
.
This basis is orthogonal under a scalar product defined with the complex Gaussian measure as density. Once normalized so as to be orthonormal with this scalar product, one get ths ScaledMonomialBasis
.
sourceMultivariateBases.ScaledMonomialBasis
— Typestruct ScaledMonomialBasis{MT<:MP.AbstractMonomial, MV<:AbstractVector{MT}} <: AbstractPolynomialBasis
+end
Monomial basis with the monomials of the vector monomials
. For instance, MonomialBasis([1, x, y, x^2, x*y, y^2])
is the monomial basis for the subspace of quadratic polynomials in the variables x
, y
.
This basis is orthogonal under a scalar product defined with the complex Gaussian measure as density. Once normalized so as to be orthonormal with this scalar product, one get ths ScaledMonomialBasis
.
sourceMultivariateBases.ScaledMonomialBasis
— Typestruct ScaledMonomialBasis{MT<:MP.AbstractMonomial, MV<:AbstractVector{MT}} <: AbstractPolynomialBasis
monomials::MV
end
Scaled monomial basis (see [Section 3.1.5, BPT12]) with the monomials of the vector monomials
. Given a monomial $x^\alpha = x_1^{\alpha_1} \cdots x_n^{\alpha_n}$ of degree $d = \sum_{i=1}^n \alpha_i$, the corresponding polynomial of the basis is
\[{d \choose \alpha}^{\frac{1}{2}} x^{\alpha} \quad \text{ where } \quad
-{d \choose \alpha} = \frac{d!}{\alpha_1! \alpha_2! \cdots \alpha_n!}.\]
For instance, create a polynomial with the basis $[xy^2, xy]$ creates the polynomial $\sqrt{3} a xy^2 + \sqrt{2} b xy$ where a
and b
are new JuMP decision variables. Constraining the polynomial $axy^2 + bxy$ to be zero with the scaled monomial basis constrains a/√3
and b/√2
to be zero.
This basis is orthonormal under the scalar product:
\[\langle f, g \rangle = \int_{\mathcal{C}^n} f(z) \overline{g(z)} d\nu_n\]
where $\nu_n$ is the Gaussian measure on $\mathcal{C}^n$ with the density $\pi^{-n} \exp(-\lVert z \rVert^2)$. See [Section 4; B07] for more details.
[BPT12] Blekherman, G.; Parrilo, P. A. & Thomas, R. R. Semidefinite Optimization and Convex Algebraic Geometry. Society for Industrial and Applied Mathematics (2012).
[B07] Barvinok, Alexander. Integration and optimization of multivariate polynomials by restriction onto a random subspace. Foundations of Computational Mathematics 7.2 (2007): 229-244.
sourceOrthogonal basis
MultivariateBases.AbstractMultipleOrthogonalBasis
— Typeabstract type AbstractMultipleOrthogonalBasis{P} <: AbstractPolynomialVectorBasis{P, Vector{P}} end
Polynomial basis such that $\langle p_i(x), p_j(x) \rangle = 0$ if $i \neq j$ where
\[\langle p(x), q(x) \rangle = \int p(x)q(x) w(x) dx\]
where the weight is a product of weight functions $w(x) = w_1(x_1)w_2(x_2) \cdots w_n(x_n)$ in each variable. The polynomial of the basis are product of univariate polynomials: $p(x) = p_1(x_1)p_2(x_2) \cdots p_n(x_n)$. where the univariate polynomials of variable x_i
form an univariate orthogonal basis for the weight function w_i(x_i)
. Therefore, they satisfy the recurrence relation
\[d_k p_k(x_i) = (a_k x_i + b_k) p_{k-1}(x_i) + c_k p_{k-2}(x_i)\]
where reccurence_first_coef
gives a_k
, reccurence_second_coef
gives b_k
, reccurence_third_coef
gives c_k
and reccurence_deno_coef
gives d_k
.
sourceMultivariateBases.univariate_orthogonal_basis
— Functionunivariate_orthogonal_basis(B::Type{<:AbstractMultipleOrthogonalBasis},
- variable::MP.AbstractVariable, degree::Integer)
Return the vector of univariate polynomials of the basis B
up to degree
with variable variable
.
sourceMultivariateBases.reccurence_first_coef
— Functionreccurence_first_coef(B::Type{<:AbstractMultipleOrthogonalBasis}, degree::Integer)
Return a_{degree}
in recurrence equation
\[d_k p_k(x_i) = (a_k x_i + b_k) p_{k-1}(x_i) + c_k p_{k-2}(x_i)\]
sourceMultivariateBases.reccurence_second_coef
— Functionreccurence_second_coef(B::Type{<:AbstractMultipleOrthogonalBasis}, degree::Integer)
Return b_{degree}
in recurrence equation
\[d_k p_k(x_i) = (a_k x_i + b_k) p_{k-1}(x_i) + c_k p_{k-2}(x_i)\]
sourceMultivariateBases.reccurence_third_coef
— Functionreccurence_third_coef(B::Type{<:AbstractMultipleOrthogonalBasis}, degree::Integer)
Return c_{degree}
in recurrence equation
\[d_k p_k(x_i) = (a_k x_i + b_k) p_{k-1}(x_i) + c_k p_{k-2}(x_i)\]
sourceMultivariateBases.reccurence_deno_coef
— Functionreccurence_deno_coef(B::Type{<:AbstractMultipleOrthogonalBasis}, degree::Integer)
Return d_{degree}
in recurrence equation
\[d_k p_k(x_i) = (a_k x_i + b_k) p_{k-1}(x_i) + c_k p_{k-2}(x_i)\]
sourceMultivariateBases.ProbabilistsHermiteBasis
— Typestruct ProbabilistsHermiteBasis{P} <: AbstractHermiteBasis{P}
+{d \choose \alpha} = \frac{d!}{\alpha_1! \alpha_2! \cdots \alpha_n!}.\]For instance, create a polynomial with the basis $[xy^2, xy]$ creates the polynomial $\sqrt{3} a xy^2 + \sqrt{2} b xy$ where a
and b
are new JuMP decision variables. Constraining the polynomial $axy^2 + bxy$ to be zero with the scaled monomial basis constrains a/√3
and b/√2
to be zero.
This basis is orthonormal under the scalar product:
\[\langle f, g \rangle = \int_{\mathcal{C}^n} f(z) \overline{g(z)} d\nu_n\]
where $\nu_n$ is the Gaussian measure on $\mathcal{C}^n$ with the density $\pi^{-n} \exp(-\lVert z \rVert^2)$. See [Section 4; B07] for more details.
[BPT12] Blekherman, G.; Parrilo, P. A. & Thomas, R. R. Semidefinite Optimization and Convex Algebraic Geometry. Society for Industrial and Applied Mathematics (2012).
[B07] Barvinok, Alexander. Integration and optimization of multivariate polynomials by restriction onto a random subspace. Foundations of Computational Mathematics 7.2 (2007): 229-244.
sourceOrthogonal basis
MultivariateBases.AbstractMultipleOrthogonalBasis
— Typeabstract type AbstractMultipleOrthogonalBasis{P} <: AbstractPolynomialVectorBasis{P, Vector{P}} end
Polynomial basis such that $\langle p_i(x), p_j(x) \rangle = 0$ if $i \neq j$ where
\[\langle p(x), q(x) \rangle = \int p(x)q(x) w(x) dx\]
where the weight is a product of weight functions $w(x) = w_1(x_1)w_2(x_2) \cdots w_n(x_n)$ in each variable. The polynomial of the basis are product of univariate polynomials: $p(x) = p_1(x_1)p_2(x_2) \cdots p_n(x_n)$. where the univariate polynomials of variable x_i
form an univariate orthogonal basis for the weight function w_i(x_i)
. Therefore, they satisfy the recurrence relation
\[d_k p_k(x_i) = (a_k x_i + b_k) p_{k-1}(x_i) + c_k p_{k-2}(x_i)\]
where reccurence_first_coef
gives a_k
, reccurence_second_coef
gives b_k
, reccurence_third_coef
gives c_k
and reccurence_deno_coef
gives d_k
.
sourceMultivariateBases.univariate_orthogonal_basis
— Functionunivariate_orthogonal_basis(B::Type{<:AbstractMultipleOrthogonalBasis},
+ variable::MP.AbstractVariable, degree::Integer)
Return the vector of univariate polynomials of the basis B
up to degree
with variable variable
.
sourceMultivariateBases.reccurence_first_coef
— Functionreccurence_first_coef(B::Type{<:AbstractMultipleOrthogonalBasis}, degree::Integer)
Return a_{degree}
in recurrence equation
\[d_k p_k(x_i) = (a_k x_i + b_k) p_{k-1}(x_i) + c_k p_{k-2}(x_i)\]
sourceMultivariateBases.reccurence_second_coef
— Functionreccurence_second_coef(B::Type{<:AbstractMultipleOrthogonalBasis}, degree::Integer)
Return b_{degree}
in recurrence equation
\[d_k p_k(x_i) = (a_k x_i + b_k) p_{k-1}(x_i) + c_k p_{k-2}(x_i)\]
sourceMultivariateBases.reccurence_third_coef
— Functionreccurence_third_coef(B::Type{<:AbstractMultipleOrthogonalBasis}, degree::Integer)
Return c_{degree}
in recurrence equation
\[d_k p_k(x_i) = (a_k x_i + b_k) p_{k-1}(x_i) + c_k p_{k-2}(x_i)\]
sourceMultivariateBases.reccurence_deno_coef
— Functionreccurence_deno_coef(B::Type{<:AbstractMultipleOrthogonalBasis}, degree::Integer)
Return d_{degree}
in recurrence equation
\[d_k p_k(x_i) = (a_k x_i + b_k) p_{k-1}(x_i) + c_k p_{k-2}(x_i)\]
sourceMultivariateBases.ProbabilistsHermiteBasis
— Typestruct ProbabilistsHermiteBasis{P} <: AbstractHermiteBasis{P}
polynomials::Vector{P}
-end
Orthogonal polynomial with respect to the univariate weight function $w(x) = \exp(-x^2/2)$ over the interval $[-\infty, \infty]$.
sourceMultivariateBases.PhysicistsHermiteBasis
— Typestruct PhysicistsHermiteBasis{P} <: AbstractHermiteBasis{P}
+end
Orthogonal polynomial with respect to the univariate weight function $w(x) = \exp(-x^2/2)$ over the interval $[-\infty, \infty]$.
sourceMultivariateBases.PhysicistsHermiteBasis
— Typestruct PhysicistsHermiteBasis{P} <: AbstractHermiteBasis{P}
polynomials::Vector{P}
-end
Orthogonal polynomial with respect to the univariate weight function $w(x) = \exp(-x^2)$ over the interval $[-\infty, \infty]$.
sourceMultivariateBases.LaguerreBasis
— Typestruct LaguerreBasis{P} <: AbstractMultipleOrthogonalBasis{P}
+end
Orthogonal polynomial with respect to the univariate weight function $w(x) = \exp(-x^2)$ over the interval $[-\infty, \infty]$.
sourceMultivariateBases.LaguerreBasis
— Typestruct LaguerreBasis{P} <: AbstractMultipleOrthogonalBasis{P}
polynomials::Vector{P}
-end
Orthogonal polynomial with respect to the univariate weight function $w(x) = \exp(-x)$ over the interval $[0, \infty]$.
sourceMultivariateBases.AbstractGegenbauerBasis
— Typestruct AbstractGegenbauerBasis{P} <: AbstractMultipleOrthogonalBasis{P}
+end
Orthogonal polynomial with respect to the univariate weight function $w(x) = \exp(-x)$ over the interval $[0, \infty]$.
sourceMultivariateBases.AbstractGegenbauerBasis
— Typestruct AbstractGegenbauerBasis{P} <: AbstractMultipleOrthogonalBasis{P}
polynomials::Vector{P}
-end
Orthogonal polynomial with respect to the univariate weight function $w(x) = (1 - x^2)^{\alpha - 1/2}$ over the interval $[-1, 1]$.
sourceMultivariateBases.LegendreBasis
— Typestruct LegendreBasis{P} <: AbstractGegenbauerBasis{P}
+end
Orthogonal polynomial with respect to the univariate weight function $w(x) = (1 - x^2)^{\alpha - 1/2}$ over the interval $[-1, 1]$.
sourceMultivariateBases.LegendreBasis
— Typestruct LegendreBasis{P} <: AbstractGegenbauerBasis{P}
polynomials::Vector{P}
-end
Orthogonal polynomial with respect to the univariate weight function $w(x) = 1$ over the interval $[-1, 1]$.
sourceMultivariateBases.ChebyshevBasisFirstKind
— Typestruct ChebyshevBasisFirstKind{P} <: AbstractChebyshevBasis{P}
+end
Orthogonal polynomial with respect to the univariate weight function $w(x) = 1$ over the interval $[-1, 1]$.
sourceMultivariateBases.ChebyshevBasisFirstKind
— Typestruct ChebyshevBasisFirstKind{P} <: AbstractChebyshevBasis{P}
polynomials::Vector{P}
-end
Orthogonal polynomial with respect to the univariate weight function $w(x) = \frac{1}{\sqrt{1 - x^2}}$ over the interval $[-1, 1]$.
sourceMultivariateBases.ChebyshevBasisSecondKind
— Typestruct ChebyshevBasisSecondKind{P} <: AbstractChebyshevBasis{P}
+end
Orthogonal polynomial with respect to the univariate weight function $w(x) = \frac{1}{\sqrt{1 - x^2}}$ over the interval $[-1, 1]$.
sourceMultivariateBases.ChebyshevBasisSecondKind
— Typestruct ChebyshevBasisSecondKind{P} <: AbstractChebyshevBasis{P}
polynomials::Vector{P}
-end
Orthogonal polynomial with respect to the univariate weight function $w(x) = \sqrt{1 - x^2}$ over the interval $[-1, 1]$.
sourceSettings
This document was generated with Documenter.jl version 0.27.25 on Tuesday 28 November 2023. Using Julia version 1.9.4.
+end
Orthogonal polynomial with respect to the univariate weight function $w(x) = \sqrt{1 - x^2}$ over the interval $[-1, 1]$.