# truncatedDual -- truncated dual space of a polynomial ideal

## Description

This functions computes a basis for the local dual space of a polynomial ideal localized at point p, truncated at degree d. Elements are expressed as elements of the polynomial ring of the ideal although this is an abuse of notation. They are really elements of the dual ring.

 i1 : R = CC[x,y]; i2 : I = ideal{x^2, y*x} 2 o2 = ideal (x , x*y) o2 : Ideal of R i3 : truncatedDual(origin(R),I,3) o3 = | 1 y x .5y2 .166667y3 | o3 : DualSpace

The functionals in the dual at a point p are expressed in coordinates centered at p.

 i4 : p = point matrix{{0_CC, 1_CC}} o4 = p o4 : Point i5 : truncatedDual(p,I,3) o5 = | 1 y .5y2 .166667y3 | o5 : DualSpace

Over inexact fields, the computation accounts for the possibility of small numerical error in the point p. The optional argument Tolerance (NoetherianOperators) can be set to adjust the tolerance of the numerical computations. Higher degree dual computations generally require higher accuracy in the input and larger tolerance value to complete correctly.

In this example, the point q is slightly away from the variety of I, but an appropriate Tolerance value can overcome the error.

 i6 : q = point matrix{{0_CC + 1e-10, 1_CC}} o6 = q o6 : Point i7 : tol = 1e-6; i8 : S = truncatedDual(q,I,3, Tolerance => tol) o8 = | 1 y .5y2 .166667y3 | o8 : DualSpace i9 : (m,c) = coefficients gens S; i10 : m*clean(tol, c) o10 = | 1 y .5y2 .166667y3 | 1 4 o10 : Matrix R <--- R