1 | // Two transversal cusps in (k^3,0): |
---|
2 | ring r1 = 0,(t,x,y,z),ls; |
---|
3 | ideal i1 = x-t2,y-t3,z; // parametrization of the first branch |
---|
4 | ideal i2 = y-t2,z-t3,x; // parametrization of the second branch |
---|
5 | ideal j1 = eliminate(i1,t); |
---|
6 | j1; // equations of the first branch |
---|
7 | ideal j2 = eliminate(i2,t); |
---|
8 | j2; // equations of the second branch |
---|
9 | // Now map to a ring with only x,y,z as variables and compute the |
---|
10 | // intersection of j1 and j2 there: |
---|
11 | ring r2 = 0,(x,y,z),ds; |
---|
12 | ideal j1= imap(r1,j1); // imap is a convenient ringmap for |
---|
13 | ideal j2= imap(r1,j2); // inclusions and projections of rings |
---|
14 | ideal i = intersect(j1,j2); |
---|
15 | i; // equations of both branches |
---|
16 | intvec v= qhweight(i); // compute weights |
---|
17 | v; |
---|
18 | //---------------------------------------------------- |
---|
19 | // The tangent developable of a projective variety given parametrically |
---|
20 | // by F=(f1,...,fn) : P^r --> P^n is the union of all tangent spaces |
---|
21 | // of the image. The tangent space at a smooth point F(t1,...,tr) |
---|
22 | // is given as the image of the tangent space at (t1,...,tr) under |
---|
23 | // the tangent map |
---|
24 | // T(t1,...,tr): (y1,...,yr) --> jacob(f)*transpose((y1,...,yr)) |
---|
25 | // where jacob(f) denotes the jacobian matrix of f with respect to the |
---|
26 | // t's evaluated at the point (t1,...,tr). |
---|
27 | // Hence we have to create the graph of this map and then to eliminate |
---|
28 | // the t's and y's. |
---|
29 | // The rational normal curve in P^4 is given as the image of |
---|
30 | // F(s,t) = (s4,s3t,s2t2,st3,t4) |
---|
31 | // each component being homogeneous of degree 4. |
---|
32 | ring P = 0,(s,t,x,y,a,b,c,d,e),dp; |
---|
33 | ideal M = maxideal(1); |
---|
34 | ideal F = M[1..2]; // take the 1-st two generators of M |
---|
35 | F=F^4; |
---|
36 | // simplify(...,2); deletes 0-columns |
---|
37 | matrix jac = simplify(jacob(F),2); |
---|
38 | ideal T = x,y; |
---|
39 | ideal J = jac*transpose(T); |
---|
40 | ideal H = M[5..9]; |
---|
41 | ideal i = H-J; // this is tricky: difference between two |
---|
42 | // ideals is not defined, but between two |
---|
43 | // matrices. By automatic type conversion |
---|
44 | // the ideals are converted to matrices, |
---|
45 | // subtracted and afterwards converted |
---|
46 | // to an ideal. Note that '+' is defined |
---|
47 | // and adds (concatenates) two ideals |
---|
48 | i; |
---|
49 | // Now we define a ring with product ordering and weights 4 |
---|
50 | // for the variables a,...,e. |
---|
51 | // Then we map i from P to P1 and eliminate s,t,x,y from i. |
---|
52 | ring P1 = 0,(s,t,x,y,a,b,c,d,e),(dp(4),wp(4,4,4,4,4)); |
---|
53 | ideal i = fetch(P,i); |
---|
54 | ideal j= eliminate(i,stxy); // equations of tangent developable |
---|
55 | j; |
---|
56 | // We can use the product ordering to eliminate s,t,x,y from i |
---|
57 | // by a std-basis computation. |
---|
58 | // We need proc 'nselect' from elim.lib. |
---|
59 | LIB "elim.lib"; |
---|
60 | j = std(i); // compute a std basis j |
---|
61 | j = nselect(j,1..4); // select generators from j not |
---|
62 | j; // containing variable 1,...,4 |
---|
63 | killall(); |
---|
64 | LIB "tst.lib";tst_status(1);$ |
---|