Dear Simon, Thank you very much. This approach works well. Another thing. I want to find the common solution of x0^2+y0^2+x1^2+y1^2+x2^2+y2^2-1, (x1+x2+2x0)^2+(y1+y2+2y0)^2+2(x0^2+y0^2)-1, (x1+x2+2x0)x0+(y1+y2+2y0)y0+x0x1+y0y1+x0x2+y0y2, x0^2+y0^2+2x1x2+2y1y2 over reals using your idea. However it does not work. Have you any idea about this? Parametric solution is also fine.
regards, Santanu On 17 May 2011 14:27, Simon King <[email protected]> wrote: > Hi Santanu, > > On 16 Mai, 16:27, Santanu Sarkar <[email protected]> wrote: >> I have three polynomials >> f=x^2 + y^2 + z^2 - 1 >> g= x^2+2*y*z >> h= (y+z+2*x)^2+2*x^2 -1. >> >> I want to find the common roots in real. >> What should be approach in complex? > > I was hoping that more competent people would answer first (I don't > usually compute solutions in RR or CC), but since your question almost > disappeared from the first screen, I'll try to give you at least two > partial answers. > > If you have a system of polynomial equations then it makes sense to > compute a Gröbner basis with respect to a lexicographic term order > (the theory can be found in books on commutative algebra). Hence: > sage: P.<x,y,z> = PolynomialRing(QQ, order='lex') > sage: I = P*[x^2 + y^2 + z^2 - 1, x^2+2*y*z, (y+z+2*x)^2+2*x^2 -1] > sage: G = I.groebner_basis() > sage: G > [x - 108/13*z^5 + 150/13*z^3 - 42/13*z, y^2 + 144/13*z^6 - 252/13*z^4 > + 121/13*z^2 - 1, y*z + 72/13*z^6 - 126/13*z^4 + 54/13*z^2, z^7 - > 5/3*z^5 + 25/36*z^3 - 1/36*z] > > As you can see, you can solve the last polynomial for z, insert any > solution into the last but one polynomial and solve for y (for each > solution that you got for z), and so on. > > And now comes the point were I am not sure if there are better ways to > tackle the problem. There is the `solve` command, and I would feed it > with the Gröbner basis. You also need to tell with respect to what > variables it shall be solved: > > sage: solve(G,var('x y z')) > [[x == 0, y == 0, z == 1], [x == 0, y == 0, z == -1], [x == > -1/3*sqrt(3), y == 1/6*sqrt(3) + 1/2, z == 1/6*sqrt(3) - 1/2], [x == > 1/3*sqrt(3), y == -1/6*sqrt(3) + 1/2, z == -1/6*sqrt(3) - 1/2], [x == > -1/3*sqrt(3), y == 1/6*sqrt(3) - 1/2, z == 1/6*sqrt(3) + 1/2], [x == > 1/3*sqrt(3), y == -1/6*sqrt(3) - 1/2, z == -1/6*sqrt(3) + 1/2], [x == > 0, y == 1, z == 0], [x == 0, y == -1, z == 0]] > > The same operation can be tried with your original list of > polynomials: > sage: solve(I.gens(),var('x y z')) > [[x == 0, y == -1, z == 0], [x == 1/3*sqrt(3), y == -1/6*sqrt(3) - > 1/2, z == (1/(sqrt(3) + 3))], [x == -1/3*sqrt(3), y == 1/6*sqrt(3) - > 1/2, z == -1/(sqrt(3) - 3)], [x == 0, y == 0, z == -1], [x == 0, y == > 0, z == 1], [x == 0, y == 1, z == 0], [x == 1/3*sqrt(3), y == > -1/6*sqrt(3) + 1/2, z == (1/(sqrt(3) - 3))], [x == -1/3*sqrt(3), y == > 1/6*sqrt(3) + 1/2, z == -1/(sqrt(3) + 3)]] > > Looks almost the same to me. Actually it could be that the Gröbner > basis computation is done internally. > > Apparently, the solutions are given symbolically. But of course they > can be interpreted in CC or RR, depending on what complex or real > value you choose for sqrt(3). > > Second answer: > > By searching the reference manual for "numerical solution", I found > that the answer may be in the method `variety(...)` of ideals. See > http://www.sagemath.org/doc/reference/sage/rings/polynomial/multi_polynomial_ideal.html?highlight=numerical%20solution#sage.rings.polynomial.multi_polynomial_ideal.MPolynomialIdeal_singular_repr.variety > > So: > sage: I.variety(RR) > [{y: 0.000000000000000, z: -1.00000000000000, x: 0.000000000000000}, > {y: 0.211324865405187, z: -0.788675134594813, x: 0.577350269189626}, > {y: 0.788675134594813, z: -0.211324865405187, x: -0.577350269189626}, > {y: -1.00000000000000, z: 0.000000000000000, x: 0.000000000000000}, > {y: 1.00000000000000, z: 0.000000000000000, x: 0.000000000000000}, {y: > -0.788675134594813, z: 0.211324865405187, x: 0.577350269189626}, {y: > -0.211324865405187, z: 0.788675134594813, x: -0.577350269189626}, {y: > 0.000000000000000, z: 1.00000000000000, x: 0.000000000000000}] > sage: I.variety(CC) > [{y: 0, z: -1.00000000000000, x: 0}, {y: 0.211324865405187, z: > -0.788675134594813, x: 0.577350269189626}, {y: 0.788675134594813, z: > -0.211324865405187, x: -0.577350269189626}, {y: -1.00000000000000, z: > 0, x: 0}, {y: 1.00000000000000, z: 0, x: 0}, {y: -0.788675134594813, > z: 0.211324865405187, x: 0.577350269189626}, {y: -0.211324865405187, > z: 0.788675134594813, x: -0.577350269189626}, {y: 0, z: > 1.00000000000000, x: 0}] > sage: I.variety(QQ) > [{y: 0, z: -1, x: 0}, {y: -1, z: 0, x: 0}, {y: 1, z: 0, x: 0}, {y: 0, > z: 1, x: 0}] > > All solutions seem are real. Well, that's the best I can do. > > Cheers, > Simon > > -- > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/sage-support > URL: http://www.sagemath.org > -- To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org
