ExpressionMap

AlgebraicInterpolation.ExpressionMapType
ExpressionMap{T <: AbstractAlgebraicVariety}

A data type that represents a rational map $\varphi \colon X \dashrightarrow \mathbb{C}^m$.

Constructor

ExpressionMap(
    domain::AbstractAlgebraicVariety;
    expressions::Pair{<:AbstractArray, <:AbstractArray}=Pair(Variable[], Expression[]),
    projection::AbstractArray=Variable[]
)

Examples

julia> @var R[1:2,1:2] t[1:2] s[1:2]
(Variable[R₁₋₁ R₁₋₂; R₂₋₁ R₂₋₂], Variable[t₁, t₂], Variable[s₁, s₂])

julia> X = AlgebraicVariety([R'*R-I, det(R)-1]; variables=[R, t]);

julia> φ = ExpressionMap(X; expressions=Pair(s, R*t), projection=t)
ExpressionMap: ℂ⁶ ⊇ X - - > ℂ⁴
 domain:
  AlgebraicVariety X ⊂ ℂ⁶
   6 variables: R₁₋₁, R₂₋₁, R₁₋₂, R₂₋₂, t₁, t₂
   5 expressions: 
    -1 + R₁₋₁^2 + R₂₋₁^2
    R₁₋₁*R₁₋₂ + R₂₋₁*R₂₋₂
    R₁₋₁*R₁₋₂ + R₂₋₁*R₂₋₂
    -1 + R₁₋₂^2 + R₂₋₂^2
    -1 + R₁₋₁*R₂₋₂ - R₁₋₂*R₂₋₁
 action:
  s₁ = t₁*R₁₋₁ + t₂*R₁₋₂
  s₂ = t₁*R₂₋₁ + t₂*R₂₋₂
  projection to t₁, t₂
source
AlgebraicInterpolation.domainMethod
domain(φ::ExpressionMap{T<:AbstractAlgebraicVariety}) -> T

Return the domain of φ.

Examples

julia> domain(φ)
AlgebraicVariety X ⊂ ℂ⁶
 6 variables: R₁₋₁, R₂₋₁, R₁₋₂, R₂₋₂, t₁, t₂
 5 expressions: 
  -1 + R₁₋₁^2 + R₂₋₁^2
  R₁₋₁*R₁₋₂ + R₂₋₁*R₂₋₂
  R₁₋₁*R₁₋₂ + R₂₋₁*R₂₋₂
  -1 + R₁₋₂^2 + R₂₋₂^2
  -1 + R₁₋₁*R₂₋₂ - R₁₋₂*R₂₋₁
source
AlgebraicInterpolation.domain_varsMethod
domain_vars(φ::ExpressionMap) -> Vector{Variable}

Return the variables of the domain of φ.

Examples

julia> domain_vars(φ)
6-element Vector{Variable}:
 R₁₋₁
 R₂₋₁
 R₁₋₂
 R₂₋₂
   t₁
   t₂
source
AlgebraicInterpolation.image_varsMethod
image_vars(φ::ExpressionMap) -> Vector{Variable}

Return the concatenated vector of expression and projection variables of φ.

Examples

julia> image_vars(φ)
4-element Vector{Variable}:
 s₁
 s₂
 t₁
 t₂
source
AlgebraicInterpolation.variablesMethod
variables(φ::ExpressionMap) -> Vector{Variable}

Return the concatenated vector of domain and expression variables of φ.

Examples

julia> variables(φ)
8-element Vector{Variable}:
 R₁₋₁
 R₂₋₁
 R₁₋₂
 R₂₋₂
   t₁
   t₂
   s₁
   s₂
source
AlgebraicInterpolation.expressionsMethod
expressions(φ::ExpressionMap) -> Vector{Expression}

Return the expressions that define φ. Doesn't include the projection variables.

Examples

julia> expressions(φ)
2-element Vector{Expression}:
 t₁*R₁₋₁ + t₂*R₁₋₂
 t₁*R₂₋₁ + t₂*R₂₋₂
source
AlgebraicInterpolation.is_dominantFunction
is_dominant(φ::ExpressionMap; <keyword_arguments>)

Return true if $\varphi \colon X \dashrightarrow \mathbb{C}^m$ is dominant, i.e. if

\[\mathrm{dim}(\mathrm{im}(\varphi)) = m.\]

Examples

julia> is_dominant(φ)
false
source