Accelerating the pace of engineering and science

# Documentation Center

• Trial Software

# mapcoeffs

Apply a function to the coefficients of a polynomial

### Use only in the MuPAD Notebook Interface.

This functionality does not run in MATLAB.

## Syntax

```mapcoeffs(p, F, <a1, a2, …>)
mapcoeffs(f, <vars>, F, <a1, a2, …>)
```

## Description

mapcoeffs(p, F, a1, a2, ...) applies the function F to the polynomial p by replacing each coefficient c in p by F(c, a1, a2, ...).

For a polynomial p of type DOM_POLY generated by poly, the function F must accept arguments from the coefficient ring of p and must produce corresponding results.

A polynomial expression f is first converted to a polynomial with the variables given by vars. If no variables are given, they are searched for in f. See poly about details of the conversion. FAIL is returned if f cannot be converted to a polynomial. After applying the function F, the result is converted to an expression.

mapcoeffs evaluates its arguments. Note, however, that polynomials of type DOM_POLY do not evaluate their coefficients for efficiency reasons. Cf. Example 4.

## Examples

### Example 1

The function sin is mapped to the coefficients of a polynomial expression in the indeterminates x and y:

`mapcoeffs(3*x^3 + x^2*y^2 + 2, sin)`

The following call makes mapcoeffs regard this expression as a polynomial in x. Consequently, y is regarded as a parameter that becomes part of the coefficients:

`mapcoeffs(3*x^3 + x^2*y^2 + 2, [x], sin)`

The system function _plus adds its arguments. In the following call, it is used to add 2 to all coefficients by providing this shift as an additional argument:

`mapcoeffs(c1*x^3 + c2*x^2*y^2 + c3, [x, y], _plus, 2)`

### Example 2

The function sin is mapped to the coefficients of a polynomial in the indeterminates x and y:

`mapcoeffs(poly(3*x^3 + x^2*y^2 + 2, [x, y]), sin)`

In the following call, the polynomial has the indeterminate x. Consequently, y is regarded as a parameter that becomes part of the coefficients:

`mapcoeffs(poly(3*x^3 + x^2*y^2 + 2, [x]), sin)`

A user-defined function is mapped to a polynomial:

```F := (c, a1, a2) -> exp(c + a1 + a2):
mapcoeffs(poly(x^3 + c*x, [x]), F, a1, a2)```

`delete F:`

### Example 3

We consider a polynomial over the integers modulo 7:

`p := poly(x^3 + 2*x*y, [x, y], Dom::IntegerMod(7)):`

A function to be applied to the coefficients must produce values in the coefficient ring of the polynomial:

`mapcoeffs(p, c -> c^2)`

The following call maps a function which converts its argument to an integer modulo 3. Such a return value is not a valid coefficient of p:

`mapcoeffs(p, c -> Dom::IntegerMod(3)(expr(c)))`

`delete p:`

### Example 4

Note that polynomials of type DOM_POLY do not evaluate their arguments:

`delete a, x: p := poly(a*x, [x]): a := PI: p`

Evaluation can be enforced by the function eval:

`mapcoeffs(p, eval)`

We map the sine function to the coefficients of p. The polynomial does not evaluate its coefficient sin(a) to 0:

`mapcoeffs(p, sin)`

The composition of sin and eval is mapped to the coefficients of the polynomial:

`mapcoeffs(p, eval@sin)`

`delete p, a:`

## Parameters

 p A polynomial of type DOM_POLY F a1, a2, … Additional parameters for the function F f vars A list of indeterminates of the polynomial: typically, identifiers or indexed identifiers

## Return Values

Polynomial of type DOM_POLY, or a polynomial expression, or FAIL.