Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

solve function generally works as a black box with no guaranteed result. Hence, it's not surprising that it may miss some solutions.

For polynomial equations like in your example, it is advisable to use polynomial ideal framework, where the method.variety() is guaranteed to compute all solutions for a given ideal of dimension zero. Here is a rewrite of your example in that framework:

R.<s3, s5, s1, s6> = AA[]
eqs = [
    8*s3^2 - 16*s3*s5 + 18*s5^2 - 1,
    48*s1^2 - 36*s1*s5 + 18*s5^2 - 1,
    1/25*sqrt(5)*(40*sqrt(5)*s3^2 + 5*sqrt(5)*s6^2 + 10*sqrt(3)*sqrt(2)*s3 - 10*(sqrt(5)*sqrt(3)*s3 + sqrt(2))*s6 - 3*sqrt(5)),
    9600*s1^2*s3^2*s5^2 + 600*(9*s1^2 + 6*s1*s3 + s3^2)*s5^4 - 4800*(3*s1^2*s3 + s1*s3^2)*s5^3,
    80/9*s3^4 + 40/9*(4*sqrt(5)*sqrt(3)*sqrt(2)*s3^3 + 15*s3^4 + 8*s3^2)*s5^2 + 200/9*(s3^4 - 4*s3^3*s5 + 4*s3^2*s5^2)*s6^2 - 80/9*(sqrt(5)*sqrt(3)*sqrt(2)*s3^4 + 4*s3^3)*s5 - 80/9*(sqrt(5)*sqrt(2)*s3^4 + 2*(5*sqrt(3)*s3^3 + 2*sqrt(5)*sqrt(2)*s3^2)*s5^2 - (5*sqrt(3)*s3^4 + 4*sqrt(5)*sqrt(2)*s3^3)*s5)*s6]

J = R.ideal(eqs)

for sol in J.variety():
    print({x:v.radical_expression() for x,v in sol.items()})

which prints:

{s6: sqrt(2/5) - 1, s1: 0, s5: -1/6*sqrt(2), s3: 0}
{s6: sqrt(2/5) - 1, s1: 0, s5: 1/6*sqrt(2), s3: 0}
{s6: sqrt(2/5) + 1, s1: 0, s5: -1/6*sqrt(2), s3: 0}
{s6: sqrt(2/5) + 1, s1: 0, s5: 1/6*sqrt(2), s3: 0}
{s6: sqrt(2/5), s1: -1/4*sqrt(1/3), s5: 0, s3: -1/2*sqrt(1/2)}
{s6: sqrt(2/5), s1: -1/4*sqrt(1/3), s5: 0, s3: 1/2*sqrt(1/2)}
{s6: sqrt(2/5), s1: 1/4*sqrt(1/3), s5: 0, s3: -1/2*sqrt(1/2)}
{s6: sqrt(2/5), s1: 1/4*sqrt(1/3), s5: 0, s3: 1/2*sqrt(1/2)}