This package provides a standardized API for multivariate polynomial bases based on the MultivariatePolynomials API.
This package defines a few univariate bases such as chebyshev polynomials.
These are then extended to multivariate as follows.
Given a monomial x^i * y^j
the corresponding multivariate chebyshev polynomial is the product of the i
th univariate chebyshev polynomial in x
and the j
th univariate chebyshev polynomial in y
.
Given this one-to-one correspondence between monomials and multivariate chebyshev polynomials, we represent them directly by these monomials and keep this representation even through addition, multiplication, etc...
julia> using DynamicPolynomials
julia> @polyvar x y;
julia> using MultivariateBases
julia> basis = FullBasis{Chebyshev,typeof(x*y)}();
julia> basis[x^2 * y^3]
ChebyshevFirstKind(x²y³)
julia> basis[x^2 * y^3] * basis[x * y]
1//4·ChebyshevFirstKind(xy²) + 1//4·ChebyshevFirstKind(xy⁴) + 1//4·ChebyshevFirstKind(x³y²) + 1//4·ChebyshevFirstKind(x³y⁴)
The elements obtained by manipulating these polynomials are StarAlgebras.AlgebraElement
.
The algebra in StarAlgebras.jl implements the MutableArithmetics.jl API for efficient manipulation.
See the documentation for more details.