next | previous | forward | backward | up | top | index | toc | Macaulay2 website
NoetherianOperators :: truncatedDual

truncatedDual -- truncated dual space of a polynomial ideal



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}

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

See also

Ways to use truncatedDual :

For the programmer

The object truncatedDual is a method function with options.