Examples
Here we include some well-known example multivariate polynomial systems.
Katsura-n
These systems appeared in a problem of magnetism in physics. For a given $n$ katsura(n) has $2^n$ solutions and is defined in a polynomial ring with $n+1$ variables. For a given polynomial ring R with $n$ variables katsura(R) defines the corresponding system with $2^{n-1}$ solutions.
Functionality
AlgebraicSolving.katsura — Method
katsura(n::Int)Given a natural number n returns the Katsura ideal generated by $u_m - \sum_{l=n}^n u_{l-m} u_l$, $1 - \sum_{l = -n}^n u_l$ where $u_{-i} = u_i$, and $u_i = 0$ for $i > n$ and $m \in \{-n, \ldots, n\}$. Also note that indices have been shifted to start from 1.
Example
julia> using AlgebraicSolving
julia> katsura(2)
QQMPolyRingElem[x1 + 2*x2 + 2*x3 - 1, x1^2 + 2*x2^2 + 2*x3^2 - x1, 2*x1*x2 + 2*x2*x3 - x2]AlgebraicSolving.katsura — Method
katsura(R::MPolyRing)Returns the Katsura ideal in the given polynomial ring R.
Example
julia> using AlgebraicSolving
julia> R, _ = QQ["x", "y", "z"]
(Multivariate polynomial ring in 3 variables over QQ, QQMPolyRingElem[x, y, z])
julia> katsura(R)
QQMPolyRingElem[x + 2*y + 2*z - 1, x^2 - x + 2*y^2 + 2*z^2, 2*x*y + 2*y*z - y]Eco-n
These systems appeared in an economics modeling problem described by Alexander Morgan. For a given $n \geq 1$ eco(n) is defined in a polynomial ring with $n$ variables. For $n \geq 2$, it has $2^{n-2}$ solutions, while for $n = 1$ it degenerates to the unit ideal. For a given polynomial ring R with $n$ variables, eco(R) defines the corresponding system.
Functionality
AlgebraicSolving.eco — Method
eco(n::Int)Given a positive natural number n returns the Eco ideal generated by $(x_k + \sum_{j=1}^{n-k-1} x_j x_{j+k})x_n - k$ for $k \in \{1, \ldots, n-1\}$ and $1 + \sum_{j=1}^{n-1} x_j$. For n = 1, this is the unit ideal.
Example
julia> using AlgebraicSolving
julia> eco(3)
QQMPolyRingElem[x1*x2*x3 + x1*x3 - 1, x2*x3 - 2, x1 + x2 + 1]AlgebraicSolving.eco — Method
eco(R::MPolyRing)Returns the Eco ideal in the given polynomial ring R, which must have at least one variable.
Example
julia> using AlgebraicSolving
julia> R, _ = QQ["x", "y", "z"]
(Multivariate polynomial ring in 3 variables over QQ, QQMPolyRingElem[x, y, z])
julia> eco(R)
QQMPolyRingElem[x*y*z + x*z - 1, y*z - 2, x + y + 1]