next | previous | forward | backward | up | top | index | toc | Macaulay2 website
Macaulay2Doc :: randomKRationalPoint

randomKRationalPoint -- Pick a random K rational point on the scheme X defined by I

Synopsis

Description

If X has codimension 1, then we intersect X with a randomly chosen line, and hope that the decomposition of the the intersection contains a K-rational point. If n=degree X then the probability P that this happens, is the proportion of permutations in $S_n$ with a fix point on $\{1,\ldots,n \}$, i.e. $$P=\sum_{j=1}^n (-1)^{j-1} binomial(n,j)(n-j)!/n! = 1-1/2+1/3! + \ldots $$ which approaches $1-exp(-1) = 0.63\ldots$. Thus a probabilistic approach works.

For higher codimension we first project X birationally onto a hypersurface Y, and find a point on Y. Then we take the preimage of this point.

i1 : p=nextPrime(random(2*10^4))

o1 = 107
i2 : kk=ZZ/p;R=kk[x_0..x_3];
i4 : I=minors(4,random(R^5,R^{4:-1}));

o4 : Ideal of R
i5 : codim I, degree I

o5 = (2, 10)

o5 : Sequence
i6 : time randomKRationalPoint(I)
     -- used 0.206199 seconds

o6 = ideal (x  - 53x , x  + 8x , x  - 4x )
             2      3   1     3   0     3

o6 : Ideal of R
i7 : R=kk[x_0..x_5];
i8 : I=minors(3,random(R^5,R^{3:-1}));

o8 : Ideal of R
i9 : codim I, degree I

o9 = (3, 10)

o9 : Sequence
i10 : time randomKRationalPoint(I)
     -- used 0.306454 seconds

o10 = ideal (x  - 27x , x  - 16x , x  - 9x , x  + 44x , x  - 52x )
              4      5   3      5   2     5   1      5   0      5

o10 : Ideal of R

The claim that $63 \%$ of the intersections contain a K-rational point can be experimentally tested:

i11 : p=10007,kk=ZZ/p,R=kk[x_0..x_2]

o11 = (10007, kk, R)

o11 : Sequence
i12 : n=5; sum(1..n,j->(-1)^(j-1)*binomial(n,j)*(n-j)!/n!)+0.0

o13 = .633333333333333

o13 : RR (of precision 53)
i14 : I=ideal random(n,R);

o14 : Ideal of R
i15 : time (#select(apply(100,i->(degs=apply(decompose(I+ideal random(1,R)),c->degree c);
                     #select(degs,d->d==1))),f->f>0))
     -- used 2.83163 seconds

o15 = 58

Ways to use randomKRationalPoint :

For the programmer

The object randomKRationalPoint is a method function.