# Solve behaviour on same equation twice

Two questions: The first one: Solving an equation:

solve(sin(x)==0,x)


gives the solution [a=pi] but

solve([sin(x)==0,sin(x)==0],x)


raises to the somehow better solution [[a == pi*z425]] Where is the difference between the two equations?

A second one: A previous version of sage 5.something could solve

solve([sin(x)==0,-sin(x)==0],x)


However Sage 6.4.1 Returns an empty list.

edit retag close merge delete

Sort by » oldest newest most voted

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.

more