Processing math: 100%

First time here? Check out the FAQ!

Ask Your Question
1

Why does Sage say my Groebner basis is 1?

asked 4 years ago

Schrift gravatar image

updated 4 years ago

Consider the following program

A.<a1, a2, a3, l2, l3> = PolynomialRing(QQ)
F = A.fraction_field()
F.inject_variables()
R.<c2, s2, c1, s1> = PolynomialRing(F, order = 'lex')
I = R.ideal(l3*s1*s2 + l2*c1 - a1, l3*s1*c2 - l2*s1 - a2, l3*c2 - a3, c1^2 + s1^2 - 1, c2^2 + s2^2 - 1)
I.groebner_basis()

So a1,a2,a3,l2,l3 are parameters, and I am trying to solve the system of equations

a1=l3s1s2+l2c1

a2=l3s1c2l2s1

a3=l3c2

c21+s11=1

c22+s22=1

Now this gives as result 1, meaning that there is no solution to this system. However, for a1=l2, a2=0 and a3=l3 we do have a solution, namely c1=1,s1=0,c2=1,s2=0.

So is something in the programming going wrong, or am I misunderstanding something on the algebraic geometry part?

Preview: (hide)

1 Answer

Sort by » oldest newest most voted
2

answered 4 years ago

rburing gravatar image

updated 4 years ago

If you work over the fraction field of the parameters, you implicitly assume that all the parameters are nonzero, and even more: that all nontrivial polynomial expressions in the parameters are nonzero (because they all may appear as denominators). Concretely: R.one().lift(I) gives a list of coefficients of generators of I such that the linear combination equals 1. (In particular, it shows that the Groebner basis is correct.) Of course these coefficients are (formal) fractions. But the non-vanishing of the denominator of these fractions is in fact inconsistent with the original system of equations. Put another way: the parameters can not all be chosen arbitrarily; they must satisfy some consistency condition that follows from the system of equations (see below).

Better just work in a big polynomial ring:

sage: R.<c2, s2, c1, s1, a1, a2, a3, l2, l3> = PolynomialRing(QQ, order='lex')
sage: I = R.ideal(l3*s1*s2 + l2*c1 - a1, l3*s1*c2 - l2*s1 - a2, l3*c2 - a3, c1^2 + s1^2 - 1, c2^2 + s2^2 - 1)
sage: list(I.groebner_basis())

You get a big "triangular" system of equations that you can try to solve from the bottom up.

The last equation involves only the parameters, so it is a consistency condition (if it is not satisfied, then there is no solution). The second-to-last equation is s1a3s1l2a2=0. If a3l2 then you can solve it for s1. If a3=l2 then a2=0 and the remaining equation for s1 is (at most) a quartic depending on the parameters, and so on.

Preview: (hide)
link

Comments

Thank you!

Schrift gravatar imageSchrift ( 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: 380 times

Last updated: Jun 05 '20