ExpressionMap
AlgebraicInterpolation.ExpressionMap
— TypeExpressionMap{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₂
AlgebraicInterpolation.domain
— Methoddomain(φ::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₂₋₁
AlgebraicInterpolation.domain_vars
— Methoddomain_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₂
AlgebraicInterpolation.ndomain_vars
— Methodndomain_vars(φ::ExpressionMap) -> Int
Return the number of variables in the domain of φ
.
Examples
julia> ndomain_vars(φ)
6
AlgebraicInterpolation.expression_vars
— Methodexpression_vars(φ::ExpressionMap) -> Vector{Variable}
Return the expression variables of φ
.
Examples
julia> expression_vars(φ)
2-element Vector{Variable}:
s₁
s₂
AlgebraicInterpolation.nexpression_vars
— Methodnexpression_vars(φ::ExpressionMap) -> Int
Return the number of expression variables of φ
.
Examples
julia> nexpression_vars(φ)
2
AlgebraicInterpolation.projection_vars
— Methodprojection_vars(φ::ExpressionMap) -> Vector{Variable}
Return the projection variables of φ
.
Examples
julia> projection_vars(φ)
2-element Vector{Variable}:
t₁
t₂
AlgebraicInterpolation.nprojection_vars
— Methodnprojection_vars(φ::ExpressionMap) -> Int
Return the number of projection variables of φ
.
Examples
julia> nprojection_vars(φ)
2
AlgebraicInterpolation.image_vars
— Methodimage_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₂
AlgebraicInterpolation.nimage_vars
— Methodnimage_vars(φ::ExpressionMap) -> Int
Return the number of image variables of φ
.
Examples
julia> nimage_vars(φ)
4
AlgebraicInterpolation.variables
— Methodvariables(φ::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₂
AlgebraicInterpolation.nvariables
— Methodnvariables(φ::ExpressionMap) -> Int
Return the number of variables of φ
.
Examples
julia> nvariables(φ)
8
AlgebraicInterpolation.expressions
— Methodexpressions(φ::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₂₋₂
AlgebraicInterpolation.domain_dimension
— Functiondomain_dimension(φ::ExpressionMap; <keyword_arguments>) -> Int
Compute the dimension of the domain of $\varphi$.
Examples
julia> domain_dimension(φ)
3
AlgebraicInterpolation.image_dimension
— Functionimage_dimension(φ::ExpressionMap; <keyword_arguments>) -> Int
Compute the dimension of the image of $\varphi$.
Examples
julia> image_dimension(φ)
3
AlgebraicInterpolation.is_dominant
— Functionis_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