First time here? Check out the FAQ!

Ask Your Question
1

polynomial decomposition

asked 9 years ago

tmonteil gravatar image

updated 9 years ago

Assume i have some multivariate polynomials P1,...,Pn and a polynomial P. Sage is able to tell whether P is in the ideal generated by P1,...,Pn by writing P in R.ideal([P1,...,Pn]), where R is the polynomial ring containing the Pi. When the answer is True, i would like to obtain a certificate, that is a list of polynomials Q1,...,Qn such that P = P1*Q1 + ... + Pn*Qn. Is there an easy way to get this ? If possible i would like the Qi to have small coefficients.

Preview: (hide)

1 Answer

Sort by » oldest newest most voted
0

answered 9 years ago

vdelecroix gravatar image

You can use singular but it seems to be not interfaced directly

sage: R.<x1,x2,x3> = QQ[]
sage: P0 = x2*x2 + x3**2*x1
sage: P1 = x1*x1*x3 + x2*x1**3 +x3**3
sage: P2 = x1**3 + x2**3 + x3**3
sage: Q = 2*P0 + (x1*x2-3)*P1 + x1*P2
sage: I = R.ideal([P0,P1,P2])
sage: I_sg = singular(I)
sage: M = I_sg.lift(Q).sage()
sage: M[0,0]*P0 + M[1,0]*P1 + M[2,0]*P2 == Q
True
Preview: (hide)
link

Comments

1

Thanks. Actually, you do not need to use singular directly, a lift method exists for polynomials and you do not need to use the ideal (which i find not natural since the result depends on the generators, not only on the ideal), but you can use directly the list of polynomials:

sage: R.<x1,x2,x3> = QQ[]
sage: P0 = x2*x2 + x3**2*x1
sage: P1 = x1*x1*x3 + x2*x1**3 +x3**3
sage: P2 = x1**3 + x2**3 + x3**3
sage: Q = 2*P0 + (x1*x2-3)*P1 + x1*P2
sage: M = Q.lift([P0,P1,P2])
sage: M[0]*P0 + M[1]*P1 + M[2]*P2 == Q
True

However, your solution works with the ring ZZ, while mine only works for fields...

tmonteil gravatar imagetmonteil ( 9 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: 9 years ago

Seen: 549 times

Last updated: Jan 01 '16