Interpolation basis

Abstract type for interpolation basis is given by

Interface

In order to achieve the functionalities of this package that work on general AbstractInterpolationBasis, one should implement the following interface:

MonomialBasis

AlgebraicInterpolation.MonomialBasisType
struct MonomialBasis{Tv<:Integer,Ti<:Integer} <: AbstractInterpolationBasis
    mexps::Vector{SparseVector{Tv,Ti}}
    vars::Vector{Variable}
end

An AbstractInterpolationBasis that consists of monomials. Parametric type Tv defines the type of exponents in multiexponents, Ti defines the type of non-zero exponent indicies. See also SparseVector.

MonomialBasis{Tv<:Integer, Ti<:Integer}(; variables::Vector{Variable}, degree::Integer)
monomials(variables::Vector{Variable}, degree::Integer)

Examples

julia> @var x y z
(x, y, z)

julia> mons = MonomialBasis{Int8, Int16}(variables=[x,y,z], degree=2)
10-element MonomialBasis{Int8, Int16}
[1, x, y, z, x^2, y^2, z^2, x*y, x*z, y*z]

julia> samples = randn(ComplexF64, 3, 2)
3×2 Matrix{ComplexF64}:
  0.299344-0.238374im  -0.527805-0.360128im
 -0.114638+1.89994im    0.127791-0.846475im
  0.303708+1.24025im   0.0363844-0.264417im

julia> evaluate(mons, samples)
10×2 Matrix{ComplexF64}:
       1.0+0.0im              1.0+0.0im
  0.299344-0.238374im   -0.527805-0.360128im
 -0.114638+1.89994im     0.127791-0.846475im
  0.303708+1.24025im    0.0363844-0.264417im
 0.0327848-0.142712im    0.148886+0.380155im
  -3.59664-0.43561im    -0.700189-0.216343im
  -1.44598+0.753349im  -0.0685926-0.0192413im
  0.418581+0.596063im   -0.372288+0.400752im
  0.386557+0.298866im   -0.114428+0.126458im
  -2.39122+0.434849im   -0.219173-0.0645886im
source