Processing math: 100%

First time here? Check out the FAQ!

Ask Your Question
2

How to get a solution from an ideal in a polynomial ring when it is nonzero codimensional?

asked 4 years ago

updated 4 years ago

Below is an ideal Id of codimension 3 (in normal-basis form). It is not 0-codim so we cannot do Id.variety(). Note that Id.dimension() provides the dimension of the ring modulo the ideal Id.

Question: How can we still get a solution?

sage: R.<s2,s3,a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15>=PolynomialRing(QQ)
sage: Id=Ideal(b9^2*b14^2*c0 - 1/9*b6*b11^3*c1, b8*b10^3*c1 - 9*b9^2*c0*c14^2, b10^4 + 9*b9^2*c14^2, b11^4 + 9*b9^2*b14^2, b14^2*c9^2 + 1/9*c10^4, c11^4 + 9*c9^2*c14^2, b8*b10*c1*c15 + 1/2*b9*c0*c14, b6*b11*c1*c15 - 1/2*b9*b14*c0, b14*c0*c1*c15 + 1/6*b4*c8*c10, b4*c8*c10*c15 - 1/6*b14*c0*c1, c3*c8*c10*c15 + 1/2*a14*b14*c4, b4*c6*c11*c15 + 1/6*c0*c1*c14, c3*c6*c11*c15 - 1/2*a14*c4*c14, c0*c1*c14*c15 - 1/6*b4*c6*c11, b8*b11^2 - 1/2*b6*b9, b8*b11*c1 + 1/2*b9*c0, b9*c0*c1 - 1/2*a14*b4, c0*c1*c9 - b3*c8*c11, b6*c1*c10 + 3*b14*c0*c15, c0*c1*c10 - 1/2*b3*c8, b4*c10^2 + 3*b3*b14*c15, b6*c10^2 - 3*b14*c8*c15, c3*c10^2 + 3*b14*c4*c15, b8*c1*c11 - 3*c0*c14*c15, c0*c1*c11 - 1/2*b3*c6, b4*c8*c11 + 1/6*c0*c1, c3*c8*c11 - 1/2*a14*c4, b4*c11^2 - 3*b3*c14*c15, b8*c11^2 + 3*c6*c14*c15, c3*c11^2 - 3*c4*c14*c15, c8*c11^2 - 1/2*c6*c9, b10^2*c15 - 1/2*b9*c14, b11^2*c15 + 1/2*b9*b14, a14*b14*c15 + 1/18*b6*c10, b9*b14*c15 - 1/18*b11^2, b14*c9*c15 - 1/18*c10^2, b6*c10*c15 - 1/2*a14*b14, c10^2*c15 + 1/2*b14*c9, b8*c11*c15 + 1/2*a14*c14, c11^2*c15 - 1/2*c9*c14, a14*c14*c15 - 1/18*b8*c11, b9*c14*c15 + 1/18*b10^2, c9*c14*c15 + 1/18*c11^2, s2^2 - 2, s3^2 - 3, a6^2 - 1/12, a6*a8 - 1/2*a14, a8^2 - 1/12, a6*a14 - 1/6*a8, a8*a14 - 1/6*a6, a14^2 - 1/36, a6*b0 - a8*b1, a8*b0 - a6*b1, a14*b0 - 1/6*b1, b0^2 + 1/2*c3, a14*b1 - 1/6*b0, b0*b1 + 3*a14*c3, b1^2 + 1/2*c3, a14*b3 + 1/3*c0*c1, b0*b3 + 1/3*c0, b1*b3 + 1/3*c1, b0*b4 - 2*b9*c0, b1*b4 - 2*b9*c1, a6*b6 + a8*b11, a8*b6 + a6*b11, a14*b6 + 1/6*b11, b0*b6 + b1*b11, b1*b6 + b0*b11, b3*b6 + b4*c8, b6^2 - b11^2, a6*b8 + a8*b10, a8*b8 + a6*b10, a14*b8 + 1/6*b10, b0*b8 + b1*b10, b1*b8 + b0*b10, b3*b8 + b4*c6, b6*b8 - 1/2*b9, b8^2 - b10^2, a14*b9 + 1/3*b8*b11, b3*b9 + 1/6*b4, a14*b10 + 1/6*b8, b3*b10 + b4*c11, b6*b10 - b8*b11, a14*b11 + 1/6*b6, b3*b11 + b4*c10, b10*b11 - 1/2*b9, b8*b14 + b6*c15, b10*b14 + b11*c15, a6*c0 - a8*c1, a8*c0 - a6*c1, a14*c0 - 1/6*c1, b0*c0 - 1/6, b1*c0 - a14, b6*c0 + b11*c1, b8*c0 + b10*c1, b10*c0 + b8*c1, b11*c0 + b6*c1, c0^2 + 1/2*b3, a14*c1 - 1/6*c0, b0*c1 - a14, b1*c1 - 1/6, c1^2 + 1/2*b3, b3*c3 - 1/9, b4*c3 + 2/3*b9, c0*c3 + 1/3*b0, c1*c3 + 1/3*b1, b3*c4 + 2/3*c9, b4*c4 - 1/9, b6*c4 + c3*c8, b8*c4 + c3*c6, b9*c4 + 1/6*c3, b10*c4 + c3*c11, b11*c4 + c3*c10, c0*c4 - 2*b0*c9, c1*c4 - 2*b1*c9, a6*c6 + a8*c11, a8*c6 + a6*c11, a14*c6 + 1/6*c11, b0*c6 + b1*c11, b1*c6 + b0*c11, b6*c6 - 1/12, b8*c6 + 3*c14*c15, b9*c6 - 1/6*b8, b10*c6 - b8*c11, b11*c6 + 1/2*a14, b14*c6 + c8*c15, c0*c6 + c1*c11, c1*c6 + c0*c11, c6^2 - c11^2, a6*c8 + a8*c10, a8*c8 + a6*c10, a14*c8 + 1/6*c10, b0*c8 + b1*c10, b1*c8 + b0*c10, b6*c8 - 3*b14*c15, b8*c8 - 1/12, b9*c8 - 1/6*b6, b10*c8 + 1/2*a14, b11*c8 - b6*c10, c0*c8 + c1*c10, c1*c8 + c0*c10, c6*c8 - 1/2*c9, c8^2 - c10^2, a14*c9 + 1/3*c8*c11, b4*c9 + 1/6*b3, b6*c9 - 1/6*c8, b8*c9 - 1/6*c6, b9*c9 - 1/36, b10*c9 - 1/6*c11, b11*c9 - 1/6*c10, c3*c9 + 1/6*c4, a14*c10 + 1/6*c8, b8*c10 + 1/2*a14, b9*c10 - 1/6*b11, b10*c10 - 1/12, b11*c10 - 3*b14*c15, c6*c10 - c8*c11, a14*c11 + 1/6*c6, b6*c11 + 1/2*a14, b9*c11 - 1/6*b10, b10*c11 + 3*c14*c15, b11*c11 - 1/12, b14*c11 + c10*c15, c10*c11 - 1/2*c9, b6*c14 - b8*c15, b11*c14 - b10*c15, b14*c14 - 1/36, c8*c14 - c6*c15, c10*c14 - c11*c15, c15^2 + 1/36, a0 - 1/2, a1 + 1/2, a2 + 2*a14, a3 - 1/3, a4, a5 + a6, a7 + a8, a9 + 2*a14, a10 - 1/3, a11 - 1/3, a12 + 1/6, a13 - a14, a15 + 1/6, b2 + 1/3, b5, b7 - 1/6, b12 + b14, b13 + c15, b15 + c15, c2 + 1/3, c5, c7 - 1/6, c12 + c14, c13 - c15)
sage: Id.dimension()
3
Preview: (hide)

2 Answers

Sort by » oldest newest most voted
1

answered 4 years ago

rburing gravatar image

If you change R to have the lex monomial ordering by PolynomialRing(QQ, order='lex'), and then compute a Groebner basis by list(Id.groebner_basis(algorithm='singular:slimgb')) (avoiding a Singular bug), you get a "triangular" system of equations for your variety. If it were 0-dimensional, then you could start with the last equation and get a finite number of solutions, then use those to solve the second-to-last equation and get finitely many solutions, etc., all the way down. Since the ideal is not 0-dimensional, you will instead reach some point where you have infinitely many solutions, e.g. here you get c12 + c14 where neither value has been fixed before, so you can fix one of them and continue, e.g. adding c14-1, c11-1, c4-1 makes it 0-dimensional. (To check this you have to change the monomial ordering back, to avoid the same Singular bug.) Normally one would then call .variety() at this point, but an alternative that happens to work here is to solve symbolically:

sage: I = Id + R.ideal(c14-1, c11-1, c4-1)
sage: solve(list(map(SR,list(I.groebner_basis(algorithm='singular:slimgb')))),list(map(SR,R.gens())))[0]
[a0 == (1/2),
 a1 == (-1/2),
 a10 == (1/3),
 a11 == (1/3),
 a12 == (-1/6),
 a13 == (-1/6),
 a14 == (-1/6),
 a15 == (-1/6),
 a2 == (1/3),
 a3 == (1/3),
 a4 == 0,
 a5 == -1/6*sqrt(3),
 a6 == 1/6*sqrt(3),
 a7 == 1/6*sqrt(3),
 a8 == -1/6*sqrt(3),
 a9 == (1/3),
 b0 == -1/2*(-1)^(1/4),
 b1 == 1/2*(-1)^(1/4),
 b10 == (1/2*I),
 b11 == (1/12),
 b12 == (-1/36),
 b13 == (1/6*I),
 b14 == (1/36),
 b15 == (1/6*I),
 b2 == (-1/3),
 b3 == (2/9*I),
 b4 == (1/9),
 b5 == 0,
 b6 == (1/12),
 b7 == (1/6),
 b8 == (1/2*I),
 b9 == (1/12*I),
 c0 == 1/3*I*(-1)^(1/4),
 c1 == -1/3*I*(-1)^(1/4),
 c10 == (-1/6*I),
 c11 == 1,
 c12 == -1,
 c13 == (-1/6*I),
 c14 == 1,
 c15 == (-1/6*I),
 c2 == (-1/3),
 c3 == (-1/2*I),
 c4 == 1,
 c5 == 0,
 c6 == 1,
 c7 == (1/6),
 c8 == (-1/6*I),
 c9 == (-1/3*I),
 s2 == -sqrt(2),
 s3 == -sqrt(3)]
Preview: (hide)
link

Comments

Very good, thanks!

Sébastien Palcoux gravatar imageSébastien Palcoux ( 4 years ago )
2

answered 4 years ago

nbruin gravatar image

You can intersect with some hyperplanes to get a 0-dimensional variety, That means adding more polynomials to the ideal, say c1-4,c2-5,c3-6 (I haven't checked if this is 0-dimensional). You'll probably not find rational solutions that way, though, because the 0-dimensional variety that you do get probably doesn't have rational points.

In general, non-empty varieties can easily not have rational points. Take the variety defined by x^2+y^2-1 in Q[x,y]. Finding rational solutions on varieties is an unsolved problem.

Over an algebraically closed field, though, Hilbert's Nulstellensatz gives you that solutions exist and the hyperplane trick works. I'm not sure that .variety() is happy to return points in algebraically closed fields, though (in a way, the 0-dimensional ideal IS the algebraic point already, so there is not really a need to go further)

Preview: (hide)
link

Comments

1

The hyperplane trick works, but .variety() runs into this Singular bug because there are more than 30-something variables, and unfortunately .variety() currently does not allow control over the Groebner basis algorithm that it uses internally.

rburing gravatar imagerburing ( 4 years ago )

The addition of c1-4,c2-5,c3-6 makes the ideal (-1)-codimensional.

sage: Id.dimension()
-1

In other words, to find the appropriate hyperplanes to intersect with could be a problem.

Sébastien Palcoux gravatar imageSébastien Palcoux ( 4 years ago )

Ah, OK. That could very well be. If your variety is 3-dimensional, though, then intersecting with 3 randomly generated hyperplanes would give you something 0-dimensional (you need to pick very special hyperplanes for that to fail!). Glancing at the ideal, there are a lot of linear relations in there. You can greatly simplify the problem by projecting away variable involved in linear relations. By the looks of it (the linear equations are at the end, you could eliminate something like 21 variables this way. For instance, you see from those equations that any solution will have c2=1/3,c5=0. You definitely want to do that before you start intersecting with hyperplanes.

nbruin gravatar imagenbruin ( 4 years ago )

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 4 years ago

Seen: 816 times

Last updated: Aug 12 '20