**3.4.6 Getting Full Solutions**

If you have an equation like 2x==0, it is perfectly clear that the only possible solution is x->0. However, if you have an equation like ax==0, things are not so clear. If a is not equal to zero, then x->0 is again the only solution. However, if a is in fact equal to zero, then any value of x is a solution.

Solve implicitly assumes that the parameter a does not have the special value 0.
In[1]:= **Solve[ a x == 0 , x ]**

Out[1]=

Roots makes the same assumption.
In[2]:= **Roots[ a x == 0 , x ]**

Out[2]=

Reduce, on the other hand, gives you all the possibilities, without assuming anything about the value of a.
In[3]:= **Reduce[ a x == 0 , x ]**

Out[3]=

The results that Reduce gives are logical statements representing all possible solutions to an equation, allowing for special values of parameters. The || operator stands for OR, so that a==0||x==0 means that either a is equal to 0 and there is no restriction on x, or x is equal to 0 and there is no restriction on a.

Logical forms associated with equations.

This is the solution to an arbitrary linear equation given by Roots and Solve.
In[4]:= **Roots[a x + b == 0, x]**

Out[4]=

Reduce gives the full version, which includes the possibility a==b==0. In reading the output, note that && has higher precedence than ||.
In[5]:= **Reduce[a x + b == 0, x]**

Out[5]=

Here is the full solution to a general quadratic equation. There are three alternatives. If a is non-zero, then there are two solutions for x, given by the standard quadratic formula. If a is zero, however, the equation reduces to a linear one. Finally, if a, b and c are all zero, there is no restriction on x.
In[6]:= **Reduce[a x^2 + b x + c == 0, x]**

Out[6]=

The most important difference between Reduce and Solve is that Reduce gives all the possible solutions to a set of equations, while Solve gives only the generic ones. Solutions are considered "generic" if they involve conditions only on the variables that you explicitly solve for, and not on other parameters in the equations. Reduce and Solve also differ in that Reduce always returns combinations of equations, while Solve gives results in the form of transformation rules.

Solving equations.