3.3.1 Structural Operations on Polynomials
| Expand[poly] | expand out products and powers | | Factor[poly] | factor completely | | FactorTerms[poly] | pull out any overall numerical factor | | FactorTerms[poly, {x, y, ... }] | pull out any overall factor that does not depend on x, y, ... | | Collect[poly, x] | arrange a polynomial as a sum of powers of x | | Collect[poly, {x, y, ... }] | arrange a polynomial as a sum of powers of x, y, ... |
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. | |
Out[2]=
|
|
| Factor performs complete factoring of the polynomial. | |
Out[3]=
|
|
| FactorTerms pulls out the overall numerical factor from 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". | |
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]=
|
|
| Expand[poly, patt] | expand out poly avoiding those parts which do not contain terms matching patt |
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]=
|
|
| PowerExpand[expr] | expand out and in expr |
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. | |
Out[10]=
|
|
| PowerExpand does the expansion, effectively assuming that x and y are positive reals. | |
Out[11]=
|
|
| Log is not automatically expanded out. | |
Out[12]=
|
|
| PowerExpand does the expansion. | |
Out[13]=
|
|
| Collect[poly, patt] | collect separately terms involving each object that matches patt | | Collect[poly, patt, h] | apply h to each final coefficient obtained |
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]=
|
|
|