Interpolation basis
Abstract type for interpolation basis is given by
AlgebraicInterpolation.AbstractInterpolationBasis — Typeabstract type AbstractInterpolationBasis endInterface
In order to achieve the functionalities of this package that work on general AbstractInterpolationBasis, one should implement the following interface:
AlgebraicInterpolation.nelements — Functionnelements(B::AbstractInterpolationBasis) -> IntegerReturn the number of elements in B.
AlgebraicInterpolation.to_expressions — Functionto_expressions(B::AbstractInterpolationBasis) -> AbstractVector{Expression}Return the elements of B converted to Expressions.
HomotopyContinuation.ModelKit.evaluate — FunctionHC.evaluate(B::AbstractInterpolationBasis, samples::AbstractMatrix{<:Number})TBW
MonomialBasis
AlgebraicInterpolation.MonomialBasis — Typestruct MonomialBasis{Tv<:Integer,Ti<:Integer} <: AbstractInterpolationBasis
mexps::Vector{SparseVector{Tv,Ti}}
vars::Vector{Variable}
endAn 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