# Vocabulary/pdot

>>
<< ` `
Down to: Dyad ` `
Back to: Vocabulary
Thru to: Dictionary

`p. y`Roots

Rank 1 *-- operates on lists of y, producing a list for each one --*
WHY IS THIS IMPORTANT?

Converts the polynomial `y` between *coefficient* and *multiplier-and-roots* form.

**Example:**
The roots of *2y ^{2} - 16y + 30 = 2(y-5)(y-3) = 0* are

`5`and

`3`

c=: 30 _16 2 NB. coefficients (in ascending powers) ]z=: p. c NB. coefficients as argument yield roots +-+---+ |2|5 3| +-+---+ p. z NB. (multiplier and) roots as [boxed] argument yield coefficients 30 _16 2

The *coefficient form* of a polynomial is the list of coefficients of **ascending** powers of *y* representing the polynomial *c _{0}+c_{1}y^{1}+ ... +c_{n}y^{n}*

`30 _16 2` ↔ *30 - 16y + 2y ^{2}*

The *multiplier-and-roots form* of a polynomial is a two-atom boxed list ` m;r `
representing the polynomial *m(y-r _{0})(y-r_{1})...(y-r_{n})*

`2;5 3` ↔ *2(y-5)(y-3)*

### Common uses

1. Solve a polynomial equation whose right side is `0` (the solutions are the roots).

2. Convert a polynomial into its different forms.

### More Information

1. `y` may also be in *exponent form*, which is a singleton box (either an atom or a 1-atom list) containing a table.
Each row of the table is a 2-atom list `c,n` representing the term *cy ^{n}* (

`c`is the coefficient,

`n`the nonnegative integer exponent).

If `y` is in exponent form, `p. y` produces the corresponding coefficient form.

]p =. <_2 ]\ _16 1 2 2 30 0 NB. three (c,n) pairs; order of powers doesn't matter +-----+ |_16 1| | 2 2| | 30 0| +-----+ p. p 30 _16 2

### Details

1. If `y` is a single boxed atom containing a list, it is assumed to be roots with an omitted multiplier of `1`:

]z=. < -: 1&(+,-) %:5 NB. roots [Phi,-phi] +-----------------+ |1.61803 _0.618034| +-----------------+ p. z _1 _1 1

2. If in exponent form powers appear repeated, the last occurring (`c,n`) pair for that power is used:

]p =. < _16 1 ,99 2 ,30 0 ,:2 2 +-----+ |_16 1| | 99 2| | 30 0| | 2 2| +-----+ p. p 30 _16 2

`x p. y`Polynomial

Rank 1 0 *-- operates on lists of x, and individual atoms of y --*
WHY IS THIS IMPORTANT?

Evaluates polynomial `x` for given value(s) of `y`.

Argument `x` can be in *coefficient*, *multiplier-and-roots*, *exponent*, or *multinomial* form.

Remember, the powers of *y* in coefficient form are in **ascending order**.

**Example:** The roots of *2y ^{2} - 16y + 30 = 2(y-5)(y-3) = 0* are

`5`and

`3`

See above for conversion of this polynomial between forms

y=: i. 6 30 _16 2 p. y NB. coefficient form 30 16 6 0 _2 0 (2;5 3) p. y NB. m&r form 30 16 6 0 _2 0 (<_2 ]\ 2 2 _16 1 30 0) p. y NB. exponent form 30 16 6 0 _2 0

### Common uses

1. The usual ways to evaluate a polynomial

c=: 15 _8 1 NB. coefficients for case: multiplier 1, roots 5 and 3 y=: i. 9 NB. range [0..8] y,:(c p. y) NB. the 'short' way 0 1 2 3 4 5 6 7 8 15 8 3 0 _1 0 3 8 15 +/"1 c *"1 y^/i.#c NB. the 'long' way 15 8 3 0 _1 0 3 8 15 y #.("0 1) |. c NB. the 'tricky' way, useful if the coefficients are in descending exponent order 15 8 3 0 _1 0 3 8 15

### Related Primitives

Base (`x #. y`)

### More Information

1. *Multinomial form* is an extension of exponent form to multiple independent variables.

Argument `x` is a singleton box containing a table.
Each row of the table is a list `c,e0,e1...` representing the term (*cy _{0}^{e0}y_{1}^{e1}...*) (

`c`is the coefficient,

`e`the exponents). The result is the sum of the terms.

When `x` is in multinomial form, `y` must be a boxed list of *y _{0}, y_{1}, ...*
with one atom for each

`e`-column of the table

`>x`.

]multi =: <4 3 1,:5 0 2 NB. 4(x^3)y + 5y^2 +-----+ |4 3 1| |5 0 2| +-----+ ]pts=. _1 _1; 0 0; 1 1; 1 _1; _1 1; 0 1; 1 0; 2 2 +-----+---+---+----+----+---+---+---+ |_1 _1|0 0|1 1|1 _1|_1 1|0 1|1 0|2 2| +-----+---+---+----+----+---+---+---+ multi p. pts NB. Evaluate each point 9 0 9 1 1 5 0 84 ]multi2 =: <3 2 1,5 1 2,:1 0 3 NB. 3(x^2)y + 5xy^2 + y^3 +-----+ |3 2 1| |5 1 2| |1 0 3| +-----+ multi2 p. pts _9 0 9 1 _1 1 0 72 multi2 p. 0 0;2 2;1 3;1 2;3 1;4 4 0 72 81 34 43 576

2. Formally, (`x p. y`) is (`+/x * y^ i.#x`)

3. The form (`x p.!.n y`) gives the **Stope polynomial** (`+/x * y^!.n i.#x`)

### Details

1. When `x` is in multinomial form, the result is `(|:c) +/ .* e */ .(^~) >y`.
If ` >y ` is an atom it is treated as a 1-atom list.

2. Boolean `x` and `y` are always promoted to floating-point. For an alternative, see `x #. y`.