Sponsored links: Algebra eBooks ### The Maxima on-line user's manual

Algebra Calculator

#### Search: #### Expand

Function: expand (<expr>) Function: expand (<expr>, <p>, <n>) Expand expression <expr>. Products of sums and exponentiated sums are multiplied out, numerators of rational expressions which are sums are split into their respective terms, and multiplication (commutative and non-commutative) are distributed over addition at all levels of <expr>.

For polynomials one should usually use `ratexpand` which uses a more efficient algorithm.

`maxnegex` and `maxposex` control the maximum negative and positive exponents, respectively, which will expand.

`expand (<expr>, <p>, <n>)` expands <expr>, using <p> for `maxposex` and <n> for `maxnegex`. This is useful in order to expand part but not all of an expression.

`expon` - the exponent of the largest negative power which is automatically expanded (independent of calls to `expand`). For example if `expon` is 4 then `(x+1)^(-5)` will not be automatically expanded.

`expop` - the highest positive exponent which is automatically expanded. Thus `(x+1)^3`, when typed, will be automatically expanded only if `expop` is greater than or equal to 3. If it is desired to have `(x+1)^n` expanded where `n` is greater than `expop` then executing `expand ((x+1)^n)` will work only if `maxposex` is not less than `n`.

`expand(expr, 0, 0)` causes a resimplification of `expr`. `expr` is not reevaluated. In distinction from `ev(expr, noeval)` a special representation (e. g. a CRE form) is removed. See also `ev`.

The `expand` flag used with `ev` causes expansion.

The file `simplification/facexp.mac` contains several related functions (in particular `facsum`, `factorfacsum` and `collectterms`, which are autoloaded) and variables (`nextlayerfactor` and `facsum_combine`) that provide the user with the ability to structure expressions by controlled expansion. Brief function descriptions are available in `simplification/facexp.usg`. A demo is available by doing `demo("facexp")`.

```     Examples:
(%i1) expr:(x+1)^2*(y+1)^3;
2        3
(%o1)                          (x + 1)  (y + 1)
(%i2) expand(expr);
2  3        3    3      2  2        2      2      2
(%o2) x  y  + 2 x y  + y  + 3 x  y  + 6 x y  + 3 y  + 3 x  y
2
+ 6 x y + 3 y + x  + 2 x + 1```

```          (%i3) expand(expr,2);
2        3              3          3
(%o3)                x  (y + 1)  + 2 x (y + 1)  + (y + 1)```

```          (%i4) expr:(x+1)^-2*(y+1)^3;
3
(y + 1)
(%o4)                              --------
2
(x + 1)
(%i5) expand(expr);
3               2
y             3 y            3 y             1
(%o5)      ------------ + ------------ + ------------ + ------------
2              2              2              2
x  + 2 x + 1   x  + 2 x + 1   x  + 2 x + 1   x  + 2 x + 1```

```          (%i6) expand(expr,2,2);
3
(y + 1)
(%o6)                            ------------
2
x  + 2 x + 1```

Resimplify an expression without expansion:

```          (%i7) expr:(1+x)^2*sin(x);
2
(%o7)                           (x + 1)  sin(x)
(%i8) exponentialize:true;
(%o8)                                true
(%i9) expand(expr,0,0);
2    %i x     - %i x
%i (x + 1)  (%e     - %e      )
(%o9)                  - -------------------------------
2```

There are also some inexact matches for `expand`. Try `?? expand` to see them.

```(%o1)                                true
(%i2) ```

### Related Examples

##### expand

expand((2 - 1*%i)*(3+...

Calculate

##### expand-float-linsolve-matrix-rhs-time

S1:matrix([-3.0318652...

S2:matrix([1.27222906...

S3:matrix([-1.9849982...

Calculate

##### expand-factor-ratsimp

z1: 2*c-5*b;

n1: 6*a*b-10*b^2;

z2: 5*(2*c-3*a);

Calculate

##### expand

expand((x-1)^3);

expand(((x-1)^3)*x);

expand((1-x)/x^2*(x-...

Calculate

##### expand-sqrt

expand((sqrt(1)+sqrt(...

Calculate

##### expand

expand((x-(1/a)-(1/b)));

Calculate

##### expand

expand((((2*a*b^2)^2/...

Calculate

##### expand-matrix

m1:matrix([r, s, t],[...

m2:matrix([a,b,c],[b,...

m3:matrix([r,u,x],[s,...

Calculate

##### expand-solve

eq1:zz : a + b*xx + c...

eq2: expand(eq1);

solve(eq2,z);

Calculate

##### expand

pol1:-6*x^7+2*x^5-14*...

pol2:x^2-3;

expand(pol1*pol2);

Calculate 