This is documentation for Mathematica 5, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.1)

Documentation / Mathematica / The Mathematica Book / Advanced Mathematics in Mathematica / Algebraic Manipulation /

3.3.1 Structural Operations on Polynomials

Structural operations on polynomials.

Here is a polynomial in one variable.

In[1]:= (2 + 4 x^2)^2 (x - 1)^3

Out[1]=

Expand expands out products and powers, writing the polynomial as a simple sum of terms.

In[2]:= t = Expand[ % ]

Out[2]=

Factor performs complete factoring of the polynomial.

In[3]:= Factor[ t ]

Out[3]=

FactorTerms pulls out the overall numerical factor from t.

In[4]:= FactorTerms[ t ]

Out[4]=

There are several ways to write any polynomial. The functions Expand, FactorTerms and Factor give three common ways. Expand writes a polynomial as a simple sum of terms, with all products expanded out. FactorTerms pulls out common factors from each term. Factor does complete factoring, writing the polynomial as a product of terms, each of as low degree as possible.

When you have a polynomial in more than one variable, you can put the polynomial in different forms by essentially choosing different variables to be "dominant". Collect[poly, x] takes a polynomial in several variables and rewrites it as a sum of terms containing different powers of the "dominant variable" x.

Here is a polynomial in two variables.

In[5]:= Expand[ (1 + 2x + y)^3 ]

Out[5]=

Collect reorganizes the polynomial so that x is the "dominant variable".

In[6]:= Collect[ %, x ]

Out[6]=

If you specify a list of variables, Collect will effectively write the expression as a polynomial in these variables.

In[7]:= Collect[ Expand[ (1 + x + 2y + 3z)^3 ], {x, y} ]

Out[7]=

Controlling polynomial expansion.

This avoids expanding parts which do not contain x.

In[8]:= Expand[(x + 1)^2 (y + 1)^2, x]

Out[8]=

This avoids expanding parts which do not contain objects matching b[_].

In[9]:= Expand[(a[1] + a[2] + 1)^2 (1 + b[1])^2, b[_]]

Out[9]=

Expanding powers.

Mathematica does not automatically expand out expressions of the form (a b)^c except when c is an integer. In general it is only correct to do this expansion if a and b are positive reals. Nevertheless, the function PowerExpand does the expansion, effectively assuming that a and b are indeed positive reals.

Mathematica does not automatically expand out this expression.

In[10]:= (x y)^n

Out[10]=

PowerExpand does the expansion, effectively assuming that x and y are positive reals.

In[11]:= PowerExpand[%]

Out[11]=

Log is not automatically expanded out.

In[12]:= Log[%]

Out[12]=

PowerExpand does the expansion.

In[13]:= PowerExpand[%]

Out[13]=

Ways of collecting terms.

Here is an expression involving various functions f.

In[14]:= t = 3 + x f[1] + x^2 f[1] + y f[2]^2 + z f[2]^2

Out[14]=

This collects terms that match f[_].

In[15]:= Collect[t, f[_]]

Out[15]=

This applies Factor to each coefficient obtained.

In[16]:= Collect[t, f[_], Factor]

Out[16]=