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öbner bases. In practice however, symbolic Grö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).

Version **2.1.0** of this package was accepted for publication in volume 9 of the journal 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, http://github.com/Macaulay2/M2/blob/master/M2/Macaulay2/packages/NumericalImplicitization.m2, commit number 2f801d123692462f4a65ccb135d411be425c28bd.

- Types
- NumericalInterpolationTable -- the class of all NumericalInterpolationTables
- PseudoWitnessSet -- the class of all pseudo-witness sets

- Functions and commands
- extractImageEquations -- finds implicit equations in a fixed degree for the image of a variety
- isOnImage -- tests whether a point lies on the image of a variety
- numericalHilbertFunction -- computes the values of the Hilbert function for the image of a variety
- numericalImageDegree -- computes the degree of the image of a variety
- numericalImageDim -- computes the dimension of the image of a variety
- numericalImageSample -- samples general points on the image of a variety
- numericalNullity -- computes numerical kernel dimension of a matrix
- numericalSourceSample -- samples a general point on a variety
- pseudoWitnessSet -- computes a pseudo-witness set for the image of a variety

- Methods
- extractImageEquations(NumericalInterpolationTable), see extractImageEquations -- finds implicit equations in a fixed degree for the image of a variety
- isOnImage(PseudoWitnessSet,Point), see isOnImage -- tests whether a point lies on the image of a variety
- numericalImageDegree(PseudoWitnessSet), see numericalImageDegree -- computes the degree of the image of a variety
- net(NumericalInterpolationTable), see NumericalInterpolationTable -- the class of all NumericalInterpolationTables
- net(PseudoWitnessSet), see PseudoWitnessSet -- the class of all pseudo-witness sets

- Symbols
- ConvertToCone -- specifies whether to convert image to a cone
- AttemptZZ, see extractImageEquations -- finds implicit equations in a fixed degree for the image of a variety
- MaxThreads -- specifies the maximum number of processor threads
- UseSLP, see numericalHilbertFunction -- computes the values of the Hilbert function for the image of a variety
- hilbertFunctionArgument, see NumericalInterpolationTable -- the class of all NumericalInterpolationTables
- hilbertFunctionValue, see NumericalInterpolationTable -- the class of all NumericalInterpolationTables
- imagePoints, see NumericalInterpolationTable -- the class of all NumericalInterpolationTables
- interpolationBasis, see NumericalInterpolationTable -- the class of all NumericalInterpolationTables
- interpolationMatrix, see NumericalInterpolationTable -- the class of all NumericalInterpolationTables
- interpolationSVD, see NumericalInterpolationTable -- the class of all NumericalInterpolationTables
- Precondition, see numericalNullity -- computes numerical kernel dimension of a matrix
- SVDGap, see numericalNullity -- computes numerical kernel dimension of a matrix
- generalCombinations, see PseudoWitnessSet -- the class of all pseudo-witness sets
- imageSlice, see PseudoWitnessSet -- the class of all pseudo-witness sets
- isCompletePseudoWitnessSet, see PseudoWitnessSet -- the class of all pseudo-witness sets
- sourceEquations, see PseudoWitnessSet -- the class of all pseudo-witness sets
- sourceSlice, see PseudoWitnessSet -- the class of all pseudo-witness sets
- witnessPointPairs, see PseudoWitnessSet -- the class of all pseudo-witness sets
- DoRefinements, see pseudoWitnessSet -- computes a pseudo-witness set for the image of a variety
- DoTraceTest, see pseudoWitnessSet -- computes a pseudo-witness set for the image of a variety
- MaxAttempts, see pseudoWitnessSet -- computes a pseudo-witness set for the image of a variety
- MaxPoints, see pseudoWitnessSet -- computes a pseudo-witness set for the image of a variety
- Repeats, see pseudoWitnessSet -- computes a pseudo-witness set for the image of a variety
- TraceThreshold, see pseudoWitnessSet -- computes a pseudo-witness set for the image of a variety