Fixed-free interpolation
The interpolation technique in this Julia package is based on the
FixedFreeVariables
AlgebraicInterpolation.FixedFreeVariables
— TypeFixedFreeVariables
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
[...]
AlgebraicInterpolation.fixed
— Methodfixed(vars::FixedFreeVariables) -> Vector{Variable}
Return the fixed variables in vars
.
AlgebraicInterpolation.nfixed
— Methodnfixed(vars::FixedFreeVariables) -> Int
Return 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) -> Int
Return 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) -> Int
Return the number of all the variables in vars
.
FixedFreeSamples
AlgebraicInterpolation.FixedFreeSamples
— TypeFixedFreeSamples
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
AlgebraicInterpolation.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) -> Int
Return the number of samples in s
.