Singular Manual: Polar curves

| ### A.4.3 Polar curves The polar curve of a hypersurface given by a polynomial 500#500with respect to 501#501 (we may consider 502#502 as a family of hypersurfaces parametrized by 501#501) is defined as the Zariski closure of 503#503if this happens to be a curve. Some authors consider 504#504itself as polar curve. We may consider projective hypersurfaces (in 505#505),affine hypersurfaces (in 506#506)or germs of hypersurfaces (in 507#507),getting in this way projective, affine or local polar curves. Now let us compute this for a family of curves. We need the library `elim.lib` for saturation and `sing.lib` for the singular locus.
      LIB "elim.lib";
      LIB "sing.lib";
      // Affine polar curve:
      ring R = 0,(x,z,t),dp;              // global ordering dp
      poly f = z5+xz3+x2-tz6;
      dim_slocus(f);                      // dimension of singular locus
    ==> 1
      ideal j = diff(f,x),diff(f,z);
      dim(std(j));                        // dim V(j)
    ==> 1
      dim(std(j+ideal(f)));               // V(j,f) also 1-dimensional
    ==> 1
      // j defines a curve, but to get the polar curve we must remove the
      // branches contained in f=0 (they exist since dim V(j,f) = 1). This
      // gives the polar curve set theoretically. But for the structure we
      // may take either j:f or j:f^k for k sufficiently large. The first is
      // just the ideal quotient, the second the iterated ideal quotient
      // or saturation. In our case both coincide.
      ideal q = quotient(j,ideal(f));     // ideal quotient
      ideal qsat = sat(j,f);              // saturation, proc from elim.lib
      ideal sq = std(q);
      dim(sq);
    ==> 1
      // 1-dimensional, hence q defines the affine polar curve
      //
      // to check that q and qsat are the same, we show both inclusions, i.e.,
      // both reductions must give the 0-ideal
      size(reduce(qsat,sq));
    ==> 0
      size(reduce(q,std(qsat)));
    ==> 0
      qsat;
    ==> qsat[1]=12zt+3z-10
    ==> qsat[2]=5z2+12xt+3x
    ==> qsat[3]=144xt2+72xt+9x+50z
      // We see that the affine polar curve does not pass through the origin,
      // hence we expect the local polar "curve" to be empty
      // ------------------------------------------------
      // Local polar curve:
      ring r = 0,(x,z,t),ds;              // local ordering ds
      poly f = z5+xz3+x2-tz6;
      ideal j = diff(f,x),diff(f,z);
      dim(std(j));                        // V(j) 1-dimensional
    ==> 1
      dim(std(j+ideal(f)));               // V(j,f) also 1-dimensional
    ==> 1
      ideal q = quotient(j,ideal(f));     // ideal quotient
      q;
    ==> q[1]=1
      // The local polar "curve" is empty, i.e., V(j) is contained in V(f)
      // ------------------------------------------------
      // Projective polar curve: (we need "sing.lib" and "elim.lib")
      ring P = 0,(x,z,t,y),dp;            // global ordering dp
      poly f = z5y+xz3y2+x2y4-tz6;
                                          // but consider t as parameter
      dim_slocus(f);              // projective 1-dimensional singular locus
    ==> 2
      ideal j = diff(f,x),diff(f,z);
      dim(std(j));                        // V(j), projective 1-dimensional
    ==> 2
      dim(std(j+ideal(f)));               // V(j,f) also projective 1-dimensional
    ==> 2
      ideal q = quotient(j,ideal(f));
      ideal qsat = sat(j,f);              // saturation, proc from elim.lib
      dim(std(qsat));
    ==> 2
      // projective 1-dimensional, hence q and/or qsat define the projective
      // polar curve. In this case, q and qsat are not the same, we needed
      // 2 quotients.
      // Let us check both reductions:
      size(reduce(qsat,std(q)));
    ==> 4
      size(reduce(q,std(qsat)));
    ==> 0
      // Hence q is contained in qsat but not conversely
      q;
    ==> q[1]=12zty+3zy-10y2
    ==> q[2]=60z2t-36xty-9xy-50zy
    ==> q[3]=12xty2+5z2y+3xy2
    ==> q[4]=z3y+2xy3
      qsat;
    ==> qsat[1]=12zt+3z-10y
    ==> qsat[2]=12xty+5z2+3xy
    ==> qsat[3]=144xt2+72xt+9x+50z
    ==> qsat[4]=z3+2xy2
      //
      // Now consider again the affine polar curve,
      // homogenize it with respect to y (deg t=0) and compare:
      // affine polar curve:
      ideal qa = 12zt+3z-10,5z2+12xt+3x,-144xt2-72xt-9x-50z;
      // homogenized:
      ideal qh = 12zt+3z-10y,5z2+12xyt+3xy,-144xt2-72xt-9x-50z;
      size(reduce(qh,std(qsat)));
    ==> 0
      size(reduce(qsat,std(qh)));
    ==> 0
      // both ideals coincide

User manual for Singular version 4.3.2, 2023, generated by texi2html.