How to | Solve an Equation

The Wolfram Language has many powerful features that enable you to solve many kinds of equations.

You can solve an equation using Solve. Remember to use "==" in an equation, not just "=":

In[1]:=
Click for copyable input
Out[1]=

The result is a Rule inside a doubly nested list. The outer list holds all of the solutions and each inner list holds a single solution. Here there are three solutions:

In[2]:=
Click for copyable input
Out[2]=

To solve a system of equations, use a list in the first argument:

In[3]:=
Click for copyable input
Out[3]=

Here there are two solutions to a simultaneous system of equations; each solution set is wrapped in its own list:

In[4]:=
Click for copyable input
Out[4]=

Here the solution expresses one variable in terms of another:

In[5]:=
Click for copyable input
Out[5]=

To use one of these solutions (here the first one is shown), use (the short form of Part) to extract it from the list of solutions and use (the short form of ReplaceAll) to apply the rule:

In[6]:=
Click for copyable input
Out[6]=

For example, here is a plot of for different values of , assuming that the first solution holds:

In[7]:=
Click for copyable input
Out[7]=

In a system of equations with multiple variables, you can solve for some or all of the variables by using a list in the second argument:

In[8]:=
Click for copyable input
Out[8]=

If the system is underspecified, the Wolfram Language will give an answer in terms of the remaining variables:

In[9]:=
Click for copyable input
Out[9]=

Solve finds what are known as "generic" solutions to equations. These are solutions that do not depend on the variables not specified in the second argument. For example:

In[10]:=
Click for copyable input
Out[10]=

No matter what is, putting in 0 for solves the equation. But there is another solution that does depend on : namely, setting to 0. Adding in the second argument makes this solution show up:

In[11]:=
Click for copyable input
Out[11]=

There are other cases in which Solve does not find every solution. For example:

In[12]:=
Click for copyable input
Out[12]=

You can also solve radical equations:

In[13]:=
Click for copyable input
Out[13]=

Note that in radical equations, Solve discards parasite solutions. To see all candidate solutions, including parasites, set the VerifySolutions option to False:

In[14]:=
Click for copyable input
Out[14]=

This checks the solutions:

In[15]:=
Click for copyable input
Out[15]=

You can also solve equations by using Reduce:

In[16]:=
Click for copyable input
Out[16]=

The output of Reduce is different from the output of Solve: Reduce outputs a logical expression that is equivalent to the original equation, so it never omits a solution:

In[17]:=
Click for copyable input
Out[17]=
In[18]:=
Click for copyable input
Out[18]=
    

The Wolfram Language also allows you to get numeric solutions for equations.

For example, you can use N on the output of Solve to get a numeric approximation for the symbolic solution:

In[1]:=
Click for copyable input
Out[1]=
In[2]:=
Click for copyable input
Out[2]=

You can also get the numeric solution directly by using NSolve, which is faster than combining N and Solve:

In[3]:=
Click for copyable input
Out[3]=

Use NSolve to solve a more complicated polynomial equation:

In[4]:=
Click for copyable input
In[5]:=
Click for copyable input
Out[5]=

You can also use NSolve to solve systems of equations numerically. Use the same syntax as you would with Solve:

In[6]:=
Click for copyable input
Out[6]=

If your equations involve only linear functions or polynomials, then you can use NSolve to get numerical approximations to all the solutions. However, when your equations involve more complicated functions, there is, in general, no systematic procedure for finding all solutions, even numerically. In such cases, you can use FindRoot to search for solutions.

Use FindRoot to search for numerical solutions for , starting at 1:

In[7]:=
Click for copyable input
Out[7]=