|
D.8.7.12 num_radical_via_randlincom
Procedure from library recover.lib (see recover_lib).
- Usage:
- num_radical_via_randlincom(I,D); ideal I, int D
D a bound to the degree of the elements of the components.
- Return:
- ideal: the radical of I
- Remarks:
- Uses Bertini.
Instead of using the images of the Veronese embeddings of each individual witness
point, this procedure first computes a random linear combination of those images
and searches for homogeneous polynomial relations for this linear combination.
- Note:
- Should only be called from a ring over the rational numbers.
Example:
| LIB "recover.lib";
//First, we attempt to compute the radical via the hybrid algorithm.
ring R=0,(x,y,z),dp;
ideal I=(x+y)^2*(y+2z)^3, (x+y)^3*(x-3z)^2;
int D=2;
int Prec=300;
ideal numRad=num_radical_via_randlincom(I,D,Prec);
==>
==> Bertini(TM) v1.6
==> (May 22, 2018)
==>
==> D.J. Bates, J.D. Hauenstein,
==> A.J. Sommese, C.W. Wampler
==>
==> (using GMP v6.0.0, MPFR v3.1.2)
==>
==>
==>
==> NOTE: You have requested to use adaptive path tracking. Please make sure\
that you have
==> setup the following tolerances appropriately:
==> CoeffBound: 1.280000000000e+02, DegreeBound: 5.000000000000e+00
==> AMPSafetyDigits1: 1, AMPSafetyDigits2: 1, AMPMaxPrec: 1024
==>
==>
==> Tracking regeneration codim 1 of 2: 5 paths to track.
==> Tracking path 0 of 5
==> Tracking path 1 of 5
==> Tracking path 2 of 5
==> Tracking path 3 of 5
==> Tracking path 4 of 5
==>
==> Sorting codimension 1 of 2: 5 paths to sort.
==> Sorting 0 of 5
==> Sorting 1 of 5
==> Sorting 2 of 5
==> Sorting 3 of 5
==> Sorting 4 of 5
==>
==> Preparing regeneration codim 2 of 2: 12 witness points to move.
==> Moving 0 of 12
==> Moving 1 of 12
==> Moving 2 of 12
==> Moving 3 of 12
==> Moving 4 of 12
==> Moving 5 of 12
==> Moving 6 of 12
==> Moving 7 of 12
==> Moving 8 of 12
==> Moving 9 of 12
==> Moving 10 of 12
==> Moving 11 of 12
==>
==> Tracking regeneration codim 2 of 2: 15 paths to track.
==> Tracking path 0 of 15
==> Tracking path 1 of 15
==> Tracking path 2 of 15
==> Tracking path 3 of 15
==> Tracking path 4 of 15
==> Tracking path 5 of 15
==> Tracking path 6 of 15
==> Tracking path 7 of 15
==> Tracking path 8 of 15
==> Tracking path 9 of 15
==> Tracking path 10 of 15
==> Tracking path 11 of 15
==> Tracking path 12 of 15
==> Tracking path 13 of 15
==> Tracking path 14 of 15
==>
==> Sorting codimension 2 of 2: 15 paths to sort.
==> Sorting 0 of 15
==> Sorting 1 of 15
==> Sorting 2 of 15
==> Sorting 3 of 15
==> Sorting 4 of 15
==> Sorting 5 of 15
==> Sorting 6 of 15
==> Sorting 7 of 15
==> Sorting 8 of 15
==> Sorting 9 of 15
==> Sorting 10 of 15
==> Sorting 11 of 15
==> Sorting 12 of 15
==> Sorting 13 of 15
==> Sorting 14 of 15
==>
==>
==> ************ Regenerative Cascade Summary ************
==>
==> NOTE: nonsingular vs singular is based on rank deficiency and identical e\
ndpoints
==>
==> |codim| paths |witness superset| nonsingular | singular |nonsolutions\
| inf endpoints | other bad endpoints
==> ----------------------------------------------------------------------------------------------------------------
==> | 1 | 5 | 2 | 0 | 2 | 3 \
| 0 | 0
==> | 2 | 15 | 15 | 0 | 15 | 0 \
| 0 | 0
==> ----------------------------------------------------------------------------------------------------------------
==> |total| 20
==>
==> ****************************************************
==>
==>
==> Removing junk points from codimension 2: 2 endpoints to check.
==> Checking 0 of 2
==> Checking 1 of 2
==>
==>
==> *************** Witness Set Summary ****************
==>
==> NOTE: nonsingular vs singular is based on rank deficiency and identical e\
ndpoints
==>
==> |codim| witness points | nonsingular | singular
==> -------------------------------------------------
==> | 1 | 1 | 0 | 1
==> | 2 | 1 | 0 | 1
==> -------------------------------------------------
==>
==> ****************************************************
==>
==>
==> Calculating traces for codimension 1.
==> Calculating 0 of 1
==>
==> Using combinatorial trace test to decompose codimension 1.
==>
==> Calculating traces for codimension 2.
==> Calculating 0 of 1
==>
==>
==> ************* Witness Set Decomposition *************
==>
==> | dimension | components | classified | unclassified
==> -----------------------------------------------------
==> | 1 | 0 | 0 | 1
==> | 0 | 1 | 1 | 0
==> -----------------------------------------------------
==>
==> ************** Decomposition by Degree **************
==>
==> Dimension 0: 1 classified component
==> -----------------------------------------------------
==> degree 1: 1 component
==>
==> *****************************************************
==>
==> Witness Points Deflated: 2
==> 0
numRad;
==> numRad[1]=0
//Then we compute the radical symbolically and compare the results.
ideal Rad=radical(I);
Rad;
==> Rad[1]=xy+y2+2xz+2yz
==> Rad[2]=x2-y2-5xz-5yz
reduce(Rad,std(numRad));
==> _[1]=xy+y2+2xz+2yz
==> _[2]=x2-y2-5xz-5yz
reduce(numRad,std(Rad));
==> _[1]=0
| See also:
num_radical_via_decom.
|