Fixed-free interpolation

The interpolation technique in this Julia package is based on the

FixedFreeVariables

AlgebraicInterpolation.FixedFreeVariablesType
FixedFreeVariables

Data type for creating fixed and free variables used for interpolation.

FixedFreeVariables(fixed::Vector{Variable}, free::Vector{Variable})
FixedFreeVariables(
    fixed::Union{Variable, AbstractArray},
    free::Union{Variable, AbstractArray}
)
FixedFreeVariables(free::Union{Variable, AbstractArray})

Examples

julia> @var x y[1:2] z[1:2,1:3]
(x, Variable[y₁, y₂], Variable[z₁₋₁ z₁₋₂ z₁₋₃; z₂₋₁ z₂₋₂ z₂₋₃])

julia> FixedFreeVariables(x)
FixedFreeVariables: 0 fixed, 1 free
 fixed: 
 free: x

julia> FixedFreeVariables([x, y])
FixedFreeVariables: 0 fixed, 3 free
 fixed: 
 free: x, y₁, y₂

julia> FixedFreeVariables([x, y], z)
FixedFreeVariables: 3 fixed, 6 free
 fixed: x, y₁, y₂
 free: z₁₋₁, z₂₋₁, z₁₋₂, z₂₋₂, z₁₋₃, z₂₋₃

julia> FixedFreeVariables([x, y], [y, z])
ERROR: Nontrivial intersection of fixed and free variables
[...]

julia> FixedFreeVariables([x, y, z], [])
ERROR: Array of free variables must be nonempty
[...]
source

FixedFreeSamples

AlgebraicInterpolation.FixedFreeSamplesType
FixedFreeSamples

Data type contains samples from a variety for some FixedFreeVariables.

Constructor

FixedFreeSamples(fixed::Vector{ComplexF64}, free::Matrix{ComplexF64})

Examples

julia> v = randn(ComplexF64, 2);

julia> M = randn(ComplexF64, 3, 4);

julia> s = FixedFreeSamples(v, M)
FixedFreeSamples with 4 samples
 fixed:
2-element Vector{ComplexF64}:
  -0.7366318944925887 - 0.5245827233156782im
 -0.05897853939946192 + 0.4503548970705814im
 free:
3×4 Matrix{ComplexF64}:
 0.0193034-0.466551im   -0.277376+0.281461im  -0.0982807+1.60069im      1.0759+0.113134im
 -0.677777+0.110846im  -0.0734675-0.812262im   -0.802048+0.643131im  -0.322837+0.54686im
 -0.221659-0.897734im    -1.06199-0.43677im     0.669207+0.868208im   -0.02822-0.733581im
source