Quick & Dirty Mathematica

Welcome! The point of this tutorial is to teach you how to use Mathematica for menial algebra and calculus.

Fluency in Mathematica has encouraged me to think at a layer of abstraction above algebra, which has increased my enjoyment of courses with a tiresome amount of it. I hope it can do the same for you!

The basics

Mathematica's most basic functionality is as a calculator. Type 3 + 5, and then press shift-enter to evaluate the expression.

Mathematica calculates the result, and puts it in Out[1]. We can ask Mathematica to multiply the result by 7 by typing %1 * 7.

%1 represents the value in Out[1]. You could also have used %, which represents the most recent output.

We can assign values to variables in the usual way:

But the real power of Mathematica is in symbolic calculation.

Any string which isn't already bound to a value is treated as a symbol. By convention, we use lowercase names for variables, because some uppercase letters are reserved (e.g. I = Sqrt[-1]).

Be careful: there's a space in between the a and the x in the input. If you type ax / b, Mathematica will return ax / b, treating ax as the name of a variable. This is a common source of frustration. If Mathematica seems like it's behaving strangely, make sure you have spaces between your variables!

Once you have a symbolic expression, you can substitute values using rule notation:

(Mathematica automatically transforms -> into those fancy arrows.)

If you've previously set a variable that you now want to use as a symbol, you can clear it with =..

Functions in Mathematica are called with square brackets. We'll demonstrate with the N function, which converts exact values to decimals.

There are also all the usual math functions,

as well as differentiation and integration.

Both D[] and Integrate[] take the variable(s) to integrate or differentiate with respect to as parameters after the expression. If you want a definite integral, you can pass bounds of integration for each variable with {x, 0, 10} instead of x, like we do above.

Lists are denoted with curly brackets, and operations are applied elementwise.

You can index into lists with double square brackets. Mathematica uses 1-based indexing.

Mathematica's functions are defined with the parameters are followed by underscores. Notice that that you assign an implementation to the function with :=.

Ok! Now that we're done with the basics, we'll start looking at the stuff that you actually use to solve problems.

The Four Horsemen

When you do homework for classes, you'll mostly use four functions to wrangle equations: Solve, Reduce, Eliminate, and FullSimplify. I call these the four horsemen of Mathematica.


The first horseman is Solve. The most basic functionality of Solve is to take a list of equations and a list of variables, and manipulate the equations to solve for the variables. For example:

One thing that's tricky about Solve is that all the variables that aren't solved for must be allowed to range over any value in the solution. For example, Mathematica can't find a solution here.

That's because passing only x to Solve tells it to find solutions which admit all values of a, b, c. But there's no solution that allows all values of a, because a = 2. What we want is for Solve to find values for both x and a that solve the equation for all b, c:


The second horseman is Reduce. Reduce doesn't require its solution to hold for all values of the unsolved variables. Instead, it will report the conditions that solve the system. With the same input that we gave to the first Solve, Reduce correctly deduces that there is a solution as long as a == 2.

Reduce can also handle inequalities, domain constraints, and all sorts of other goodies. For example, we can ask for all the fifth roots of unity:

Or only the integral ones.


The third horseman is Eliminate. It combines equations to eliminate variables. It's useful when you have a mess of variables and equations, and you want to reduce your system to a single equation. It takes the list of equations as the first parameter, and the variables to eliminate as the second parameter.


Finally, there's FullSimplify. It does what you expect, and often transforms complicated results into things that are nicer to write down.

An Example

Now that we're armed with Solve, Reduce, Eliminate, and FullSimplify, let's solve a problem.

A rock is throw at an angle theta. It lands 50 meters downrange on a ledge of height h = 20. What was the initial speed of the throw?

We first calculate the integrals of acceleration in the j-hat (vertical) direction:

\[a_{\hat{j}} = -g\] \[v_{\hat{j}} = -gt + v_0 \sin(\theta) \] \[s_{\hat{j}} = -\frac{gt^2}{2} + v_0 t \sin(\theta) \]

And then in the i-hat (horizontal) direction:

\[a_{\hat{i}} = 0\] \[v_{\hat{i}} = v_0 \cos(\theta) \] \[s_{\hat{i}} = v_0 t \cos(\theta) \]

Now we're done with the physics--time to plug it into Mathematica.

First we write out the equations as a list. You can get subscripts with ctrl + _ and special characters (like theta) with esc theta esc.

Then, we eliminate some variables we don't need.

Next, we use Solve to rearrange this equation in terms of v0,

substitute in our values,

and FullSimplify the second result.

That's it! Go forth and wrangle some equations!