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 |
The object nodalPlaneCurve is an instance of the type RandomObject.