How to | Solve an Equation

*Mathematica* has many powerful features which enable you to solve many kinds of equations.

You can solve an equation using

Solve. Remember to use "==" in an equation, not just "=":

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:

Out[2]= | |

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

Out[3]= | |

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

Out[4]= | |

Here the solution expresses one variable in terms of another:

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:

Out[6]= | |

For example, here is a plot of

for different values of

, assuming that the first solution holds:

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:

Out[2]= | |

If the system is underspecified,

*Mathematica* will give an answer in terms of the remaining variables:

Out[3]= | |

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:

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:

Out[4]= | |

There are other cases in which

Solve does not find every solution. For example:

Out[5]= | |

You can also solve radical equations:

Out[11]= | |

Note that in radical equations,

Solve discards parasite solutions. To see all candidate solutions, including parasites, set the

option to

False:

Out[16]= | |

This checks the solutions:

Out[17]= | |

You can also solve equations by using

Reduce:

Out[13]= | |

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:

Out[14]= | |

Out[15]= | |

*Mathematica* 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:

Out[18]= | |

Out[19]= | |

You can also get the numeric solution directly by using

NSolve, which is faster than combining

N and

Solve:

Out[20]= | |

Use

NSolve to solve a more complicated polynomial equation:

Out[22]= | |

You can also use

NSolve to solve systems of equations numerically. Use the same syntax as you would with

Solve:

Out[23]= | |

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:

Out[24]= | |