Fixed-free interpolation
The interpolation technique in this Julia package is based on the
FixedFreeVariables
AlgebraicInterpolation.FixedFreeVariables — TypeFixedFreeVariablesData 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
[...]AlgebraicInterpolation.fixed — Methodfixed(vars::FixedFreeVariables) -> Vector{Variable}Return the fixed variables in vars.
AlgebraicInterpolation.nfixed — Methodnfixed(vars::FixedFreeVariables) -> IntReturn the number of fixed variables in vars.
AlgebraicInterpolation.free — Methodfree(vars::FixedFreeVariables) -> Vector{Variable}Return the free variables in vars.
AlgebraicInterpolation.nfree — Methodnfree(vars::FixedFreeVariables) -> IntReturn the number of free variables in vars.
AlgebraicInterpolation.variables — Methodvariables(vars::FixedFreeVariables) -> Vector{Variable}Return the concatenated vector of fixed and free variables in vars.
AlgebraicInterpolation.nvariables — Methodnvariables(vars::FixedFreeVariables) -> IntReturn the number of all the variables in vars.
FixedFreeSamples
AlgebraicInterpolation.FixedFreeSamples — TypeFixedFreeSamplesData 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.733581imAlgebraicInterpolation.fixed — Methodfixed(s::FixedFreeSamples) -> Vector{ComplexF64}Return the fixed samples in s.
AlgebraicInterpolation.free — Methodfree(s::FixedFreeSamples) -> Matrix{ComplexF64}Return the free samples in s.
AlgebraicInterpolation.nsamples — Methodnsamples(s::FixedFreeSamples) -> IntReturn the number of samples in s.