1 | initial version |
I have now looked at the underlying code for solve. It turns out that if the first argument of solve is an equation or a list of just one equation the object function sage.symbolic.expression.Expression.solve is used. This explains why the output of
solve([sin(x)==0,sin(x)==0],x
and
solve([sin(x)==0],x)
may differ. To force to get all solutions in the first case one can use
solve(sin(x)==0,x,to_poly_solve='force')
Another thing I've found out is that in the definition of the underlying maxima function solve is declared as
solve ([eqn_1, …, eqn_n], [x_1, …, x_n])
so the number of equations should match the number of variables.
If one reformulates the problem to
solve(-sin(x)*sin(x)==0,x,to_poly_solve='force')
all solutions will be displayed.
However I liked the behaviour of previous Versions of sage That is: If solve could't find a solution the original equation was returned. That way it was clear that there may exist solutions sage could not found.