# nodalPlaneCurve -- get a random nodal plane curve

## Synopsis

• Usage:
(random nodalPlaneCurve)(d,delta,R)
• Inputs:
• d, an integer, the degree of the curve
• delta, an integer, the number of nodes
• R, , homogeneous coordinate ring of $\mathbb{P}^2$.
• Outputs:
• an ideal, the vanishing ideal of the curve

## Description

The procedure starts by choosing

\ \ \ 1) an ideal I of delta random points in $\PP^2$, and then returns

\ \ \ 2) the principal ideal generated by an random element in the saturated square J=saturate(I^2) of degree d.

If the procedure fails, for example if J_d=0, then the null is returned.

Under the option Certified=>true, the result is certified by establishing that

\ \ \ 1) the points are distinct nodes, and that

\ \ \ 2) the curve has ordinary nodes at these points

by using the Jacobian criterion applied to the singular locus of the curve.

Under the option Attempts=>n, the program makes n attempts in both steps to achieve the desired goal. Here n can be infinity. The default value is n=1.

 i1 : setRandomSeed("alpha"); i2 : R=ZZ/32003[x_0..x_2]; i3 : F=(random nodalPlaneCurve)(8,5,R); o3 : Ideal of R i4 : (dim F, degree F) o4 = (2, 8) o4 : Sequence i5 : singF = F + ideal jacobian F; o5 : Ideal of R i6 : (dim singF,degree singF) o6 = (1, 5) o6 : Sequence

Over very small fields the curves are often singular:

 i7 : R=ZZ/3[x_0..x_2]; i8 : tally apply(3^4,i-> null===((random nodalPlaneCurve)(8,5,R,Certify=>true, Attempts=>1))) o8 = Tally{false => 17} true => 64 o8 : Tally

## For the programmer

The object nodalPlaneCurve is an instance of the type RandomObject.