# NumericalImplicitization -- implicitization using numerical algebraic geometry

## Description

This package supports user-friendly calculation of basic invariants of the image of a polynomial map. The computational techniques (interpolation, homotopy continuation and monodromy) come from numerical algebraic geometry.

Many varieties of interest in algebraic geometry and its applications are usefully described as images of polynomial maps, via a parametrization. Implicitization is the process of converting a parametric description of a variety into an intrinsic, or implicit, description. Classically, implicitization refers to the procedure of computing the defining equations of a parametrized variety, and in theory this is accomplished by finding the kernel of a ring homomorphism, via Gr&ouml;bner bases. In practice however, symbolic Gr&ouml;bner basis computations are often time consuming, even for medium scale problems, and do not scale well with respect to the size of the input.

Despite this, one would often like to know basic information about a parametrized variety, even when symbolic methods are prohibitively expensive. Examples of such information are discrete invariants such as the dimension, the degree, or Hilbert function values. Other examples include Boolean tests, for example whether a particular point lies on a parametrized variety. The goal of this package is to provide such information; in other words to numerically implicitize a parametrized variety.

NumericalImplicitization builds on existing numerical algebraic geometry software: NAG4M2, Bertini and PHCpack. The user may specify any of these to use for path tracking and point sampling; by default, the native software NAG4M2 is used. Currently, all methods are implemented for reduced and irreducible varieties.

Reference:

[1] A.J. Sommese and C.W. Wampler, The numerical solution of systems of polynomials. World Scientific Publishing (2005).

## Certification

Version 2.1.0 of this package was accepted for publication in volume 9 of The Journal of Software for Algebra and Geometry on 11 April 2019, in the article Numerical implicitization. That version can be obtained from the journal or from the Macaulay2 source code repository.

## Version

This documentation describes version 2.2.0 of NumericalImplicitization.

## Source code

The source code from which this documentation is derived is in the file NumericalImplicitization.m2. The auxiliary files accompanying it are in the directory NumericalImplicitization/.

## Exports

• Types
• Functions and commands
• Methods
• "extractImageEquations(List,Ideal,ZZ)" -- see extractImageEquations -- finds implicit equations in a fixed degree for the image of a variety
• "extractImageEquations(Matrix,Ideal,ZZ)" -- see extractImageEquations -- finds implicit equations in a fixed degree for the image of a variety
• "extractImageEquations(NumericalInterpolationTable)" -- see extractImageEquations -- finds implicit equations in a fixed degree for the image of a variety
• "extractImageEquations(RingMap,Ideal,ZZ)" -- see extractImageEquations -- finds implicit equations in a fixed degree for the image of a variety
• "isOnImage(List,Ideal,Point)" -- see isOnImage -- tests whether a point lies on the image of a variety
• "isOnImage(Matrix,Ideal,Point)" -- see isOnImage -- tests whether a point lies on the image of a variety
• "isOnImage(PseudoWitnessSet,Point)" -- see isOnImage -- tests whether a point lies on the image of a variety
• "isOnImage(RingMap,Ideal,Point)" -- see isOnImage -- tests whether a point lies on the image of a variety
• "numericalHilbertFunction(List,Ideal,List,ZZ)" -- see numericalHilbertFunction -- computes the values of the Hilbert function for the image of a variety
• "numericalHilbertFunction(List,Ideal,ZZ)" -- see numericalHilbertFunction -- computes the values of the Hilbert function for the image of a variety
• "numericalHilbertFunction(Matrix,Ideal,List,ZZ)" -- see numericalHilbertFunction -- computes the values of the Hilbert function for the image of a variety
• "numericalHilbertFunction(Matrix,Ideal,ZZ)" -- see numericalHilbertFunction -- computes the values of the Hilbert function for the image of a variety
• "numericalHilbertFunction(RingMap,Ideal,List,ZZ)" -- see numericalHilbertFunction -- computes the values of the Hilbert function for the image of a variety
• "numericalHilbertFunction(RingMap,Ideal,ZZ)" -- see numericalHilbertFunction -- computes the values of the Hilbert function for the image of a variety
• "numericalImageDegree(List,Ideal)" -- see numericalImageDegree -- computes the degree of the image of a variety
• "numericalImageDegree(Matrix,Ideal)" -- see numericalImageDegree -- computes the degree of the image of a variety
• "numericalImageDegree(PseudoWitnessSet)" -- see numericalImageDegree -- computes the degree of the image of a variety
• "numericalImageDegree(RingMap,Ideal)" -- see numericalImageDegree -- computes the degree of the image of a variety
• "numericalImageDim(List,Ideal)" -- see numericalImageDim -- computes the dimension of the image of a variety
• "numericalImageDim(List,Ideal,Point)" -- see numericalImageDim -- computes the dimension of the image of a variety
• "numericalImageDim(Matrix,Ideal)" -- see numericalImageDim -- computes the dimension of the image of a variety
• "numericalImageDim(Matrix,Ideal,Point)" -- see numericalImageDim -- computes the dimension of the image of a variety
• "numericalImageDim(RingMap,Ideal)" -- see numericalImageDim -- computes the dimension of the image of a variety
• "numericalImageDim(RingMap,Ideal,Point)" -- see numericalImageDim -- computes the dimension of the image of a variety
• "numericalImageSample(List,Ideal)" -- see numericalImageSample -- samples general points on the image of a variety
• "numericalImageSample(List,Ideal,List,ZZ)" -- see numericalImageSample -- samples general points on the image of a variety
• "numericalImageSample(List,Ideal,ZZ)" -- see numericalImageSample -- samples general points on the image of a variety
• "numericalImageSample(Matrix,Ideal)" -- see numericalImageSample -- samples general points on the image of a variety
• "numericalImageSample(Matrix,Ideal,List,ZZ)" -- see numericalImageSample -- samples general points on the image of a variety
• "numericalImageSample(Matrix,Ideal,ZZ)" -- see numericalImageSample -- samples general points on the image of a variety
• "numericalImageSample(RingMap,Ideal)" -- see numericalImageSample -- samples general points on the image of a variety
• "numericalImageSample(RingMap,Ideal,List,ZZ)" -- see numericalImageSample -- samples general points on the image of a variety
• "numericalImageSample(RingMap,Ideal,ZZ)" -- see numericalImageSample -- samples general points on the image of a variety
• "net(NumericalInterpolationTable)" -- see NumericalInterpolationTable -- the class of all NumericalInterpolationTables
• "numericalNullity(List,Boolean)" -- see numericalNullity -- computes numerical kernel dimension of a matrix
• "numericalNullity(Matrix)" -- see numericalNullity -- computes numerical kernel dimension of a matrix
• "numericalNullity(Matrix,Boolean)" -- see numericalNullity -- computes numerical kernel dimension of a matrix
• "numericalSourceSample(Ideal)" -- see numericalSourceSample -- samples a general point on a variety
• "numericalSourceSample(Ideal,Point)" -- see numericalSourceSample -- samples a general point on a variety
• "numericalSourceSample(Ideal,Thing,ZZ)" -- see numericalSourceSample -- samples a general point on a variety
• "numericalSourceSample(Ideal,WitnessSet)" -- see numericalSourceSample -- samples a general point on a variety
• "numericalSourceSample(Ideal,ZZ)" -- see numericalSourceSample -- samples a general point on a variety
• "net(PseudoWitnessSet)" -- see PseudoWitnessSet -- the class of all pseudo-witness sets
• "pseudoWitnessSet(List,Ideal)" -- see pseudoWitnessSet -- computes a pseudo-witness set for the image of a variety
• "pseudoWitnessSet(List,Ideal,List,Thing)" -- see pseudoWitnessSet -- computes a pseudo-witness set for the image of a variety
• "pseudoWitnessSet(List,Ideal,Point)" -- see pseudoWitnessSet -- computes a pseudo-witness set for the image of a variety
• "pseudoWitnessSet(Matrix,Ideal)" -- see pseudoWitnessSet -- computes a pseudo-witness set for the image of a variety
• "pseudoWitnessSet(Matrix,Ideal,List,Thing)" -- see pseudoWitnessSet -- computes a pseudo-witness set for the image of a variety
• "pseudoWitnessSet(Matrix,Ideal,Point)" -- see pseudoWitnessSet -- computes a pseudo-witness set for the image of a variety
• "pseudoWitnessSet(RingMap,Ideal)" -- see pseudoWitnessSet -- computes a pseudo-witness set for the image of a variety
• "pseudoWitnessSet(RingMap,Ideal,List,Thing)" -- see pseudoWitnessSet -- computes a pseudo-witness set for the image of a variety
• "pseudoWitnessSet(RingMap,Ideal,Point)" -- see pseudoWitnessSet -- computes a pseudo-witness set for the image of a variety
• "lineSearch(Ideal,Matrix)" -- see realPoint -- samples a real point on a variety
• "optimizeNelderMead(FunctionClosure,List)" -- see realPoint -- samples a real point on a variety
• "optimizeNelderMead(Ideal)" -- see realPoint -- samples a real point on a variety
• "realPoint(Ideal)" -- see realPoint -- samples a real point on a variety
• Symbols

## For the programmer

The object NumericalImplicitization is .