Putting Expressions into Different Forms

Complicated algebraic expressions can usually be written in many different ways. The Wolfram Language provides a variety of functions for converting expressions from one form to another.

In many applications, the most common of these functions are Expand, Factor, and Simplify. However, particularly when you have rational expressions that contain quotients, you may need to use other functions.

Expand[expr]multiply out products and powers
ExpandAll[expr]apply Expand everywhere
Factor[expr]reduce to a product of factors
Together[expr]put all terms over a common denominator
Apart[expr]separate into terms with simple denominators
Cancel[expr]cancel common factors between numerators and denominators
Simplify[expr]try a sequence of algebraic transformations and give the smallest form of expr found

Functions for transforming algebraic expressions.

Here is a rational expression that can be written in many different forms.
In[1]:=
Click for copyable input
Out[1]=
Expand expands out the numerator, but leaves the denominator in factored form.
In[2]:=
Click for copyable input
Out[2]=
ExpandAll expands out everything, including the denominator.
In[3]:=
Click for copyable input
Out[3]=
Together collects all the terms together over a common denominator.
In[4]:=
Click for copyable input
Out[4]=
Apart breaks the expression apart into terms with simple denominators.
In[5]:=
Click for copyable input
Out[5]=
Factor factors everything, in this case reproducing the original form.
In[6]:=
Click for copyable input
Out[6]=
According to Simplify, this is the simplest way to write the original expression.
In[7]:=
Click for copyable input
Out[7]=

Getting expressions into the form you want is something of an art. In most cases, it is best simply to experiment, trying different transformations until you get what you want. Often you will be able to use palettes in the front end to do this.

When you have an expression with a single variable, you can choose to write it as a sum of terms, a product, and so on. If you have an expression with several variables, there is an even wider selection of possible forms. You can, for example, choose to group terms in the expression so that one or another of the variables is "dominant".

Collect[expr,x]group together powers of x
FactorTerms[expr,x]pull out factors that do not depend on x

Rearranging expressions in several variables.

Here is an algebraic expression in two variables.
In[8]:=
Click for copyable input
Out[8]=
This groups together terms in that involve the same power of .
In[9]:=
Click for copyable input
Out[9]=
This groups together powers of .
In[10]:=
Click for copyable input
Out[10]=
This factors out the piece that does not depend on .
In[11]:=
Click for copyable input
Out[11]=

As you have seen, even when you restrict yourself to polynomials and rational expressions, there are many different ways to write any particular expression. If you consider more complicated expressions, involving, for example, higher mathematical functions, the variety of possible forms becomes still greater. As a result, it is totally infeasible to have a specific function built into the Wolfram Language to produce each possible form. Rather, the Wolfram Language allows you to construct arbitrary sets of transformation rules for converting between different forms. Many Wolfram Language packages include such rules; the details of how to construct them for yourself are given in "Transformation Rules and Definitions".

There are nevertheless a few additional builtin Wolfram Language functions for transforming expressions.

TrigExpand[expr]expand out trigonometric expressions into a sum of terms
TrigFactor[expr]factor trigonometric expressions into products of terms
TrigReduce[expr]reduce trigonometric expressions using multiple angles
TrigToExp[expr]convert trigonometric functions to exponentials
ExpToTrig[expr]convert exponentials to trigonometric functions
FunctionExpand[expr]expand out special and other functions
ComplexExpand[expr]perform expansions assuming that all variables are real
PowerExpand[expr]transform into , etc.

Some other functions for transforming expressions.

This expands out the trigonometric expression, writing it so that all functions have argument .
In[12]:=
Click for copyable input
Out[12]=
This uses trigonometric identities to generate a factored form of the expression.
In[13]:=
Click for copyable input
Out[13]=
This reduces the expression by using multiple angles.
In[14]:=
Click for copyable input
Out[14]=
This expands the sine assuming that and are both real.
In[15]:=
Click for copyable input
Out[15]=
This does the expansion allowing and to be complex.
In[16]:=
Click for copyable input
Out[16]=

The transformations on expressions done by functions like Expand and Factor are always correct, whatever values the symbolic variables in the expressions may have. Sometimes, however, it is useful to perform transformations that are only correct for some possible values of symbolic variables. One such transformation is performed by PowerExpand.

The Wolfram Language does not automatically expand out noninteger powers of products.
In[17]:=
Click for copyable input
Out[17]=
PowerExpand does the expansion.
In[18]:=
Click for copyable input
Out[18]=