PACE.jl: Project on Algebraic Computations for Engineering

PACE.jl is a Julia package that brings together advanced tools for algebraic computations, with applications in control theory and robotics. It provides functionality for solving polynomial systems, by performing symbolic computations and/or employing interval arithmetic.

This package serves as a wrapper and integration point for several specialized packages, while also introducing its own functions. You can find the source code here.

Features and Included Packages

RS.jl

  • Univariate Polynomial Isolation: Compute isolating intervals for the real roots of a polynomial.
  • Implicit Function Plotting: Visualize implicit curves defined by polynomial equations.

MPFI.jl

  • Multiple Precision Interval Arithmetic: A wrapper for the MPFI library for precise interval computations in Julia.

LACE.jl

  • Newton's Method with Interval Arithmetic: Solve systems of equations using enhanced Newton algorithms with interval arithmetic.
  • Kantorovich Uniqueness Test: Validate the uniqueness of solutions within specific intervals.

RationalUnivariateRepresentation.jl

  • Rational Univariate Representation (RUR): Efficient RUR computation of zero-dimensional polynomial systems.

DiscriminantVariety.jl

Native Functions in PACE.jl

In addition to wrapping and integrating the above packages, PACE.jl introduces its own set of functions, particularly tailored for:

  • Subresultant computations.
  • Specialized tools for control theory and robotic kinematics.

Applications

PACE.jl is designed to address problems in:

Installation

Install PACE and its dependencies by cloning the repository and adding it to your Julia environment:

using Pkg
Pkg.add(url="https://gitlab.inria.fr/pace/pace.jl.git")

Then, load the package into your Julia session:

using PACE
Info

The library loaded by LACE.jl uses by default a custom C-based garbage collector, ensuring efficient memory management and better performance for computations. If you wish to disable it, you can set the environment variable USE_RSGC to "false", before launching Julia:

export USE_RSGC="true"