| 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)}
Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.